תכן תוכנה מונחה-עצמים Object-Oriented Software Design תכן מונחה עצמים - 1
CSU Software CSC CSCI System Business פעילות תכן התוכנה קלט ארכיטקטורת התוכנה מודל רכיבים model) (component מפרט תהליכי התוכנה רמת עניין sequence models use case model תוצרים עיקריים מבנה וארגון התוכנה מודל מחלקות model) (class תהליכי תוכנה מפורטים מודל מכונת מצבים model) (state machine מודל רצפים model) (sequence בדיקות מערכת בסביבת התפעול שילוב חומרה / תוכנה ובדיקות מערכת שילוב רכיבים ובדיקות פריטים שילוב יחידות ובדיקות רכיבים תכן תוכנה ניתוח וארכיטקטורת תוכנה ניתוח וארכיטקטורת מערכת הגדרת דרישות הלקוח ובעלי העניין זמן מימוש, שילוב ובחינה Implementation, Integration and Testing קידוד ובדיקת יחידות הגדרה ופירוט Definition and Specification תכן מונחה עצמים - 2
תוכן העניינים דרישות / החלטות המשפיעות על התכן מבנה וארגון התוכנה התבנית מונחית-העצמים (class model) מודל המחלקות תהליכי תוכנה מפורטים מודל רצפים model( )sequence ברמת התוכנה )state machine model) מודל מכונת מצבים סיכום UML תכן מונחה עצמים - 3
דרישות פונקציונאליות ודרישות לא פונקציונאליות מרחב הפתרון דרישות פונקציונאליות דרישות לא-פונקציונאליות תכן / מימוש דרישות פונקציונאליות דרישות לא פונקציונאליות מגדירות את תכולת הפתרון מגדירות מאפיינים ואילוצים על אופן מקבלות מענה ספציפי וישיר בתוך מימוש תכולת הפתרון מקבלות מענה כאשר הפתרון הפתרון )התכן/המימוש( הנבחר )התכן/המימוש( עומד במאפיינים ובאילוצים המוגדרים תכן מונחה עצמים - 4
דרישות/החלטות המשפיעות על התכן התכן הוא הפעילות בה נקבעים פרטי המימוש נדרש לקבל החלטות לגבי חלופות מימוש שונות הבסיס לקבלת ההחלטות אילוצים אילוצי תכן שנקבעו בדרישות אילוצים ניהוליים שנקבעו בדרישות אילוצי המפתח )זמינות טכנולוגית, החלטות שהתקבלו בשלבים קודמים ארכיטקטורה מערכתית חומרה זמינות משאבים, דרישות שימוש חוזר התכן נועד להציע דרך למימוש הדרישות הפונקציונאליות תוך מתן מענה לדרישות הלא-פונקציונאליות? וכו'( תכן מונחה עצמים - 5
דרישות/החלטות אופייניות עבור תכן התוכנה החומרה סוג המחשבים, ארכיטקטורת החומרה, תקשורת מערכת ההפעלה אופן הקריאה לשרותי מעה פ מתוך התוכנה, תהליכים שפת התכנות... טיפוסים, מבני בקרה, פונקציות בנויות, תמיכה בתהליכים, סטנדרטים למשל CORBA,.Net, TCP/IP שילוב מוצרי מדף למשל GIS = Geographic Information System שילוב מערכת קיימת system( )legacy בסיסי נתונים קיימים, חומרה קיימת תכן מונחה עצמים - 6
תוכן העניינים דרישות / החלטות המשפיעות על התכן מבנה וארגון התוכנה התבנית מונחית-העצמים (class model) מודל המחלקות תהליכי תוכנה מפורטים מודל רצפים model( )sequence ברמת התוכנה )state machine model) מודל מכונת מצבים סיכום UML תכן מונחה עצמים - 7
תוכנה מבנית )structured( ]קלאסית[ מבנה הפרדת המידע )data( מהפונקציונליות ביצוע עץ קריאות בין מודלים כל מודול מבצע מניפולציות על המידע )פונקציות/תהליכים ) מבני נתונים תכנית מבנית )מידע ) קריאות תכנית ראשית תכנית משנית תכנית משנית תכנית משנית D: מסמך )בעריכה( F: קובץ Open(F) Save(D,F) שגרה / פונקציה שגרה / פונקציה שגרה / פונקציה Open Save תכן מונחה עצמים - 8
תוכנה מונחית עצמים בתוך "עצמים" מבנה המידע והפונקציונליות כמוסים (encapsulated) ביצוע העברת "הודעות" בין אובייקטים שם מידע פעולות שם מידע פעולות שם מידע פעולות שם מידע פעולות הודעות : משתמש...... U D: Save_Yourself : D מסמך... Save F: Open_Yourself F: Save_Me)D( : F קובץ... Open Save תכן מונחה עצמים - 9
מ התבנית מונחית העצמים paradigm( )Object Oriented ושגי יסוד עצם )object( ישות בדידה גבולות וזיהוי מוגדרים מכיל בתוכו )encapsulates( מצב והתנהגות data members, attributes מצב = מבני נתונים - member functions, methods - פעולות / התנהגות = פונקציות מחלקה )class( מתאר )descriptor( של קבוצת עצמים, בעלי מאפיינים משותפים: תכונות פעולות יחסים התנהגות תכן מונחה עצמים - 10
עצמים ומחלקות עצמים (objects) היחידות הבסיסיות של התוכנה כל עצם מנהל את המידע שבאחריותו באמצעות הפונקציונליות שהוקנתה לו עצמים קיימים בזיכרון המחשב בזמן ריצת התוכנית ניתן לבנות/להרוס עצמים באופן דינמי תוך כדי ריצה = constructor פונקציה הבונה עצם חדש = destructor פונקציה ההורסת )מוחקת( עצם קיים מחלקות לכל עצם יש מפתח גישה ייחודי (classes) התבניות על פיהן נוצרים עצמים חדשים התבנית מכילה 3 "תאים" pointer(,)handle, הניתן לו ברגע בנייתו (compartments) המחלקות מוגדרות בקוד עצמים הם מופעים ספציפיים ע"י כותב התוכנה (instances) של מחלקות שם מאפיינים )מבני נתונים( פעולות )פונקציונלי ות( 11 - תכן מונחה עצמים
יצירה ותפעול של עצמים Car + maker: string + model: string + licenseplate: string + testdate: Date - owner: Person + sellto(person) : void + getowner(int) : Person + testisvalid(date) : boolean thebluecar : Car maker = mazda model = CX-7 licenseplate = 12-345-67 testdate = 08/09/2010 owner = Lior יצירת עצם "מכונית" חדש thebluecar = new(car) איתחול פרטי המכונית thebluecar.maker = mazda thebluecar.model = CX-7 רישוי וטסט thebluecar.licenseplate = 12-345-67 thebluecar.testdate = 08/09/2010 thebluecar.sellto(lior) function sellto(x) : owner = X מכירה תכן מונחה עצמים - 12
תוכן העניינים דרישות / החלטות המשפיעות על התכן מבנה וארגון התוכנה התבנית מונחית-העצמים (class model) מודל המחלקות תהליכי תוכנה מפורטים מודל רצפים model( )sequence ברמת התוכנה )state machine model) מודל מכונת מצבים סיכום UML תכן מונחה עצמים - 13
- תחביר תרשים מחלקות Diagram) (Class מחלקה ClassName - privateattribute: Type + puplicattribute: Type - privatemethod(x:typex, Y:TypeY) : ReturnType + publicmethod(x:typex, Y:TypeY) : ReturnType שם המחלקה מאפיינים מתודות קשרים )משתנים( מאפיין פרטי: מאפיין ציבורי: )פונקציות( מתודה פרטית: מתודה ציבורית: ניתן לגשת אליו רק מתוך המחלקה עצמה ניתן לגשת אליו גם מבחוץ ניתן לקרוא לה אך ורק מתוך המחלקה עצמה ניתן לקרוא לה גם מבחוץ A B זיקה (association) A B ירושה (Inheritance) A B הקבצה (aggregation) 14 - תכן מונחה עצמים
יחס ירושה )inheritance( / הכללה (Generalization) מחלקה B יורשת/מכלילה את מחלקה A: A מכילה את כל המאפיינים של B A מכילה את כל הפעולות של B בנוסף, B מכילה מאפיינים ופעולות משל עצמה B is-a A A של )sub-class( היא תת-מחלקה B כפתור דולק: }כן, לא{ לחיצה הדלקה/כיבוי מינוח לא מוצלח, כי B מכילה יותר מאשר A יחס הירושה יוצר מבנה היררכי של מחלקות מחלקה אבסטרקטית מחלקה שלא ניתן ליצור ממנה עצמים כל העצמים נוצרים ממחלקות היורשות אותה לדוגמה: "כלי רכב" כפתור מעלית כפתור קומה קומה זיהוי: כיוון: }למעלה, למטה{ תכן מונחה עצמים - 15
זיקה - association (Company,Person) navigability multiplicity Company 0..1 0..* Person employer employs employee יחס בין מחלקות המגדיר "היכרות" "היכרות" = מצביעים הדדיים בין עצמים ממחלקות אלה name role מאפיינים המאפשרים הגדרה ברורה יותר של זיקה שם )name( + כיוון "Company employs Person תפקיד )role( Company is the employer Person is the employee ריבוי )multiplicity( Company employs 0 or more Persons Person is employed by 0 or 1 company ניווט (navigability) Person knows who is its Company Company does not know its Persons תכן מונחה עצמים - 16
הקבצה )aggregation( סוג מיוחד של זיקה כל עצם ממחלקה B עצם "מכיל" )עצמים( ממחלקה A A is-part-of B שני סוגי הקבצה: B A ל- A יש קיום עצמאי שמות נוספים: logical aggregation shared aggregation הוא חלק בלתי נפרד מ- B A B A שמות נוספים: physical aggregation non-shared aggregation composition תכן מונחה עצמים - 17
הקבצה - דוגמה הקבצה לוגית )aggregation( לפיסקה יש סגנון-פיסקה אחד סגנון יכול להיות משותף למספר פיסקאות הסגנון הוא ישות עצמאית, וקיומו אינו מותנה בקיום פיסקאות מחיקת פיסקה אינה מוחקת את הסגנון Paragraph Style Paragraph Style 1..* Word 1..* Font Style Character ניווט )navigation( התו מכיר את הסגנון הסגנון אינו מכיר את התוים המשויכים אליו 1 0..* 0..* 1 1 1 הקבצה פיסית )composition( פיסקה מכילה לפחות מילה אחת כל המילים של הפיסקה שייכות אך ורק לפיסקה זו קיומה של המילה מותנה בקיומה של הפיסקה מחיקת פסקה מוחקת את כל המילים השייכות לה. 1. A Numbered Title This is the first paragraph of this document. It contains 17 words and 80 non-blank cha r ac t ers. תכן מונחה עצמים - 18
מודל מחלקות של מרחב הבעיה כבר בשלב הניתוח המערכתי ניתן לבנות מודל מובנה של עצמים, המייצגים את מונחי מרחב הבעיה והקשרים ביניהם המטרה PDOM = Problem Domain Object Model הבהרה וחידוד של המונחים והיחסים ביניהם שימושים יישוב סתירות ואי-בהירויות במפרטי הלקוח מילון מונחים של המערכת בסיס למודל מחלקות עבור התוכנה ישויות המידע בהן נדרשת התוכנה לטפל תכן מונחה עצמים - 19
מערכת המעליות איתור ראשוני של מחלקות 3 מעליות משרתות 10 קומות. בכל קומה, פרט לקומת הקרקע ולקומה העליונה, נמצאים שני כפתורים אחד לעליה ואחד לירידה. בקומת הקרקע נמצא כפתור אחד לעליה בלבד; בקומה העליונה נמצא כפתור אחד לירידה בלבד. משתמש הנמצא בקומה כלשהי ורוצה לנסוע במעלית לוחץ על הכפתור המתאים לכיוון הנסיעה המבוקש. אם לא היה דלוק קודם לכן, נדלק הכפתור בעקבות הלחיצה. מעלית כלשהי הנמצאת בכיוון הנסיעה המבוקש תגיע לקומה, תוך דקה לכל היותר. עם הגעתה תיפתח הדלת והכפתור יכבה. בתוך כל מעלית נמצאים 10 כפתורים אחד עבור כל קומה. כמו כן נמצאים במעלית כפתור לעצירת חירום וכפתור להזעקת חילוץ. משתמש הנמצא בתוך המעלית ורוצה להגיע לקומה כלשהי לוחץ על הכפתור המתאים. אם לא היה דלוק קודם נדלק הכפתור בעקבות הלחיצה ולמעלית נוספת בקשה לעצירה בקומה המתאימה. כאשר תגיע המעלית לקומה המבוקשת היא תיעצר, הדלת תפתח והכפתור המתאים לקומה יכבה. לאחר השהיה תיסגר הדלת והמעלית תמשיך בפעולתה. במקרה שהמעלית נתקעה במהלך נסיעה מזעיק הנוסע חילוץ באמצעות כפתור החילוץ. קצין הביטחון של הבניין הוכשר לחלץ נוסעים תקועים באמצעות פאנל הפעלה מיוחד הנמצא בחדר המכונות. המחלץ מוריד את המעלית לקומת הקרקע ופותח את דלתותיה. על פי תקנות משרד העבודה נבדקת המערכת אחת לששה חודשים בידי טכנאי מוסמך. בזמן הבדיקה לא ניתן להשתמש במערכת. אם הטכנאי מגלה תקלה הוא מנסה לתקן אותה ולחזור על הבדיקה. תכן מונחה עצמים - 20
אפיון ראשוני )חלקי( של מחלקות פוטנציאליות מקורות: מסמכי הלקוח Use Case Model קומה מעלית כפתור רלוונטי לכפתור-מעלית בלבד רלוונטי לכפתור-קומה בלבד דולק: }כן, לא{ זיהוי: קומה כיוון: }למעלה, למטה{ לחיצה הדלקה/כיבוי זיהוי מצב: }פעילה, מושבתת{ תקינות: }תקינה, מקולקלת{ מיקום: קומה תכנית: תור של בקשות נסיעה )כיוון( עצירה מספר? נוסע דלת בקשת עצירה שיוך: מעלית מצב: }פתוחה, סגורה{ שיוך: מעלית יעד: קומה פתיחה ביטול פתיחה/סגירה?? תכן מונחה עצמים - 21
מערכת המעליות - PDOM class PDOM use Trav elbutton FloorButton + dirlabel: up_down 1..2 +location is_at Floor + floorno: int goes_to User 0..* - islit: boolean + putlight(byte) : void + require(floor) : void Elev atorbutton 1 1 represents 10 +destination 1..10 + floorlabel: int 10 0..3 Elev ator 0..* StopRequest - destination: Floor 0..* + isactive: boolean + isinorder: boolean + Location: Floor + startoperation() : void RescueButton 1 1 1 0..* «abstract» Button + press() : void StopButton 1 Door + isclosed: boolean + open() : void + close() : void Motor + goto(floor) : void 22 - תכן מונחה עצמים
תרגיל בכיתה Diagram Class ערוך מודל מחלקות במרחב הבעיה (PDOM) של זהה ישויות המועמדות להיות מחלקות מסיפור הלקוח מהמפרט הטכני מטבלת הדרישות ממפרט ה- Use Cases הקצה מאפיינים ופעולות למחלקות מאפיינים על בסיס דרישות המידע )DR( פעולות )פונקציות, מתודות( "חתרנית" ודרישות נגזרות, אם ישנן על בסיס הדרישות התפעוליות )OR( זהה זיקות בין מחלקות במידה וקיימות מחלקות בעלות מאפיינים דומים, נסה להגדיר מחלקות-אב ולאפיין קשרי ירושה תכן מונחה עצמים - 23
מטלת בית מטלה צוותית ערכו מודל מחלקות של מרחב הבעיה,(PDOM) על פי ההנחיות שבתרגיל הכיתה תוצר זה הינו חלק ממפרט דרישות המערכת, אך איננו מוגש/מוצג כחלק מהטיוטות, אלא במסגרת תיק הפרויקט המלא הגשה ד' תכן תוכנה מונחה עצמים - 24
עקיבות הדרישות הפונקציונאליות למודל המחלקות המחלקות שבמודל המחלקות אמורות לספק את כל הפונקציונאלי ות המערכתית מכל דרישה פונקציונאלית בטבלת הדרישות יש להצביע למחלקה או למחלקות הרלוונטיות משתתפות בדרישה תפעולית )OR( לדוגמה: "אם לא היה דלוק קודם נדלק הכפתור בעקבות הלחיצה" מספקות את מבני הנתונים עבור דרישות המידע )DR( לדוגמה: "בכל קומה יהיו שני כפתורים" קומה כפתור מכל מחלקה במודל המחלקות יש להצביע על הדרישות הפונקציונאליות הרלוונטיות לה תכן מונחה עצמים - 25
מארכיטקטורת תוכנה לתכן תוכנה )ברמת הרכיב( ארכיטקטורת התוכנה הגדירה רכיבי תוכנה וממשקים ביניהם תכן מפורט של התוכנה = מבנה והתנהגות התוכנה של כל רכיב רכיב תוכנה component) (software כמערכת עניין הסביבה החיצונית רכיבים אחרים התקני חומרה שירותים A ממשקים הפונקציות שהוקצו לרכיב B D C המבנה ממשקים מסופקים/נדרשים מודל מחלקות הפעולה המשותפת אינטראקציה בין עצמים )תתואר באמצעות )sequence diagrams 26 - תכן מונחה עצמים
מועמדים לעצמים בתוכנה עצמים המייצגים ישויות פיזיות )מנוע, דלת, עמדת עבודה,...( מאפיינים: פרמטרים ונתונים לגבי הישות, קלט/פלט מתודות: פונקציונלית פיזית העצם המייצג משמש, למעשה, כממשק שבית התוכנה לישות הפיזית עצמים המייצגים ישויות לוגיות )תהליך, שירות,...( מאפיינים: פרמטרים ונתונים לגבי הישות, קלט/פלט מתודות: פעולות המשמשות את התהליך/השירות עצמים המייצגים ישויות מידע )מאגרי נתונים, רשימות, תורים,...( מאפיינים: רכיבי המידע שבאחריות הישות מתודות: פעולות על המידע )אחסון, שליפה, עדכון,...( עצמים המייצגים עצמים הנמצאים ברכיב תוכנה אחר "שיקוף" של העצמים החיצוניים מימוש ממשקי תוכנה-תוכנה דרך תווך של חומרה תכן מונחה עצמים - 27
בניית מודל מחלקות לרכיב תוכנה מקורות PDOM SRS מחלקות שצריכות להיות באחריות הרכיב מחלקות-אב שמהן ניתן לגזור מחלקות לרכיב תהליכי תוכנה (Use Cases, Sequence Diagrams) ספריות תוכנה מחלקות הקצאת הפונקציונאליות של הרכיב למחלקות )מאפיינים ומתודות( "מן המדף" אותן ניתן לשלב בתוכנה הייעודית תכן מונחה עצמים - 28
רכיב "תפעול מעלית" מחלקות רלוונטיות מה- PDOM class PDOM use Trav elbutton FloorButton + dirlabel: up_down 1..2 +location is_at Floor + floorno: int goes_to User 0..* - islit: boolean + putlight(byte) : void + require(floor) : void Elev atorbutton 1 1 represents 10 +destination 1..10 + floorlabel: int 10 0..3 Elev ator 0..* StopRequest - destination: Floor 0..* + isactive: boolean + isinorder: boolean + Location: Floor + startoperation() : void RescueButton 1 1 1 0..* «abstract» Button + press() : void StopButton 1 Door + isclosed: boolean + open() : void + close() : void Motor + goto(floor) : void תכן מונחה עצמים - 29
הפקת קוד ממודל המחלקות (Java) class PDOM Floor Trav elbutton + floorno: int - islit: boolean + putlight(byte) : void + require(floor) : void Elev atorbutton 1 1 represents + floorlabel: int 1..10 public abstract class Button { StopRequest public void press(){ } 0..* - destination: Floor } public class TravelButton extends Button { private boolean islit; «abstract» Button + press() : void public StopRequest m_stoprequest; public void putlight(byte on_off){ } public void require(floor floor){ } } public class ElevatorButton extends TravelButton { public int floorlabel; public Floor m_floor; } תכן מונחה עצמים - 30
תוכן העניינים דרישות / החלטות המשפיעות על התכן מבנה וארגון התוכנה התבנית מונחית-העצמים (class model) מודל המחלקות תהליכי תוכנה מפורטים מודל רצפים model( )sequence ברמת התוכנה )state machine model) מודל מכונת מצבים סיכום UML תכן מונחה עצמים - 31
מימוש תהליכי התוכנה מימוש הפונקציונליות של כל רכיב באמצעות עצמים בתוכנה פונקציונליות הרכיב תפקודו במסגרת מימוש התהליכים המערכתיים עצמים בתוכנה על בסיס מודל המחלקות של הרכיב A Comp1 B D C a:a b:b c:c 32 - תכן מונחה עצמים
נסיעה בין קומות פונקצית "איתחול פעילות" של פיקוד מרכזי "תפעול מעלית" תפעול מעלית פאנל נוסע דלת פאנל קומה מנוע ()תוליעפ לוחתיא 1.0 תומוק ןיב העיסנ seq loop ()תלד תריגס 1.1 [הריצע תושקב תומייק דוע לכ] 1.2 ()המוקל העיסנ 1.3 ()הריצע 1.4 alt ()תושקבה לכ לוטיב 1.5 [העקתנ תילעמה] endpoint ref חילוץ נוסע ()ץוליח תקעזה 1.6 ()תילעמ רותפכ יוביכ 1.7 [המוקב הרצענ תילעמה] ()תלד תחיתפ 1.8 1.9 1.12 ()המוק רותפכ יוביכ 1.11 ()העגה יוויח 1.10 ()היהשה 1.13 33 - ניתוח וארכיטקטורת תוכנה
d Interaction מימוש פונקציית "איתחול פעילות" של רכיב "תפעול מעלית" :Elevator mydoor :Door SRx :StopRequest mymotor :Motor ButF :ElevatorButton F :Floor 1.0 startoperation() loop [forever] 1.1 close() 1.2 closingphisicaldoor() 1.3 1.4 SRx= getnextrequest() 1.5 F= getnextfloor() 1.6 1.7 goto(f) 1.9 1.8 drivingphisicalmotor() procedure startoperation () do while (inorder && isactive) mydoor.close(); SRx = getnextrequest(); F = SRx.getNextFloor() mymotor.goto(f); mybuttons[f].putlight(off); mydoor.open(); F.notifyArrival; delay(t); end do; end startoperation; 1.10 putlight(off) 1.11 open() 1.12 openingphysicaldoor() 1.13 1.14 notifyarrival() 1.15 notifyserver() 1.16 delay(t) 34 - תכן מונחה עצמים
תוכן העניינים דרישות / החלטות המשפיעות על התכן מבנה וארגון התוכנה התבנית מונחית-העצמים (class model) מודל המחלקות תהליכי תוכנה מפורטים מודל רצפים model( )sequence ברמת התוכנה )state machine model) מודל מכונת מצבים סיכום UML תכן מונחה עצמים - 35
/ דלת המעלית דרישות משלימות נגזרות במעלית יש שני כפתורים עבור הדלת Open Door (OD) Close Door (CD) בדלת יש עינית (detector) המזהה מעבר של גוף דרך הדלת בעת פתיחה או סגירה של דלת תושמע הודעה קולית מתאימה כאשר המעלית לא פעילה היא חונה בקומה כלשהיא עם דלת סגורה לחיצה על כפתור קומה בה חונה מעלית תגרום לפתיחת הדלת דלת פתוחה תיסגר אחרי השהיה נתונה או כאשר נלחץ כפתור CD המעלית יכולה לנסוע רק כאשר הדלת סגורה במלואה כל עוד המעלית בתנועה שום אירוע לא יגרום לפתיחת הדלת לאחר עצירת מעלית בקומה כלשהיא הדלת נפתחת כל עוד הדלת לא סגורה כל אחד מהאירועים הבאים יביא לפתיחתה: לחיצה על כפתור OD זיהוי של העינית לחיצה על כפתור קומה בקומה בה היא נמצאת תכן מונחה עצמים - 36
מודל מכונת-מצבים Model) (State-Machine מכונת מצבים "אוטומט" )מודל מתימטי( מודל דינמי לתיאור התנהגות שימושי המודל תיאור התנהגות מונחית-אירועים (event-driven) של מערכת-עניין או מרכיב אלמנטרי מערכת רכיב תוכנה אובייקט תוכנה הדלקה off התקנה הישרפות כיבוי תכן מונחה עצמים - 37
State Chart תרשים מצבים (State) מצב מעבר מצב רגיל/פסיבי )למשל: "ממתין"( מצב פעיל )למשל: "מעבד"( (Transition) אירוע שינוי מצב הנגרם בעקבות אירוע או תנאי (Event) תנאי גורם למעבר ממצב למצב )למשל: "הדלקת מתג"( (Guard) פעולה מתנה את השפעת האירוע )למשל: "הדלקת מתג ]הדלת סגורה["( (Action) מתרחשת בעת מעבר או בתוך מצב בכניסה למצב action) (entry/ ביציאה ממצב action) (exit/ במהלך שה יה במצב פעיל action) (do/ State A State B event [guard] / action תכן מונחה עצמים - 38
state chart דלת מעלית stopped at floor or OD pressed [not in travel] or detector disturbed [not in travel] or Opening entry/ my_elevator:disable()? entry/ play_msg(opening) do/ loop: check_door floor button pressed [parked at floor] [door fully open] Closed entry/ my_elevator:enable() exit/ my_elevator:disable() shutdown [door fully closed] Closing entry/ play_msg(closing) do/ loop: check_door OD pressed or detector disturbed or floor button pressed Open entry/ set timer do/ loop: timer = timer-1 CD pressed or [timer == 0] תכן מונחה עצמים - 39
Event Handler דלת מעלית )קטע( void EventHandler(event EventClass)... switch (event): { case OD_Pressed if (current_state==closing) { my_elevator.disable(); play_msg( opening );... current_state=opening; } break; Opening entry/ my_elevator:disable() entry/ play_msg(opening) do/ loop: check_door OD pressed or detector disturbed or floor button pressed? Closing entry/ play_msg(closing) do/ loop: check_door תכן מונחה עצמים - 40
תרגיל בכיתה Diagram State Machine בנה תרשים מכונת מצבים של המחלקה "חולד" ) mole ( של תוכנת חתרנית תכן מונחה עצמים - 41
מטלת בית מטלה צוותית ערכו תרשים מכונת מצבים לאחת מישויות המערכת, על פי בחירתכם תוצר זה הינו חלק ממפרט דרישות המערכת, אך איננו מוגש/מוצג כחלק מהטיוטות, אלא במסגרת תיק הפרויקט המלא הגשה ד' תכן תוכנה מונחה עצמים - 42
תוכן העניינים דרישות / החלטות המשפיעות על התכן מבנה וארגון התוכנה התבנית מונחית-העצמים (class model) מודל המחלקות תהליכי תוכנה מפורטים מודל רצפים model( )sequence ברמת התוכנה )state machine model) מודל מכונת מצבים סיכום UML תכן מונחה עצמים - 43
היררכיה של מערכת עתירת תוכנה בייצוג UML תכן מונחה עצמים - 44
טבלת סיכום UML - מודלים אופייניים ברמות השונות רמה מודלים סטטיים )מבנה( מודלים דינמיים )התנהגות( Business-Level UC Model חופשי Class Model (PDOM) עסק ארגון / System Level UC Model Activity Diagram State Machine Diagram Deployment Model מערכת S/W Level UC Model Sequence Diagram (components) פריט תוכנה Component Model Sequence Diagrams (objects) State Machine Diagrams Class Model רכיב תוכנה תכן מונחה עצמים - 45