متن خبر

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

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

شناسهٔ خبر: 468502 -




به این راهنمای جامع برنامه نویسی شی گرا (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 و پیاده سازی آنها در سی شارپ افزایش دهید.

با تشکر از شما برای خواندن این مقاله، امیدوارم برای شما مفید باشد. اگر سوال یا بازخوردی دارید، در صورت تمایل با من تماس بگیرید. کد نویسی مبارک!

خبرکاو

ارسال نظر

دیدگاه‌ها بسته شده‌اند.


تبليغات ايهنا تبليغات ايهنا

تمامی حقوق مادی و معنوی این سایت متعلق به خبرکاو است و استفاده از مطالب با ذکر منبع بلامانع است