بهزاد علیزاده
بهزاد علیزاده
خواندن ۳ دقیقه·۴ سال پیش

اصول شی گرایی (۱ از ۴) : مفهوم ذهنی انتزاع (Abstraction)

درک مفهوم انتزاع (Abstraction)
درک مفهوم انتزاع (Abstraction)


وقتی در دنیای واقعی به دور و بر خودمون نگاه کنیم ، می تونیم یه سری موجودیت پیدا کنیم که بخشی از اونها با هم مشترک هست و یک مفهوم کلی و انتزاعی رو به ذهن میاره.

"اسب" ، "شتر" ، "فیل" موجودیت هایی هستند ، که بهشون می گیم "حیوان". (چرا؟)

چون وقتی می گیم "حیوان" ، یعنی یه سری ویژگی و رفتار مشترک هم در "اسب" ، هم در "شتر" و هم در "فیل" وجود دارد.


"ماشین سواری" و "ماشین باربری" موجودیت هایی هستند ، که بهشون می گیم "خودرو". (چرا؟)

چون وقتی می گیم "خودرو" ، یعنی یه سری ویژگی و رفتار مشترک هم در "ماشین سواری" و هم در "ماشین باربری" وجود دارد.

مثلا در دنیای واقعی هر موجودیتی که در ویژگی ها (Attributes) و رفتارهای (Behaviors) زیر مشترک باشند ، به عنوان "خودرو" می شناسیم.

ویژگی ها (Attributes) :

  • چرخ
  • میزان سرعت
  • فرمان
  • صندلی
  • چراغ
  • بوق

رفتارها (Behaviors) :

  • حرکت کردن
  • روشن و خاموش شدن
  • روشن کردن مسیر حرکت در شب
  • بوق زدن


یه چیزی! در مثال بالا برای مفهوم انتزاعی "خودرو" ، ویژگی ها (Attributes) و رفتارهای (Behaviors) دیگه ای وجود نداشت که بگیم؟ چرا فقط همین چند تا رو گفتیم؟

نکته اینجاست که در انتزاع کردن (Abstraction) ، بسته به نیاز فقط اون مواردی که می خوایم قابل مشاهده باشه رو بیان می کنیم و مواردی که از نظر ما مهمه و نباید قابل مشاهده باشه رو ذکر نکرده تا پنهان بمونن.

مثلا راننده نیاز داره بدونه که سرعت خودرو چقدره ، اما به دلیل اتوماتیک بودن خودرو نمی خوایم بدونه که تعداد دور در دقیقه موتور (RPM) چقدره!

پس در بین ویژگی های مفهوم "خودرو" ، ویژگی RPM رو بیان نکردیم تا پنهان باشه.




اما چرا به "خودرو" و "حیوان" مفاهیم انتزاعی (Abstract) می گیم؟

این ها مفاهیمی ذهنی و کلی هستند که در دنیای واقعی ، به خودی خود وجود ندارند و قابل پیاده سازی نیستند.

اگر به کسی بگین که "من حیوان دیدم" ، بهتون می گه چه نوع حیوانی؟ یا اینکه "من خودرو خریدم" ، می گه چه نوع خودرویی؟

چون مفهومی ذهنی ، طرحی کلی ، و الگویی هستند که انواعی از آن ها در دنیای واقعی پیاده سازی شده اند نه خود آن ها.

آنچه در دنیای واقعی می بینیم ، انواعی از خودرو یا انواعی از حیوان هستند که پیاده سازی شده اند.




در برنامه نویسی شی گرا !

در برنامه نویسی شی گرا کلاس های Abstract یی داریم که به خودی خود اجازه نمونه سازی (Instantiate) ندارن ؛ ولی می تونیم از کلاس هایی دیگه که ازشون ارث بری کردن نمونه (Instance) بگیریم.

به کلاس های قابل نمونه سازی می گن Concrete Classes و به کلاس هایی که نمی شه ازشون نمونه گرفت می گن Abstract Classes

اینترفیس ها و کلاس های Abstract ، ابزارهایی هستند برای تعریف مفاهیم انتزاعی.


برگرفته از :

Beginning C# Object-Oriented Programming (Apress - Dan Clark)
C# 8.0 in a Nutshell The Definitive Reference (OReilly - Joseph Albahari & Eric Johannsen)
برنامه نویسی شی گراشی گراییانتزاعabstractionabstract class
برنامه نویس
شاید از این پست‌ها خوشتان بیاید