设计模式基础之类与类图
? ? ?可見性 名稱:類型[= 默認值]
? ? ? ??操作(Operations):操作是類的任意一個實例對象都可以使用的行為,操作是類的成員方法。 ? ? ??? ? ? 3.類之間的關系: ? ? ? ? a.關聯(lián)關系 ? ? ? ? ?關聯(lián)關系(Association)是類與類之間最常用的一種關系,它是一種結構化關系,用于表示一類對象與另一類對象 ? ? ? ? ?之間有聯(lián)系。 ? ? ? ? ?在UML類圖中,用實線連接有關聯(lián)的對象所對應的類,在使用Java、C#和C++等編程語言實現(xiàn)關聯(lián)關系時,通 ? ? ? ? ? ?常將一個類的對象作為另一個類的屬性。 ? ? ? ? ?在使用類圖表示關聯(lián)關系時可以在關聯(lián)線上標注角色名。 ? ? ? ??
? ?public classLoginForm
{
???privateJButtonloginButton;
??? ……
}
public classJButton
{
???……
}
?①雙向關聯(lián):默認情況下,關聯(lián)是雙向的
??
②單向關聯(lián):類的關聯(lián)關系也可以是單向的,單向關聯(lián)用帶箭頭的實線表示
③自關聯(lián):在系統(tǒng)中可能會存在一些類的屬性對象類型為該類本身,這種特殊的關聯(lián)關系稱為自關聯(lián)
? ? ??
public class Node
{
???private Node?subNode;
??? ……
}?
④重數(shù)性關聯(lián): ??重數(shù)性關聯(lián)關系又稱為多重性關聯(lián)關系(Multiplicity),表示一個類的對象與另一個類的對象連接的個數(shù)。在UML中多重性關系可以直接在關聯(lián)直線上增加一個數(shù)字表示與之對應的另一個類的對象的個數(shù)。| ? ?表示方式 | ? ? 多重性說明 |
| ? ?1..1 | ? ? 表示另一個類的一個對象只與一個該類對象有關系 |
| ? ?0..*? | ? ? 表示另一個類的一個對象與零個或多個該類對象有關系 |
| ? ?1..* | ? ? 表示另一個類的一個對象與一個或多個該類對象有關系 |
| ? ?0..1 | ? ? 表示另一個類的一個對象沒有或只與一個該類對象有關系 |
| ? ?m..n | ? ? 表示另一個類的一個對象與最少m、最多n個該類對象有關系 (m<=n) |
b.聚合關系: ? ? ? ??聚合關系(Aggregation)表示一個整體與部分的關系。通常在定義一個整體類后,再去分析這個整體類的組成結構,從而找出一些成員類,該整體類和成員類之間就形成了聚合關系。
? ? ? ?在聚合關系中,成員類是整體類的一部分,即成員對象是整體對象的一部分,但是成員對象可以脫離整體對象獨立存在。在UML中,聚合關系用帶空心菱形的直線表示。? ?
public class Car
{
???private Engineengine;
??? public Car(Engineengine)
?? {
???????this.engine =engine;
??? }
???
??? public voidsetEngine(Engineengine)
??? {
???????this.engine =engine;
??? }
???……
}
publicclass Engine
{
???……
}
c.組合關系:?組合關系(Composition)也表示類之間整體和部分的關系,但是組合關系中部分和整體具有統(tǒng)一的生存期。一旦整體對象不存在,部分對象也將不存在,部分對象與整體對象之間具有同生共死的關系。 ?在組合關系中,成員類是整體類的一部分,而且整體類可以控制成員類的生命周期,即成員類的存在依賴于整體類。在UML中,組合關系用帶實心菱形的直線表示。
public class Head
{
???private Mouthmouth;
???public Head()
???{
? mouth= new Mouth();
???}
??? ……
}
public class Mouth
{
???……
}
d.依賴關系:?依賴關系(Dependency)是一種使用關系,特定事物的改變有可能會影響到使用該事物的其他事物,在需要表示一個事物使用另一個事物時使用依賴關系。大多數(shù)情況下,依賴關系體現(xiàn)在某個類的方法使用另一個類的對象作為參數(shù)。 ?在UML中,依賴關系用帶箭頭的虛線表示,由依賴的一方指向被依賴的一方。
public class Driver
{
???public void drive(Carcar)
??? {
???????car.move();
??? }
???……
}
publicclass Car
{
??? public void move()
??? {
??????? ......
??? }
???……
}
e.泛化關系:
?泛化關系(Generalization)也就是繼承關系,也稱為“is-a-kind-of”關系,泛化關系用于描述父類與子類之間的關系,父類又稱作基類或超類,子類又稱作派生類。在UML中,泛化關系用帶空心三角形的直線來表示。 ?在代碼實現(xiàn)時,使用面向對象的繼承機制來實現(xiàn)泛化關系,如在Java語言中使用extends關鍵字、在C++/C#中使用冒號“:”來實現(xiàn)。?
public class Person
{
???protected String name;
???protectedint age;
??? public void move()
??? {
???????……
??? }
??? public void say()
?? {
???????……
??? }
}
publicclass Student extends Person
{
??? private StringstudentNo;
??? public void study()
??? {
???????……
??? }
}f.接口與實現(xiàn)關系 : 接口之間也可以有與類之間關系類似的繼承關系和依賴關系,但是接口和類之間還存在一種實現(xiàn)關系(Realization),在這種關系中,類實現(xiàn)了接口,類中的操作實現(xiàn)了接口中所聲明的操作。在UML中,類與接口之間的實現(xiàn)關系用帶空心三角形的虛線來表示
public interface Vehicle
{
???public void move();
}
publicclass Ship implements Vehicle
{
??? public void move()
??? {
???……
??? }
}
publicclass Car implements Vehicle
{
??? public void move()
??? {
???……
??? }
}
總結
以上是生活随笔為你收集整理的设计模式基础之类与类图的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: String_22
- 下一篇: java毕业论文云笔记_java毕业设计