יחסים בין עצמים
 אתה נמצא ב   [ דף הבית | שטות תכון ויישום תכנה | תכן מונחה עצמים | יחסים בין עצמים ]


יחסים בין עצמים

 

בהקשר זה נטפל בהיבטים הבאים:


עצם בפני עצמו אינו מספק מידע שלם. עצמים גורמים להתנהגות מערכת ע"י שיתוף פעולה ביניהם. היחסים בין שני עצמים הוא בעיקר משני סוגים:

א.-Link  קשר (שנקרא גם seniority - בכירות).

ב. Aggregation-  צירופים (שנקרא גם parent/child - הורה/ילד). 

Link- קישור פיזי או Conceptual (מושגי/תפיסתי) בין עצמים. קו המקשר בין שני ייצוגי עצמים מייצג Link ביניהם ומשמעותו שה Messages (פעולות/הוראות) יכולים לעבור דרכו. 

ה- Link מציין קישור ספציפי באמצעותו עצם אחד, ה- Client (לקוח) מפעיל את השירותים של עצם אחר, ה- Supplier (ספק).

 

העצמים המקושרים ב- Link יכולים להיות בעלי אחד התפקידים הבאים:

  • Actor: עצם המפעיל עצמים אחרים, אך הוא לעולם לא מופעל ע"י עצם אחר. לעיתים בהקשרים מסוימים Actor מכונה Active Object.

  • Server: עצם שאיננו מפעיל עצמים אחרים והוא רק מופעל ע"י עצמים אחרים.

  • Agent: עצם שיכול גם להפעיל עצמים אחרים וגם להיות מופעל ע"י עצמים אחרים.

  • Agent: נוצר בד"כ ע"י Actor או Agent אחר כדי לבצע פעולה מסוימת עבורו.

 

היראות ((Visibility:

שני עצמים הקשורים ע"י link קיימת ביניהם היראות- visibility. כדי להעביר messages מהאחד לשני. Visibility זו היא מאחד מארבעת הסוגים הבאים:

1. The supplier object is global to the client.

2. The supplier object is a parameter to some operation of the client

3. The supplier object is part of the client object

4. The supplier object is a locally declared object, in some operation of the client.

Synchronization

כאשר עצם אחד מעביר message לעצם אחר דרך link, אזי שני עצמים אלו הם synchronized- synchronization הוא מאחד הסוגים העיקריים הבאים:

  • Sequential (סדרתי)- בכל עת קיים עצם פעיל אחד בלבד (a single active object at a time)

  • Guarded (מוגן)- קיימים מספר תהליכים פעילים (multiple threads of control) וה- clients משתפים פעולה ע"מ להשיג mutual exclusion (מניעה הדדית).

  • Synchronous-  קיימים מספר תהליכים פעילים וה- suppliers מבטיחים mutual exclusion.

סוגי synchronization:

  • -Synchronous פעולה (operation) מתחילה רק כאשר השולח (sender) יזם אותה והמקבל (receiver) מוכן לקבל את ה message. שניהם ימתינו ללא הגבלת זמן עד ששני הצדדים יהיו מוכנים להמשיך.

  • -Balking כמו synchronous, רק שהשולח יוותר על הפעולה אם המקבל איננו מוכן מיידית.

  • -Timeout כמו synchronous, רק שהשולח ימתין זמן מוגדר למקבל להיות מוכן.

  • -Asynchronous השולח עשוי ליזום פעולה ללא התחשבות בכך אם המקבל מצפה לקבל את ה- message.

Aggregate

צירוף המורכב מחלקיו (parts) הנקראים גם attributes (תכונות). Aggregate נקרא גם .Container הצירוף יכול להיות הכלה פיזית כגון מטוס, המורכב ממנועים, כנפיים, מתקן נחיתה וכדומה או הכלה conceptual כגון בעל מניות ומניותיו.

 

לסיכום:

Link- מציין יחס client/supplier. Aggregate מציין מדרג whole/part.

ההחלטה איזה סוגי יחס לבחור היא של מהנדס התוכנה.

Message עובר ב link בכיוון אחד מסוים, אך הנתונים (data) יכולים לעבור בשני הכיוונים.

 

 

לסעיף הבא- יחסים בין מחלקות...

הקודם רמה למעלה הבא


[דף הבית] [למד עכשיו UML] [למה להשתמש] [שטות תכון ויישום תכנה] [סמונים מקובלים] [כלי פיתוח] [מלון מונחים] [גלריית תמונות] [ספריה אור קולית] [קישורים] [ביבליוגרפיה] [על האתר] [מפת האתר]