1 / 45

SCE - 2 מרכיבים: עצמים, היבטים דר’ יעקב אקסמן תשס"ו

SCE - 2 מרכיבים: עצמים, היבטים דר’ יעקב אקסמן תשס"ו. הנדסת מרכיבי תוכנה. דרישות תוכנה. דגם הייררכי. דגם פיזיקלי. מרכיבים. קוד להרצה = exe. מדידות. מרכיבים סיווג לפי תפקידים. יוצר פלט ?. כן. לא. משדר נתונים ?. פונקציה ספציפית ?. כן. לא. כן. לא. ?. מרוחק ?. כן. לא.

patty
Download Presentation

SCE - 2 מרכיבים: עצמים, היבטים דר’ יעקב אקסמן תשס"ו

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. SCE-2 מרכיבים: עצמים, היבטים דר’ יעקב אקסמן תשס"ו

  2. הנדסת מרכיבי תוכנה דרישות תוכנה דגםהייררכי דגםפיזיקלי מרכיבים קוד להרצה = exe מדידות

  3. מרכיבים סיווג לפי תפקידים יוצר פלט ? כן לא משדר נתונים? פונקציה ספציפית ? כן לא כן לא ? מרוחק? כן לא כן Object Aspect Connector Gluon

  4. מרכיבים עצמים עצמים (Objects) מרכיבים בעלי פונקציונאליות מוגדרת (סמנטיקה). יוצרים פלט.

  5. מרכיבים מחלקות מחלקות (Classes) הפשטה של תכונות משותפות לעצמים.

  6. מחלקות ספרות תרשימים [BRJ1999] Booch, G., Rumbaugh, J. and Jacobson, I. “The Unified Modeling Language User Guide” Addison-Wesley – Reading, MA – 1999.

  7. מחלקות מבנה פנימי שם המחלקה תכונות [סוגים] Attributes [types] פונקציות, שיטות methods

  8. מחלקות דוגמה 1 employee Id:Integer startDate:date Dept: String calculateSalary(month: Integer) fetchPersonalData() setPersonalData()

  9. תרשים מחלקות משתנים • attributes (fields, instance variables) • visibilityname : type[count] = default_value • visibility: + public # protected - private ~ package (default) / derived • underline static attributes • derived attribute: not stored, but can be computed from other attribute values • example:- balance : double = 0.00

  10. מחלקות דוגמה 2 Rectangle -width: int -height: int / area: double +Rectangle( width: int, height: int) +distance( r: Rectangle): double

  11. מחלקות סוגי תכונות Attribute types basic_types Boolean Short Integer Long Real Double Clockticks Counter String structured_types Vector Class_type …

  12. תרשים מחלקות שיטות • operations / methods • visibility name (parameters) : return_type • visibility: + public # protected - private ~ package (default) • underline static methods • parameter types listed as (name: type) • omit return_type on constructors andwhen return type is void • method example:+ distance(p1: Point, p2: Point): double

  13. מחלקות דוגמה 3 Student -name: String -id: int -totalStudents: int # getID( ): int +getName( ): String ~getEmailAddress( ): String +getTotalStudents( ): int

  14. מחלקות יחסים relationships

  15. תרשים מחלקות יחס - תלות A B A יודע על (תלוי ב- )B Bלא יודע עלA

  16. תרשים מחלקות פרוט ירושה • יחסי הכללה (ירושה) • סגנונות של קו, חץ • כאשר הורה הינו: • Class(מחלקה)קו מלא, חץ שחור • abstract class:קו מלא, חץ לבן • Interface(ממשק) • קו מקווקוו, חץ לבן

  17. תרשים מחלקות דוגמת ירושה

  18. תרשים מחלקות קישור • associational (usage) relationships • 1. multiplicity(how many are used) • *  0, 1, or more • 1  1 exactly • 2..4  between 2 and 4, inclusive • 5..*  5 or more • 2. name (what relationship the objects have) • 3. navigability (direction)

  19. תרשים מחלקות הרכבה Car Engine aggregation composition 1 1 Book 1 * Page בעייתיות של הבחנה

  20. תרשים מחלקות הרכבה

  21. תרשים מחלקות הערה <<Stereotype>>

  22. מחלקות מבחינת המתכנן כלל אצבע: שמות עצם

  23. מרכיבים סיווג יוצר פלט ? כן לא משדר נתונים? פונקציה ספציפית ? כן לא כן לא ? מרוחק? כן לא כן Object Aspect Connector Gluon

  24. מרכיבים היבטים היבטים (Aspects) מרכיבים אשר נוגעים לכלל המערכת (systemic). יוצרים פלט.

  25. היבטים ספרות [KM-2005] Gregor Kiczales & Mira Mezini “Aspect-Oriented Programming and Modular Reasoning” ICSE-2005 – St. Louis, MO. [Filman-2005] Filman, R.E., Elrad, T., Clarke, S. & Aksit, M. “Aspect-Oriented Software Development” Addison-Wesley – Boston, MA – 2005. [Kiselev-2002] Ivan Kiselev “Aspect-Oriented Programming with AspectJ” SAMS – Indianapolis, IN – 2002.

  26. היבטים דוגמה Wireless Orange Grapes Wired makeWine( ) getSugar( ) drawLabel( ) Weigh( ) Buy( ) Sell( ) squeeze( ) dryPeel( ) drawLabel( ) Weigh( ) Buy( ) Sell( ) acquirSignal( ) receive( ) drawLabel( ) Weigh( ) Buy( ) Sell( ) isConnected( ) reset( ) drawLabel( ) Weigh( ) Buy( ) Sell( ) פריט ארוז סחורה

  27. היבטים דוגמה FigureElement moveBy(int, int) refresh() Point Line 2 getX()getY()setX(int)setY(int)moveBy(int, int)draw() getP1()getP2()setP1(Point)setP2(Point)moveBy(int, int)draw() כל השיטות האלו מסתיימות בקריאה ל: Display.update();

  28. היבטים דוגמה FigureElement moveBy(int, int) refresh() Point Line 2 getX()getY()setX(int)setY(int)moveBy(int, int)draw() getP1()getP2()setP1(Point)setP2(Point)moveBy(int, int)draw() DisplayUpdating after(): call(void FigureElement+.set*(..)) || call(void FigureElement.moveBy(int, int)){ Display.update();} after(): call(void FigureElement+.set*(..)) || call(void FigureElement.moveBy(int, int)){ Display.update();}

  29. היבטים אנלוגיה FigureElement moveBy(int, int) refresh() Point Line 2 getX()getY()setX(int)setY(int)moveBy(int, int)draw() getP1()getP2()setP1(Point)setP2(Point)moveBy(int, int)draw() DisplayUpdating Crosscutting כמו התמרת Fourier (לרוחב במקום לאורך) after(): call(void FigureElement+.set*(..)) || call(void FigureElement.moveBy(int, int)){ Display.update();}

  30. היבטים מושגים • Join Point • אירוע =נקודות ניתנות לזיהוי • במהלך הריצה של תוכנית • Pointcut • פרדיקט = לקישור בין נקודת חיבור • לפונקציה נקראת • Advice • קוד לביצוע (הפונקציה הנקראת)

  31. היבטים דוגמה Joinpoints2 נקודות חיבור after(): call(void FigureElement+.set*(..))|| call(void FigureElement.moveBy(int, int)) { Display.update();} pointcut advice

  32. היבטים סוגי Advice • Before • לפני הקוד של העצם • After • אחרי • Around • מסביב = חלק מתבצע לפני • חלק לאחר נקודה מוגדרת

  33. היבטים דוגמת קוד: מחלקת A public class A { int a(int x) { System.out.println(“Method 'A.a'"); return b(x); } int b(int x) { System.out.println(“Method 'A.b'"); c("x"); return x; } String c(String x) { System.out.println(“Method 'A.c'"); (new B( )).c(3.14); return x; } שלוש שיטות: a, b, c שרשרת של הפעלות

  34. היבטים דוגמת קוד: מחלקת B public class B { void c (double x( { System.out.println(“Method 'B.c’ “ ); } } גם למחלקה B שיטה בשם c

  35. היבטים דוגמת קוד Main של מחלקה A • public static void main(String args[]) • } • try • } • A etzem = new A( ); • System.out.println("Start of "+ etzem.getClass().getName( )); • etzem.a(5); • System.out.println("End of "+ etzem.getClass().getName(( ); • { • catch(Throwable t) • { • System.out.println("Exception in main:"+ etzem); • etzem.printStackTrace(System.out); • } • { התחלת השרשרת

  36. היבטים דוגמת קוד ללא היבט תוצאת ריצה: Start of intro.A Method ‘A.a’ Method ‘A.b’ Method ‘A.c’ Method ‘B.c’ End of intro.A

  37. היבטים דוגמת קוד: Showcase.java public aspectShowcase { pointcut A_a(): call(int A.a(int)); pointcut A_all(): call(int A.*(int)); pointcut all_c(): call(* *.c(*)); before( ): A_a() { System.out.println("Before: " + thisJoinPoint); } after( ): A_all() || all_c() { System.out.println("After: " + thisJoinPoint); } Object around( ): all_c() { System.out.println("Start around: " + thisJoinPoint); Object o = proceed(); System.out.println("End around: " + thisJoinPoint); return o; } }

  38. היבטים דוגמת קוד עם היבט תוצאת ריצה: Start of intro.A Before: call(int intro.A.a(int)) Method ‘A.a’ Method ‘A.b’ Start around: call (String intro.A.c(String)) Method ‘A.c’ Start around: call (void intro.B.c(String)) Method ‘B.c’ After: call (void intro.B.c(double)) End around: call (void intro.B.c(String)) After: call (String intro.A.c(String)) End around: call (String intro.A.c(String)) After: call (int intro.A.b(int)) After: call (int intro.A.a(int)) End of intro.A

  39. היבטים הערות על Advice דומה ל Wrapper התוצאה רק לאחר הידור: בקוד להרצה.

  40. היבטים ריבוי דגמים שרירותיות של הדגם הראשון: מה זה אורך? מה זה רוחב? מרחב עצמים מופשט

  41. היבטים ריבוי דגמים חלוקה לפי צורה

  42. היבטים ריבוי דגמים חלוקה לפי צבע

  43. היבטים ריבוי דגמים מרחב לפי צבע לפי צורה לפי גודל בחירה של הדגם הראשון אורך = צבע

  44. היבטים ספרות [MO-2005] Mezini, Mira & Ostermann, Klaus “Untangling Crosscutting Models with CAESAR” Chapter 8 in [Filman-2005] “Aspect-Oriented Software Development” pp. 165-199

More Related