Presentation is loading. Please wait.

Presentation is loading. Please wait.

אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 1 תיכון מערכות תוכנה להנדסה ופיתוח פרוייקט אישי Software Design.

Similar presentations


Presentation on theme: "אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 1 תיכון מערכות תוכנה להנדסה ופיתוח פרוייקט אישי Software Design."— Presentation transcript:

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...


Download ppt "אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 1 תיכון מערכות תוכנה להנדסה ופיתוח פרוייקט אישי Software Design."

Similar presentations


Ads by Google