UML-Sequence diagram Exc. version

Download Report

Transcript UML-Sequence diagram Exc. version

‫‪Sequence Diagram‬‬
‫‪ Sequence Diagram‬מתארת את האינטראקציה בין המחלקות על‬
‫רצף הזמן תוך התמקדות ברצף ההודעות המועברות‪.‬‬
‫‪ ‬מודל המחלקות מציג את המחלקות ואת הקשר ביניהן‪ ,‬אבל לא‬
‫מתאר כיצד מופעי המחלקה (האובייקטים) מתנהלים לאורך ציר‬
‫הזמן‪.‬‬
‫‪ ‬למשל‪ ,‬מהו הסדר של הפעלת הפונקציות?‬
‫‪ ‬בדיאגראמה מתוארים האובייקטים המשתתפים באינטראקציה וההודעות המועברות‬
‫ביניהם‪ .‬כמו כן מתוארים השחקנים השותפים לאינטראקציה‪.‬‬
‫‪ ‬הציר האנכי מתאר את רצף הזמן והאופקי את פעילות ההודעות המתבצעות‬
‫בפונקציונאליות זו‪.‬‬
‫‪ ‬תרשים רצף לוכד את ההתנהגות של ‪ use case‬מסוים תוך שימוש באובייקטים של‬
‫המחלקות שהוגדרו בדיאגראמת המחלקות‬
‫רכיבי הדיאגראמה‬
‫קו החיים של האובייקט‬
‫‪ ‬מציין את העובדה שאובייקט מסוים "חי" (קיים)‪ .‬קו החיים של אובייקט‬
‫מסומן ע"י קו אנכי מקווקו‪.‬‬
‫‪ ‬ניתן לראות כי לאובייקט קיים קו חיים עוד לפני שבוצעה עליו‬
‫הפונקציונאליות‪ .‬משמעות הדבר שהאובייקט נוצר בזמן מוקדם יותר ולא‬
‫על ידי הפונקציונאליות הנוכחית‪.‬‬
‫רכיבי הדיאגראמה‬
‫‪Activation / Focus of control‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫הוא פרק הזמן בו מתבצעת אינטראקציה בין האובייקט שיוזם את הפעולה‬
‫לאובייקט שעליו מתבצעת הפעולה‪ ,‬מטעם הפונקציונאליות המתוארת‪.‬‬
‫מתואר ע"י מלבן צר‪ ,‬שתחילתו בהודעה הנכנסת וסופו בהודעה החוזרת‪.‬‬
‫האובייקט מתחיל לפעול במסגרת הפונקציונאליות כאשר משתמשים או‬
‫מפעילים אותו לראשונה ומסיים כאשר מחזיר סטאטוס למפעיל (לא חייב)‪.‬‬
‫כאשר האובייקט נמצא בפעילות‪ ,‬קו חיי‬
‫האובייקט שלו (המקווקו) הופך למלבן‪.‬‬
‫רכיבי הדיאגראמה‬
‫‪Actor‬‬
‫‪ ‬התרשים מתחיל בשחקן המאתחל שלו (אם קיים כזה)‬
‫‪User‬‬
‫הדיאגראמה‬
‫רכיבי‬
‫הודעה‬
‫‪ ‬הודעה היא שיטה המופעלת על אובייקט מסוים‪.‬‬
‫‪ ‬מסומנת ע"י קו אופקי בין האובייקטים (או בין האובייקט לעצמו)‪ .‬על החץ‬
‫יש לציין את שם ההודעה והארגומנטים שלה‪.‬‬
‫‪ ‬העברת הודעה מאובייקט אחד לאובייקט אחר משמעותה‪ ,‬הפעלת שיטה של‬
‫האובייקט האחר על ידי האובייקט השולח‪.‬‬
‫‪ ‬ניתן יהיה להפעיל רק אובייקטים אשר מקושרים אל האובייקט‬
‫הנוכחי במודל המחלקות‪ .‬כלומר‪ ,‬רק אובייקטים אשר למחלקות‬
‫שלהם יש קשר כלשהו במודל המחלקות יוכלו להפעיל שיטות זה על‬
‫זה‪ ,‬וגם זאת בתנאי שהמחלקה היא ציבורית‪.‬‬
‫‪ ‬שם ההודעה חייב להופיע במודל המחלקות כשיטה במחלקה שעליה‬
‫מפעילים הודעה זו‪.‬‬
‫הדיאגראמה‬
‫רכיבי‬
‫הודעה‬
‫‪ ‬משמעות החץ היא העברת הודעה מאובייקט אחד לאחר‪.‬‬
‫העברת הודעה היא הפעלת שיטה של האובייקט האחר‪ .‬כמובן‬
‫שניתן יהיה להפעיל רק אובייקטים אשר מקושרים אל‬
‫האובייקט הנוכחי במודל המחלקות‪.‬‬
‫רכיבי הדיאגראמה‬
‫חצים‬
‫‪‬‬
‫‪‬‬
‫‪ .‬במסרים אלו שולח המסר ממשיך‬
‫מסרים א‪-‬סינכרוניים מסומנים ע"י‬
‫מיידית בשלב הבא של הביצוע לאחר שליחת המסר מבלי להמתין לתגובה‪.‬‬
‫‪ .‬במקרים אלו כל התרחיש מסתיים‬
‫מסרים סינכרוניים מסומנים ע"י‬
‫לפני שהרמה העליונה של התרחיש ממשיכה‪ .‬במילים אחרות‪ ,‬הגורם‬
‫השולח אינו ממשיך בפעולתו עד לקבלת התגובה לדרישה שנשלחה‪.‬‬
‫רכיבי הדיאגראמה‬
‫חצים‬
‫‪ ‬מסרי חזרה (‪ )return‬מסומנים ע"י‬
‫הנקרא לאובייקט הקורא‪.‬‬
‫‪ ‬חץ שפונה לאחור (שמאלה) יכול להיות חץ עם קו רציף שמשמעו העברת הודעה‪ ,‬אך‬
‫יכול להיות חץ עם קו מקווקו שמשמעו החזרת סטאטוס‪.‬‬
‫‪ ‬כאשר חץ מקווקו מחזיר סטאטוס אין צורך לרשום עליו את מהות הסטאטוס‪ ,‬הוא‬
‫ברור מאליו‪.‬‬
‫‪ ‬אין חובה להחזיר סטאטוס מכיוון שהדבר ברור מכורח המציאות‪ .‬כאשר לא מציינים‬
‫בתרשים שהאובייקט מחזיר סטאטוס‪ ,‬מניחים שכאשר הפעילות באובייקט זה‬
‫תסתיים‪ ,‬הוא יחזיר סטאטוס‪.‬‬
‫‪ .‬אלו הם הודעות תשובה מהאובייקט‬
‫אילוצים ‪Constraints -‬‬
‫‪ ‬ניתן לבטא אילוצים בתרשים‪.‬‬
‫‪ ‬אילוץ יכול להיות תנאי כלשהו או התניית ביצוע פעולה מסוימת בקיום ביטוי כלשהו‪.‬‬
‫‪ ‬התניה תבוצע על ידי רישום התנאי בתוך סוגריים מרובעים לפני שם ההודעה‪.‬‬
‫‪ ‬המשמעות‪ :‬ההודעה תופעל רק אם האילוץ מתקיים‪.‬‬
‫‪ ‬התנאי הוא שהקובץ לא ריק‪ .‬אם נשלח קובץ ריק‪ ,‬לא יקרה כלום‪.‬‬
‫יצירה ופירוק‬
‫יצירה‬
‫כאשר האובייקט נוצר בפונקציונאליות הנוכחית ברגע מסוים‪ ,‬המלבן‬
‫יוצמד לאובייקט עצמו‪ .‬על ההודעה תהיה קריאה לשיטה ‪constructor‬‬
‫שיוצרת את האובייקט‪.‬‬
‫פירוק‬
‫בעת פירוק אובייקט‪ ,‬נראה את סיום קיומו במערכת על ידי ‪ X‬על מלבן‬
‫השימוש שלו‪ ,‬וללא המשכיות לקו החיים (המקווקו)‪.‬‬
‫דוגמה ליצירה ופירוק של אובייקט‬
‫דוגמא לתרשים רצף‬
sd Product Buying
Diagram
Name
Object:class
p: Product
customer
: ShooppingCart
display()
Life line
addProduct (p)
checkout ()
time
message
getPrice()
activation
(focus of
control)
objects
Fragments
Option (opt) 
Alternative (alt) 
Loop (loop) 
Breaks (break) 
Options
msg : Message
Fragment
: Database
opt
Condition
[msg.status=confirmed]
archive(msg)
Used for modeling
simple optional blocks.
Has one operand; no
"else" guard.
Do something...
Example
Alternatives
msg : Message
: Database
: Admin
alt
Condition
[msg.status=confirmed]
archive(msg)
Alternative Fragment
group
[msg.status=error]
notify(msg.getID())
[else]
wait()
Else
condition
(optional)
Execution regions.
At most one will execute.
Loops
: OS
: Folder
loop
Loop
Fragment
[for each Folder]
Display()
loop
Condition
Nested Loop
Fragment
[for each File]
Display()
: File
Breaks
: User
: Policy
: User Manager
isLooged := login(name,pass)
break
[isLooged = NULL]
addBadLogin(name)
If the condition is met,
the break fragment is
executed, and the
reminder of the
sequence is ignored
Do something…
Do something …
Used in model
exception
handling
‫סוגי תנאים‬
[for each Object] 
[i=1..5] 
[status = okay] 
[status <> okay] 
[else] 
No guard means an infinite loop 
‫דוגמה‪ -‬מעלית‬
‫תרחיש עליה‬
‫‪.1‬‬
‫‪.2‬‬
‫‪.3‬‬
‫‪.4‬‬
‫‪.5‬‬
‫‪.6‬‬
‫‪.7‬‬
‫‪.8‬‬
‫‪.9‬‬
‫המשתמש לוחץ על כפתור המעלית של הקומה המבוקשת‪.‬‬
‫כפתור הקומה נדלק‪.‬‬
‫דלתות המעלית נסגרות‪.‬‬
‫המעלית עולה לקומה המבוקשת‪.‬‬
‫המעלית נעצרת‪.‬‬
‫הדלתות נפתחות‪.‬‬
‫כפתור הקומה כבה‪.‬‬
‫(אם הגיע לקומה המבוקשת‪ -‬המשתמש יוצא מהמעלית)‪.‬‬
‫לאחר השהיה נסגרות הדלתות‪.‬‬
Class Diagram– ‫מעלית‬
Elevator Controller
Elevator
Floor_id:int
position
Current_floor:int
Direction:boolean
Request()
Timer_on()
next_floor()
Elevator_Door
Elevator_Button
Close:boolean -true
Light:boolean -off
doors()
light()
Messages to
self
A
+ doOne() : void
B
+ doTwo() : void
+ doThree() : void