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