UML

ברנדל

New member
UML

תגידו, לתרשים מחלקה יש איזה שהוא סטנדרט? בכל מקום אני רואה משהו אחר. מישהו יכול להסביר לי בעיברית פשוטה + הסבר למה הכוונה ב c++ את הדברים הבאים: חץ עם קו מלא ממחלקה למחלקה. חץ עם קו מקווקו ממחלקה למחלקה. חץ עם יהלום מלא. חץ עם יהלום ריק. הורשה עם קו מלא. הורשה עם קו מקוקו. קן בלי חץ. בבקשה אל תשלחו אותי לאתרים, ביקרתי בהם מספיק, לא ברור למה הכוונה שם בקוד ממשי, לדוגמא רשום יחס תלות- אם אוביקט של מחלקה א משתנה אז גם אוביקט של מחלקה ב'. לא ברור למה הכוונה במימוש. אם מישהו יכול להסביר לי את הסטנדרט, מה זה כל שורה ממה שרשמתי למעלה, אני אודה מאוד.
 

zivsh103

New member
אין לי עברקישור בכ"ז

sorry, i dont have hebrew, so a link with good explanation (see middle)​
 

ברנדל

New member
זה בדיוק מה שלא ביקשתי

כבר עברתי על כל האתרים האלה. ההסבר הוא בתאוריה, אני מתכוון תכלס שיגידו לי חץ הכוונה לשמירת פוינטר של מחלקה a במחלקה b. מעוין, הכוונה שאחד המשתנים הוא אוביקט של מחלקה אחרת וכן הלאה חץ מקווקו הכוונה שמישהו יוצר עם new. עזבו אותי מכל ה aggregation association וכו'. זה שאומרים לי ששתי מחלקות שהן assosiation הכוונה ליחס כל שהוא, לא אומר לי כלום מבחינת code. בגלל זה אני רוצה שמישהו יסביר לי את הסימונים השונים, הלכה למעשה איך הם באים לידי ביטוי בשפה ( c++). תודה
 
אבל זו הטעות שלך...../images/Emo26.gif

UML לא בא לייצג קוד... לפעמים אותה דיאגרמת UML יכולה להתבטא בכמה אופנים... שלא לדבר על זה שהיא יכולה להיות ממושמת ביותר משפה אחת... (ולפעמים יש שפות שלא תוכל לממשל דיאגרמה מסויימת... נניח של ירושה מרובה...) כשיש לך association בין מחלקה A למחלקה B, אף-אחד לא אומר לך אם A מחזיקה פוינטר ל-B או אם B ל-A (או שניהם)... בחלק מהשפות קשר של aggregation ו-composition למשל יהיה זהה לגמרי בקוד... אבל הוא יוסיף לך מידע חשוב בתאור המערכת... בתאור ה-Problem Domain.
 

ברנדל

New member
אני לא מבין למה אתה מתעקש לענות

על מה שאני לא שואל. כל שאני מבקש זה טבלא של: חץ מלא composition (או לא יודע מה) האוביקט מחזיק אוביקט אחר חץ מקוקו assosiation (או לא יודע) האוביקט מחזיק פוינטר של אחר ולכן האוביקט האחר ישאר וכו... אני לא מבין למה מתעקשים לענות על מה שלא יודעים? אם מישהו יודע שיכתוב את הטבלא. אם לא אז שלא יכתוב כלום.
 

הצלוי

New member
אז הנה, אוריארד עשה לך טבלה יפה

מאוד (בערך) בדיוק כמו שאתה מבקש ועדיין הספקת להתלונן ולקטר עוד הרבה...
 
לא מבין? אני אסביר.../images/Emo26.gif

1) כן יודעים. 2) אתה לא מבין. 3) אין טבלה כזו. Class diagram משמש לתאר מודל. המודל הוא לא בהכרח מודל אימפלמנטציה. הוא יכול להיות מודל של ה-problem domain - לכן הבקשה שלך היא בלתי-אפשרית. גם ב-Implementation model ל-Class diagram יכולות להיות מספר אפשריות מימוש, ואז המתכנת צריך לעשות את החלטות ה-implementation. אם מכל Class diagram היה קוד אפשרי אחד ויחיד, פשוט היו מפטרים אותך ובוחרים code generation מהתפריט של ה-rose...
 
יש סטנדרט ועוד איך...../images/Emo26.gif

אבל זה קצת מפורט כדי לרשום לך בהודעה... ולא - אין דרך להתחמק מלחפש קצת לבד... כדי להקל עלייך:
חץ עם קו מקווקו ממחלקה למחלקה. dependency (כלומר מחלקה שתלויה במחלקה אחרת)
חץ עם יהלום ריק. aggregation (קשר של שלם וחלקיו)
חץ עם יהלום מלא. composition (כנ"ל, אבל לחלק אין "זכות קיום" ללא השלם... כלומר - ברגע שהשלם "מת", כך גם החלק שלו...)
הורשה עם קו מלא. generalization (כלומר - הורשה רגילה בין מחלקות)
הורשה עם קו מקוקו. realization (כלומר, מחלקה שמממשת interface)
קו בלי חץ. association (קשר בין מחלקות)
חץ עם קו מלא ממחלקה למחלקה. association navigation (כלומר, קשר בין מחלקות עם כיוון) שלוף בגוגל כל אחד מהמושגים האלה עם המילה UML למשל, ואני בטוח שתקבל מלא חומר ודוגמאות...
 

ברנדל

New member
אבל זה בדיוק מה שאני קורא בכל

המקומות, זה לא עוזר לי. תן לי דוגמא ל dependency שממומשת בקוד. הרי לא סתם ממציאים מושגים שלא ניתן לממש אותם. תן לי דוגמא ל dependency שהוא לא composition. תן לי דוגמא ל aggregation. אחרי הכל בחברות רציניות יוצרים תוכנות על פי תרשימים כאלה. לא סתם יש מודלים של design patterns אם לאף אחד אין מושג איך לממש אותם.
 

vinney

Well-known member
שניה רגע, תן לי להבין

אני בדיוק צריך להגיש איזה פרוייקט עם ה UMLים האלה, אז שאני אדע
כל המושגים האלה שאתה מדבר עליהם (aggregation, dependancy etc), מה משמעותם? ז"א, הכוונה האם זה מושגים שהם לוגיים? משהו אלגוריתמי כזה? כי אם כן (ואני הבנתי שזה כך), אז השאלה שלך ריקה מתוכן...
 

ברנדל

New member
לא הבנתי מה אתה אומר

בגדול התרשימים האלה הם כלי עזר להעברת רעיונות של ארכיטקטורת תוכנה של מודלים שונים. המטרה שלהם היא פשוטה, להמחיש למתכנת איך לבנות את התוכנה שלו. עכשיו תאר לך שאתה מתכנת, ובא אליך ראש הצוות אם תרשים, אתה שואל אותה מה הכוונה כשהוא מצייר חץ עם יהלום, והוא עונה משהו כמו: aggregation. אתה אומר :מה???? והוא אומר משהו כמו תעשה את המחלקה כסך החלקים כאשר יש תלות במחלקה אחרת, ואתה אומר: מה???????????????????????? דבר עברית!!! זה לא משהו אלגוריתמי, אבל בהחלט זה משהו שניתן לכתוב אותו ב h file. מי שמכיר את התרשים טוב יכול לקרוא אותו ולהעביר אותו ל h file. או לכמה כאלה.
 

ברנדל

New member
התרשימים אינם מדברים על אלגוריתמים

הם דנים ברובד יותר גבוה ממימוש מסוג זה. הם מדברים על מי יורש ממי, איזה אוביקט יוצר איזה אוביקט, האם יש אוביקט שממש מוכל באוביקט אחר (ואז אם אחד נעלם אז גם השני אוטומטית), או שהוא רק מכיל pointer אליו, ואז אם אחד נעלם אז השני לא. אני די סגור על המימוש ב c++ אבל לא לגמרי. והייתי מעונין שמי שסגור יסביר בדיוק.
 

DadleFish

New member
אם יש לך גישה ל-rational rose,

היית מציע לך פשוט לעשות ניסוי. התוכנה מסוגלת לייצר קוד - חלק מהמושגים שציינת ממומשים ישירות בקוד. חלק לא - ההבדל בין composition לבין aggregation (יהלום מלא מול ריק, בהתאמה) הוא שב-composition, המחלקה הראשונה (זו שלידה היהלום המלא) לא רק מחזיקה את המחלקה השניה, אלא גם יוצרת אותה בפועל (נגיד עושה לה new). ב-aggregation, המחלקה הראשונה רק מחזיקה את המחלקה השניה. דוגמה ל-composition: אובייקט שמנהל את הקשר שלך מול שרת DNS, ומייצר אובייקטים משלו כדי לבצע את הקשר בפועל. דוגמה ל-aggregation: לוח משחק שמכיל חיילים שנוצרו במקום אחר.
 
ואתה אומר: "מה?????"../images/Emo26.gif

אז יענו לך - זה חלק משלם. האובייקטים שנוצרים ממחלקה A מהווים חלק מאובייקט שנוצר ממחלקה B (במקרה שהאגרגציה היא מ-A ל-B).
 
אבל מה שאתה לא מבין זה...../images/Emo26.gif

שהתרשים בא לתאר את המערכת! ולא את הקוד. כלומר בחלק מהמקרים - בא לתאר את "עולם הבעיה" (problem domain) בכלל. ויתכן ש-composition למשל ימומש בקוד בדיוק כמו aggregation! ככה שדווקא קוד לא יעזור לך! אתה צריך להבין את משמעות התרשים בהיבט של הבעיה - לא של הקוד! שוב - class diagram הוא לא תצוגה גרפית של הקוד!! זה לא תמיד אחד לאחד....
 
המלצה...../images/Emo26.gif

נראה לי שהבנתי אותך - אבל שוב, לא תוכל להתחמק מחיפוש או מלקחת ספר בספרייה... חפש ספר של "UML בעזרת Java" למשל או משהו כזה... (או CPP אם את עובד איתה). יש אחד טוב שנתקלתי בו:
Classical and object-oriented software engineering with UML and Java / Stephen R. Schach​
שם תוכל לראות איך ה-Class Diagram בא לידי ביטוי בקוד. אבל שוב אזהרה - בחלק מהמקרים זה ממש לא אחד לאחד...
 
למעלה