تفاوت بین وراثت و کانتینری

تفاوت بین وراثت و کانتینری
تفاوت بین وراثت و کانتینری

تصویری: تفاوت بین وراثت و کانتینری

تصویری: تفاوت بین وراثت و کانتینری
تصویری: فرق بین مناقصه و مزایده 2024, نوامبر
Anonim

ارث در مقابل کانتینر

وراثت و Containership دو مفهوم مهم هستند که در OOP (مثال برنامه نویسی شی گرا: C++) یافت می شوند. به عبارت ساده، Containership و Inheritance هر دو با ارائه خواص یا رفتار اضافی به یک کلاس سروکار دارند. وراثت توانایی یک کلاس برای به ارث بردن خواص و رفتار از یک کلاس والد با گسترش آن است. از سوی دیگر، Containership توانایی یک کلاس برای حاوی اشیاء از کلاس های مختلف به عنوان داده عضو است.

ارث چیست؟

همانطور که در بالا ذکر شد، وراثت توانایی یک کلاس برای به ارث بردن خواص و رفتار از یک کلاس والد با گسترش آن است.وراثت اساسا استفاده مجدد از کد را با اجازه دادن به گسترش خواص و رفتار یک کلاس موجود توسط یک کلاس جدید ارائه می کند. اگر کلاس A B را گسترش دهد، کلاس B را کلاس والد (یا کلاس فوق العاده) و کلاس A را کلاس فرزند (یا کلاس / زیر کلاس مشتق شده) می نامند. در این سناریوی مثال، کلاس A تمام ویژگی ها و متدهای عمومی و محافظت شده کلاس فوق العاده (B) را به ارث می برد. زیرکلاس می تواند به صورت اختیاری رفتاری را که از کلاس والد به ارث رسیده است، لغو کند (عملکردی جدید یا توسعه یافته برای متدها ارائه کند). وراثت نشان دهنده یک رابطه "is-a" در OOP است. این اساساً به این معنی است که A نیز یک B است. به عبارت دیگر، B می تواند کلاسی باشد با توصیف کلی یک موجودیت دنیای واقعی خاص، اما A یک تخصص خاص را مشخص می کند. در یک مشکل برنامه نویسی در دنیای واقعی، کلاس Person می تواند برای ایجاد کلاس Employee گسترش یابد. به این می گویند تخصص. اما شما همچنین می توانید ابتدا کلاس Employee را ایجاد کرده و سپس آن را به یک کلاس Person نیز تعمیم دهید (i.ه. تعمیم). در این مثال، Employee تمام خصوصیات و رفتار شخص را خواهد داشت (یعنی کارمند نیز یک شخص است) و ممکن است دارای برخی عملکردهای اضافی نیز باشد (بنابراین، شخص کارمند نیست).

Containership چیست؟

Containership توانایی یک کلاس برای داشتن اشیایی از کلاس های مختلف به عنوان داده عضو است. به عنوان مثال، کلاس A می تواند یک شی از کلاس B را به عنوان عضو داشته باشد. در اینجا، تمام متدهای عمومی (یا توابع) تعریف شده در B را می توان در کلاس A اجرا کرد. کلاس A به کانتینر تبدیل می شود، در حالی که کلاس B به کلاس حاوی می شود. کانتینری به عنوان ترکیب نیز شناخته می شود. در این مثال، می توان گفت که کلاس A از کلاس B تشکیل شده است. در OOP، Containership یک رابطه "has-a" را نشان می دهد. توجه به این نکته ضروری است که، حتی اگر کانتینر به اجرای تمام متدهای عمومی کلاس موجود دسترسی دارد، قادر به تغییر یا ارائه عملکرد اضافی نیست. وقتی صحبت از یک مشکل برنامه نویسی در دنیای واقعی می شود، ممکن است یک شی از کلاس TextBox در کلاس Form موجود باشد، و بنابراین می توان گفت که یک Form حاوی یک TextBox است (یا به طور متناوب، یک Form از یک TextBox تشکیل شده است).

تفاوت بین وراثت و Containership

اگرچه وراثت و Containership دو مفهوم OOP هستند، اما در آنچه به برنامه نویس اجازه می دهند به آن دست یابد کاملاً متفاوت هستند. وراثت توانایی یک کلاس برای به ارث بردن خصوصیات و رفتار از یک کلاس والد با گسترش آن است، در حالی که Containership توانایی یک کلاس برای حاوی اشیایی از کلاس های مختلف به عنوان داده عضو است. اگر یک کلاس گسترش یابد، تمام خصوصیات/رفتار عمومی و محافظت شده را به ارث می برد و این رفتارها ممکن است توسط زیر کلاس لغو شوند. اما اگر یک کلاس در کلاس دیگری قرار گیرد، ظرف توانایی تغییر یا افزودن رفتار به آن را ندارد. وراثت نشان دهنده یک رابطه "is-a" در OOP است، در حالی که Containership نشان دهنده یک رابطه "has-a" است.

توصیه شده: