Download presentation
Presentation is loading. Please wait.
1
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 1 תיכון מערכות תוכנה להנדסה ופיתוח פרוייקט אישי Software Design
2
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 2 פרק 1 הקדמה
3
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 3 מקומו של הקורס ניתוח מערכות System Analysis תיכון תוכנה Software Design תכנות Programming
4
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 4 מקומו של הקורס Our course Jonah’s course
5
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 5 מהו תיכון (טוב)? אפיון המערכת על בסיס הדרישות התמודדות יעילה עם דרישות משתנות ארגון מסגרת ומבנה לקידוד
6
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 6 Open Close Principle (OCP) האסטרטגיה שעל פיה ניתן לתת מענה לדרישות משתנות "תוכנה צריכה להיות פתוחה להרחבה וסגורה לשינויים" Bernard Meyer פתוחה להרחבה : ניתן יהיה להוסיף התנהגות חדשה למערכת- סגורה לשינויים : בלי לגעת בקוד שכבר כתבת. (אפילו לא לעשות קומפילציה מחדש וכד')
7
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 7 "חיזוק" (1) תיכון טוב זה להיות יותר חכם מפרדי
8
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 8 "חיזוק" (2) עליך להיות מעודכן תמיד
9
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 9 "חיזוק" (3) עליך לקחת את עצמך ברצינות
10
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 10 רשימת נושאים Open Closed Principle Principles of Class Design –Liskov Substitution Principle (LSP) –Dependency Inversion Principle (DIP) –Interface Segregation Principle (ISP) Principles of Package Design –Acyclic Dependency Principle (ADP) Case Study with Design Patterns Model Driven Development –Real Time Object Oriented Design –Executable Models (Rhapsody) Small Project Development –Extreme Programming, Test-first Programming, Refactoring, 7 Habits
11
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 11 בניית פרוייקט בזיקה ל- Rhapsody
12
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 12 מרכיבי פרוייקט Component Object Model Diagram Packages
13
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 13 פרוייקט Component Executable Name Scope
14
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 14 פרוייקט Component Configurations Current configuration
15
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 15 אתחול מופעים - Initial Instance פרוייקט Component Configurations
16
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 16 Settings Instrumentation Environment פרוייקט Component Configurations
17
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 17 Unified Modeling Language UML בזיקה ל- Rhapsody כלי תיאור המאפשר לתאר וללוות פיתוח של תוכנה לשלביה (ואף כלי למימוש תוכנית)
18
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 18 Object Model Diagram (OMD) ייצוג ויזואלי סטטי של אובייקטים/מחלקות ויחסים בניהם
19
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 19 OMD ייצוג Package ב- UML
20
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 20 OMD ייצוג Class ב - UML
21
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 21 OMD Class ייצוג חלקי ה - Class ב - UML Name Attributes Operation
22
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 22 OMD Class קשרים בין אובייקטים Object Relationships Association –Directed –Bi-Directional Aggregation –Directed –Bi-Directional Composition –Directed –Bi-Directional
23
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 23 OMD Class קשרים בין אובייקטים Object Relationships Dependency Inheritance Composite Multiplicity
24
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 24 OMD Class קשרים בין מחלקות Inheritance - ירושה Inheritance :source file
25
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 25 OMD Class קשרים בין מחלקות Associations - Directional Association Role Name Multiplicity Directed :source files
26
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 26 OMD Class קשרים בין מחלקות Associations - Bi-Directional Bi-Directional :source files
27
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 27 OMD Class קשרים בין מחלקות Aggregation Directed or Bi-Directional
28
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 28 OMD Class קשרים בין מחלקות Composition Directional Bi-Directional
29
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 29 OMD Class קשרים בין מחלקות Composite Composite - Directed : source files Composite : Bi-Directional
30
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 30 Multiplicity ריבוי
31
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 31 Containers/מיכלים Container / מיכל הוא מושג מופשט של אחסון וניהול ריבוי אלמנטים.
32
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 32 Relations טבלה המציגה כיצד Rhapsody מממש Container
33
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 33 Container OMCollection
34
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 34 Container OMList
35
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 35 Container OMMap
36
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 36 נספח לפרק 1 דוגמאות מימוש לפי Rhapsody
37
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 37 הגדרת מאפיינים (Attribute) דרך המחלקה
38
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 38 הגדרת מאפיינים (Attribute) דרך המאפיינים
39
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 39 הגדרת פעולות (Operations) דרך המחלקה
40
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 40 הגדרת פעולות (Operations) דרך הפעולה
41
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 41 Bi-Directional Association/Aggregation :source files // file Button.h #ifndef Button_H #define Button_H Dialer; class Button } public : Button(); ~Button(); Dialer* getItsDialer() const; void setItsDialer(Dialer* p_Dialer(); void __setItsDialer(Dialer* p_Dialer); void _setItsDialer(Dialer* p_Dialer); void _clearItsDialer(); protected : void cleanUpRelations(); Dialer* itsDialer; {; #endif // file Button.cpp #include Button.h #include Dialer.h Button::Button() { itsDialer = NULL; //#[ operation Button() setItsDialer(new Dialer); //#] } Button::~Button() { cleanUpRelations(); } Dialer* Button::getItsDialer() const { return itsDialer; } void Button::setItsDialer(Dialer* p_Dialer) { if(p_Dialer != NULL) { p_Dialer->_setItsButton(this); } _setItsDialer(p_Dialer); } //etc….
42
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 42 Directed Association/Aggregation :source files // file Button.h #ifndef Button_H #define Button_H class Dialer; class Button } public : Button(); ~Button(); Dialer* getItsDialer() const; void setItsDialer(Dialer* p_Dialer(); protected : void cleanUpRelations(); Dialer* itsDialer; {; #endif // file Button.cpp #include Button.h #include Dialer.h Button::Button() { itsDialer = NULL; } Button::~Button() { cleanUpRelations(); } Dialer* Button::getItsDialer() const { return itsDialer; } void Button::setItsDialer(Dialer* p_Dialer) { itsDialer = p_Dialer; } void Button::cleanUpRelations() { if(itsDialer != NULL) { itsDialer = NULL; }
43
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 43 Composite Or Composition (directed): Source Files // Telephone.h #ifndef Telephone_H #define Telephone_H #include "Dialer.h" class Telephone { public : Telephone(); ~Telephone(); public : Dialer* getItsDialer() const; protected : Dialer itsDialer; }; #endif // Telephone.cpp #include "Telephone.h" Telephone::Telephone() { } Telephone::~Telephone() { } Dialer* Telephone::getItsDialer() const { return (Dialer*) &itsDialer; } // Dialer.h #ifndef Dialer_H #define Dialer_H class Dialer { public : Dialer(); ~Dialer(); }; #endif // Dialer.cpp #include "Dialer.h" // Dialer.cpp Dialer::Dialer() { } Dialer::~Dialer() { }
44
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 44 Composite Or Composition (bi-directional): Source Files // Telephone.h, //Telephone.cpp כמו ב- Bi-directional // Dialer.h #ifndef Dialer_H #define Dialer_H class Telephone class Dialer { public : Dialer(); ~Dialer(); Telephone * getItsTelephone() const; void setItsTelephone (Telephone * p_Telephone); protected : Telephone * itsTelephone; }; #endif // Dialer.cpp #include "Dialer.h" Dialer::Dialer() { } Dialer::~Dialer() { } void Dialer::setItsTelephone(Telephon e * p_Telephone) {void Dialer::_setItsTelephone(Telepho ne* p_Telephone) { __setItsTelephone(p_Telephone); }
45
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 45 Inheritance : source file //file Button.h #ifndef Button_H #define Button_H #include "Inheritance.h" class Button { public : Button(const OMString& aDeviceId); Button(); virtual ~Button(); void detect(); private : virtual bool isButtonStateON()=0; public : OMString getDeviceId() const; void setDeviceId(OMString p_deviceId); protected : OMString deviceId; }; #endif //file Button.cpp--------------------- #include Button.h Button::Button(const OMString& aDeviceId) : deviceId(aDeviceId) { } // file ButtonImplementation.h #ifndef ButtonImplementation_H #define ButtonImplementation_H #include "Inheritance.h" #include "Button.h" class ButtonImplementation : public Button { public : ButtonImplementation(const OMString& aDeviceId); //etc... }; #endif //file ButtonImplementation.cpp--------------- ------ #include ButtonImplementation.h ButtonImplementation::ButtonImplementation(con st OMString& aDeviceId) : Button(aDeviceId) { } //etc...
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.