نحوه تعریف کلاس در سی شارپ
مفهوم کلاس در سی شارپ چیست
کلاس و شی، اساسیترین مفاهیم در برنامه نویسی شی گرا بوده که بر اساس عناصر موجود در زندگی واقعی بنا شده است. یک کلاس در سی شارپ نمونه اولیه ای است که کاربر آن را تعریف کرده و اشیا از روی آن ساخته میشوند. برای یادگیری نحوه کار با کلاس در C#، ابتدا باید با مفهوم شیگرایی آشنا شوید.
مفهوم شی گرایی در C#
برنامه نویسی شی گرا بر اساس مفهوم اشیایی که میتوانند دادهها را به شکل فیلد (خصوصیت یا مشخصات) در خود ذخیره کنند، بنا شده است. همچنین میتوان در این اشیا کدهایی نوشته و یک سری دستورالعمل برای آن تعیین کرد که به آن متد گفته میشود. یک شی، نمونهای از یک کلاس است. اشیا تلفیقی از متغیرها، توابع و دادهها هستند و برای تحقق هدف خاصی طراحی میشوند.
ایجاد کلاس در سی شارپ
به طور کلی برای ایجاد کلاس در سی شارپ، از کلمه کلیدی Class استفاده میکنیم که در ادامه آن، نام کلاس را خواهیم نوشت. در هنگام تعریف کلاس در C#، می توان از برخی خصوصیات اختیاری نیز استفاده کرده و با توجه به نیازهای برنامه، آنها را نیز تعریف کرد.
نوع کلاس
که برای تعیین نوع کلاس عمومی یا خصوصی مورد استفاده قرار می گیرد.
کلمه کلیدی Class
برای ایجاد کلاس در سی شارپ ضروری است.
نام کلاس
باید با حرف بزرگ شروع شود.
بدنه کلاس
دستورات مربوط به کلاس در داخل {} نوشته میشود.
کلاس سازنده برای ایجاد شی جدید به کار میرود. در زیر نمونهای از نحوه پیادهسازی کلاس در سی شارپ را مشاهده میکنید.
public class Geeks
{
public int a, b;
public void display()
{
Console.WriteLine(“Class & Objects in C#”);
}
}
مفهوم شی در سی شارپ
در واقع اشیا سادهترین عنصر زبانهای شی گرایی هستند. برای ساخت یک شی باید آن را از کلاس مورد نظر فراخوانی کنیم. یک شی از عناصر زیر تشکیل یافته است:
- حالت: ویژگیهای یک شی را نشان میدهد. همچنین خصوصیات آن را نیز منعکس میکند.
- رفتار: نوع شی را نشان میدهد. همچنین نشاندهنده رفتار شی در مقابل شیهای دیگر است.
- هویت: هر شی دارای یک نام بوده که با استفاده از آن میتوان بین شیهای مختلف رابطه برقرار کرد.
نحوه تعریف یک شی از کلاس در سی شارپ
زمانی که یک شی از کلاسی ایجاد شد، میگوییم یک نمونه از کلاس ایجاد شده است. تمامی نمونههای ایجاد شده از یک کلاس، در خصوصیات و رفتار مشترک هستند. اما مقادیر هر شی، متفاوت است. از یک کلاس در سی شارپ میتوان چندین نمونه میتوان ساخت.
پیاده سازی شی
زمانی که یک شی از کلاس ایجاد میشود، فضایی از حافظه به آن تعلق داده شده و آدرس آن فضا برگشت داده میشود. در زیر مثالی از نحوه تعریف یک شی از کلاس در سی شارپ نمایش داده شده است:
// پیاده سازی شی
using System;
// تعریف کلاس
public class Dog {
// تعریف خصوصیات متغییر ها
String name;
String breed;
int age;
String color;
// تعریف یک کلاس سازنده
public Dog(String name, String breed,
int age, String color)
{
this.name = name;
this.breed = breed;
this.age = age;
this.color = color;
}
// خاصیت ۱
public String getName()
{
return name;
}
// خاصیت ۲
public String getBreed()
{
return breed;
}
// خاصیت ۳
public int getAge()
{
return age;
}
// خاصیت ۴
public String getColor()
{
return color;
}
// متد ۱
public String toString()
{
return ("Hi my name is " + this.getName()
+ ".\nMy breed, age and color are " + this.getBreed()
+ ", " + this.getAge() + ", " + this.getColor());
}
// متد اصلی
public static void Main(String[] args)
{
// ایجاد شی
Dog tuffy = new Dog("tuffy", "papillon", 5, "white");
Console.WriteLine(tuffy.toString());
}
}
خروجی مثال بالا به این شکل خواهد بود:
Hi my name is tuffy.
My breed, age and color are papillon, 5, white
توضیح مثال
در این مثال تنها از یک کلاس سازنده استفاده شده است. کامپایلر C# می تواند نوع کلاس را از روی تعداد و نوع کدهای تعریف شده، تشخیص دهد. در مثال بالا برای ایجاد نمونه دقیقا از نام کلاس استفاده کرده و نوع Return تعریف نشده است، بنابراین کلاس فوق یک سازنده است. کلاس سازنده Dog در مثال بالا، چهار ورودی دریافت میکند.
مفهوم ارث بری در سی شارپ
یکی دیگر از مفاهیمی در برنامه نویسی شی گرا به کرات استفاده خواهید کرد، ارث بری است. در ارث بری، یک کلاس میتواند خصوصیات کلاس دیگر را به ارث ببرد. زمانی که از ارث بری استفاده میکنیم، یک کلاس به عنوان والد و دیگری به عنوان کلاس فرزند در نظر گرفته میشود.
کلاس فرزند تمامی خصوصیات کلاس والد را به ارث میبرد، اما در صورت نیاز میتواند رفتار متد را تغییر دهد. علاوه بر این، کلاس فرزند میتواند رفتار مخصوص خود را نیز داشته باشد. برای درک بهتر این موضوع از یک مثال استفاده میکنیم:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DemoApplication
{
class Tutorial
{
protected int TutorialID;
protected string TutorialName;
public void SetTutorial(int pID,string pName)
{
TutorialID=pID;
TutorialName=pName;
}
public String GetTutorial()
{
return TutorialName;
}
}
public class GuruTutorial:Tutorial
{
public void RenameTutorial(String pNewName)
{
TutorialName=pNewName;
}
static void Main(string[] args)
{
GuruTutorial pTutor=new GuruTutorial();
pTutor.RenameTutorial(".Net by Guru");
Console.WriteLine(pTutor.GetTutorial());
Console.ReadKey();
}
}
}
توضیح مثال
در قدم اول برای کلاس GuruTutorial، یک شی ایجاد میکنیم. برای اینکار از کلمه کلیدی New استفاده میکنیم. توجه داشته باشید که در این مرحله کاری با کلاس Tutorial نداریم.
با استفاده از متد RenameTutorial کلاس GuruTutorial ، نام فیلدهای TutorialName را تغییر می دهیم. و برای متد RenameTutorial از رشته Net by Guru استفاده می کنیم.
در آخر متد GetTutorial را فراخوانی میکنیم. دقت کنید، با وجود اینکه این متد در کلاس GuruTutorial تعریف نشده، اما میتوانیم به آن دسترسی داشته باشیم. در نهایت خروجی حاصل از متد GetTutorial در کنسول نمایش داده میشود.
خروجی برنامه
.Net by Guru
از خروجی بالا مشخص است که فرایند تغییر نام با استفاده از کلاس فرزند با موفقیت اجرا شده است.
پلی مورفیسم یا چند ریختی در C#
یکی از خصوصیات مهم کلاس در سی شارپ و هر زبان برنامه نویسی شی گرا، پشتیبانی از پلی مورفیسم است. در پلی مورفیسم یک نام می تواند چندین شکل داشته باشد.
برای مثال شما دارای یک گوشی هوشمند هستید و از آن برای برقراری ارتباط استفاده میکنید. حالا می توانید به عنوان روش برقراری ارتباط تماس صوتی، پیامک، ارسال تصویر، ایمیل و غیره را انتخاب کنید. در اینجا هدف مشترک بوده و قصد شما برقراری ارتباط است، اما نحوه انجام آن تفاوت دارد. به این حالت پلی مورفیسم گفته می شود.
برای درک بهتر این موضوع به کدهای زیر توجه کنید:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DemoApplication
{
class Tutorial
{
public int TutorialID;
public string TutorialName;
public void SetTutorial(int pID,string pName)
{
TutorialID=pID;
TutorialName=pName;
}
public void SetTutorial(string pName)
{
TutorialName=pName;
}
public String GetTutorial()
{
return TutorialName;
}
static void Main(string[] args)
{
Tutorial pTutor=new Tutorial();
pTutor.SetTutorial(1,"First Tutorial");
Console.WriteLine(pTutor.GetTutorial());
pTutor.SetTutorial(2,"Second Tutorial");
Console.WriteLine(pTutor.GetTutorial());
Console.ReadKey();
}
}
}
توضیح مثال
- در مرحله اول متد SetTutorial را با دو پارامتر TutorialID و TutorialName تعریف میکنیم.
- در مرحله دوم متد SetTutorial را تنها با یک پارامتر فراخوانی میکنیم. در این حالت تنها از پارامتر TutorialName استفاده میکنیم.
خروجی برنامه بالا به شکل زیر خواهد بود:
First tutorial
Second tutorial
همانطور که مشاهده میکنید، هر دو متد به درستی فراخوانی شده اند. به همین علت رشتههای بالا در کنسول نمایش داده شده اند.
سلام. ممنون از مطلب خوبتون
خواستم بدونم اسم فونتی که در مثال های کدنویسی استفاده شده چیه؟؟ خیلی فونت جذابیه
سلام
ممنون از نظرتون. فونت خاصی وجود ندارد برای کدنویسی از ویژگیهای وردپرس استفاده میکنیم.