【C++】is-a原則 和 has-a原則

1.is-a 與 has-a概念
2.is-a 與 has-a實例
3.何時用is-a ,何時用 has-a?推薦使用has-a架構

1.is-a 與 has-a概念

  • 1.1 is-a(英語:subsumption,包含架構)是一種繼承關係,指的是類的父子繼承關係。表達的是一種方式:這個東西是那個東西的一種。例如:長方體與正方體之間--正方體是長方體的一種。正方體繼承了長方體的屬性,長方體是父類,正方體是子類。
  • 2.2 has-a 是一種組合關係,是關聯關係的一種(一個類中有另外一個類型的實例),是總體和部分之間的關係(好比汽車和輪胎之間),而且表明的總體對象負責構建和銷燬部分對象,表明部分的對象不能共享。

 2.is-a 與 has-a實例

  • 2.1 is-a實例:
class rectangle{...};//定義一個長方體類
class square : rectangle{...};//定義正方體類繼承長方體類


2.2 has-a實例

class tire{...};  //定義一個輪胎類
class car   //車類
{
    ...
    tire _t;   //輪胎
}

 3.何時用is-a ,何時用 has-a?推薦使用has-a

  •   到底使用哪一種原則,就得根據模型的關係來決定;
  •   當既能夠用is-a又能夠用has-a時,推薦使用has-a;

  由於has-a是一種鬆耦合關係:倆個類徹底能夠獨立存在;spa

  is-a是一種緊耦合code

相關文章
相關標籤/搜索