UML類圖(Class Diagram)中類與類之間的關係及表示方式
阿新 • • 發佈:2018-12-25
類之間大體分為5種關係:
1,依賴關係(Dependency)
單向,表示一個類依賴於另一個類的定義,其中一個類的變化將影響另外一個類,是一種“use a”關係
如果A依賴於B,則B表現為A的區域性變數,方法引數,靜態方法呼叫等
- publicclass Person {
- publicvoid doSomething(){
- Card card = new Card();//區域性變數
- ....
- }
- }
- publicclass Person {
- publicvoid doSomething(Card card){//方法引數
- ....
- }
- }
- publicclass Person {
- publicvoid doSomething(){
- int id = Card.getId();//靜態方法呼叫
- ...
- }
- }
2,關聯關係(Association)
單向或雙向(通常我們需要避免使用雙向關聯關係),是一種"has a"關係,如果A單向關聯B,則可以說A has a B,通常表現為全域性變數
- publicclass Person {
- public Phone phone;
- publicvoid setPhone(Phone phone){
- this.phone = phone;
- }
- public Phone getPhone(){
- return phone;
- }
- }
3,聚合關係(Aggregation)
單向,關聯關係的一種,與關聯關係之間的區別是語義上的,關聯的兩個物件通常是平等的,聚合則一般不平等,有一種整體和區域性的感覺,實現上區別不大
Class由Student組成,其生命週期不同,整體不存在了,部分依然存在,當前Team解散了,人還在,還可以加入別的組
- publicclass Team {
- public Person person;
- public Team(Person person){
- this.person = person;
- }
- }
4,組合關係(Composition)
單向,是一種強依賴的特殊聚合關係
Head,Body,Arm和Leg組合成People,其生命週期相同,如果整體不存在了,部分也將消亡
- publicclass Person {
- public Head head;
- public Body body;
- public Arm arm;
- public Leg leg;
- public Person(){
- head = new Head();
- body = new Body();
- arm = new Arm();
- leg = new Leg();
- }
- }
5,繼承關係(Inheritance)
類實現介面,類繼承抽象類,類繼承父類都屬於這種關係
可以分得更細:
實現(Realization):類實現介面屬於這種關係
泛化(Generalization):即"is a"關係,類繼承抽象類,類繼承父類都屬於這種關係