نحوه استفاده از برنامه نویسی شی گرا در سی شارپ – با مثال توضیح داده شده است

به این راهنمای جامع برنامه نویسی شی گرا (OOP) با استفاده از سی شارپ خوش آمدید. این مقاله به چهار ستون اساسی OOP می پردازد:
وراثت
کپسوله سازی
پلی مورفیسم
انتزاع - مفهوم - برداشت
چه یک برنامه نویس باتجربه باشید و چه مبتدی که وارد دنیای C# می شوید، هدف این مقاله افزایش درک شما از مفاهیم OOP و پیاده سازی آنها در سی شارپ است.
اگر به تازگی با C# آشنا هستید، دوره رایگان صدور گواهینامه در freeCodeCamp یا دوره رایگان در Microsoft Learn را برای آشنایی با این زبان در نظر بگیرید.
به یاد داشته باشید، اصول OOP جهانی هستند و برای اکثر زبان های برنامه نویسی شی گرا کاربرد دارند. پس ، دانشی که از این مقاله به دست می آورید، می تواند برای یادگیری OOP به هر زبانی اعمال شود.
بیا شروع کنیم!
فهرست مطالب
برنامه نویسی شی گرا (OOP) چیست؟
برنامه نویسی شی گرا (OOP) چیست؟
برنامه نویسی شی گرا (OOP) یک الگوی برنامه نویسی است که از objects
و classes
برای طراحی و توسعه برنامه های کاربردی نرم افزاری استفاده می کند. این بر اساس مفهوم اشیاء است که می تواند شامل داده ها در قالب فیلدها (ویژگی ها یا خصوصیات) و کد در قالب رویه ها (روش ها یا توابع) باشد.
برنامه نویسی شی گرا چندین مزیت را ارائه می دهد، از جمله:
ماژولاریت : OOP با تجزیه سیستم های پیچیده به قطعات کوچکتر و قابل مدیریت (اشیاء) ماژولار بودن را ارتقا می دهد. این کار حفظ و به روز رسانی کد را آسان تر می کند.
قابلیت استفاده مجدد : OOP به شما امکان می دهد با ایجاد اشیاء جدید بر اساس موارد موجود، از کدهای موجود مجددا استفاده کنید. این باعث صرفه جویی در زمان و تلاش در توسعه برنامه های جدید می شود.
انعطاف پذیری : OOP انعطاف پذیری را در طراحی و پیاده سازی سیستم های نرم افزاری فراهم می کند. شما به راحتی می توانید عملکرد اشیاء را بدون تأثیرگذاری بر سایر قسمت های سیستم تغییر دهید و گسترش دهید.
مقیاس پذیری : OOP از مقیاس پذیری پشتیبانی می کند و به شما امکان می دهد تا با رشد سیستم، اشیاء و کلاس های جدید اضافه کنید. این باعث می شود که تغییرات و پیشرفت ها در نرم افزار آسان تر شود.
همانطور که می بینید، OOP چندین مزیت را ارائه می دهد که آن را به یک انتخاب محبوب برای توسعه برنامه های نرم افزاری تبدیل می کند. بیایید چهار ستون اساسی OOP را با جزئیات بیشتر تحلیل کنیم.
چهار ستون برنامه نویسی شی گرا
چهار رکن برنامه نویسی شی گرا عبارتند از:
وراثت
کپسوله سازی
پلی مورفیسم
انتزاع - مفهوم - برداشت
این ستون ها شالوده OOP را تشکیل می دهند و مفاهیم ضروری برای درک هنگام کار با زبان های برنامه نویسی شی گرا مانند C# هستند.
در بخشهای بعدی به هر یک از ارکان OOP بروید.
بیایید با اولین ستون OOP شروع کنیم: Inheritance
.
وراثت
وراثت مفهومی است که در اکثر زبان های برنامه نویسی استفاده می شود و چیزی است که هنگام کار با برنامه نویسی شی گرا نمی توانید از آن اجتناب کنید. زبان های برنامه نویسی مانند C#
و جاوا از جمله زبان هایی هستند که از وراثت پشتیبانی می کنند. در این مقاله به تحلیل وراثت در C#
و نحوه استفاده از آن در برنامه خواهیم پرداخت.
ارث چیست؟
تصور کنید که یک شجره نامه دارید، جایی که هر نسل یک کلاس را در C# نشان می دهد. نسل اول base class
است که کلاس پایه ای است که ساختار و ویژگی های اساسی را ارائه می دهد. این را می توان به پدرسالار خانواده تشبیه کرد که ارزش ها و ویژگی های اصلی خانواده را تعیین می کند.
همانطور که شجره نامه پیشرفت می کند، هر نسل بعدی صفات و ویژگی های نسل قبلی را به ارث می برد، اما همچنین آنها را اضافه یا اصلاح می کند تا هویت منحصر به فرد خود را منعکس کند. این نسلهای بعدی را میتوان بهعنوان کلاسهای derived
در سی شارپ در نظر گرفت که از کلاس base
به ارث میبرند، اما ویژگیها یا تغییرات منحصربهفرد خود را نیز معرفی میکنند.
به عنوان مثال، پدرسالار ممکن است عشق خانواده به باغبانی را ایجاد کرده باشد، که به یک ویژگی اساسی تبدیل می شود که از طریق نسل ها منتقل می شود. با این حال، با تکامل شجره نامه، برخی از اعضا ممکن است علاقه خاصی به رشد گیاهان عجیب و غریب پیدا کنند، در حالی که برخی دیگر ممکن است بر باغبانی ارگانیک تمرکز کنند. این علایق ویژه نشان دهنده ویژگی های منحصر به فرد طبقات مشتق شده است که عشق اولیه به باغبانی را از کلاس پایه به ارث برده اند اما ویژگی های منحصر به فرد خود را نیز معرفی می کنند.
در این قیاس، طبقه base
پدرسالار است که نمایانگر طبقه پایه با ویژگی ها و ویژگی های اساسی خود است. کلاس های derived
نسل های بعدی هستند که هر کدام با ویژگی ها یا تغییرات منحصر به فرد خود، صفات اساسی را از کلاس پایه به ارث می برند اما جنبه های منحصر به فرد خود را نیز اضافه می کنند. این روند وراثت، امکان ایجاد یک شجره خانوادگی غنی و متنوع را فراهم می کند، جایی که هر نسل بر پایه نسل قبلی بنا می شود، صفات جدید را معرفی می کند و ویژگی های موجود را اصلاح می کند.
وراثت مکانیزمی است که به شما امکان می دهد class
جدیدی را بر اساس class
موجود تعریف کنید. کلاس جدید تمام اعضا (فیلدها، خصوصیات و متدها) کلاس موجود را به ارث می برد. کلاس موجود به عنوان کلاس base
و کلاس جدید به عنوان کلاس derived
شناخته می شود.
نحو اصلی وراثت در سی شارپ:
class BaseClass { // Base class members } class DerivedClass : BaseClass { // Derived class members }
در قطعه کد بالا، BaseClass
کلاس پایه و DerivedClass
کلاس مشتق شده است. DerivedClass
تمام اعضای BaseClass
را به ارث می برد. دو نقطه (:)
برای نشان دادن اینکه DerivedClass
از BaseClass
مشتق شده است استفاده می شود.
اگر با C#
تازه کار هستید و نمی دانید کلاس چیست، نگران نباشید، آن را برای شما توضیح خواهم داد. کلاس یک طرح اولیه برای ایجاد اشیا است. ویژگی ها و متدهایی را که یک شی از کلاس خواهد داشت را تعریف می کند. در اینجا نمونه ای از کلاس در C#
آمده است:
class Person { public string Name { get; set; } public int Age { get; set; } public void Display() { Console.WriteLine($"Name: {Name}, Age: {Age}"); } }
در قطعه کد بالا، کلاس Person
دارای دو ویژگی ( Name
و Age
) و یک متد ( Display
) است. خواص نشان دهنده وضعیت شی و متد نشان دهنده رفتار شی است. می توانید یک شی از کلاس Person
ایجاد کنید و ویژگی های آن را به صورت زیر تنظیم کنید:
Person person = new Person(); person.Name = "John"; person.Age = 30;
برای نمایش نام و سن فرد می توانید متد Display
روی شی person
فراخوانی کنید:
person.Display(); // Output: Name: John, Age: 30
قبل از ادامه مقاله، اجازه دهید به چند کلمه کلیدی نگاه کنیم که قرار است با base class
، Abstract class
، derived class
، parent class
و child class
مواجه شوید.
بگذارید آنها را برای شما توضیح دهم.
کلاس پایه : کلاسی است که اعضای آن توسط کلاس دیگری به ارث می رسد. همچنین به عنوان کلاس پدر شناخته می شود.
public class BaseClass { public void Display() { Console.WriteLine("This is a base class"); } }
کلاس انتزاعی : این کلاسی است که قابل نمونه سازی نیست. برای ارائه یک پایه مشترک برای همه کلاس های مشتق شده استفاده می شود. می تواند شامل هر دو روش انتزاعی و غیرانتزاعی باشد.
public abstract class AbstractClass { public abstract void Display(); }
کلاس مشتق شده : این کلاسی است که اعضای کلاس پایه را به ارث می برد. به کلاس کودک نیز معروف است.
public class DerivedClass : BaseClass { public void Show() { Console.WriteLine("This is a derived class"); } }
پس اکنون می دانید که این کلمات کلیدی به چه معنا هستند، بیایید به بخش بعدی برویم.
انواع ارث
وراثت را می توان بر اساس نحوه مشتق شدن کلاس ها به انواع مختلفی طبقه بندی کرد. انواع ارث به شرح زیر است:
وراثت منفرد : وراثت منفرد یک مفهوم اساسی در برنامه نویسی شی گرا است که در آن کلاسی که به عنوان derived class
شناخته می شود، بر پایه کلاس دیگری به نام base class
استوار است. این ساده ترین شکل ارث است.
برای نشان دادن این موضوع، بیایید یک قیاس دنیای واقعی را در نظر بگیریم. تصور کنید تنها فرزند پدرتان هستید. در این سناریو، ویژگی هایی را از پدرتان به ارث می برید. این شبیه به ارث بری در برنامه نویسی است.
بیایید به یک مثال در C#
نگاه کنیم:
public class Father { public void Display() { Console.WriteLine("This is the father class"); } }
در کد بالا، Father
کلاس پایه با متد Display
است.
حال، بیایید یک کلاس مشتق شده Child
ایجاد کنیم که از کلاس Father
به ارث می برد:
public class Child : Father { public void Show() { Console.WriteLine("This is the child class"); } }
در این قطعه کد، کلاس Child
از کلاس Father
مشتق شده است. کلاس Child
متد Display
را از کلاس Father
به ارث می برد.
می توانید یک شی از کلاس Child
ایجاد کنید و متد Display
فراخوانی کنید. این نشان می دهد که کلاس Child
می تواند به متد Display
از کلاس Father
دسترسی داشته باشد.
Child child = new Child(); child.Display(); // Output: This is the father class
وراثت چندسطحی : وراثت چندسطحی مفهومی در برنامه نویسی شی گرا است که در آن یک کلاس از کلاس مشتق شده دیگری مشتق می شود و زنجیره ای از وراثت را ایجاد می کند.
برای درک بهتر این موضوع، بیایید یک تشبیه شجره نامه را در نظر بگیریم. بر فرض که تو child
father
باشی و father
child
grandfather
باشد . در این سناریو، ویژگی هایی را هم از پدر و هم از پدربزرگ خود به ارث می برید. این شبیه به ارث بردن چند سطحی در برنامه نویسی است.
بیایید این مفهوم را با یک مثال در C#
تحلیل کنیم:
public class Grandfather { public void Display() { Console.WriteLine("This is the grandfather class"); } }
در کد بالا، Grandfather
کلاس پایه با متد Display
است.
سپس یک کلاس مشتق شده Father
ایجاد کردیم که از کلاس Grandfather
به ارث می برد:
public class Father : Grandfather { public void Show() { Console.WriteLine("This is the father class"); } }
در اینجا کلاس Father
از کلاس Grandfather
مشتق شده و متد Display
را از آن به ارث می برد.
در نهایت، یک کلاس مشتق شده دیگر Child
ایجاد کردیم که از کلاس Father
به ارث می برد:
public class Child : Father { public void DisplayChild() { Console.WriteLine("This is the child class"); } }
در این قطعه کد، کلاس Child
از کلاس Father
مشتق شده است. کلاس Child
متدهای Display
و Show
را از کلاس Father
به ارث می برد.
می توانیم یک شی از کلاس Child
ایجاد کنیم و متدهای Display
و Show
را فراخوانی کنیم. این نشان می دهد که کلاس Child
می تواند به متدهای Display
و Show
از کلاس Father
دسترسی داشته باشد.
Child child = new Child(); child.Display(); // Output: This is the grandfather class child.Show(); // Output: This is the father class child.DisplayChild(); // Output: This is the child class
وراثت سلسله مراتبی : وراثت سلسله مراتبی مفهومی در برنامه نویسی شی گرا است که در آن چندین کلاس از یک single base class
مشتق می شوند و tree-like structure
تشکیل می دهند.
برای نشان دادن این موضوع، بیایید یک قیاس دنیای واقعی را در نظر بگیریم. با فرض اینکه شما و siblings
از same parent
مشترک هستید. در این سناریو، همه شما ویژگی هایی را از یک والدین به ارث می برید. این شبیه به ارث بردن سلسله مراتبی در برنامه نویسی است.
بیایید این مفهوم را با یک مثال در C#
تحلیل کنیم:
public class Parent { public void Display() { Console.WriteLine("This is the parent class"); } }
در کد بالا، Parent
کلاس پایه با متد Display
است.
سپس، دو کلاس مشتق شده Child1
و Child2
ایجاد کردیم که از کلاس Parent
به ارث میبرند:
public class Child1 : Parent { public void Show1() { Console.WriteLine("This is the first child class"); } } public class Child2 : Parent { public void Show2() { Console.WriteLine("This is the second child class"); } }
در این قطعه کد، کلاس های Child1
و Child2
از کلاس Parent
مشتق شده اند. هر دو کلاس متد Display
از کلاس Parent
به ارث می برند.
میتوانیم اشیایی از کلاسهای Child1
و Child2
ایجاد کنیم و متدهای Display
، Show1
و Show2
را فراخوانی کنیم. این نشان می دهد که هر دو کلاس Child1
و Child2
می توانند به متد Display
از کلاس Parent
دسترسی داشته باشند.
Child1 child1 = new Child1(); child1.Display(); // Output: This is the parent class child1.Show1(); // Output: This is the first child class Child2 child2 = new Child2(); child2.Display(); // Output: This is the parent class child2.Show2(); // Output: This is the second child class
به شما تبریک می گویم که اصول وراثت در سی شارپ را یاد گرفته اید، بیایید به بخش بعدی Encapsulation
برویم.
آشنایی با کپسولاسیون و خواص در سی شارپ
همانطور که به سفر خود از طریق ستون های OOP ادامه می دهیم، اکنون به Encapsulation
می رسیم. قبل از اینکه به Encapsulation
بپردازیم، درک یک مفهوم رایج در سی شارپ به نام properties
بسیار مهم است.
ویژگی ها در سی شارپ اعضای یک کلاس هستند که مکانیزمی انعطاف پذیر برای خواندن، نوشتن یا محاسبه مقدار یک فیلد خصوصی ارائه می دهند. آنها را می توان به گونه ای استفاده کرد که گویی اعضای داده های عمومی هستند، اما در واقع روش های خاصی به نام دسترسی هستند. از این دسترسی ها برای دریافت و تنظیم مقادیر فیلدهای خصوصی استفاده می شود.
اگر با این مفهوم تازه کار هستید، نگران نباشید. بیایید با یک مثال آن را تجزیه کنیم:
public class Person { private string name; public string Name { get { return name; } set { name = value; } } }
در قطعه کد بالا، کلاس Person
یک name
فیلد خصوصی و یک ویژگی Name
دارد. ویژگی Name
دارای دو دسترسی است: یک get
برای بازیابی مقدار فیلد name
و یک دسترسی set
برای تنظیم مقدار فیلد name
.
درک خواص کلید درک مفهوم Encapsulation
است که در بخش بعدی به تحلیل آن خواهیم پرداخت.
کپسوله سازی
برای درک Encapsulation
، بیایید از یک قیاس استفاده کنیم. gift box
را در نظر بگیرید که حاوی یک gift
است. gift box
به عنوان ظرفی عمل می کند که gift
را محصور می کند. gift
از دنیای بیرون پنهان است و فقط از طریق gift box
قابل دسترسی است. این شبیه به Encapsulation
در برنامه نویسی شی گرا است.
Encapsulation
اصل دستهبندی دادهها (فیلدها) و روشها (توابع) است که روی دادهها کار میکنند در یک واحد واحد که به عنوان یک class
شناخته میشود. دسترسی مستقیم به برخی از اجزای یک شی را محدود می کند و فقط از طریق متدهای کلاس اجازه دسترسی را می دهد. در اصل، Encapsulation
وضعیت درونی یک شی را پنهان می کند و فقط اطلاعات لازم را در معرض دنیای خارج قرار می دهد.
بیایید یک مثال در سی شارپ ببینیم:
public class Person { private string name; private int age; public string Name { get { return name; } set { name = value; } } public int Age { get { return age; } set { age = value; } } public void Display() { Console.WriteLine($"Name: {Name}, Age: {Age}"); } }
در قطعه کد بالا، کلاس Person
داده ها ( name
فیلدها و age
) و متدها ( Display
) را در یک واحد کپسوله می کند. name
و age
فیلدها خصوصی هستند، به این معنی که نمی توان مستقیماً از خارج از کلاس به آنها دسترسی داشت. آپشن های Name
و Age
با استفاده از دسترسیهای get
و set
دسترسی کنترلشده به فیلدهای خصوصی را فراهم میکنند.
بیایید مثال دیگری برای توضیح بیشتر این مفهوم اضافه کنیم:
public class BankAccount { private double balance; public double Balance { get { return balance; } private set { balance = value; } } public void Deposit(double amount) { if (amount > 0) { Balance += amount; } } public void Withdraw(double amount) { if (amount > 0 && Balance >= amount) { Balance -= amount; } } public void DisplayBalance() { Console.WriteLine($"Balance: {Balance}"); } }
در این مثال، کلاس BankAccount
فیلد balance
و روشهایی را که بر روی آن کار میکنند ( Deposit
، Withdraw
، DisplayBalance
) کپسوله میکند. فیلد balance
خصوصی است و فقط از طریق ویژگی Balance
و متدهای کلاس قابل دسترسی است. این تضمین میکند که موجودی نمیتواند مستقیماً از خارج کلاس دستکاری شود و راهی امن برای مدیریت حساب بانکی فراهم میکند.
تبریک می گویم! شما با Encapsulation
و نحوه پیاده سازی آن در سی شارپ آشنا شده اید. بیایید به بخش بعدی، Polymorphism
برویم.
آشنایی با چند شکلی در سی شارپ
همانطور که عمیق تر به چهار ستون OOP می پردازیم، اکنون با Polymorphism
مواجه می شویم. واژه Polymorphism
از کلمات یونانی poly
(بسیاری) و morphos
(شکلها) به معنای «شکلهای متعدد» گرفته شده است. در قلمرو برنامه نویسی شی گرا، Polymorphism
به توانایی یک شی برای به خود گرفتن چندین اشکال اشاره می کند.
برای درک Polymorphism
، اجازه دهید یک music player
در نظر بگیریم. این می تواند انواع مختلفی از فایل های موسیقی مانند MP3
، WAV
، یا AAC
را پخش کند. هر یک از این انواع فایل ها متفاوت است، اما پخش کننده موسیقی ما می تواند همه آنها را مدیریت کند. این شبیه به Polymorphism
در برنامه نویسی شی گرا است.
پلی مورفیسم
Polymorphism
یک مفهوم اصلی در برنامه نویسی شی گرا است که به اشیاء کلاس های مختلف اجازه می دهد تا به عنوان اشیاء یک ابر کلاس مشترک در نظر گرفته شوند. این یک رابط واحد برای نمایش چندین فرم زیربنایی (کلاس) فراهم می کند و اشیا را قادر می سازد به روشی عمومی پردازش شوند.
در سی شارپ دو نوع Polymorphism
وجود دارد:
چند شکلی زمان کامپایل (بارگذاری بیش از حد روش)
Compile-time Polymorphism
که به عنوان Method Overloading
نیز شناخته می شود، به یک کلاس اجازه می دهد تا چندین متد با نام یکسان اما پارامترهای متفاوت داشته باشد. کامپایلر بر اساس تعداد و انواع آرگومان ها تعیین می کند که کدام متد را فراخوانی کند.
در اینجا مثالی از Method Overloading
در سی شارپ آورده شده است:
public class Printer { public void Print(string message) { Console.WriteLine($"Printing string: {message}"); } public void Print(int number) { Console.WriteLine($"Printing number: {number}"); } public void Print(string message, int copies) { for (int i = 0; i < copies; i++) { Console.WriteLine($"Printing string: {message}"); } } }
در این مثال، کلاس Printer
دارای سه روش Print
با نام یکسان اما پارامترهای متفاوت است. این نمونه ای از Method Overloading
در سی شارپ است.
چند شکلی زمان اجرا (برخورد از روش)
Run-time Polymorphism
که به نام Method Overriding
نیز شناخته می شود، به یک کلاس فرعی اجازه می دهد تا پیاده سازی خاصی از روشی را که قبلاً توسط سوپرکلاس آن ارائه شده است، ارائه دهد.
در اینجا مثالی از Method Overriding
در سی شارپ آورده شده است:
public class MusicPlayer { public virtual void Play() { Console.WriteLine("Playing music"); } } public class Mp3Player : MusicPlayer { public override void Play() { Console.WriteLine("Playing MP3 music"); } } public class WavPlayer : MusicPlayer { public override void Play() { Console.WriteLine("Playing WAV music"); } }
در این مثال، کلاس MusicPlayer
دارای یک روش مجازی Play
است. کلاس های Mp3Player
و WavPlayer
روش Play
را با پیاده سازی های خاص به ترتیب برای پخش موسیقی MP3 و WAV لغو می کنند. این نمونه ای از Method Overriding
در سی شارپ است.
بیایید ببینیم چگونه Polymorphism
می توان در یک برنامه استفاده کرد:
MusicPlayer player = new Mp3Player(); player.Play(); // Output: Playing MP3 music player = new WavPlayer(); player.Play(); // Output: Playing WAV music
در این قطعه کد، یک شی از کلاس Mp3Player
ایجاد کردیم و آن را به متغیری از نوع MusicPlayer
اختصاص دادیم. سپس متد Play
روی شی player
فراخوانی کردیم، که متد Play
در کلاس Mp3Player
فراخوانی میکند. سپس یک شی از کلاس WavPlayer
ایجاد کردیم و آن را به متغیر player
اختصاص دادیم. وقتی دوباره متد Play
فرا میخوانیم، متد Play
در کلاس WavPlayer
فراخوانی میکند.
تبریک می گویم! شما با Polymorphism
و نحوه پیاده سازی آن در سی شارپ آشنا شده اید. بیایید به ستون نهایی OOP یعنی Abstraction
برویم.
آشنایی با انتزاع در سی شارپ
همانطور که به ستون نهایی OOP می پردازیم، با Abstraction
مواجه می شویم. Abstraction
فرآیند پنهان کردن جزئیات پیاده سازی پیچیده و افشای تنها ویژگی های اساسی یک شی است. بر روی کاری که یک شی انجام می دهد بیشتر تاکید می کند تا اینکه چگونه آن را انجام می دهد.
برای درک Abstraction
، بیایید یک smartphone
را در نظر بگیریم. وقتی از تلفن هوشمند استفاده می کنید، نیازی به درک پیچیدگی های نحوه عملکرد اجزای داخلی مانند processor
یا memory
ندارید. فقط باید بدانید که چگونه با رابط کاربری برای برقراری تماس، ارسال پیام یا استفاده از برنامه ها تعامل داشته باشید. این شبیه Abstraction
در برنامه نویسی شی گرا است.
انتزاع - مفهوم - برداشت
Abstraction
یک مفهوم کلیدی در برنامه نویسی شی گرا است که به شما امکان می دهد یک طرح اولیه برای یک کلاس با چند روش انتزاعی ایجاد کنید که باید توسط کلاس های مشتق شده پیاده سازی شوند. شما را قادر می سازد تا ساختار یک کلاس را بدون ارائه جزئیات پیاده سازی تعریف کنید.
در سی شارپ، Abstraction
می توان با استفاده از کلاس ها و interfaces
abstract
به دست آورد. بیایید هر دو مفهوم را تحلیل کنیم:
کلاس های چکیده
abstract class
کلاسی است که قابل نمونه سازی نیست و می تواند شامل متدهای انتزاعی و غیرانتزاعی باشد. متد انتزاعی روشی بدون بدنه است که باید توسط کلاس های مشتق شده پیاده سازی شود.
در اینجا نمونه ای از یک abstract class
در سی شارپ آمده است:
public abstract class Animal { public abstract void Speak(); } public class Dog : Animal { public override void Speak() { Console.WriteLine("The dog barks"); } } public class Cat : Animal { public override void Speak() { Console.WriteLine("The cat meows"); } }
در این مثال، کلاس Animal
یک کلاس انتزاعی با متد انتزاعی Speak
است. کلاس های Dog
and Cat
از کلاس Animal
ارث می برند و پیاده سازی های خاصی را برای متد Speak
ارائه می کنند. این نمونه ای از Abstraction
با استفاده از کلاس های انتزاعی در سی شارپ است.
رابط ها
interface
یک نوع مرجع در سی شارپ است که قراردادی را برای پیاده سازی کلاس ها تعریف می کند. این فقط شامل اعلان روش ها، ویژگی ها، رویدادها یا نمایه سازها است، بدون ارائه پیاده سازی.
در اینجا یک مثال از یک interface
در سی شارپ آورده شده است:
public interface IFlyable { void Fly(); } public class Bird : IFlyable { public void Fly() { Console.WriteLine("The bird flies"); } } public class Airplane : IFlyable { public void Fly() { Console.WriteLine("The airplane flies"); } }
در این مثال، رابط IFlyable
قراردادی را با متد Fly
تعریف میکند. کلاس های Bird
و Airplane
رابط IFlyable
را پیاده سازی می کنند و پیاده سازی های خاصی را برای متد Fly
ارائه می دهند. این نمونه ای از Abstraction
با استفاده از رابط ها در سی شارپ است.
تبریک می گویم! اکنون با Abstraction
و نحوه پیاده سازی آن در سی شارپ آشنا شده اید. نکته کلیدی این است که Abstraction
به ما امکان می دهد پیچیدگی سیستم را پنهان کنیم و فقط جزئیات لازم را در معرض دید کاربر قرار دهیم.
خلاصه
در این مقاله، چهار رکن اساسی برنامه نویسی شی گرا (OOP) در سی شارپ را تحلیل کرده ایم: Inheritance
، Encapsulation
، Polymorphism
و Abstraction
.
این ستون ها شالوده OOP را تشکیل می دهند و مفاهیم ضروری برای درک هنگام کار با زبان های برنامه نویسی شی گرا مانند C# هستند. دانش به دست آمده از این مقاله به شما کمک می کند تا درک خود را از مفاهیم OOP و پیاده سازی آنها در سی شارپ افزایش دهید.
با تشکر از شما برای خواندن این مقاله، امیدوارم برای شما مفید باشد. اگر سوال یا بازخوردی دارید، در صورت تمایل با من تماس بگیرید. کد نویسی مبارک!
ارسال نظر