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

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

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

تصویری: تفاوت بین وراثت و ترکیب
تصویری: DELETE VS TRUNCATE VS DROP IN SQL 2024, جولای
Anonim

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

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

ارث چیست؟

همانطور که در بالا ذکر شد، وراثت توانایی یک کلاس برای به ارث بردن خواص و رفتار از یک کلاس والد با گسترش آن است.وراثت اساسا استفاده مجدد از کد را با اجازه دادن به گسترش خواص و رفتار یک کلاس موجود توسط یک کلاس جدید ارائه می کند. اگر کلاس A B را گسترش دهد، کلاس B را کلاس والد (یا کلاس فوق العاده) و کلاس A را کلاس فرزند (یا کلاس / زیر کلاس مشتق شده) می نامند. در این سناریوی مثال، کلاس A تمام ویژگی ها و متدهای عمومی و محافظت شده کلاس فوق العاده (B) را به ارث می برد. کلاس فرعی می تواند به صورت اختیاری رفتاری را که از کلاس والد به ارث رسیده است را لغو کند (عملکردی جدید یا توسعه یافته برای متدها ارائه کند).

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

ترکیب چیست؟

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

تفاوت بین ارث و ترکیب چیست؟

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

توصیه شده: