63
UML ⪉䫏㟨䲚 UML ⪉䫏㟨䲚 UML -1- UML -1-

Uml基础教程

Embed Size (px)

Citation preview

Page 1: Uml基础教程

UML ����UML ����

UML - 1 -UML - 1 -

Page 2: Uml基础教程

��������1. ��

1.1��1.2UML��1.3UML��1.4UML��1.5UML�� 1.6UML���1.7UML��1.8��

2. ���2.1����2.2���������2.3���������2.4��2.5��

3. ��

UML - 2 -UML - 2 -

3. ��3.1���3.2��������3.3��������3.4�������3.5���3.6��

4. ���4.1��4.2 !�������4.3 !���"����4.4 !��4.5 #��

5. �5.1��5.2$%�������5.3$%�������

Page 3: Uml基础教程

��������5.4&'()*�+,-�5.5$%��5.6$%� !�./"0�5.7#��

6. ���6.112��6.212�346.312�������6.412�567896.5:;���:&<�126.6=>���:?@ABCD�E6.7#�

7. ��7.178��7.278��7.378��

UML - 3 -UML - 3 -

7.378��7.478F�7.578#�

8. ���8.1GH��8.2GH�������8.3GH�������8.4GH���8.5��

9. ���9.1IJ��9.2IJ�������9.3IJ�������9.4IJ���9.5�KIJ�GH9.6��

��

Page 4: Uml基础教程

1.1.����1.1.����1.1 ��

����UML1.5������ ��������������������UML��� ���!"#��$�%&'()*+

1.2 UML��1.2.1 UML��

UML (Unified Modeling Language),-.�/0123456789:8�;<=�>? @ABCD�AE,FG��HIJ�,KL0123M�N UMLOPQRUML>P UMLSTUVWXY (1) UML��ZUML�>PCD[\]^�_>P`ab7cd+�efghi

jkS�lUmn�op

UML - 4 -

jkS�lUmn�op (2) UML���ZUMLSTUOPUMLqrSTU�,\]^s\]tu[Av

wxqr y�>U,I6=�45g9: 1.2.2 UML��������(Things)ZUML��Kz{���|}�~u��S��Y�/�(Relationships)Z)I������I_7�(Diagrams )Z~�� )I�;<ST

Page 5: Uml基础教程

1.1.����1.1.����1.3 UML

UML��4���Z������� ��� � ��1.3.1 ����Z UML����XY�CD��s��|}�QR����Z

������������������������������� !�"#$%�&'()*+�,�-.���/0���1��2�3�*+���4506�78�7�0#�&90�:�;<�*+����7=�>?@&$AB�#����C�D?@��> !

UML - 5 -

���C�D?@��> !E"&FGHIJKL3IMNOIP5QR9S�TU���VW

1.3.2 ���ZUML��G�XY�CD���� ���,���XYZ[\�0�����]1�^_�*+&`a^_I:�;<Ibc��������8d2@efghijL��klm�no;<

1.3.3 ����Z UML����XY�CD����J���p !�qr��st

1.3.4 ����Z UML����XY�A����K|}����������� !u�vw8x �yz{K

Page 6: Uml基础教程

1.1.����1.1.����1.4 UML��

1.4.1��|}(dependency)9~6��]1�����&�=06��(����)�eV�&��j�E06��(|}��)���

1.4.2����(association)90�����&��.06�����GE06�����1���

1.4.3����(generalization)90���/0������$���9�-�����

1.4.4��

UML - 6 -

1.4.4��XY(realization)9� ]1�����&�=�06� �,/�E06� ������v

Page 7: Uml基础教程

1.1.����1.1.����1.5 UML����

1.5.1 ��( Use Case Diagram )

� 3��9�3� ¡���7[\&93�k\¢£���7[\�¤¥�&3�9�7=�06[\z

UML - 7 -

� �����7=��¦o���§¨,��7=��&5©�]1���ª��I|}I«+Q&��¬��i#��(����­��)

� ��9��=®¯�q�&��=��° !8�±Z6�8G����

1.5.2 ��(Class Diagram)

Line

Draw ()

Rectangle

Draw ()

GroupGraphics

Draw ()Add(g : Graphics)Remove(g : Graphics)GetChild(index : int)

Graphics

Dra w()Add(g : Gra phics)Remo ve(g : Graphics)GetChild(index : int)

+children

Page 8: Uml基础教程

1.1.����1.1.����1.5 UML����

1.5.3 ��( Object Diagram )

� ���9���X�&²³´3G��µ¶���·¸�°¹�§�º@±���»©��¼6��X�&½§9X¾��

UML - 8 -

1.5.4 ���(Sequence Diagram)

� ¿;�»©��]1�:o+���&�ÀÁ��]1^_�Â�¿;&�D»©��]1�d2

� ¿;��063Ã93¯5©3�=��¿;�Ä��063��D&¿;�=�ÅÆ^_�L/06���8ÇÈnoÉB�Ê���

Page 9: Uml基础教程

1.1.����1.1.����1.5 UML����

1.5.5 ��(Collaboration Diagram)

� Ë������1�Ë���&Ë��Ì¿;��Í&»©��1�:o+����λ©J_dB"&Ë��Ï»©���a�¹]1���Ð

� Ë���063Ã95©06����XY

UML - 9 -

1.5.6 ���(State Chart Diagram)

� no�906���k$\lm�k�mÑ�¤¥��no�����Ò6no­ÓcÔÕno�ÉB�r

Available Locked Sold

����

assigned to subscription

lock

time out

unlock

buy

��

exchange

�� ���

Page 10: Uml基础教程

1.1.����1.1.����1.5 UML����

1.5.7 !(Activity Diagram)

� Ö:�9no��06VW&3¯����×Ø�Ù�ÚÑ=`a�Ö:

� Ö:���/0�¿;�8Û��Ö:

UML - 10 -

1.5.8 ���(Component Diagram)

� ����7���ܤ¥—��'�ÝL3�Þ�z —Ï�¬Ò��]1�|}��&�ßàáÔÕ|}��¯âã��7���äåæ�7$\ç¯��j

Page 11: Uml基础教程

1.1.����1.1.����1.5 UML����

1.5.9 "#(Deployment Diagram)

#èé���ê±ëºX�S�C���X��ìí�ëº90�C�îï&ªã×sIðñ8?òó�Ô6é�ôõöâ÷�ø­îï÷

1.6 UML����

UML - 11 -

�� ���

����

BD

FD/DD

�� ���

��� ����

��� ��� ��������

Page 12: Uml基础教程

1.1.����1.1.����1.7 UML����

NewClass

Interface

� � ������������������������ �� ! �"# � !$�%�&'(��%)*���+,� -�$�%./ 01�2��3�4�56789,�:;�<=�>?@A'B��%CDEF �GH:IJG�KL@A./ 12GM-�NO3�PB�-Q*��� �R.S�TU�BVWX 1 !$�% �&�%./GYZ[\]^_(`ab�VWcde f@A�gB��Xh

NewProcessor

state

NewPackage

UML - 12 -

usecaseclass

suspend()flush()

ij � ��k�cd� !lk� �mno��%pq&rq��'( ��sOKL��tuv�w(xyz G�s{wy�s|"./�}&_K~�_K �

UML�����w��� ��t������r�� ���r 0t������ ����������r�� ����������ractor

componet

Page 13: Uml基础教程

1. 1. ����1. 1. ����1.8� ùúû

1IUML=0ü�ý����¹93��I��I���I¿;�IË��Ino�IÖ:�I���I#è�2I3��9�Ñ;þ ¡¯���7�[\3I��9���7=��¦o��&���9���7=��:o��4IÖ:�­no�3¯���7�:o�5IË���063Ã95©06����XY

��û6I�@�����=��~�$�2�ÉB��

UML - 13 -

6I�@�����=��~�$�2�ÉB��(a) ¿;� (b)Ë�� (c)Ö:� (d) no�

7I��Õ�$3±BD�(a)3�� (b)��� (c)�� (d)¿;�

� �1.�� 2.�� 3.�� 4.�� 5.�� 6. (a)(b) 7.(a)(c)(d)

Page 14: Uml基础教程

2.1 �����2.2.������2.2.������

���� �� UML��@�7"#G�7�cd2��8��(ªE06ã×s�780Õ$C��uÑ)��¹�����9�1.FGH9 �(role)½§9�W��&�45/FGH@G�7�d��áÑ=k��� ��k�@�7

2.2 ��������

² 3��9��FGH�"#3�k\¢£���7[\�¤¥�� (�UMLF !"#)

² 3��<��7=�3�­�7"�FGH&Û»©6FGHFG/63����(8��È/63�)�

² 3��¼3±¦oܤ�($�9%)ܤ­�&ܤ)�

UML - 14 -

FGH(Actor)

FGH9 � ½§9�W��&�45/FGH@G�7�d��áÑ=k��� ��k�@�7�X¾C�=&06X¾3�$\�L�7�¼6FGH�§��3��$�'�L±06FGH&�½45�0FGH�§�X��

2.FGH�"#3�(½§9i#)G�7�ed2�3&9��$��(�

3.@)��¿;�Q=�Y�*FGH+&G,-.��&/�W�4���&é�W01½,�

3�(Use Case)

�7"#$%�06�7[\z ��7�[\��7z k23&Ûàá0�<�7z G068¼6FGH]1dB�^_k54�5Ü63�&�78�3�­93�:;�<=Ø>----“WAVE”?@(%AB)

Page 15: Uml基础教程

2.2. ������2.2. �������� x �

FGHG3�]1���

��5©FGHG3�]1�d2&àJÃC�(���D8�3çDE�XF¯5©&ÔG�5©\H»©I5.�È3��9FGH�)

��DE�J�3�����3�&���3�KDE���3�T3����3�9L��&ªøMN��3�&T3�O§µPK��3�LQ���&§��RSZ�Æ�K���Û§�åVT3����

�include#

2.3 ����� ���

UML - 15 -

3�]1���

TUDE�J�3��TU�3�&�TU3�KDE���3�T3��TU3�9$��&ªøMNTU3�&§��j�T3��µP�KTU3�@0,Æ��V���&ÛW����åVT3����

FGH]1��� ��

��DE���*is a”DE�J��������90�­����&��DE�0X45���0X&DE�J�0X450�0X���0X��/0�X���ÛYZ/6����

extend

Page 16: Uml基础教程

2. 2. ������2. 2. ��������1 � ��������

��l>&ì¶$[&�ì� �[>��&\]^×&\]ì¶�_&`éga@FGH]1§?@�����01�&Ò6FGHFG3��01b9�l>FG3�[>��­\]^×Kì¶$[FG3�\]ì¶�_K�ìFG3�`éga��±ì¶$[Gl>&ì¶$[G�ì]1�����?@&�cdì¶$[$�efl>­�ì� �&O\HFGl>­�ìFG�3��ÔG&ì¶$[O$�FG¶#463��/l>8H�ìg§\efì¶$[� �&

2.4 ��

UML - 16 -

¶#463��/l>8H�ìg§\efì¶$[� �&�O§\FG3�\]ì¶�_�

��2 �����������3��S�M9�hÃi�/jk�l§S�Lm¶#nÑ�opjkZl�:�@i��Å6qr(��Ú)=R��Y&§ZlO§�µri��st>$��usv,9wu�&§st§��ji��µr�

Page 17: Uml基础教程

2.2.������2.2.��������3. ��������²FGH(actor)�clerk&`xþ&J3y()z&J_{²3�(use case)� Buy tickets& Buy Subscription&Make

charges& Survey sales

²FGHClerkFG(8��È)Buy tickets­Buy Subscription ~63�(����)�Ô~63����ÚR��Make

charges3�(����)�²�7��Buy tickets& Buy Subscription&Make charges&

Survey sales�r�²|�7$����Buy tickets& Buy Subscription&

���

Clerk

Buy tickets

Buy Subscription

���

<<include>>

<<include>>

Box Office

�� ��

UML - 17 -

²|�7$����Buy tickets& Buy Subscription&Make charges& Survey salesÔ²6[\�

²|�7$��J�3�(FGH)�clerk&`xþ&J3y()z&J_{���� ¡¢ Make charges £¤¥

Survey sales

�¦

Page 18: Uml基础教程

2.2.������2.2.������1. ��������

(a) 1 (b) 2

(c) 3 (d) 4

2. ������(a) 1 (b) 2

(c) 3 (d) 4

3. 2�3 ������5�6�

2.5 ��

UML - 18 -

3. 2�3 ������5�6�(a) ����� (b) �����

4. 5���3���� !��(a) �� (b) "�

5. 4#$��2%1#$��5%(a) &'�"&' (b) "&'�&'

�����1�(a)(d) 2�(b)(c) 3�(b) 4�(b) 5�(b)

Page 19: Uml基础教程

3.3.����3.3.����

P ersonn a m e : str in g

U seC om p u ter()

C om p u terc p u : strin gm em ory : str in g

ru n ()

3.2 �������3.2.1 �

3.1 ����� ���}~����(��I��)�a�]1���$���&��/Þ��7���&90�¦oܤXØ

� ��=�*�+G�J����=�*�+�-.9�L�&9�YX��=������

UML - 19 -UML - 19 -

3.2.1 �� �S���#&b9��I��­�����9LQ��� �ªø���&>Å06��RLQ�06��&E"Ï$�������J_&ª$%�I���¥IM��Q

� �ªø���&>Å06���R�06��&��$��J_�¬$%�IF����IF��¥IF�M��­��������¥Q

A c c o u n t- b a la n c e : d o u b le = 1

+ D e p o s i t (a m o u n t : d o u b le ) : in t+ C o m p u t e I n t e re s t ( ) : d o u b le

§¨©-ª«private+ª«public#ª«protected¬­®¯°±²«³ ´µ¶·¸¹º»¼½¾¿ÀÁÂà ÄŶ·»½¾¿ÀÁÆÇ©»¼ ÈÉÊË

Page 20: Uml基础教程

3.3.����3.3.����3.2 �������

3.2.2 ���0����*+&'�����.½��XY

3.2.3 ����§\�X����&0��N��06����

3.2.4 ����0�F����&@��Dp¤�F��,�§�����¥&�½�e§���

UML - 20 -UML - 20 -

Shape

(����)

Shape

+ Draw ()

(����)

()

Vehicle

- fMaxSpeed : float

+ Start() : int+ Stop() : int

*+,

T

Stack

size : int

Push(elem : T) : intPop() : intGetTop() : cons t T&

����

-.,

Page 21: Uml基础教程

3.3.����3.3.����

UML���ÌÍÎÏÐÑÒÓÔÕÓ Ö×ØÙÚÛÜÝ*Þß à

1…* á1âãäâ1âÎåæ

1âãäâÎ

1âÎçè

1âãäâÎåClassDiagram

Class

+thing

+diagram

1.. *

1..*

use

1.. *

1..*

éêëìíî Ùïðñò àóôíõÏöÜÒÓ÷Úø3.3 ���� ���3.3.1 ��� ��/����]1������XJI��I �­¼��QJ_�0���

����������~����À&b9«+G�+

UML - 21 -UML - 21 -

�/0��

Ø ������&�.06«*�PW�­�r#]1���10��

Ø ���À�«+&#­PW�����efgh

UML���

UML���

Thing

ClassDiagram

Relation

����

�� �������������������������� ��

Class Association�!��

�"�#��$%�&'���������()* �#��+���

Page 22: Uml基础教程

3.3.����3.3.����UML���

3.3.3 �����L±�­c�]1���

UML��� �Circle,Rectangle!-�./Shape 01

S ha p e

+ D raw ()

Relation

Association Generalization Realization Dependency

�#,23,!-,456789��

Thing

Class Interface

�,./6789��

3.3.2 ���@�J��=0������&?@±��G��I�c�G�c�]1

UML - 22 -UML - 22 -

01C irc le

+ D ra w ()

R e c ta ng le

+ D ra rw ()

3.3.4 ������/06��V��|}±����e�j�01��¼�5Y��&�ª�,(bind)I� (friend)Q UML���

:;�Stack<T><=�>)� 01?IntStackù@AT"!B�CintD<�EFG�016HIint�C AJ

T

S t a c k

s i z e : i n t

P u s h (e l e m : T ) : i n tP o p ( ) : i n tG e t T o p () : c o n s t T &

In t S t a c k F l o a t S t a c k

< < b i n d > >< < b i n d > >

�Memento��OriginatorKL�MN45���OPOriginatorE�Memento Q��RstateO r i g i n a t o r

M e m e n t o

s t a t e : S t a t e *

< < fr ie n d > >

Page 23: Uml基础教程

3.3.����3.3.����

V e h ic le{a b st ra c t }

- f M a x S p e e d : f lo a t

+++

S t a r t ( )S t o p ( )R u n ( f l o a t f S p e e d )

: i n t: i n t: i n t

3.4 ��������3.4.1 ����

UML - 23 -UML - 23 -

C++4 class Vehicle{public:virtual int Start() = 0;virtual int Stop() = 0;virtual int Run(float

fSpeed) = 0;private:float fMaxSpeed;

};

Java4 public abstract class Vehicle{public abstract int Start();public abstract int Stop();public abstract int Run(float fSpeed);

private float fMaxSpeed;}

Page 24: Uml基础教程

3.3.����3.3.����3.4.2 �����

C++4 class Dialog{ private:Button btnOK;Button btnCancel;TextBox txtInfo;};class Button{};class TextBox

&'���STU-VDialog WX�Button�TextBox IY

T e x tB o xB u t to n

D i a lo g- b t n O K : B u t t o n- b t n C a n c e l : B u t t o n- t x t In fo : T e x t B o x

UML - 24 -UML - 24 -

class TextBox{};

3.4.3 �����

JavaSTpublic class SavingsAccount extends Account{ }

A c c o u n t

b a l a n c e : d o u b l e = 1

D e p o s i t ( a m o u n t : d o u b l e ) : i n tC o m p u t e I n t e r e s t ( ) : d o u b l e

S a v i n g s A c c o u n t

C o m p u t e I n t e r e s t ( ) : d o u b l e

C++STclass SavingsAccount : public Account{ };

Page 25: Uml基础教程

3.3.����3.3.����

C++úûclass Shape{ public:virtual void Draw() = 0;};

class Circle : public Shape{public:void Draw();private üPoint ptCenter;

Javaúûpublic interface Shape{ public abstract void Draw();}

public class Circle implements Shape{public void Draw();

private Point ptCenter;private int nRadius;

S ha p e

+ D ra w ()

C ir c le

--

p tC e n te rn R a d iu s

: P o in t: in t

+ D r a w ()

R e c ta n g le

---

p t U p p e r L e ftn W id t hn H e ig h t

: P o in t: in t: in t

+ D r a r w ()

�C++Z[\]�E�^Y�S_./�E�23��S_!-���JavaZ[\]��)* �`a

3.4.4 ������

UML - 25 -UML - 25 -

Point ptCenter;int nRadius;};

}�JavaZ[\]��)* �`ainterface,implements

3.4.5 ������

�,|}

T

S ta c k- s i z e : i n t

+ P u s h ( e le m : T ) : i n t+ P o p ( ) : i n t+ G e tT o p ( ) : c o n s t T &

In tS t a c k F lo a tS t a c k

< < b i n d > > < < b i n d > >

C++úûtemplate<typename T>class Stack{ private:int size;public:int Push(T elem);int Pop();const T& GetTop();};

typedef Stack<float> FloatStack;

C++úû(ýþÿ��)class FloatStack{ private:int size;public:int Push(float elem);int Pop();const float& GetTop();};

Page 26: Uml基础教程

3.3.����3.3.����

Graphics: bc���&'�� d��ef�G���gh 01�iDraw?+ef�j��&'��klm

Graphics

Dra w()Add(g : Gra phics)R emo ve(g : Graphics )

3.5 ��3.5.1 �����

¡���¢ó0�R��0ÕTU��&ª�FI£�Q&3�$��c´3TU��¤�&�$�pTU���+@0È5Ü¥¦��

¡ªø§b�¨TU��­�+��&�´4 V©¥¦&½W¼�01�3�7ªH90G�

¡�+¤�$�3���X�«>~���

UML - 26 -UML - 26 -

gh 01�iDraw?+ef�j��&'��klm�� 01�iAdd,Remove

Line,Rectangle: bc���GroupGraphics: &'����"d��&'���no�O&'G���IY(bc���&'��)

Line

Dr aw ()

R ectan gle

Dr aw ()

Gr oupGr aphics

Dr aw ()Add(g : Gr a ph ics)R em ov e(g : Gr a ph ics)GetChild(in dex : in t)

R emo ve(g : Graphics )GetC hild( index : int)

+children

23

&'�+¤�

Page 27: Uml基础教程

3.3.����3.3.����3.5.2 �����

@3�¬:�­�áÑ=&àá®Ò63�aFGH©����®3���áÑ=��¯��J���°>ðã�­��&¯�3��±ëðã����­��

�p\qrsOtuv�wxBuy tickets: yvz{Buy Subscription: y|{Make charges: }�~��

��� Clerk

Buy tickets

Buy Subscription�����Make charges �Survey sales

� �<<include>>

<<include>>Ú�Box OfficeíõCustomer

kjosk

���

��

UML - 27 -UML - 27 -

SubscriptionSeries

series : intIndividualReservation

Ticket

no : int

3..6

0..1

3..6

0..1

1

0..1

1

0..1

Reservation

date : Date

name : stringphone : string

1..*

1

1..*

1

Seat

no : intcolomn : introw : intavailable : bool

1 11 1

Performance

no : intdate : Datetime : Time

0..* 10..* 1

CreditCardService

Charge(cardnumber, cost)

kjosk

ShowAvailability(seatlist)DemandPayment(cost)PrintTickets(performance, seats)EjectCard()

BoxOffice

Request(count, performance)Select(seats)InsertCard(cardnumber, password)Authorized()

��÷Ú��íõ������â��Ý������� !"ÎÏç#Ý$%

Page 28: Uml基础教程

3. 3. ����3. 3. ����

(1)������� ��� Menu,MenuItem � MenuItem,Command� Command,OpenCommand� Command,PasteCommand

(2)OpenCommand�PasteCommand������ &'� 23� �'� ���

C o m m a n d

+ E x e c u t e ( )

O p e n C o m m a n d

+ E x e c u t e ( )

P a s t e C o m m a n d

+ E x e c u t e ()

M e n u I t e m- c o m m a n d : C o m m a n d *

+ C l i c k ( )

1 . . *

0 . . *

1 . . *

+ e x e c u t i v e0 . . *

M e n u

+ A d d ( i t e m : M e n u I t e m )

(3)����(EditMenu)�������������� !"#$����

3.6 ��¡ ²���/³z(Menu)I³z�(MenuItem)I��f´�(Command)­�Wf´�(OpenCommand& PasteCommand)]1���&µr1-4û

UML - 28 -UML - 28 -

(3)����(EditMenu)�������������� !"#$����

(4)���%&'(C++)()*+�,-MenuItem� !�

E d it M e n u

M e n u

+ A d d ( i t e m : M e n u I t e m )

M e n u

+ A d d ( i t e m : M e n u I t e m )

E d it M e n u

�E d it M e n u

M e n u

+ A d d ( i t e m : M e n u I t e m )

Menu

+ Add(item : MenuItem)

EditMenu

class MenuItem{private:virtual void Click() =0;public:Command* command;};

class MenuItem{public:virtual void Click() = 0;private:Command* command;};

class MenuItem{private:virtual void Click() = 0;void undo();public:Command* command;}; �

class menuitem{public:virtual void Click() = 0;private:Command* command;};

Page 29: Uml基础教程

3.3.����3.3.����¡.� !"�/)0(Graphics)123(Segment)14/(Rectangle)15

(Point)�675(Point3D)�����895-7:(5)������;<��,=>��# �23 �!- �45

(6)��-�,?@ABCD�EFG� !��HIJ� 0...* �1 �0...* �1

(7)���%&'(Java)()*+�,-Segment� !public class Segment implements Graphics public class Segment extends Graphics

Graphics

+ D raw ()

S eg m en t

--

ptS ta rtptE n d

: P oin t: P oin t

+ D raw ()

Rectan g le

---

ptU pperL eftn W idthn H eig h t

: P oin t: in t: in t

+ D rarw ()

P oint

--

xy

: in t: in t

+ D raw ()

P oin t3 D

---

xyz

: in t: in t: in t

+ D raw ()

��

UML - 29 -UML - 29 -

{privatc void Draw();public Point ptStart;public Point ptEnd;} & {

public void Draw();private Point ptStart;private Point ptEnd;} '

public class Segment implements Graphics{private Point ptStart;private Point ptEnd;public void Draw();} ( public class segment implements graphics

{public void Draw();private Point ptStart;private Point ptEnd;} )

Page 30: Uml基础教程

4.4.��4.4.��4.1 4.1 �

² ¿;�3¯5©3�=��¿;�Ä��063��D&¿;�=�ÅÆ^_�L/06���8nos=ÇÈÉB����

² ¿;�U©��]1�d2&ÔÕd29�@qr83����Ú=�e��¿;��±:oܤ�² ¿;���º@^_;<S&�O9-&��^_9ªµ@��1�­c¶��5©/��]1·Â^_�D1¿;�

² ¸¹¿;��XØ9��S��º���1dB�^_�4.2 4.2 ����������*+,- ./ 0UML - 30 -UML - 30 -UML - 30 -

123 245674589:;<=>?@AB?C(1D?E0FG)HIJ KL0@MNOP2LQRS@IJHIJ@TUVWP XYZ[\]RIJ89, _,`abRacdH;ed fgNhi@jdTUIJkLQ\@lmno(p:qrst@uv IJ@wx

)yzjd-{IJ@|;ed}Huv~� uv?���IJ@;ed����IJ;ed@��TUH�����KLk0\�O�a�QH

Page 31: Uml基础教程

4.4.��4.4.��4.3 4.3 ������������

UML - 31 -UML - 31 -UML - 31 -

Page 32: Uml基础教程

4.4.��4.4.��4.4 4.4 �������� ����������������� �������������� ¡¢£� ¤¥¦§�¨©ª��«¬­®¯°±²����:operation (parameter list) ��vIY���!B��7��� �� 01��7������ IYG�� 8voperation�wx

UML - 32 -UML - 32 -UML - 32 -

³���´��µ³��´���¶·¸¹�º» ³��¼½¾¿À����º» ��ÁÂÃÄųƴÇ�È·ÉÊ �º»1

�º»2¶Ë¸Á �º»

2

�º»3¶Ë¸ÁÌÍÎÏÐÑÒÓÔÎÕÖÓÔÎ×ØÙÚÛÓÔÜÝÞ

Page 33: Uml基础教程

4.4.��4.4.�������

}��ßà×á âÖãäå �y�E7\æ�çè X

Kjosk9\@é>R

Show Available (seat-list)Demand Payment (cost)printtickets (performance, seats)eject card

Box Office\@é>R

Request (count, performance)Select SeatsInsert Card (Card Number)authorized

Credit Card Service9\@é>R

charge(card number, cost)

UML - 33 -UML - 33 -UML - 33 -

��7���{pv�w �������}��"�{� ¡¢��pv�w £¤�������pv�w ¥�{�"}���}�~¦§¨E���©¤ }ª«�������� IY(}�� Kjosk ��{� Box Office�}�~¦§ Credit Card Service )�¬­®���¯°�

}���Request (count, performance)��±�{��U²���{�� Request (count, performance)01�³´µ¶· }���{��Show Available(seat-list)��±}���U²��}���� Show Available(seat-list)01�±·�� ¸¹U�

Page 34: Uml基础教程

4. 4. ��4. 4. ��

� � � �

1 ��»�=�FGH¼A½ B¾ C¿ DÀ2 Õ9��¼A½ B¾¿À C À DÁÂÃÄÅÆ3 Server�Á3/CreditService�=�Çp��¼Aà BÄ C ÃÄ DÄÅ

4.5 ���

UML - 34 -UML - 34 -UML - 34 -

1. A 2. B 3. B

Page 35: Uml基础教程

5.1 5.1 �5.5.������5.5.������Ë��90�d2�&ÀÁ�9�­c¶^_���]1��q��&´3Ë��¯-.�7�:o01�Ë��$���Ë���1�d2­bc&»©��I��1�bc�a��1ªµ�Â^_�Ë��$�5©����XY�

5.2 5.2 �������������� x �@"º �·»¼01 IY�½¾�¿ÀÁ���¼8v01�

IY IY7� !w�½¾�¿�.Ã���"���� ¯°)h�ÄA c t o r

fi r s t b u t o n : b u t t o n

UML - 35 -UML - 35 -UML - 35 -UML - 35 -

IY IY7� !w�½¾�¿�.Ã���"���� ¯°)h�Ä°ÅVIYÆ�Ä°ÇV�Æ�

��È(É����Ê&Ë)

���²�� È��n�� �·º��.ú��ÊI��1Ìf������°�·�� �¬���ÍÎ�f��� Ï|��?Ä°Ç]7�� Æa�

fi r s t b u t o n : b u t t o n

�Ê

5.3 5.3 �������������� �� ����

Ð.�®Ñ³U²Ð.�Ð.U²ÒvIYgÓ8v���¹�IY$%Ô@"º"IY$%

Page 36: Uml基础教程

5.5.������5.5.������5.45.4 �� !�����Format: [��] [��] � ��� [����=] ���

²�������� � ��� ��…�� � ‘/’

(������ !�"#$%&'(���)�*+� ����,-../�1.1a� 1.1b/)

²�������� [�01] 23��0145�6789:;�!��<��=> /�[x>=0]

² ���?��������=@A�����BC����*DE����F?GHIJ>/�x:=calc ( n )

² KL$@AMN������1.1a 1.1b 1.1c / [x>=0] 1.2 *[i:=1..n] ê x := calc( n )

UML - 36 -UML - 36 -

1.1a ë1.1b ë1.1c / [x>=0] 1.2 *[i:=1..n] ê x := calc( n )

ÅÕ Ö×ÑØ �ÙUÚ� ÛÜÝ := ��Æ

5.5 5.5 ��������"#�$�OPQ?R�QS�=DETUV�WXP��Y$Z[\]^_�>

² R�Q`ab�=EWXP�c�dVR�(efdV)�Ygh3i�=TUV�jk>² OPQ`ab�=ETUV�jk(eflV)�YdVR�mnoR��pq>² OPQ?R�QrstXuv>

(wxOPQ?R�Q�yz�{I|}~�2)

Page 37: Uml基础教程

5.6 5.6 ���1. �� �����

5.5.������5.5.������

actor�ÂPrint^_æComputer&Computer�ÂPrint^_æPrintServer&ªø�ÈsÉÊ&PrintServer�ÂPrint^_æprinter

��������

UML - 37 -

2.��������

: bu t t o n

: E le va t o r C o n t ro l

: Q u e u e : E le va t o r

:O rd e r{n e w }

: A c t o r

1 : G e t E le va t o r ( flo o r id )

1 . 1 * [ a l l q u e u e s ] : le n : = L e n g t h ()

1 . 3 : In vo k e ( jo b )

1 . 2 : C re a te ( )

2 : n e x t jo b : = G e t . jo b ( )

P u s h ( )

������ @"ºÞßIYàáâãIY­äIYå1æÙàáIY

�������xÐ.

@"ºçèéêàá�ën�ìíîÞtÞß�ïàáðÚëñò óô��õ�àá�ì 01ö¼�àáâãIYO÷ø ù�ú´G� àá�n�ûü8vå1æÙýþ�� ��Ç���K8v1�­ä�Í��­ä�I*àá å1æÙ�.��æÙ�àáIYÍ� ¤�n� æÙ�ûü8v1�Í£¤�àá78v�¼IY��"� â㮫Í�£¤�

Page 38: Uml基础教程

5.5.������5.5.������5.7 ����� {*DKL�����������>� �������������� � ������� ��������� ��� �������� ����������������������������� ������ ��� ������ ���� � ������� ��¡�¢��������£����������¢�¤¥¦��������������� ������ ��� ���������

UML - 38 -

� �����¤§¨����©��������� ��� �� ���� ��� ��� ��� ���� ����ª����«¬������­�¢¥�¢®��������� � ��� ��� ���¯� �����

Page 39: Uml基础教程

5.5.������5.5.������: bu t to n : E le va t o r

C o n tr o l: Q u e u e : E le va t o r :O rd e r{n e w }

: A c t o r

1 : G e t E le va t o r ( flo o r id )

1 . 1 * [ a l l q u e u e s ] : le n : = L e n g t h ( )

1 . 2 : C re a t e ( )

P u s h ( )

1 . 3 : In vo k e ( jo b )

���{Ty°±c�OPQ²³t´�R�Q�µ}~�>

UML - 39 -

2 : n e x t j ob : = G e t .j ob ( )

ËÐÌÍÎû� ÏÐÌ̽ÐÌÌÌÌ¾Ñ ¿Ñ ÀÒ ÁÐÓÐÌ̽Р¾Ð

���t���·�÷ø���vàá å1æÙýþ �� ��°�����������������������������������Ìf�����G©¤ 01����� �!�"��*W��v�G#� ù$����%& & � ��'( �)*�+���*+�(� ��'( �)*�+� ���&**���

Page 40: Uml基础教程

6.1 �����6.1.1%&�

����������� !"#$%&�'()*+,-�.�/0"#� !1

6.1.2%&��'23Actor4546789:#�;<=>1?@A78BC1

6.2 ������

6.6. � ���6.6. � ���

UML - 40 -

6.2 ������6.2.1%&

���'(DE�FG��������HGI#J'K+�L�M��NOPQ0I#4RSQ0TU+JVWQ0"#1

6.2.2()XYDZH['(\]H['(�^Y1F[XYZ_BC@`abJcb"#de1�HG5f�+XYghDijkHGl,mn'(e�opqr� ��st1

Page 41: Uml基础教程

��SÔÕÖ��&�Ô-.«±|noD&�78���×�Ù�(%$�Ö:5)

�� ÉØS·�Ê�ÉØ���54��ªøÉØSÙ·.��&>5©@ïno�i#Ö:��µÚ)Û:Ê�ÉØ

�� ÜÝno(06)

�� Þo($�¼6)

(��)[ �]/��

6.3 %&��������6.6. � ���6.6. � ���

UML - 41 -

���� �� ������ ußZ0noD���:� entry/action

���� à­Z0noD���:� exit/action

���� ÇÈnoÉB8ÛáÉB&�D��06�W�:�&�¬ÇÈß�:�­��:�����ÉB

e(a:T)[exp]/action

���� ÇÈ06:����/§ÇÈno�åV8§ÇÈß�:�8��:����

e(a:T)[exp]/action

6.4 %&�*+,-.

Page 42: Uml基础教程

6.5 (1) /0�%&���1234%&¶·¸¹Available¸¹Locked¸¹Sold¸¹

����¶·¸¹àAvailable¸¹

Available Locked Sold

���� assigned to subscription

lock

time out

unlock

buy ��

6.6. � ���6.6. � ���

UML - 42 -

¶·¸¹àAvailable¸¹º,»¼(lock)�AvailableàLocked»+¯½¾(buy)�LockedàSold»+¿À(unlock)�LockedàAvailable»+ÁÂ(time out)�LockedàAvailableÃÄÅÆ(assigned to)�AvailableàSolddzZº(exchang)�Ⱥ]hÉ�SoldàAvailable

unlock

exchange ��

���

Page 43: Uml基础教程

(2)�� �����

noÉØ�áÑ

6.6. � ���6.6. � ���

UML - 43 -

�� !"#$%&'()*(SSN)+,-(PIN)./0123��456

��789:;<��:���(Initial state) ��������(Getting SSN)������(Getting PIN)� ��(Validating)����(Rejecting)��� (Final state)

ìíîï ðñ òóîïInitial state ôõö÷ø SSN Getting SSN

Getting SSN

ùúûtabù üýþùúÿ�

Getting SSNùútabù ü�ôõö÷øBIN Getting PIN��

Validating

Getting PIN

ùúûshift-tab

ù üýþ �* � Getting PINùú

shift-tabù ü�ôõö÷øSSN Getting SSN��

Validating

Validating

������ ü� �ô Final state������� üýþ���Rejecting

Rejecting

��Final state�� ü�����

SSNüPIN Getting SSN

�������������

Page 44: Uml基础教程

6.7 ������������

����

���� ����

����������

��

��

�� ��

����

�����

6.6. � ���6.6. � ���

UML - 44 -

��

(1) sKÊËQÌÍÎ$T¸¹�ÏÐÑ(a) âD (b) �4 (c) @ã0ä

(2) lÒ¸¹Ód¯uÔÕ____¸¹(a) Jã0ä�å (b) Sæno (c) Þo

Îû� (1) (c)(2) (a)

Page 45: Uml基础教程

7.7.������7.7.������7.1 ,-� �

� ���7�:o��� ��Ö:no(ActionState)&Ö:no9�%)3��06��çè806��&§9éà���no�� Ö:�ê+��@��"#��Ê��01���7i#�ë¢��áÑKw>&no��ìí���� �ͱ·7��S�ÚÑ��� Ö:�$�3±�

%)ܤD&3±î�%)3�&��0�%)���áÑKðãD&�����ÚÑ�

7.2,-���

UML - 45 -

�� (ActionState) ���� !" (InitialState) ����#$%"(FinalState) ����%"

&'((ObjectFlowState) ��)*�+,�-.

/0-1(signalSending) ��234/0567/8���(3

9:-1(SignalReceipt)��2349:569:�-1���(3#$�

;<(SwimLane) ���=>?

Page 46: Uml基础教程

7.7.������7.7.������7.3 �����

@A(transition) ���BCDE���#$

�F(junction point) GHI6JK� L�

�M(fork) N����OP/�

QR(join) N��P/��STQR

7.4 �����

UML - 46 -

7.4 �����1. ����U���VW�XYZ[\�]^� 2(1)� setup order(2)GHorder�_`a� bc��Fdsingle orderd� assign seatecharge credit cardsubscriptiondc�� assignseatsedebit accountf

award bonussingle orderDsubscriptionghOc�i (3) jkmail packetl

Page 47: Uml基础教程

7.7.������7.7.������2. �������U�06ïÖ:ðñ(çò�)�q�«>óz3��Ö:�(¤¥=�Ö:ïðñ�q)�Ö:�ïðñ÷�3F­�§�§ô(ò�)�

CustomerSalesStockroom

(1)õö�&()&Sales÷ñc¶,z&Û2d�Stockroom

(2) Stockroom«>,z&G,�D&Customermø&Û�Sales«Deliverorder�Customer�

UML - 47 -

Page 48: Uml基础教程

7.7.������7.7.������7.5 �����1. mno��pq�����5r4st-1�a( )st&'(�a( )l

A B C D

2. �±²��Ö:�&���-Ø=§���9( )�A aPrinter:Printer9JK�B ��­Ý�*ùÎúMû”Ö:­Ý�

UML - 48 -

B ��­Ý�*ùÎúMû”Ö:­Ý�C @*5ÜPSM�”­”ùÎúMû”Ö:=�Â*print(file)”JK�

D JK�Â�XJ9�»�²�

=>?@1 C& B 2 C

Page 49: Uml基础教程

8. 8. ������8. 8. ������Ö�Q�×عÙÚ�$�=Ö�ÛÜ�ÝÞsß�àÖ�)Váâjk�Q>Ö�Q4ÁTÖ�Váâjk�ÏÐ�ãäTkåÖ��æçèkåréê��ëì>

8.2 56��������5ruv wx �^

y6y6 z{|4O},�rZ~�y6u�(��4�Dictionary)����4�����9����l

9�9� �~O������ (��4�Spell-check)l�"�^��y6��X�^�1ka�y6�^�u

8.1 56� �

UML - 49 -

y6�^y6�^ �"�^��y6��X�^�1ka�y6�^�u�(��4�RoutingList)l

O},�rZ~����6��e�Uf�� �6�ONst� ��&'���H� l�"(node)a� ��rZ&'�s�X¡¢£¤¥l¦§m¨©ª3«~¬�(deployment diagram)”~�l

8.3 56��������­{uv wx �^��­{��­{ y6�������l®¯­{®¯­{ y6®¯�~�����(°y6�9�)l

Page 50: Uml基础教程

8. 8. ������8. 8. ������AB1.

�=�����9Dictionary�ü�|��J"23~6c�&'~6()Spell-checkýþ�ºISynonyms����

8.4 56��

UML - 50 -

�=*Plannerã9H+��J"2306*update�6+c�()��D&|���&"#c�2306*Reservations^,+()�

AB2.

Page 51: Uml基础教程

8. 8. ������8. 8. ��������3

CDEFGHEFGH9:I���������� ���������� �������������� ���������������� ���� !����"#$%&�� ��'�����()�� **

CDAJGHAJGH9:I��������� �"#$�()�%&+,� ��'���()��

UML - 51 -

**…… ��'���()���()�� ()�

±²�d±²�d³´Xµ¶ON·2¸]-.¹[³�Oº9�»¶¼³´½³´¾§¶¿À·2»¶¼l±²Ád±²Ád´¶�µONGHÂÃnoÄ[Å»fXµÅ»f¾§Å»4��ÆLÇ»¶YÈ�LÉÅ»ÊË-]ÌÍÎ���FÏc��ÐÑÊ˶�H�Y�Ò¶OÓ��Ô4l

KL��

Page 52: Uml基础教程

8. 8. ������8. 8. ������1. ���3±o�ܤ�¼A.:oܤ B.¦oܤ

2. 06��'\��,�E06��23�,�0�()�Ô�-Ø���¼A.�� B.��

3. ���3±���7=Ò�>#�]1�()�|}23���Ô�-Ø���¼A.�� B.��

4. ���=XFDE5©()�|}&�FDE5©()�23�Ô�-Ø���¼

8.5 ��

UML - 52 -

4. ���=XFDE5©()�|}&�FDE5©()�23�Ô�-Ø���¼A.�� B.��

Îû� �1.B 2.B 3.A 4.B

Page 53: Uml基础教程

9. 9. ������9. 9. ������

9.2 78������������ x ��

�"]�ÕL§stÕL§4Ö�×���a�"�u� (��4�Joe’sMachine:PC) l�"�s�XØÙÒÚÛ�*Ü� ÀÝ�¡¢¤¥l

#è�3±¦oܤ&95©C�DáÑëº��I��X�a��������ªø��|}�����X�ÕÖ@§�ëºS&#èé�$�U©���áÑ=����#è��~�5Y���X�ä#è�­��ä#è�(�@)��X�=æ�)�

9.1 78� �

UML - 53 -

�"�" ¥l�"��¡¢ÞßÜ(ØÙàáâ`4�)µÝ¤¥f?£ãYZ¤¥ON]VWäf�^�sl�"åx�� �&'Üy6�^(��4�Plannery6�^)æç�èél

y6y6 {|4O},�rZ~�l

9�9� �~O�����l

y6�^y6�^ y6��X�^l

Page 54: Uml基础教程

9. 9. ������9. 9. ���������� x ����­{��­{ y6������l (!"ÿ)

®¯­{®¯­{ y6®¯�~�����(°y6�9�)l

­ê­{­ê­{ ·-­êl (!"#)

ëì­{ëì­{ &'�A�(�Xèé�8�Xèé)l

9.3 78��������

UML - 54 -

9.4 78����1 ���� �

X�ä#è���Ò뺭�¹]1�Óc�

U�=�J_GS���ä#è�=�iì9�2�L��

�=���9Ò6ëº]1?@�àJ���

Page 55: Uml基础教程

9. 9. ������9. 9. ��������2 ���� �

�=�¬�Ò���ª��àJb��(§çDE��F)

TicketServe�()óGKioskJ_]1?@0�¼�àJ��KGSalesTerminal�Þ��?@0�¼�àJ��K|}��(çDE��F)

TicketSeller���|}J3ymø��­

��ä#è�5©/�7=�Ò뺭Å6ëº������

UML - 55 -

�=õö��õö���0rª��õöàáê±Kioskëº�õöc� �u������&|õöc��������|}±«±TicketServerëºS����23�()&����µr���&��|}70ëºSJ3ymø��23�mø()­���O��

TicketSeller���|}CreditCardChargesJ3ymø��­TicketDB���O��23�()�

�"�"TicketServer(»¶��)��y6:CreditCardCharges/ManagerInterface/ TicketSeller/TicketDB

�"Kiosk(-.¹)��y6:CustomerInterface

SalesTerminal(Å»%í)��y6:ClerkInterface

Page 56: Uml基础教程

9. 9. ������9. 9. ������9.5 �'78��56�

�íQ²Ö�Qt��ÖîÍÎ�Ö�ïÄðïÖ�ñ/ïÖ�òóôõö÷ïÖ�øùó�ôõ�ö÷>

�íQ²Ö�QÖ�Q�jk��íQ�úÖ�ñ/ûÖ�Q�úÖ�ÛÜ�+ü>�íQýò×ÏÐÖ�%þ^c�xd�¸¹�ÏÐEÖ��x���ûÖ�Qýò×ÏÐÖ�)VtXáâ����°jk>

UML - 56 -

Page 57: Uml基础教程

9. 9. ������9. 9. ������1.#è�3±o�ܤ�¼A.:oܤ B.¦oܤ

2.#è�5Y��X�&���5Y���¥,��Ô�-Ø���¼A.�� B.��

3.#è�=06ëºX����Server:HostMachine&�=Server9_____&HostMachine9_____�A.ëº� B.ëº�¥

4.Òëº]1?@d�F�E5©�|}��&�?@dXFDE5©�()23���Ô�-Ø���¼A.�� B.��

9.6 ��

UML - 57 -

A.�� B.��5.“c�+5©_____�"23�()�A.�� B.ëº

Îû� �1.B 2.A 3.B&A 4.B 5.A

Page 58: Uml基础教程

����WAVEWAVE��������WAVEWAVE����

1 What to do? (Not how to do.)2 Actor’s point of view?3 Value for the actor?4 Entire flow of events?

1 �/ÏÐEkå´Èµ���_$��µ>2 �/mná I²���^>(�´ÈoI²����kå���D&+ü�/,_$okå�����)>3 �/mn�I²�ôõr�����>

UML - 58 -

3 �/mn�I²�ôõr�����>4 �/ß³I²�mn�pkå��Á!c�@AMN����>

Page 59: Uml基础教程

���� UMLUML���������������� UMLUML������������

UML - 59 -

Page 60: Uml基础教程

���� UMLUML���������������� UMLUML������������1.�3�¬:UML��ܤL3——:�®#Doug RosenbergMKendall Scott NO%PQR�S&O200562.�UML��——·]��ܤ��y.��#(ã3�)Martin Fowler NOTUVWOXYZ[�S&O200563.�UML��I��­û�——CatalysisXØ#Desmond Francis D’SouzaMAlan Cameron Wills NOXYZ[�S&O200464.�UML­¤�L3#(ã2�)Craig Larman NO\]^_�S&O200465.���3�¤�#Steve AdolphO Paul Bramble NO`abWOXYZ[�S&O200366.�3�ܤ#OKurt Bittner NOcdWOXYZ[�S&O2003� ­70áÑX3�J���®­ðã#

UML - 60 -

7.�UML­70áÑX3�J���®­ðã#Jim ArlowOIla NeustadtO\]^_�S&O200368. �UML�Ô#Scott W. Ambler NOefgWOXYZ[�S&O200469. �UML3���#Grady BoochOIvar JacobsonNOhijkWO\]^_�S&O2001l6m610. �UMLF !"#Ivar JacobsonOJames Rumbaugh6nopOqrsW6\]^_�S&O20016

Page 61: Uml基础教程

���� UMLUML�� !�� !���� UMLUML�� !�� !1. www.umlchina.com2. www.uml.org.com 3. www.rational.com4. www.uml.net.cn

UML - 61 -

Page 62: Uml基础教程

t!uv BD FD DD

wBC $ $ % %�C % & $ $xyC % & $ $z�C & & & &{|C ' ' '

����"#$%�&"#$%�&UMLUML�'��'�����"#$%�&"#$%�&UMLUML�'��'�

UML - 62 -

{|C % ' ' '}�C % ' ' '��C % ' & &~�C % % & &��C & & ' ' �����

���� �!"��#�$��

Page 63: Uml基础教程

���� UMLUML(��)*+(��)*+���� UMLUML(��)*+(��)*+

�������

�������

�����

�����

� ���

%&'(

BD

��������

UML - 63 -

�����

���

�� �

���

���

���

���������

��

FD/DD

��������