دانلود نرم افزار - آموزش سی شارپ
دانلود نرم افزار - آموزش سی شارپ

دانلود نرم افزار - آموزش سی شارپ

آموزش سی شارپ 14 ( انتزاع یا Abstraction )

انتزاع یا Abstraction:

پس از آشنایی با کپسوله‌سازی، حالا می‌خوام درباره دومین رکن مهم برنامه‌نویسی شیءگرا، یعنی انتزاع یا Abstraction صحبت کنم.

انتزاع به معنی ساده‌سازی و نمایش ویژگی‌های اصلی یک شیء و پنهان کردن جزئیات غیرضروریه. فکر کنید به یک ریموت تلویزیون. شما فقط با دکمه‌های روی ریموت کار دارید و نیازی نیست بدونید داخلش چه اتفاقی میفته. یا وقتی ماشین می‌رونید، فقط با فرمون، پدال‌ها و دنده سر و کار دارید و نیازی نیست بدونید موتور چطور کار می‌کنه.

هدف Abstraction در سی‌شارپ اینه که پیچیدگی‌های غیرضروری رو پنهان کنه و فقط اطلاعات مهم و مرتبط رو نمایش بده. این کار باعث می‌شه کد ساده‌تر، قابل فهم‌تر و راحت‌تر برای استفاده بشه.

انتزاع به ما کمک می‌کنه تا:

  1. روی جنبه‌های مهم و ضروری تمرکز کنیم.
  2. پیچیدگی رو کاهش بدیم و کد رو ساده‌تر کنیم.
  3. قابلیت استفاده مجدد از کد رو افزایش بدیم.

چه مواقعی از انتزاع استفاده کنیم؟

  • وقتی می‌خواهیم یک سیستم پیچیده رو ساده‌تر نشون بدیم.
  • وقتی می‌خواهیم یک رابط کاربری ساده برای استفاده از یک سیستم پیچیده ایجاد کنیم.
  • وقتی می‌خواهیم کدمون رو برای استفاده مجدد آماده کنیم.

انتزاع رو چطور در پروژه‌مون پیاده کنیم؟
در سی‌شارپ، می‌تونیم از کلاس‌های abstract، interface‌ ها، و متدهای virtual استفاده کنیم. این ابزارها به ما اجازه می‌دن تا یک قالب کلی رو تعریف کنیم بدون اینکه جزئیات پیاده‌سازی رو مشخص کنیم.

مثال عملی: وسایل نقلیه
فرض کنید می‌خوایم یه سیستم برای مدیریت انواع وسایل نقلیه بسازیم. می‌تونیم از انتزاع استفاده کنیم تا یه رابط کلی برای همه وسایل نقلیه تعریف کنیم:

public abstract class Vehicle

{

    public abstract void Start();

    public abstract void Stop();

    public virtual void Refuel()

    {

        Console.WriteLine("سوخت‌گیری انجام شد");

    }

}

 

public class Car : Vehicle

{

    public override void Start()

    {

        Console.WriteLine("ماشین روشن شد");

    }

 

    public override void Stop()

    {

        Console.WriteLine("ماشین خاموش شد");

    }

}

 

public class ElectricBike : Vehicle

{

    public override void Start()

    {

        Console.WriteLine("دوچرخه برقی روشن شد");

    }

 

    public override void Stop()

    {

        Console.WriteLine("دوچرخه برقی خاموش شد");

    }

 

    public override void Refuel()

    {

        Console.WriteLine("باتری شارژ شد");

    }

}

در این مثال، کلاس Vehicle یک قالب کلی برای همه وسایل نقلیه تعریف می‌کنه. کلاس‌های Car و ElectricBike این قالب رو پیاده‌سازی می‌کنن. ما جزئیات داخلی هر وسیله نقلیه رو پنهان کردیم و فقط عملیات‌های اصلی رو نمایش دادیم.

انتزاع به ما کمک می‌کنه تا سیستم‌های پیچیده رو ساده‌تر مدیریت کنیم و کد قابل فهم‌تر و انعطاف‌پذیرتری بنویسیم.

 

از آنجایی که دو مفهوم انتزاع و ارثبری همیشه در مثالهایی که آورده می شود با همدیگر بکار می روند توضیحاتی در زیر اضافه می کنم تا این دو مفهوم از هم تفکیک داده شوند .

انتزاع (Abstraction) و ارث‌بری (Inheritance) دو مفهوم مرتبط اما متمایز در برنامه‌نویسی شیء‌گرا هستند.

بیایید این دو مفهوم را از هم تفکیک کنیم:

انتزاع (Abstraction)

انتزاع به معنای ساده‌سازی و پنهان کردن پیچیدگی‌های غیرضروری است:

  • هدف: نمایش ویژگی‌های اصلی و پنهان کردن جزئیات غیرضروری .
  • تمرکز بر "چه کاری انجام می‌شود " و نه "چگونه انجام می‌شود "
  • پیاده‌سازی: از طریق کلاس‌های abstract و interface‌ها .
  • مثال: کلمه "حیوان" یک مفهوم انتزاعی است، زیرا به یک موجود خاص اشاره نمی‌کند .

ارث‌بری (Inheritance)

ارث‌بری مکانیزمی برای استفاده مجدد از کد و ایجاد سلسله مراتب بین کلاس‌هاست:

  • هدف: به اشتراک‌گذاری ویژگی‌ها و رفتارها بین کلاس‌هاست .
  • امکان ایجاد کلاس‌های جدید بر اساس کلاس‌های موجود .
  • پیاده‌سازی از طریق کلمه کلیدی ": "   انجام می شود .
  • مثال : کلاس "سگ" می‌تواند از کلاس "حیوان" ارث‌بری کند.

تفکیک انتزاع و ارث‌بری

انتزاع می‌تواند بدون ارث‌بری وجود داشته باشد:

  • یک interface می‌تواند انتزاع را بدون نیاز به ارث‌بری پیاده‌سازی کند.
  • کلاس‌های معمولی نیز می‌توانند با پنهان کردن جزئیات پیاده‌سازی، انتزاع را اعمال کنند.

ارث‌بری می‌تواند بدون انتزاع وجود داشته باشد:

  • یک کلاس معمولی می‌تواند از کلاس دیگری ارث‌بری کند، بدون اینکه لزوماً انتزاعی باشد.

انتزاع و ارث‌بری اغلب با هم استفاده می‌شوند، اما هر یک مفهوم مستقلی دارند. انتزاع بر ساده‌سازی و پنهان‌سازی تمرکز دارد، در حالی که ارث‌بری بر به اشتراک‌گذاری و سازماندهی کد تأکید می‌کند.