C# – انتزاع (Abstraction)
انتزاع در C#
انتزاع (Abstraction) به معنای پنهانسازی جزئیات و نمایش تنها اطلاعات ضروری به کاربر است. در زبان C#، این هدف را میتوان با استفاده از کلاسهای انتزاعی (abstract classes) و متدهای انتزاعی (abstract methods) دنبال کرد.
کلاسهای انتزاعی و متدهای انتزاعی
-
کلاس انتزاعی (Abstract Class): کلاسی است که نمیتوان از آن شیء مستقیم ایجاد کرد. این کلاسها بهطور معمول به عنوان پایهای برای کلاسهای مشتق شده استفاده میشوند و میتوانند شامل متدهای انتزاعی و معمولی باشند.
-
متد انتزاعی (Abstract Method): متدی است که تنها در کلاسهای انتزاعی تعریف میشود و بدنه ندارد. پیادهسازی این متد باید در کلاسهای مشتق شده انجام شود.
استفاده از کلاسهای انتزاعی
برای ایجاد یک کلاس انتزاعی، از کلیدواژه abstract
استفاده میشود. کلاسهای انتزاعی میتوانند شامل متدهای انتزاعی و متدهای معمولی باشند.
مثال:
using System;
abstract class Animal // کلاس انتزاعی (Abstract Class)
{
// متد انتزاعی (Abstract Method) (بدنه ندارد)
public abstract void animalSound();
// متد معمولی
public void sleep()
{
Console.WriteLine("Zzz");
}
}
class Pig : Animal // کلاس مشتق شده (Inherited Class)
{
// پیادهسازی متد انتزاعی
public override void animalSound()
{
Console.WriteLine("The pig says: wee wee");
}
}
class Program
{
static void Main(string[] args)
{
Pig myPig = new Pig(); // ایجاد شیء از Pig
myPig.animalSound(); // فراخوانی متد انتزاعی
myPig.sleep(); // فراخوانی متد معمولی
}
}
خروجی:
The pig says: wee wee
Zzz
چرا و چه زمانی از کلاسهای انتزاعی و متدهای انتزاعی استفاده کنیم؟
-
پنهانسازی جزئیات: با استفاده از کلاسهای انتزاعی، میتوانیم جزئیات پیادهسازی را پنهان کرده و تنها اطلاعات ضروری را برای کاربر نمایش دهیم. این کار باعث میشود کد بیشتر قابل نگهداری و تغییرات آسانتر باشد.
-
تعریف قراردادها: با استفاده از متدهای انتزاعی، میتوان قراردادهایی را تعریف کرد که تمامی کلاسهای مشتق شده باید پیادهسازی کنند. این کار اطمینان میدهد که تمام کلاسهای مشتق شده، متدهای مشخصی را پیادهسازی میکنند.
-
مدیریت تغییرات: با تعریف متدهای انتزاعی، پیادهسازی این متدها در کلاسهای مشتق شده انجام میشود و این باعث میشود تغییرات در پیادهسازی متدها به راحتی مدیریت شود بدون اینکه نیاز به تغییرات گسترده در کدهای دیگر باشد.
نکات تکمیلی
-
کلاسهای انتزاعی و متدهای معمولی: کلاسهای انتزاعی میتوانند شامل متدهای معمولی نیز باشند که به کلاسهای مشتق شده به ارث میرسند. این متدها میتوانند به عنوان متدهای کمکی یا متدهایی که بهطور پیشفرض رفتار خاصی دارند، استفاده شوند.
-
تفاوت با رابطها (Interfaces): رابطها (Interfaces) نیز ابزاری برای دستیابی به انتزاع هستند، اما برخلاف کلاسهای انتزاعی، نمیتوانند شامل پیادهسازی متدها باشند و همه متدهای آنها باید در کلاسهای پیادهسازی شده تعریف شوند. در فصل بعدی به تفصیل به رابطها خواهیم پرداخت.
استفاده از کلاسهای انتزاعی و متدهای انتزاعی به ما کمک میکند تا طراحیهای شیءگرا را سادهتر و مقیاسپذیرتر کنیم و نرمافزارهایی با کیفیت بالا و قابل نگهداریتر ایجاد کنیم.
برای ارسال نظر لطفا ابتدا وارد حساب کاربری خود شوید. صفحه ورود و ثبت نام