Basic Key Terms aggregation association or-association generalization

Similar presentations


Presentation on theme: "Basic Key Terms aggregation association or-association generalization"— Presentation transcript:

1 Basic Key Terms aggregation association or-association generalization
ternary association association class attribute class class diagram composition generalization link multiplicity message object object diagram operation qualifier role

2 Advanced Key Terms abstract class constraint dependency refinement
instantiated parameterized class interface multiplicity navigation refinement visibility template (parameterized class) scope class scope instance scope signature

3 Notation and Semantics
Abstract class name {Root} Abstract operation() Operation(){learf} Abstract class(抽象類別) - 表示沒有直接實例(instance)的class。 Abstract operation(抽象操作) -表示此operation定義是不完整的,必需要有child來輔助及對應其實作。 Note.抽象資料型態的名稱需以斜體字表示之 Concrete class(具體類別) - 表示可直接實例化的class。 Root element(根元件) - 表示沒有parent的元件,其特徵可被其child元件繼承。 Leaf element(葉元件) - 表示沒有child的元件。 Note: Abstract operation可對應至 C++中的純虛擬函式 (pure virtual function) Leaf operation可對應至 C++中的非虛擬函式(non-virtual function)

4 Notation and Semantics
Signature(署名) - 操作的名字與其參數。 Polymorphic Operation(同質操作) – 表示在一個class的架構中可以在不同地方指定署名相同的Operation,判定是呼叫何者的方式是以在child中宣告的 operation 優先於(超越)在parent中宣告的。

5 Example Icon {root} Origin : Point Display() getID() : integer{leaf}
RectangularIcon Height:integer Width:integer ArbitraryrIcon Edge : LineCollection Isinside(p:Point):Boolean <上圖>The Unified Modeling Language User Guide,Page126,Fig 9-5 Button Display() OKButton {leaf} Display()

6 Notation and Semantics
Template name Argument list (name:type) Template (參數化類別模版) - (parameterized class ),用來產生一群行為類似的類別,類別模版無法直接使用,必須先傳入參數 (Bound element) 後,才能產生實際類別。 Instantiated parameterized class (Template的實例化類別)- class的產生是將實際參數結合(bind)至template,產生可使用之實際class的方式所創造。 有二種方式來表示此作法: 1.implicit binding 2.explicit binding FArray T,K:integer T k..k FArray<Point,3> AddressList <<bind>>(Address,24) Instantiated parameterized class 說明,參照The Unified Modeling Language User Guide,page130, 對Fig9-7的說明所作推論 Implicit binding explicit binding

7 Map<Customer,Order,3> OrderMap
Example [C++ code Template定義] Template<class Item, class value, int Buckets> Class Map{ Public: Virtual Boolean bind(const Item&, const Value&); Virtual Boolean Isbound(const Item&) const; .. }; [Template使用] m:Map<customer, Order,3> Map +bind(in I:item; in v:value):Boolean +isbound(in I:item):boolean{isQuery} Item Value Buckets:int <本頁>The UML User Guide,Page 130 [C++ code],131[fig-9-7] <<Bind>>(customer,Order,3) Map<Customer,Order,3> OrderMap Implicit binding explicit binding

8 Notation and Semantics and Example
class Class scope Attribute Instance scope Attribute Class scope operation Instance scope operation Notation Scope(範圍) - 指定一class的特徵 (即Attribute或Operation)是由整個class的所有實例共享一個單一的特徵(class scope)或是各自擁有自已的特徵(instance scope)。 註.class scope可對應至C++中的靜態特徵 class scope(類別範圍) - 為將某Attribute或Operation與每個Instance共享時,加上底線,定義成Class Scope,則每個Instance都會繼承與Class相同的Attribute和Operation,而且不能修改。 instance scope(實例範圍) - 沒有加上底線即為Instance Scope,每個Instance都會繼承與Class相同的Attribute和Operation,但能修改。 Window size:Area = (100,100) maximum-size:Rectangle xptr:Xwindow* display() visibility:Boolean = invisible default-size:Rectangle create() attachXwindow(xwin:Xwindow*) hide() Example <圖 Window>來源:UML Notation Guide version 1.1, Page 25 Figure 7

9 Notation and Semantics and Example
Multiplicity(數量性) – multiplicity是用來限制一個集合中元素的合法個數範圍。 multiplicity最常見的地方是用在association上,表示association端class合法對應的object數量(在class basic已提過)。除此之外,它還有以下二個用途: class multiplicity –用來指定一個class的object數量上限。 attribute multiplicity -用來指定一個attribute的數量範圍。 <圖>The UML User Guide P127,fig9-6

10 Notation and Semantics and Example
class +Public Attribute -Private Attribute #Protected Attribute +Public operation() -Private operation() #Protected operation () Visibility (可見度) – 指出一個類別中的特徵(attribute、operation)可否被其他類別使用。 符號定義如下: + (public公開):對所有其它類別都是公開可以 使用的。 -(private私有):類別自己私有。 # (protected保護):受保護的,只有衍生的類別 及<<friend>>朋友類別可以使用。 association visibility(關連可見度) - 可指定一關連中的role的可見度,符號定義同上,不指定時預設是public。(用例子說明) p.145 fig 10-4 Notation Windows +size:Area = (100,100) #maximum-size:Rectangle -xptr:Xwindow* +display() #visibility:Boolean = invisible +default-size:Rectangle +create() -attachXwindow(xwin:Xwindow*) +hide() Class 的Visibility(可見度),跟據UML Notation Guide version 1.1 第32頁5.8節提到會因為“不同的程式語言而有所不同”,其中以C++語言為例。(資料來源MSDN Visual C++ Programming Guide) <圖 Window>來源:UML Notation Guide version 1.1, Page 25 Figure 7 本例中表示三種可見度。 沒有加底線的Attribute及Operation都是Instance Scope,例如+Size是每個Instance Window自己擁有的值。 如果加上底線表示Class Scope,例如+default-size是每個Instance都相同的值,且Instance自己不能改變的。 <圖>The UML User Guide,page145,fig10-4 Example:class visibility

11 Notation and Semantics
dependency - 相依性,表示類別A需要B類別才能運作,B類別的改變會影響A類別。 navigation - 如果類別之間的關係是單向性,可以加上箭頭,箭頭方向表示從屬關係。 A B Role Name 0..* 1 Association Name

12 Notation and Semantics
Constraint(限制) - 允許從現有的規則擴充UML的語意,通常用中括號括起來,放在association旁,加強association的資訊(通過此association的滿足條件)。 Eg.要表示Portfolio,BankAccount之間籍其association所傳送的訊息是經過加密的安全的,可由左圖加一“{secure}”表示之。 Interface(介面) - 介面用來表示類別外部可見的操作集合,以一個小圓圈表示,並以實線連到提供介面的類別,使用Interface時,以Dependency連到Interface的小圓圈。 interface specifier - 一association可能指定一個association中每個role所呈現給另一方的interface(p.146) realization(p.151) refinement - 表達同一件事情有不同程度的抽象觀點,類別A、B表示同一件事情,但類別A為巨觀(overview),類別B表詳細(detail),B繼承A所有的操作,但不包括所有的attribute 與 association。 {secure} BankAccount Portfolio interface name A B

13 Examples constraint interface Storable Runable Class A Class B Class C
<上圖>出處:The UML User Guide,page 82 OCL– Object Constraint Language <下圖>來源:UML Toolkit P108 Figure 4.58。原著,Hans-Erik Eriksson、Magnus Penker。 Class A提供Storable以及Runable這了兩個介面,Class B透過Dependency 去使用這兩個介面。 Class C提供Runable這個介面,Class B透過Dependency 去使用這個介面。 interface


Download ppt "Basic Key Terms aggregation association or-association generalization"

Similar presentations


Ads by Google