類間關(guān)系

類間關(guān)系主要分為:繼承(泛化)鸟款、實(shí)現(xiàn)膏燃、依賴、關(guān)聯(lián)何什、聚合组哩、組合

繼承(泛化)

A、B兩個類具有繼承的關(guān)系处渣,比如A是父類伶贰,B派生自A類,B是個子類罐栈。

代碼

class A
{
}

class B:A
{
}

UML圖

英文單詞Generalization:泛化的意思
圖形表示:是一條實(shí)線黍衙,三角箭頭指向父類

繼承(泛化)

應(yīng)用

這個就很廣泛了,在面向?qū)ο笞兂芍袘?yīng)用很廣泛荠诬,凡是具有子類和父類關(guān)系的都是繼承琅翻。

實(shí)現(xiàn)

通常某個類繼承了一個虛類。實(shí)現(xiàn)了虛類定義的函數(shù)柑贞。也就是結(jié)成了一個接口類方椎,然后實(shí)現(xiàn)接口類的成員函數(shù)。

代碼

class A
{
public:
  void say(string&)=0;
}

class B:A
{
public:
}

UML圖

Interface Realization
圖形表示:不同軟件有不同的表示方法

實(shí)現(xiàn)

應(yīng)用

java里面的接口類就是這么個玩意

依賴

A钧嘶、B兩個類棠众,B類中的某個函數(shù)中的返回值,或者參數(shù)是A類型有决,或相關(guān)的A*闸拿、A&轿亮。
依賴的含義是有聯(lián)系,另一層意思是胸墙,知道另外一個類的存在我注,可以使用另外的類。
但是迟隅,依賴并不是包含但骨,也就是說,并沒有一個類并沒有成員變量是它所依賴類的類型

代碼

class A
{
}

class B
{
public:
  A* getA();
  int isHold(A&);
private:
  A _hold;//如果僅僅是依賴智袭,那么不應(yīng)該有這個成員變量奔缠。
}

UML圖

Dependence
圖形表示:一條虛線,箭頭指向所依賴的類吼野。

依賴

關(guān)聯(lián)

關(guān)聯(lián)比依賴的耦合度高一層校哎。同時也是包含的關(guān)系瞳步。

代碼

class A
{
}

class B
{
private:
  A *a;
}

聚合

聚合是關(guān)聯(lián)的一種闷哆。也是一種包含被包含的關(guān)系单起。
聚合和組合相互區(qū)分。
聚合相對而言是一種實(shí)體的東西嘀倒,比如說汽車屈留,汽車有引擎、輪胎测蘑、方向盤。但是碳胳,引擎可以時不同的牌子的,可以時相同型號的任一個引擎固逗。同理浅蚪,輪胎和方向盤也是藕帜。

代碼

//直接寫在同一個文件里了
//  ./A.h
#ifndef _A_H_
#define _A_H_
#include <iostream>
class A
{
public:
  A()
  {
    std::cout<<"A()"<<std::endl;
  }
};
#endif

//  ./B.h
#ifndef _B_H_
#define _B_H_
#include <iostreBm>
#include "A.h"
clBss B
{
public:
  B()
  {
    std::cout<<"B()"<<std::endl;
  }
private:
  A a;
  A *pa;
};
#endif

//  ./aggravate
#include <iostream>
#include "B.h"
int main()
{
  B b;
  B *pb;
  return 0;
}

編譯以后烫罩,(如果是聲明與實(shí)現(xiàn)分開,那么在編譯的時候需要顯式的寫明A.cc,B.cc
打印

A()
B()

說明贝攒,類在初始化的時候,并不會初始化他的指針類型的函數(shù)成員指向的數(shù)據(jù)類型隘弊,只會初始化他的值類型的成員變量,指針本身還是會分配內(nèi)存地址的梨熙。
這好像是類初始化的東西了。

UML圖

aggravate
圖形表示:一條實(shí)現(xiàn)咽扇,空心菱形指向所依賴的類

聚合

應(yīng)用

聚合關(guān)系中,類的成員函數(shù)和該類的生命周期并不同质欲。
在觀察者模式中,使用weak_ptr<>嘶伟。

拓展

聚合類

聚合類

  1. 沒有用戶定義的構(gòu)造函數(shù)
  2. 沒有私有和受保護(hù)的非靜態(tài)成員
  3. 沒有虛函數(shù)
  4. 沒有基類
struct A
{
  char ii;
  int i;
  C c
}

A a={'a',11,{/*聚合類C的初始化*/}};

應(yīng)用的話,還不知道绊袋。和c的結(jié)構(gòu)體很像啊。

組合

組合和聚合要區(qū)分愤炸。
組合的的意思多指抽象體掉奄。比如一個公司和部門的關(guān)系规个,公司和部門不能拆分姓建,誰離開誰都是這個公司的完結(jié)。也就是說速兔,類和它所包含的數(shù)據(jù)成員有共同的生命周期,且不能替換涣狗。

代碼

和聚合相同。

UML圖

composition
圖形表示:一條實(shí)線穗熬,實(shí)心菱形

組合 圖示為雙向關(guān)聯(lián)

關(guān)聯(lián)

關(guān)聯(lián)有兩種,組合和聚合
從關(guān)聯(lián)方式上分為三種:單向關(guān)聯(lián)唤蔗,雙向關(guān)聯(lián),自身關(guān)聯(lián)妓柜。
當(dāng)A、B兩個類之間相互知道對方的存在時棍掐,使用雙向關(guān)聯(lián)。也通常是使用的雙向關(guān)聯(lián)作煌。、
代碼就是在雙方的類中包含有對方的類的類型最疆。

UML

UML圖不同軟件的原因,表現(xiàn)形式不同服爷,但是主要的特征不變

  1. 實(shí)現(xiàn):
  2. 依賴:虛線+箭頭
  3. 集成:實(shí)線+空心三角
  4. 聚合:實(shí)線+空心菱形
  5. 組合:實(shí)線+實(shí)心菱形
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末获诈,一起剝皮案震驚了整個濱河市仍源,隨后出現(xiàn)的幾起案子舔涎,更是在濱河造成了極大的恐慌,老刑警劉巖亡嫌,帶你破解...
    沈念sama閱讀 211,743評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異于购,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)肋僧,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,296評論 3 385
  • 文/潘曉璐 我一進(jìn)店門控淡,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人掺炭,你說我怎么就攤上這事≈裆欤” “怎么了?”我有些...
    開封第一講書人閱讀 157,285評論 0 348
  • 文/不壞的土叔 我叫張陵勋篓,是天一觀的道長。 經(jīng)常有香客問我钢颂,道長,這世上最難降的妖魔是什么殊鞭? 我笑而不...
    開封第一講書人閱讀 56,485評論 1 283
  • 正文 為了忘掉前任尼桶,我火速辦了婚禮操灿,結(jié)果婚禮上泵督,老公的妹妹穿的比我還像新娘。我一直安慰自己小腊,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,581評論 6 386
  • 文/花漫 我一把揭開白布本缠。 她就那樣靜靜地躺著,像睡著了一般丹锹。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上卷仑,一...
    開封第一講書人閱讀 49,821評論 1 290
  • 那天麸折,我揣著相機(jī)與錄音锡凝,去河邊找鬼垢啼。 笑死,一個胖子當(dāng)著我的面吹牛芭析,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播馁启,決...
    沈念sama閱讀 38,960評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼芍秆,長吁一口氣:“原來是場噩夢啊……” “哼翠勉!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起对碌,我...
    開封第一講書人閱讀 37,719評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎朽们,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體骑脱,經(jīng)...
    沈念sama閱讀 44,186評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡叁丧,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,516評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了歹袁。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,650評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡条舔,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出孟抗,到底是詐尸還是另有隱情,我是刑警寧澤凄硼,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站狐史,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏骏全。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,936評論 3 313
  • 文/蒙蒙 一姜贡、第九天 我趴在偏房一處隱蔽的房頂上張望棺棵。 院中可真熱鬧楼咳,春花似錦、人聲如沸母怜。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,757評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽船惨。三九已至,卻和暖如春粱锐,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背怜浅。 一陣腳步聲響...
    開封第一講書人閱讀 31,991評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留恶座,地道東北人。 一個月前我還...
    沈念sama閱讀 46,370評論 2 360
  • 正文 我出身青樓自点,卻偏偏與公主長得像,于是被迫代替她去往敵國和親脉让。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,527評論 2 349

推薦閱讀更多精彩內(nèi)容