הבדל בין ירושה למכולות

הבדל בין ירושה למכולות
הבדל בין ירושה למכולות

וִידֵאוֹ: הבדל בין ירושה למכולות

וִידֵאוֹ: הבדל בין ירושה למכולות
וִידֵאוֹ: שופיפיי מייקרוסטראטגי - מה ההבדל בין דילול לספליט למכירת מניות 2024, נוֹבֶמבֶּר
Anonim

ירושה לעומת ספינת מכולות

ירושה ו-Containership הם שני מושגים חשובים שנמצאים ב-OOP (דוגמה ל-Object Oriented Programming: C++). במילים פשוטות, הן Containership והן ירושה עוסקות במתן מאפיינים או התנהגות נוספים לכיתה. ירושה היא היכולת של מחלקה לרשת מאפיינים והתנהגות ממחלקה אב על ידי הארכתה. מצד שני, Containership היא היכולת של מחלקה להכיל אובייקטים ממחלקות שונות כנתוני חברים.

מהי ירושה?

כפי שהוזכר לעיל, Inheritance היא היכולת של מחלקה לרשת מאפיינים והתנהגות ממחלקה אב על ידי הארכתה.ירושה בעצם מספקת שימוש חוזר בקוד על ידי מתן אפשרות להרחבת מאפיינים והתנהגות של מחלקה קיימת על ידי מחלקה שהוגדרה לאחרונה. אם מחלקה א' מרחיבה את ב', אז מחלקה ב' נקראת כיתת האב (או כיתת העל) ומחלקה א' נקראת כיתת הילד (או מחלקה נגזרת/מחלקה משנה). בתרחיש לדוגמה זה, מחלקה A תירש את כל התכונות והשיטות הציבוריות והמוגנות של מחלקת העל (B). תת-המחלקה יכולה לעקוף (לספק פונקציונליות חדשה או מורחבת לשיטות) את ההתנהגות שעברה בירושה ממחלקת האב. ירושה מייצגת מערכת יחסים "הוא-א" ב-OOP. זה בעצם אומר ש-A הוא גם B. במילים אחרות, B יכול להיות המחלקה עם תיאור כללי של ישות מסוימת בעולם האמיתי, אבל A מציין התמחות מסוימת. בבעיית תכנות בעולם האמיתי, ניתן להרחיב את מחלקת האדם ליצירת מחלקת העובד. זה נקרא התמחות. אבל אתה יכול גם ליצור תחילה את המחלקה Employee ולאחר מכן להכליל אותה גם למחלקה Person (כלומר.ה. הַכלָלָה). בדוגמה זו, לעובד יהיו כל המאפיינים וההתנהגות של האדם (כלומר, העובד הוא גם אדם) והוא עשוי להכיל גם פונקציונליות נוספת (לכן, אדם אינו עובד).

מהי Containership?

Containership היא היכולת של מחלקה להכיל אובייקטים ממחלקות שונות כנתוני חברים. לדוגמה, מחלקה A יכולה להכיל אובייקט של מחלקה B כחבר. כאן, כל השיטות (או הפונקציות) הציבוריות המוגדרות ב-B יכולות להתבצע בתוך המחלקה A. Class A הופך למכולה, בעוד Class B הופך למחלקה המוכלת. ספינת מכולות מכונה גם קומפוזיציה. בדוגמה זו, ניתן לומר שמחלקה A מורכבת ממחלקה B. ב-OOP, Containership מייצגת קשר "יש-a". חשוב לציין שלמרות שלמכל יש גישה להפעיל את כל השיטות הציבוריות של המחלקה הכלול, הוא אינו מסוגל לשנות או לספק פונקציונליות נוספת. כאשר מדובר בבעיית תכנות בעולם האמיתי, אובייקט של Class TextBox עשוי להיות כלול בכיתה Form, ולכן ניתן לומר ש-Form מכיל TextBox (או לחילופין, Form מורכב מ-TextBox).

הבדל בין ירושה ל-Containership

למרות שלירושה ו-Containership הם שני מושגי OOP, הם שונים לגמרי במה שהם מאפשרים למתכנת להשיג. ירושה היא היכולת של מחלקה לרשת מאפיינים והתנהגות ממחלקת אב על ידי הארכתה, בעוד Containership היא היכולת של מחלקה להכיל אובייקטים ממחלקות שונות כנתוני חבר. אם מחלקה מורחבת, היא יורשת את כל המאפיינים/ההתנהגות הציבוריים והמוגנים וההתנהגויות הללו עשויות להידרס על ידי תת המחלקה. אבל אם מחלקה מוכלת באחר, המכולה לא מקבל את היכולת לשנות או להוסיף התנהגות למכיל. ירושה מייצגת קשר "is-a" ב-OOP, בעוד Containership מייצגת קשר "יש-a".

מוּמלָץ: