Download presentation
Presentation is loading. Please wait.
Published byAldous Lindsey Modified over 8 years ago
1
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 1 פרק 5 תרשימי מצבים Statecharts למחלקות תגובתיות Reactive Classes הקדמה ודוגמא פשוטה
2
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 2 מחלקה תגובתית Reactive Class
3
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 3 דוגמא של Statechart פשוט למחלקה תגובתית actions timeout guards terminator condition connector transition state default transition 2;
4
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 4 Transitions מעברים בין מצבים סינטקס (syntax) מעבר בין שני מצבים מסומן ע " י חץ המחבר ביניהם, בד " כ עם דברים כתובים על החץ כלהלן : – אירוע event: דבר שקורה בנקודת זמן מסוימת – תנאי condition : ערך בוליאני (boolean) – פעולה action ( כמו פונקציה או פקודת C++) מעבר לא צריך לכלול כל שלשת האלמנטים - נפרט בהמשך
5
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 5 Transitions מעברים בין מצבים סוגים של מעברים Default Transition –No events or conditions –Can have actions Regular transition –Event[condition]/action –tm() is an event Null transition –[condition]
6
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 6 Default Transition actions
7
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 7 Regular Transition event condition action
8
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 8 Null Transition condition
9
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 9 סימנים מיוחדים terminator condition connector History connector מצב "סופי של אוביקט כאשר הוא מת. יזכור באיזה מצב הוא היה ב"ביקור" האחרון דרך לאחד יציאות שונות ממצב אחד, כאשר לכל יציאה יש אותו אירוע, אבל עם תנאי אחר.
10
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 10 דוגמא פשוטה - לולא countdown
11
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 11 מה מתבצע קודם : print(count) או isDone()? 2;
12
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 12 Sequence Diagram before execution: What We Expect
13
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 13 Animated Sequence Diagram: Animated What We Expect
14
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 14 איתחול של Statechart “ Start Behavior ” Please enter OMTracer Command>> timestamp Please enter OMTracer Command>> go idle OMTracer (0:00:00.000) New instance Display[0]:Display created by main() OMTracer (0:00:00.000) main() Invoked Display[0]->Start Behavior OMTracer (0:00:00.000) Display[0] Entered State ROOT OMTracer (0:00:00.000) Display[0] Invoked print(string = started) OMTracer (0:00:00.000) Display[0]->print(string = started) Returned OMTracer (0:00:00.000) Display[0] Entered State ROOT.active OMTracer (0:00:00.000) Display[0] set tm(200) at ROOT.active OMTracer (0:00:00.000) Display[0]->Start Behavior Returned Executable is Idle
15
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 15 טיפול באירוע "take event ” Please enter OMTracer Command>> go idle OMTracer (0:00:00.200) Display[0] Sent to itself Event tm(200) at ROOT.active OMTracer (0:00:00.200) Display[0] Received from itself Event tm(200) at ROOT.active OMTracer (0:00:00.200) main() Invoked Display[0]->Take Event Timeout OMTracer (0:00:00.200) Display[0] Invoked isDone() OMTracer (0:00:00.200) Display[0]->isDone() Returned OMTracer (0:00:00.200) Display[0] Exited State ROOT.active OMTracer (0:00:00.200) Display[0] Invoked print(n = 1) OMTracer (0:00:00.200) Display[0]->print(n = 1) Returned OMTracer (0:00:00.200) Display[0] Entered State ROOT.active OMTracer (0:00:00.200) Display[0] set tm(200) at ROOT.active OMTracer (0:00:00.200) Display[0]->Take Event Timeout Returned Executable is Idle
16
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 16 " סיום חיים " של אוביקט תגובתית Please enter OMTracer Command>> go idle OMTracer (0:00:00.400) Display[0] Sent to itself Event tm(200) at ROOT.active OMTracer (0:00:00.400) Display[0] Received from itself Event tm(200) at ROOT.active OMTracer (0:00:00.400) main() Invoked Display[0]->Take Event Timeout OMTracer (0:00:00.400) Display[0] Invoked isDone() OMTracer (0:00:00.400) Display[0]->isDone() Returned OMTracer (0:00:00.400) Display[0] Exited State ROOT.active OMTracer (0:00:00.400) Display[0] Invoked print(n = 0) OMTracer (0:00:00.400) Display[0]->print(n = 0) Returned OMTracer (0:00:00.400) Display[0] Invoked print(string = Done) OMTracer (0:00:00.400) Display[0]->print(string = Done) Returned OMTracer (0:00:00.400) Display[0] Reached Termination State OMTracer (0:00:00.400) Display[0]->Take Event Timeout Returned OMTracer (0:00:00.400) main() Invoked Display[0]->~Display() OMTracer (0:00:00.400) Display[0]->~Display() Returned OMTracer (0:00:00.400) Instance Display[0] of class Display deleted by main() Executable is Idle
17
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 17 Tracer פקודות output מאפשר קליטת פלט בקובץ –output mytrace.txt timestamp מאפשר רישום של זמן –OMTracer (0:00:00.000) go הראצה רגילה עד שכח האירועים ו timeouts טופלו. go idle – מטפל באירוע הבא בתור או מקדם שעון לאפשר טיפול ב timeout
18
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 18 Tracer הודעות Invoked הפעלת פונקציה Returned סיום הפעלת פונקציה Sent שליחת אירוע מאוביקט אחד לאוביקט אחר Received אוביקט קבל אירוע שנשלח ע " י אוביקט אחר set tm( ) מאתחיל שעון בכניסה למצב. השעון " ירוץ " עד שיגיע הזמן בו ה - timeout יתרחש. Entered כניסה למצב Exited יציאה ממצב
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.