הבדל מפתח - צבירה לעומת קומפוזיציה ב-Java
צבירה היא אסוציאציה בין שני אובייקטים המתארת את מערכת היחסים "יש-יש". ההרכב הוא סוג הצבירה הספציפי יותר המרמז על בעלות. ההבדל העיקרי בין צבירה לקומפוזיציה ב-Java הוא שאם האובייקט הכלול יכול להתקיים ללא קיומו של האובייקט שבבעלותו, זהו צבירה, ואם האובייקט הכלול אינו יכול להתקיים ללא קיומו של האובייקט שבבעלותו, זהו קומפוזיציה.
תכנות מונחה עצמים (OOP) היא פרדיגמה מרכזית בפיתוח תוכנה.הוא משמש למודל של התוכנה באמצעות אובייקטים. האובייקטים נוצרים באמצעות מחלקות. מחלקה מורכבת ממאפיינים ושיטות. ישנם מספר אובייקטים בתוכנה. כל אובייקט משתף פעולה זה עם זה באמצעות העברת מסרים. הקשר בין שני אובייקטים ידוע בתור אסוציאציה. גם צבירה וגם הרכב הם שני סוגים של אסוציאציות. הקשר "יש-יש" מתאר שאובייקט אחד יכול להשתמש באובייקט אחר. ניתן ליישם צבירה והרכב בשפות תומכות OOP. אם האובייקט המוכל יכול להתקיים ללא קיומו של האובייקט הבעלים, אזי החיבור בין שני האובייקטים הללו הוא צבירה. אם האובייקט הכלול אינו יכול להתקיים ללא קיומו של האובייקט הבעלים, אזי השיוך בין שני האובייקטים הללו הוא קומפוזיציה.
מה זה צבירה ב-Java?
צבירה היא סוג של התאגדות. אם למחלקה יש התייחסות לישות, היא ידועה בשם צבירה. צבירה מייצגת את מערכת היחסים שיש.לאובייקט Student יכול להיות מאפיינים כגון student_id, name, address. לאובייקט זה יכול להיות גם אובייקט אחר בשם כתובת עם מידע משלו כגון עיר, מדינה, מדינה. במצב זה, לסטודנט יש כתובת אסמכתא של ישות. זו מערכת יחסים של "יש לו".
איור 01: מחלקה לסימונים
איור 02: תוכנית ראשית לתיאור צבירה
לפי התוכנית לעיל, ציוני הכיתה מורכבים משלושה מאפיינים שהם ציוני מתמטיקה, אנגלית ומדעים. לתלמיד יש אובייקט של ציונים.יש לו מאפיינים משלו שהם סימנים של מתמטיקה, אנגלית ומדעים. בשיטה הראשית נוצר אובייקט של סימנים ומקצים ערכי סימנים. אובייקט התלמיד שהוא s1 יכול להשתמש באובייקט סימנים שהוא m1. לכן, לתלמיד ולסימונים יש את מערכת היחסים "יש-יש". האובייקט Marks יכול להתקיים ללא אובייקט הסטודנט. לכן, זהו צבירה.
מה זה קומפוזיציה ב-Java?
קומפוזיציה היא סוג של שיוך. זוהי צורה ספציפית של צבירה המרמזת על בעלות. נניח שיש שתי מחלקות שנקראות מחלקה A ו-B. אם האובייקט של מחלקה B לא יכול להתקיים אם האובייקט של מחלקה A מושמד, אז זה קומפוזיציה. ספר מורכב מעמודים רבים. אם הספר ייהרס, גם הדפים ייהרסו. אובייקטי העמוד אינם יכולים להתקיים ללא אובייקט הספר. עיין בתוכנית שלהלן.
איור 03: כיתת כיתה
איור 04: כיתת בית ספר
איור 05: תוכנית ראשית לתיאור הרכב
לפי התוכנית לעיל, לכיתה יש שני מאפיינים שהם שם ומספר תלמידים. בית הספר הוא אוסף של חפצים בכיתה. בשיטה הראשית נוצרים שני אובייקטים בכיתה. אלה מתווספים ל'כיתות'. 'כיתות' אלו מועברות לחפץ בית הספר.לבסוף, שם הכיתה ומספר התלמידים מודפסים על ידי איטרציה דרך האוסף. אם אובייקט בית הספר ייהרס, האובייקטים בכיתה יהרסו גם הם. זו דוגמה לקומפוזיציה. הוא מכיל גם את מערכת היחסים 'יש לו' וגם מרמז על בעלות.
מהו הקשר בין צבירה וקומפוזיציה ב-Java?
צבירה וקומפוזיציה הם שני סוגים של שיוך וקומפוזיציה היא סוג מיוחד של צבירה. קומפוזיציה היא תת-קבוצה של צבירה
מה ההבדל בין צבירה וקומפוזיציה ב-Java?
צבירה לעומת קומפוזיציה ב-Java |
|
צבירה היא שיוך בין שני אובייקטים המתאר את הקשר "יש לו". | קומפוזיציה היא סוג צבירה ספציפי יותר המרמז על בעלות. |
שימוש | |
הצטברות משמשת כאשר אובייקט אחד משתמש באובייקט אחר. | קומפוזיציה משמשת כאשר אובייקט אחד הוא הבעלים של אובייקט אחר. |
השפעה על אובייקטים | |
בצבירה, השמדת האובייקט שבבעלותם לא תשפיע על האובייקט המכיל. | בהרכב, השמדת האובייקט שבבעלותם תשפיע על האובייקט המכיל. |
סיכום – צבירה לעומת קומפוזיציה ב-Java
צבירה וקומפוזיציה הם שני מושגים ב-OOP. הקשר "יש-יש" מתאר שאובייקט אחד יכול להשתמש באובייקט אחר. צבירה היא חיבור בין שני אובייקטים המתאר את מערכת היחסים "יש-יש". קומפוזיציה היא סוג צבירה ספציפי יותר המרמז על בעלות.ההבדל בין צבירה לקומפוזיציה בג'אווה הוא שאם האובייקט המוכל יכול להתקיים ללא קיומו של האובייקט שבבעלות זה הוא צבירה ואם האובייקט המוכל אינו יכול להתקיים ללא קיומו של האובייקט שבבעלות, זה קומפוזיציה.