איך מייצגים typedef בUML?

עידו פ

New member
אין ! כי זה לא נועד לזה

UML היא נוצטיה לכתיבת תרשימים. אכן, UML כנוטציה מציעה הרבה שיטות לשרטוט דיאגרמות מחלקות המוגדרות לפי ארכיט' OO (היינו ירושה, הכלה, אבסטרקציה וכו'), אך UML כנוטציה אינה נועדה להתאים את עצמה לשפת תכנות מסוימת. typedef זה משהו ספציפי לשפות כגון ++C, שנועד להחליף קטע קוד בזמן קומפילציה, ואין סיבה ש-UML כנוטציה תטפל בנושאים שכאלו.
 

ASP zone

New member
אבל זה ממש לא נכון

typedef זה רק keyword בC++. יש הוראה מקבילה גם בפסקל, בSQL, בVB ובעוד מליון שפות. אז למה זה לא מופיע?
 

עידו פ

New member
כי typedef זה feature של שפת תכנות

ו-UML לא נועד לתת לזה מענה. באותה מידה אפשר לשאול למה בשפות תכנות אין מנגנון compsition מובנה בסביבה אף על פי שב-UML יש כזו נוטציה ב-class diagram - והתשובה פשוטה - UML לא נועד לשרת שפות תכנות ושפות תכנות לא נועדו לשרת UML (לדוגמה, אין מניעה מלתכנן מודל UML-י מבוסס class diagram לסביבות פיתוח שאינן בכלל OO - זה רק אומר שתהיה לך הרבה עבודה להפוך את המודל ה-UML-י לקוד). UML היא נוטציה שאמורה לעזור להמחיש את התכנון של המערכת ותו לאו. כל נושא חילול הקוד אח"כ ואיך לתרגם נוטציות של UML לשורות קוד, זה ביטוי של UML בכלי CASE ולרוב זה מלווה בעוד הרבה תוספות ומנגנונים שאינם חלק מהגדרת ה-UML, כשהרעיון של חילול הקוד הוא היתרון שבכלי CASE אבל אין לו שום בסיס ואזכור ב-UML. אם לדעתך זה צריך להיות שם, אתה מוזמן לפנות ל-OMG שאחראים על הגדרות ה-UML באתר www.omg.org (אבל אני חושב שהתגובה שלהם תהיה דומה לשלי, אולי עם קצת יותר גיכוח). מצטער אם התשובה קצת בוטאת, זה פשוט שהשאלה בכלל לא רלוונטית ל-UML.
 
דיעה אחרת

ייתכן ש TYPEDEF כ KEYWORD הוא ספציפי לשפה אבל כמשמעות הוא אינו כזה ולכן ככלל על מנת למצוא את הנוטציה המתאימה ב UML צריך לחשוב על המשמעות-הקשר ש TYPEDEF או מילה שמורה אחרת יוצרת בהקשר של השפה שבה עושים שימוש. בכל מקרה אם אני זוכר טוב יש דבר כזה <<alias>> וזו משמעות אחת של TYPEDEF תזכור שתמיד תוכל לכתוב קטע קוד ולהריץ עליו תוכנה שיוצרת UML ולראות מה התוצאה. והכי חשוב....מה שחשוב שהמתכנתים שלך יבינו את כוונתך,ואם אתה מוסיף NOTE וכותב TYPEDEF והם מבינים אז ה UML שלך מושלם.... :) בברכה.
 

itzikbs

New member
פול מקרטני ? למה לעזאזל אתה מצפה ?

עם חתימה כזאת מה אתה רוצה מחיינו ? שנדע שאתה מה ? חנון ? מתחכם ? מתוחכם ? גאון ? מה ? מה זה הדבר הזה ???? !!!!!!
 

עידו פ

New member
אין הבדל בדעות לדעתי

כמו שאמרת - UML לא נועד לזה, בשביל זה יש תוכנות ש"מתלבשות" על UML ועוזרות לנהל מולו קוד. בסופו של דבר מה שמרבית התוכנות עושות זה להוסיף שדות מידע לאלמנטים של UML בשביל לחולל מזה קוד "נכון". סתם לדוגמה - אני עובד עם EA ושמתי לב שאין אפשרות להגדיר למחלקה שהיא סטטית (למתודה יש אפשרות, אבל למחלקה אין, ובדוט נט זה משהו שאפשר להגדיר). שלחתי מייל לחברה, הם אמרו שזה לא חלק מ-UML, אבל יש דרך להוסיף שדות נוספים לאלמנט של class ובאמצעותם לחולל קוד כרצוני - וזה מה שעשיתי. שבוע שעבר יצאה גרסה חדשה של EA - והפלא ופלא, הם הוסיפו את השדה הזה כמשהו חדש שניתן להגדיר על כל מחלקה - אבל עדין, זה לא חלק מה-UML, זה "התלבשות" של כלי CASE על נוטציית UML !
 
דעתי היא שזו טעות לחולל קוד מ UML

או יותר נכון טעות להתמקד ביצירת הקוד כאשר בונים דיאגרמת UML. אישית,אני חושב שברגע שיש לך כלי שמחולל קוד מ UML,אז אתה תיצור דיאגרמה שתחקה את ה קוד כלומר,מסובכת ועמוסה בפרטים. ,זו בדיוק הסיבה שבגללה הוא חיפש TYPEDEF(?!) כי אם לא היה מתמקר ביצירת קוד היה יכול לשים אפילו NOTE.ולכתוב TYPEDEF אם הדיאגרמה מחקה את הקוד,אז עדיף ללכת ישר לקוד... דרך אגב,גם אני מחולל קוד מ UML.... :) בברכה.
 

ASP zone

New member
אני מעדיף לעצב הכל כמו שצריך

ולחולל את הקוד מהUML. הUML חוסך לי לתכנת את השלד כל פעם מחדש. אבל לא רק, הוא נותן למתכנתים האחרים בפרוייקט שלי מידע מה לעשות עם כל דבר. typedef היא אולי מילה שמורה בC/C++ אבל מה שהיא עושה נמצאת בכל השפות.
 
תגדיר "הכל כמו שצריך"

אתה מתכוון שב UML אתה מתאר את כל המחלקות שיש לך,את כל הפונקציות את כל החברים,ממש עד לפרטים הכי קטנים? בברכה.
 

ASP zone

New member
בהחלט

אני גם מתאר קשר בין מחלקות, למה יש כזה קשר וכו. וUML בנוסף לדוקיומנטציה זה שילוב נהדר. עומר.
 
למעלה