類之間關係描述
阿新 • • 發佈:2019-01-11
簡述
在面向物件程式設計中,類之間有各種各樣的相互關係,常見的有 泛化,關聯,依賴,組合,聚合,實現。
UML類圖
詳解:
1,泛化
簡析:
泛化其實就是繼承。繼承用空心三角形加實線來表示。繼承是面向物件的三大特性之一,也是類與類之間最基本的關係,繼承關係耦合度比較強。鳥類繼承動物類後,擁有類動物類的所有特性和方法,如生命,新陳代謝等,但他也有自己的獨特的特性和方法,如翅膀和下蛋,他兩的耦合度比較高,當動物類增加一個方法時,鳥類也會增加。
如圖:
程式碼:
//動物 02.class Animal 03.{ 04.public: 05. void Metabolism(Oxygen oxygen, Water water); //新陳代謝 06. void Multiply(); //繁殖 07.public: 08. int m_healthPoint; //生命 09.}; 10. 11.//鳥 12.class Bird : public Animal 13.{ 14.public: 15. Bird() //構造需要初始化翅膀 16. { 17. wing = new Wing; 18. } 19. 20. void LayEggs(); //下蛋 21.private: 22. Wing *wing; //翅膀 23.};
2,關聯
簡析:
關聯關係用實線箭頭表示,當一個類“知道”另一個類是用關聯。企鵝類想知道氣候類的變化,需要引用氣候類。
如圖:
程式碼:
[cpp] view plain copy
01.//氣候
02.class Climate
03.{
04.public:
05.};
06.
07.//企鵝
08.class Penguin : public Bird
09.{
10.private:
11. Climate *climate; //氣候
12.};
3,依賴
簡析:
依賴關係用虛線箭頭表示,動物類依賴水和氧氣類才能新陳代謝。在動物類的方法 ”新陳代謝“ 中以函式引數傳入。
如圖:
程式碼:
[cpp] view plain copy 01.//氧氣 02.class Oxygen 03.{ 04.public: 05.}; 06. 07.//水 08.class Water 09.{ 10.public: 11.}; 12. 13.//動物 14.class Animal 15.{ 16.public: 17. void Metabolism(Oxygen oxygen, Water water); //新陳代謝 18. void Multiply(); //繁殖 19.public: 20. int m_healthPoint; //生命 21.};
4,組合
簡析:
組合關係用實心菱形加實線箭頭表示。組合是一種強的“擁有”關係。體現類嚴格的部分整體關係,部分和整體的生命週期一樣。比如鳥和翅膀,翅膀類是鳥類的一個屬性。在能用組合實現的情況下儘量不要使用繼承
如圖:
程式碼:
[cpp] view plain copy
01.//翅膀
02.class Wing
03.{
04.
05.};
06.
07.//鳥
08.class Bird : public Animal
09.{
10.public:
11. Bird() //構造需要初始化翅膀
12. {
13. wing = new Wing;
14. }
15.
16. void LayEggs(); //下蛋
17.private:
18. Wing *wing; //翅膀
19.};
5,聚合
簡析:
聚合關係用空心菱形加實線箭頭表示。聚合表示一種弱的 “擁有” 關係,體現的是A物件可以包含B物件,但B物件不是A物件的一部分。比如大雁和雁群。如圖:
程式碼:
//大雁
02.class WildGoose : public Bird
03.{
04.
05.};
06.
07.//雁群
08.class WindeGooseAggregate
09.{
10.private:
11. std::vector<WildGoose*> m_WildGoose; //大雁陣列
12.};