چگونگی ایجاد کلاس در سی شارپ
بعد از اینکه در جلسه اول با مفاهیم برنامه نویسی شی گرا آشنا شدیم حالا لازم است که به ایجاد کلاس در سی شارپ بپردازیم. یک کلاس که از روی آن شی ایجاد می شود 2 بخش بیشتر ندارد:
- Attribute: که به آن اجزای داده ای می گوییم.
- Method : که به آن اجزاء تابعی می گوییم.
ماشین را در نظر می گیریم: Car Class
برای یک ماشین اجزاء داده ای شامل رنگ ماشین، مدل ماشین، تعداد درها، تعداد لاستیک ها و …. می باشد.
و اجزاء تابعی یا رفتارها شامل روشن شدن،خاموش شدن،حرکت کردن، سرعت گرفتن و…. می باشد.
که بعداً متوجه می شوید Attribute ها دو نوع هستند:
- یا فیلد هستند که واقعاً یک مقداری را ذخیره کرده اند.
- یا Property هستند که یک وضعیت را در خودشون ذخیره کرده اند .
Method ها یا رفتارها می توانند تقسیم بشوند به:
- ایونت ها (event ها) :ایونت ها آن متدهایی هستند که اتوماتیک در اثر یک واکنش بیرونی Run می شوند.
- اجزاء تابعی که ما باید فراخوانی کنیم (به کمک همین ایونت ها می توانیم با سایر اشیاء ارتباط برقرار کنیم.)
نحوه ایجاد کلاس در ویندوز فرم
برای ایجاد کلاس در سی شارپ ، ابتدا یک پروژه جدید ایجاد می کنیم و نامی را برای آن در نظر می گیریم.
بر روی نام پروژه ی برنامه راست کلیک کرده و گزینه Add را می زنیم:
دو راه داریم یا اینکه مستقیم روی گزینه ی Class کلیک کنیم و یا از New item داخل پنجره ای که باز می شود گزینه ی Class را انتخاب و نام کلاسمون را مشخص کنیم(طراحی کلاس ماشین) و بعد روی Add کلیک کنیم.
پسوند .CS مشخصه ی فایل سی شارپ است.
کلاس Car طبق پنجره ی فوق باز می شود.
کلمه ی کلیدی کلاس برای تعریف کلاس است .کلمات کلیدی با رنگ آبی مشخص شده اند.
گفتیم که کلاس از 2 بخش تشکیل شده است یکی فیلدها و دیگری متدها
class Car
{
فیلد: به متغیرهای داخل کلاس فیلد می گویند که حالت Object را برای ما تعیین می کنند .//
//—– فیلد ——
int id;
string nameCar;
string color;
//متد:به توابعی که داخل کلاس نوشته می شوند یعنی در واقع رفتار شی را مشخص می کنند توابع می گویند
//—– توابع ——
void SelectCar()
{
}
}
ما در اینجا آمدیم تمام مشخصاتی که برای ماشین بود داخل یک کلاس نوشتیم مثل نامش٬ رنگش ٬ رفتارش …
کلاس یک الگویی است که ما آن را تعریف می کنیم. برای اینکه شی ایجاد کنیم باید از کلاس یک نمونه بسازیم. برای نمونه ساختن از کلاس از کلمه کلیدی new استفاده می کنیم:
Car C = new Car ( );
تا اینجا به صورت مختصر با ایجاد کلاس در سی شارپ را آشنا شدیم،در ادامه میخواهیم مفاهیم را در قالب یک نمونه کاربردی از ایجاد کلاس در سی شارپ دنبال کنیم.
یک نمونه کاربردی از کلاس
قبل از این که شروع کنم بگویم که مهم نیست از چه زبان برنامه نویسی استفاده می کنید این مفاهیم می تواند برای هر زبانی استفاده شود.
با یک مثال شروع می کنیم Student را در نظر می گیریم. ابتدا یک پروژه جدید ایجاد می کنیم و یک کلاس برای Student ایجاد می کنیم:
کلاس Student طبق پنجره فوق برای ما ایجاد می شود. هم اکنون باید در نظر بگیریم که یک دانشجو چه چیزهایی دارد :
یک دانشجو کد دارد، نام دارد، نام خانوادگی دارد، سن دارد و…
یک دانشجو یک سری رفتار هم دارد مثلا رفتار انتخاب درس و …
class Student
{
//فیلدها
int ID;
string Name;
string LastName;
//متد
void SelectCourse()
{
}
}
نمونه سازی کردن این کلاس(ساختن شی)
بر روی فرم می رویم و یک کنترل Button را روی فرم قرار می دهیم:
private void button1_Click(object sender, EventArgs e)
{
Student ObjStudent = new Student();
این رو بهش میگوییم Object یا نمونه سازی//
نکته:اگر بعد از اینکه new را نوشتید دو تا Space بزنید خودبه خود سی شارپ اسم کلاس را تایپ می کند//
}
کلمه کلیدی class برای تعریف کلاس است و کلمه کلیدیnew برای تعریف نمونه ساختن از کلاس است.
نکته:در کلاس تا ما new نکنیم که شی ساخته شود فضا به آن اختصاص داده نمی شود.
الان می خواهم به متغیرهای داخل کلاس دسترسی داشته باشم برای این کار با نوشتن Object ساخته شده از این کلاس و نوشتن دات( . ) به فیلدها و متدها می توانم دسترسی پیدا کنیم:
امّا مشاهده می کنیم که هیچ کدام از آنها نیستند، اینجا یک نکته دارد خوب دقت کنید 3 تا سطوح دسترسی داریم:
Public -1: عمومی
:Private -2 خصوصی
Protected-3 : اینجا در مورد آن توضیح نمی دهم چون در ارث بری خودش را نشان می دهد در آنجا Protected را معرفی می کنم.
اگر بخواهیم خارج از کلاس به متغیرها و توابع یک کلاس دسترسی پیدا کنیم از کلمه Public قبل از نام متغیرها و توابع استفاده می کنیم
وقتی هیچ کدام از سطوح دسترسی را ننویسیم به صورت پیش فرض آنها خصوصی(Private)هستند.
فیلد ID را public در نظر می گیریم و Name و LastName را Private تا ببینیم چه اتفاقی می افتد:
class Student
{
public int ID;
private string Name;
private string LastName;
void SelectCourse()
{
}
}
پنجره فرم را باز می کنیم و داخل رویداد Click کنترل button یک نمونه از کلاس ایجاد می کنیم، می خواهیم ببینیم که آیا به فیلدها و متدها می توانیم دسترسی داشته باشیم:
مشاهده می کنیم که به فیلد ID دسترسی داریم چون سطح دسترسی آن را Public در نظر گرفتیم، الان سطح دسترسی Name و LastName را به Public تغییر می دهیم:
public int ID;
public string Name;
public string LastName;
private void button1_Click(object sender, EventArgs e)
{
Student ObjStudent = new Student();
ObjStudent.ID = 1;
ObjStudent.Name = “Ali”;
ObjStudent.LastName = “Nik”;
MessageBox.Show(ObjStudent.ID.ToString()+”:”+ ObjStudent.Name+” “+ObjStudent.LastName );
}
برنامه را اجرا می کنیم و روی button1 کلیک می کنیم:
برای توابع داخل کلاس هم فرقی نمی کند آن را Public در نظر می گیریم:
public void SelectCourse()
{
}
برای اینکه تابع را هم به شما نشان دهم یک MessageBox داخل آن می نویسم امّا این نکته را باید بگویم که هیچ موقع داخل کلاس از MessageBox استفاده نمی کنیم من در اینجا برای اینکه فراخوانی متد را هم مشاهده کنید از MessageBox استفاده می کنیم.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
//است using System.Windows.Forms داخل MessageBox
using System.Windows.Forms;
//————————————
namespace Session4_OOP
{
class Student
{
public int ID;
public string Name;
public string LastName;
public void SelectCourse()
{
MessageBox.Show(“Object Oriented Programming”);
}
}
}
روی فرم یکی دیگر کنترل Button قرار می دهیم:
private void button2_Click(object sender, EventArgs e)
{
Student ObjStudent = new Student();
ObjStudent.SelectCourse();
}
برنامه را اجرا می کنیم:
نکته: هر اندازه ای که بخواهیم می توانیم از کلاس نمونه بسازیم.
پروژه محاسبه مساحت و محیط
برای درک بهتر ، سورس کد پروژه محاسبه ی مساحت و محیط مثلث و مستطیل ضمیمه گردید ، شما می توانید روی آن کلیک کنید :
پیش نمایشی از اجرای این برنامه به شکل زیر است:
امیدواریم از آموزش ایجاد کلاس در سی شارپ لذت برده باشید و مفاهیم را کاملا درک کرده باشید. در جلسه بعد به مثال پروژه ساده ماشین حساب می پردازیم. با ما همراه باشید.
سلام
واقعا قابل درک و مفهومی تویح داده شده
خیلی خیلی ممنون
سلام ، مطلب بسیار قابل فهمِ ،تشکر
سلام تا حالا انقدر ندیدم جایی مفهومی بگه خدا خیرتون بده ممنون واقعاااا
عالي لود
با سلام و خسته نباشید خدمت مدیریت محترم سایت. مطالب بسیار مفید خلاصه و صریح می باشند. با تشکرات فراوان
خیلی خوب دقیق و مفهومی
سلام خسته نباشید یعنی جایی که ما همرو داخل خود فرم بنویسم با کلاس بتونیم خارج از محیط فرم هم بنویسم و شی هارو به فرم وصل کنیم ؟
سلام و عرض ادب
هدف از طراحی کلاس ها برای جلوگیری از کد نویسی های تکراری در برنامه نویسی می باشد . مثلا شما یک نقشه از یک ساختمان طراحی می کنید و هزار شی از روی آن می سازید . که این شی ها تمام خصوصیات کلاس به ارث می برد .
با تشکر از همراهی شما
عالي بود واقعا.تا حالا هيچكي انقد خوب توضيح نداده بود
عالی
سلام و عرض ادب. ممنونم از همراهی و انرژی مثبت شما.
با تشکر از همراهی شما
خیلی خوب توضیح دادین کاش دانشگاه هم به همین سادگی برای ما بیان میکرد
همش دارم دعات میکنم خدا خیرت بده
سلام و عرض ادب
از انرژی مثبت شما سپاسگزاریم.
بسیار سپاس که اینقدر مفهومی و ساده و روان ارائه مطلب می کنید.
امکانش هست در مورد delegate هم مطلب بگذارید.
با سپاس
سلام وقت بخیر امکانش هست بفرمایید این دو خط کد چه کاری انجام میدهند
;private System.Windows.Forms.DataGridTextBoxColumn dataGridTextBoxColumn9
;private System.Windows.Forms.ComboBox cboGameLevel
وبسایتتون هم UI عالی داره و هم بسیار شفاف توضیح دادین ممنون
سلام و عرض ادب
از انرژی مثبت شما سپاسگزاریم