הבדל מפתח – צבירה לעומת קומפוזיציה
תכנות מונחה עצמים (OOP) היא פרדיגמה נפוצה בפיתוח תוכנה. האובייקט הוא מופע של מחלקה. לא ניתן ליצור אובייקטים בבת אחת. צריך להיות שרטוט או תיאור ליצירת אובייקט. השרטוט הזה ידוע בתור מחלקה. מחלקה מכילה מאפיינים ושיטות. אובייקטים נוצרים באמצעות מחלקות. מעמד וחפץ דומים לתכנית ולבית בעולם האמיתי. לא ניתן לבנות בית ללא תכנית מתאימה. באופן דומה, מחלקה משמשת ליצירת אובייקט. אובייקט משתף פעולה עם אובייקטים אחרים. קישור עם מייצג את הקשר של שני אובייקטים או יותר נקרא "אסוציאציה".צבירה והרכב הם סוגים של אסוציאציות. הם מתארים את הקשר בין הכיתות. מאמר זה דן בהבדל בין צבירה להרכב. ההבדל העיקרי בין צבירה להרכב הוא שצבירה היא אסוציאציה בין שני אובייקטים שמתארת את הקשר "יש לו" והרכב הוא סוג צבירה ספציפי יותר המרמז על בעלות.
מה זה צבירה?
קשר בין שני אובייקטים מוצג על-ידי שרטוט קו ב-Unified Modeling Language (UML). הקישור הוא עמותה. UML עוזרת לקבל ייצוג חזותי של המערכת. זה שונה משפות תכנות רגילות. האסוציאציה מגדירה גם את ריבוי החפצים. הם אחד לאחד, אחד לרבים ורבים לרבים. כאשר אובייקט בודד של מחלקה A משויך לאובייקט בודד של מחלקה B, כלומר קשר אחד לאחד. דוגמה לכך היא סופר שכותב ספר. בדוגמה זו, מחבר אחד כותב ספר.
כאשר אובייקט אחד ממחלקה A משויך לאובייקטים רבים של מחלקה B, זהו קשר של אחד לרבים. דוגמה לכך, במחלקה יכולים להיות עובדים רבים. כאשר האובייקט של מחלקה A משויך לאובייקטים רבים של מחלקה B ואובייקט של מחלקה B משויך לאובייקטים רבים של מחלקה A, זהו שיוך רבים-לרבים. דוגמה אחת היא, עובד יכול לעבוד על מספר פרויקטים ופרויקט יכול לכלול מספר עובדים.
Aggregation הוא שיוך סוג שמתאר עוד יותר את הקשר בין אובייקטים. צבירה מתארת "יש" מערכת יחסים. כמה דוגמאות שמתארות את הקשר הן, לתלמיד "יש תעודת תלמיד", לרכב "יש מנוע". אפשר גם להרחיב כמות גדולה עם הקשר. כמה דוגמאות הן, לבנק "יש הרבה" חשבונות בנק, לכיתה "יש הרבה" תלמידים. ניתן להסביר זאת באמצעות הדוגמה הבאה.
איור 01: צבירה
לפי הדוגמה לעיל, הכיתה מורכבת מתלמיד או תלמידים רבים. ריבוי משמש גם לציון מספר העצמים. הוא מתאר כי בכיתה אחת יש מספר תלמידים. סמל היהלום מייצג את הצבירה ב-UML. אובייקטים של תלמידים אינם מסתמכים על אובייקט הכיתה. אם אובייקט הכיתה מושמד, זה לא ישפיע על האובייקטים של התלמידים. האובייקטים האלה עדיין יהיו קיימים.
מה זה קומפוזיציה?
ההרכב הוא צורה ספציפית יותר של צבירה. זה מתאר את הבעלות. ניתן להסביר זאת באמצעות הדוגמה הבאה.
איור 02: קומפוזיציה
לפי האמור לעיל, אובייקט הספר מורכב מאובייקט עמוד או דפים. ריבוי משמש גם לציון מספר העצמים. הוא מתאר כי בכיתה אחת יש מספר תלמידים. סמל היהלום המודגש מייצג את ההרכב ב-UML. מכיוון שלספר יש עמוד או עמודים רבים, זהו צבירה, אך הוא מוגדר יותר. אם אובייקט הספר נהרס, אז גם אובייקטי העמוד נהרסים. אובייקטי עמוד אינם יכולים להתקיים ללא אובייקט הספר. לכן, ההרכב הוא צורה ספציפית יותר של צבירה המרמזת על בעלות.
מהם הדמיון בין צבירה והרכב?
- שניהם משמשים בתכנות מונחה עצמים.
- שניהם משמשים בשפת מודלים מאוחדת (UML) כדי לקבל הבנה ויזואלית של המערכת.
מה ההבדל בין צבירה להרכב?
צבירה לעומת קומפוזיציה |
|
צבירה היא שיוך בין שני אובייקטים המתאר את הקשר "יש לו". | ההרכב הוא סוג הצבירה הספציפי ביותר שמרמז על בעלות. |
סמל UML | |
צבירה מסומנת ביהלום. | הרכב מסומן ביהלום מודגש. |
פונקציונליות | |
בצבירה, אם האובייקט שבבעלותו נהרס, זה לא ישפיע על האובייקט המכיל. | בהרכב, אם האובייקט שבבעלותו ייהרס, זה ישפיע על האובייקט המכיל. |
סיכום – צבירה לעומת הרכב
תכנות מונחה אובייקטים היא פרדיגמה מרכזית בפיתוח תוכנה. ב-OOP, המערכת מעוצבת באמצעות אובייקטים. חפצים אלו אינם קיימים בנפרד. אובייקטים משתפים פעולה עם אובייקטים אחרים. הקשר בין אובייקטים ידוע בתור אסוציאציה. צבירה והרכב הם סוגי אסוציאציות. ההבדל בין צבירה להרכב הוא שצבירה היא אסוציאציה בין שני אובייקטים המתארת את הקשר "יש לו" והרכב הוא סוג הצבירה הספציפי יותר המרמז על בעלות. צבירה והרכב שניהם עוזרים להבין את התנהגות המערכת.
הורד את גרסת ה-PDF של צבירה לעומת קומפוזיציה
ניתן להוריד את גרסת ה-PDF של מאמר זה ולהשתמש בה למטרות לא מקוונות לפי הערת ציטוט. אנא הורד כאן גרסת PDF ההבדל בין צבירה והרכב