אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 1 פרק 12 אינטרקציה בין statecharts של אובייקטים שונים דוגמא : Dishwasher
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 2 אינטרקציה בין statecharts של אובייקטים שונים חלקים : א- סקירה של הדוגמא ב- איתחול של Dishwasher statechart ג- אינטראקציה ע " י events ד- אינטראקציה בין בקר לתת מערכת ה- שימוש ב Static Reactions כמנגנון לסנכרון
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 3 חלק א ': סקירה של הדוגמא Dishwasher with Controller and Subsystems מדיח כלים עם בקר ותתי - מערכות
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 4 סקירה של הדוגמא 1.GUI 2.Key Abstractions 3.Abstract Factory
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 5 Multi-Object Dishwasher evStart evService cycles maintenanceOk maintenanceRequired evNormal evQuick evIntensive off filling rinsing washing draining drying evOpen evClose
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 6 OMD 1: Key Abstractions
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 7 OMD 2: AbstractFactory(2)
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 8 OMD 3: AbstractFactory(2)
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 9 OMD 4: AbstractFactory(3)
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 10 AbstractFactory::theFactory() עם שתי Concrete Subfactories
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 11 Sequence Diagram: AcmeFactory
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 12 חלק ב ': איתחול של Dishwasher statechart
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 13 Dishwasher Statechart
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 14 שאלות מפרק הקודם : מה זה OMStartBehaviorEvent? למה נבדק isInNeedOfService()?
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 15 OMTracer (0:00:00.000) main() Invoked Dishwasher[0]->Start Behavior OMTracer (0:00:00.000) Dishwasher[0] Entered State ROOT OMTracer (0:00:00.000) Dishwasher[0] Entered State ROOT.active OMTracer (0:00:00.000) Dishwasher[0] Entered State ROOT.active.running OMTracer (0:00:00.000) Dishwasher[0] Entered State ROOT.active.running.doorClosed OMTracer (0:00:00.000) Dishwasher[0] Entered State ROOT.active.running.doorClosed.off OMTracer (0:00:00.100) Dishwasher[0] Entered State ROOT.active.mode OMTracer (0:00:00.100) Dishwasher[0] Entered State ROOT.active.mode.normalMode OMTracer (0:00:00.100) Dishwasher[0] Entered State ROOT.active.maintenance OMTracer (0:00:00.100) Dishwasher[0] Entered State ROOT.active.maintenance.maintenanceOk OMTracer (0:00:00.100) Dishwasher[0] Sent to itself Event OMStartBehaviorEvent OMTracer (0:00:00.100) Dishwasher[0]->Start Behavior Returned OMTracer (0:00:00.100) Dishwasher[0] Modified Attribute Values modeRinseTime10000 modeWashTime20000 modeDryTime5000 StartBehavior-dishwasher
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 16 After Start Behavior returns-dishwasher takes OMStartBehavior Event (0:00:00.100) Dishwasher[0] Received from itself Event OMStartBehaviorEvent (0:00:00.100) main() Invoked Dishwasher[0]->Take Event OMStartBehaviorEvent() (0:00:00.100) Dishwasher[0] Invoked isInNeedOfService() (0:00:00.100) Dishwasher[0]->isInNeedOfService() Returned (0:00:00.100) Dishwasher[0]->Take Event OMStartBehaviorEvent() Returned
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 17 Statechart of Dishwasher מצב התחלתי ( צבע סגול )
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 18 Dishwasher State entry & exit actions +setup() (action on transition)
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 19 חלק ג ' אינטראקציה ע " י events
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 20 אינטראקציה ע " י events 1.אינטראקציה בתוך statechart בודד 2.אינטראקציה בין אובייקטים עם statecharts 3.אינטראקציה ע"י event with parameters
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 21 אינטראקציה ( 1 ): בתוך statechart בודד
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 22 אינטראקציה ( 2 א ): בין אובייקטים עם statecharts Dishwasher Tank
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 23 אינטראקציה ( 2 ב ): בין אובייקטים עם statecharts
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 24 אינטרקציה (3): event with parameter הערה: התרשים אינו שייך ל Dishwasher
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 25 חלק ד ': אינטראקציה בין בקר לתת מערכת
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 26 אינטרקציה בין בקר לתת מערכת שתי " פרוטוקולים :" – פרוטוקול master-slave חלקית הבקר מפעיל את התת מערכת, תת המערכת מפסיקה את עצמה ו " מודיע " לבקר על ההפסקה – ב Dishwasher זה קורה בשלבים של filling and draining – פרוטוקול master-slave מלאה הבקר מפעיל ומפסיק את התת מערכת – ב Dishwasher זה קורה בשלבים של rinsing, washing, and drying
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 27 אינטרקציה בין בקר לתת מערכת פרוטוקול 1: master-slave חלקית דוגמא : שלב של filling ב Dishwasher
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 28 פרוטוקול master-slave חלקית : שלב של filling ב Dishwasher תסריט - תיאור מילולי : 1. Dishwasher מקבל evStart ונכנס למצב filling 2.Dishwasher שולח evTankFill ל Tank 3. אחרי 4000 מילי שניות ה Tank מסיים את המילוי ושולח evFull ל Dishwasher 4.Dishwasher מתקדם ל rinsing.
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 29 פרוטוקול master-slave חלקית : שלב של filling ב Dishwasher תסריט - תיאור ב Sequence Diagram
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 30 פרוטוקול master-slave חלקית : שלב של filling ב Dishwasher תאור ב statecharts (1)
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 31 פרוטוקול master-slave חלקית : שלב של filling ב Dishwasher תאור ב statecharts (2): מצב התחלתי empty Static Reaction evTankDrain/itsDishwasher->GEN(evEmpty); full Static Reaction evTankFill/itsDishwasher->GEN(evFull);
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 32 פרוטוקול master-slave חלקית : שלב של filling ב Dishwasher תאור ב statecharts (3): תגובה ל evTankFill
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 33 פרוטוקול master-slave חלקית : שלב של filling ב Dishwasher תאור ב statecharts (4): סיום מילוי אחרי 4000 מילי
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 34 פרוטוקול master-slave חלקית : שלב של filling ב Dishwasher תאור ב statecharts (5): תגובה ל evFull
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 35 אינטרקציה בין בקר לתת מערכת פרוטוקול 2: master-slave מלאה דוגמא : שלב של rinsing ב Dishwasher
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 36 פרוטוקול master-slave מלאה : שלב של filling ב Dishwasher תסריט - תיאור מילולי : 1. Dishwasher מתקדם למצב rinsing 2.Dishwasher שולח evJetSpray ל Jet 3.Jet נכנס למצב spraying 4. אחרי rinseTime מילי שניות Dishwasher שולח evJetOff ל Jet ומתקדם למצב washing. 5.Jet נכנס למצב idle.
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 37 פרוטוקול master-slave מלאה : שלב של rinsing ב Dishwasher תאור ב statecharts (1): שליחת evJetSpray ל Jet
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 38 פרוטוקול master-slave מלאה : שלב של rinsing ב Dishwasher תאור ב statecharts (2): איתחול של statechart of Jet idle EntryAction stopMotor(); left EntryAction moveMotor(10000,1000,1000); right EntryAction moveMotor(-10000,1000,1000); spraying EntryAction moveMotor(10000,100,100);
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 39 פרוטוקול master-slave מלאה : שלב של rinsing ב Dishwasher תאור ב statecharts (3): תגובה ל evJetSpray
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 40 פרוטוקול master-slave מלאה : שלב של rinsing ב Dishwasher תסריט - תיאור ב Sequence Diagram
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 41 פרוטוקול master-slave מלאה : שלב של rinsing ב Dishwasher תאור ב statecharts (4): Dishwasher שולח evJetOff ל Jet
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 42 פרוטוקול master-slave מלאה : שלב של rinsing ב Dishwasher תאור statecharts (5): Jet מגיב ל evJet Off
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 43 חלק ה ': שימוש ב Static Reactions כמנגנון לסנכרון דוגמא : פתיחה וסגירה של דלת ב Dishwasher
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 44 תסריט - תיאור מילולי 1. המערכת נמצאת בשלב של מילוי מים 2. הדלת נפתחה 3. אחרי יותר מ 4000 מילי שניות הדלת נסגרה 4. מה קורה ?
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 45 תסריט - תיאור ב GUI
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 46 תסריט - תיאור ב Sequence Diagram
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 47 תסריט - תיאור ב statecharts (1)
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 48 תסריט - תיאור ב statecharts (2)
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 49 תסריט - תיאור ב statecharts (3)
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 50 תסריט - תיאור ב statecharts (4)
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 51 תסריט - תיאור ב statecharts (5)
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 52 תסריט - תיאור ב statecharts (6)