1. 程式人生 > 其它 >java 類與類之間的關係

java 類與類之間的關係

技術標籤:AndroidjavaUML類圖類與類之間的關係

java 類與類之間的關係,接上一篇UML展開

上一篇:Android studio UML建模

勵志就像給自己插上翅膀,才能飛得更高;煉造一雙千里眼,才能望得更遠。滿載而行,即使困難重重,留下的汗水也終會獲得回報;滿載而行,即使艱辛與淚水並存,前方的道路也依然光明;滿載而行,即使跌倒,也將有勇氣邁向成功。

  • 泛化/繼承(Generalization)
  • 實現(Realization)
  • 依賴(Dependency)
  • 關聯(Association)
    • 聚合(Aggregation)
    • 組合(Composition)
型別標識描述效果
組合(Composition)–*實線菱形填充箭頭在這裡插入圖片描述
聚合(Aggregation)–o實線空心菱形箭頭在這裡插入圖片描述
實現(Realization)–|>實線空心三角箭頭在這裡插入圖片描述
泛化/繼承(Generalization)…|>虛線三角空心箭頭在這裡插入圖片描述
關聯(Association)->實現箭頭在這裡插入圖片描述
依賴(Dependency)…>虛線箭頭在這裡插入圖片描述

泛化/繼承(Generalization)

泛化不好理解,繼承肯定大家非常熟悉子類繼承父類,父類的方法變數都可以應用的到,父類相當於子類就是’透明’的

public class A {
}

public class B  extends  A{
}

現在就說B繼承/泛化自A

…|>虛線實心箭頭表示

UML類圖(1.1):

實現(Realization)

實現可以簡單的理解就是實現類,什麼才能實現?那肯定是介面了

public interface A {
}

public class B  implements   A{
}

這裡就稱B是A的實現類

–|>空心實線箭頭表示

UML類圖(1.2):

依賴(Dependency)

依賴也非常好理解,2個類之間只要有互動,就稱之為有依賴

public class A {
} public class C {} public class D {} public class E {} public class B { public A mA; public C getC(){ return null; } public void showD(){ D d = new D(); } public void setE(E e){ } }

可以看到在B類()中有4中方式引用了其他的類:

  • public A mA; 成員變數

  • public C getC(){ //返回值
    return null;
    }

  • public void showD(){ //區域性變數 這裡違反了迪米特原則
    D d = new D();
    }

  • public void setE(E e){ //引數構造的方法

    }

只要有互動,就稱之為有依賴關係

虛線箭頭表示

UML類圖(1.3)


這裡就可以稱之為B依賴於A,C,D,E

總結:

  • 在一個類中,成員變數
  • 返回值
  • 區域性變數
  • 引數傳遞

都稱之為有依賴關係

簡單一句話概括:在這個類中出現其他類,當前類依賴於其他的類

關聯(Association)

依賴關係的特例,實際就是類與類之間的聯絡

關聯關係又分為:

  • 單向關聯關係
  • 雙向關聯關係

單向關聯關係

public class A{
	B b = new B();
}

public class B{
}

上邊也提到了,關聯關係是依賴關係的特例

依賴關係就是指兩個類之間只要有聯絡他就是依賴關係

A類中有B類那麼A類和B類就是單向關聯關係

實現箭頭表示

UML類圖(1.4):

## 雙向關聯關係 >通過上面的單向關聯關係,雙向關聯關係更好理解
public class A{
	B b = new B();
}
public class B{
  A a = new A();
}

這種A類中包含B類,B類中包含A類的就稱之為有 關聯關係

實現箭頭表示:

UML類圖(1.5):

聚合(Composition)

整體和部分可以分開(是關聯關係的特例)

public class A{}
public class B{}
public  class C{
	A a ;
	B b;
	public int run(int min,int max){
		return min + max;
	}
	
	void setA(A a){
	  this.a = a;
	}
	
	void setB(B b){
	  this.b = b;
	}
}

通過程式碼可以看到:

 在C類中,有一個run()方法,求的是min + max,在這裡就沒有用到了A類和B類
 
 但是呢C類中吧A類和B類作為全域性(成員)變數

 那麼這裡就稱之為A類B類聚合到C類

就好比電腦和滑鼠的關係

電腦可以和滑鼠分離嗎?

當然可以分離

所以也可以稱之為滑鼠聚合到電腦上!

用實心空心菱形表示

UML類圖(1.6)

組合 (Aggregation)

整體與部分不可分離稱之為組合(也是關聯關係的特例)

public class A{}

public class B{
	A a = new A();
}

像這種,在B建立的時候A也跟隨建立,無法分離的,就稱之為組合關係

UML類圖(1.7):



總的來說,強弱程度依次為:組合>聚合>關聯>依賴

總結:

  • 依賴關係:只要兩個類有互動(…>)
  • 泛化/繼承關係: 子類繼承父類(…|>)
  • 實現關係:介面與實現類的關係(–|>)
  • 聚合關係:成員(全域性)變數,沒有直接new,可與整體分割 (–o)
  • 組合關係:成員(全域性)變數,直接new,不可與整體分割(–*)
  • 關聯關係:依賴關係的特例(–>)

猜你喜歡:

java 七大設計原則之單一職責,介面隔離原則(文字程式碼相結合理解)

java 七大設計原則之依賴倒置,里氏替換原則(文字程式碼相結合理解)

java 七大設計原則之迪米特原則,開閉原則,合成複用原則(文字程式碼相結合理解)

Android studio UML建模

去主頁

原創不易,記得點贊哦~