مفاهیم اصلی شیءگرایی: ارث بری و پلیمورفیسم
مقدمه:
شیءگرایی یکی از مهمترین اصول برنامهنویسی است که به برنامهنویسان این امکان را میدهد تا کد خود را به شکل ماژولار و ساختارمند بنویسند. دو مفهوم کلیدی در شیءگرایی، ارث بری و پلیمورفیسم، اساسیترین اصول این رویکرد هستند. در این مقاله، به بررسی این دو مفهوم پرداخته خواهد شد.
ارث بری (Inheritance)
ارث بری یکی از اصول اصلی در شیءگرایی است که به برنامهنویسان این امکان را میدهد که ویژگیها و عملکردهای یک کلاس را به صورت ارثی از یک کلاس دیگر به ارث ببرند. این مفهوم از ویژگیها و رفتارهای موجود در یک کلاس (کلاس پایه یا سوپر کلاس) برای استفاده در کلاسهای دیگر (کلاسهای مشتق یا زیر کلاسها) ارائه میدهد.
ارث بری معمولاً به صورت سلسله مراتبی عمل میکند، به این معنی که یک کلاس مشتق میتواند ویژگیها و عملکردهای کلاس پایه را به ارث ببرد و همچنین خود را به عنوان کلاس پایه برای کلاسهای دیگری در نظر بگیرد. این امکان را فراهم میکند که یک ساختار سلسله مراتب از کلاسها به وجود آید که هر کدام ویژگیهای خود را دارند و با این ارث بری، کد تکراری کاهش مییابد و قابلیت بازنگری و توسعه راحتتر میشود.
یکی از مزایای ارث بری این است که اگر یک کلاس پایه تغییر کند، کلاسهای مشتق نیز این تغییرات را به ارث میبرند. بنابراین، تغییر در یک مکان (کلاس پایه) میتواند تأثیری جهتدهنده بر سایر قسمتهای برنامه داشته باشد.
همچنین، ارث بری میتواند باعث ایجاد یکپارچگی و بهبود سازماندهی در کد شود. با توجه به ارث بری، کد به دوام میآید و قابلیت استفاده مجدد از کدها بهبود مییابد که این موارد باعث کاهش زمان توسعه و نگهداری میشوند.
به عنوان مثال، فرض کنید یک کلاس “حیوان” داریم که ویژگیهایی مانند نوع تنفس، تغذیه و روش حرکت را داراست. از این کلاس میتوانیم کلاسهای “پرنده” و “پستاندار” را به ارث ببریم. “پرنده” میتواند ویژگیهای خاص خود را مثل پرواز و…
پلیمورفیسم (Polymorphism)
پلیمورفیسم یکی از اصول اساسی شیءگرایی است که به برنامهنویسان این امکان را میدهد که یک عمل یا تابع را به چندین شکل و صورت مختلف پیادهسازی کنند. این اصل به معنای “بیش از یک شکل” است و به برنامهنویسان اجازه میدهد که یک عمل یا تابع را بر اساس نوع دادهها یا کلاسها، با رفتارهای مختلفی پیادهسازی کنند.
در پلیمورفیسم، یک تابع یا عمل میتواند برای نوعهای مختلف داده یا کلاسها به صورت متفاوتی عمل کند. این به برنامهنویس امکان میدهد که با استفاده از یک نام یا واسط عملیاتی، کدهای متفاوتی را فراخوانی کند که بسته به نوع داده یا کلاس ورودی، رفتار یا عملکرد متفاوتی داشته باشد.
یکی از اصول پلیمورفیسم در زبانهای برنامهنویسی، پارامترهای چندگانه (Overloading) است. این مفهوم به برنامهنویس امکان میدهد که یک تابع یا متد را با همان نام اما با پارامترهای مختلفی پیادهسازی کند تا به ورودیهای متفاوت با رفتارهای مختلف واکنش نشان دهد.
همچنین، پلیمورفیسم به صورت وسیعتر در شیءگرایی مورد استفاده قرار میگیرد. از جمله این موارد میتوان به پلیمورفیسم زمان اجرا (Runtime Polymorphism) با استفاده از مفهوم اوررایدینگ (Overriding) اشاره کرد. در این حالت، یک متد در کلاس پایه (سوپر کلاس) توسط یک متد با همان نام در کلاسهای مشتق (زیر کلاسها) بازنویسی میشود. وقتی که این متد با یک شیء از نوع زیر کلاس فراخوانی میشود، عملکرد مربوط به آن زیر کلاس اجرا میشود.
این اصل اجازه میدهد که برنامهنویسان از ویژگی یا عملکرد یک نوع داده یا کلاس استفاده کنند بدون اینکه جزئیات دقیق از نوع داده را در نظر بگیرند. به عبارت دیگر، اجرای یک عمل به وابستگی نوع داده ورودی خاص نیست و برنامه قابلیت انطباق با نوع دادههای مختلف را دارد.
نتیجهگیری
در کل، ارث بری و پلیمورفیسم دو مفهوم اساسی در شیءگرایی هستند که به برنامهنویسان امکان میدهند کد خود را به صورت ساختارمند و قابل توسعه طراحی کنند.
- ارث بری امکان انتقال ویژگیها و رفتارهای یک کلاس به کلاسهای دیگر را فراهم میکند، این امر منجر به ایجاد سلسله مراتبی از کلاسها با ویژگیها و عملکردهای مشترک میشود و باعث کاهش تکرار و افزایش بازاستفادهپذیری کد میشود.
- پلیمورفیسم اجازه میدهد که یک عمل یا تابع با ورودیهای یا پارامترهای مختلف، رفتارهای متفاوتی از خود نشان دهد، این اصل به برنامهنویس امکان میدهد تا با استفاده از یک نام یا واسط عملیاتی، کدهای متفاوتی را با ورودیهای مختلف فراخوانی کند و به صورت متناسب با ورودیهای خود عمل کند.
هر دو این مفاهیم، کد را بهبود میبخشند، قابلیت بازاستفاده، کاهش تکرار و افزایش سازماندهی را ارتقاء میدهند و برنامهنویسان را قادر میسازند تا برنامههایی را بنویسند که انعطافپذیری و قابلیت توسعه بالایی داشته باشند.