目录

一,类图

二,类的6种关系

1,泛化

2,实现

3,组合

4,聚合

5,关联

6,依赖

三,总结


一,类图

类图中,每个类由3个部分组成,上面的是类名,中间的是属性,下面的是方法。

属性和方法可以用修饰符修饰:加号(+)表示public;减号(-)表示private;井号(#)表示protected

二,类的6种关系

类的6种关系:泛化 实现 组合 聚合 关联 依赖

6种关系依次减弱。

参考:UML类图几种关系的总结

1,泛化

泛化是一种继承关系,如老虎类继承动物类,动物是老虎的泛化,老虎是动物的特化。

class Animal {
public:Animal() {posX = posY = 0;}void move(int dx, int dy) {posX += dx, posY += dy;}void getPos() {cout << "x=" << posX << ", y=" << posY << endl;}
private:int posX, posY;
};class Tiger :public Animal {
public:Tiger() {this->name = "Tiger";}string name;
};int main()
{Tiger t;cout << t.name << endl;t.move(3, 4);t.getPos();return 0;
}

2,实现

实现关系是子类实现了接口类。

在JAVA中,有专门的接口类和实现的关键字。

在C++中,用纯虚类作为接口类,而且纯虚类也没有关键字,包含纯虚函数的就是纯虚类。

 老虎类实现了攀爬接口类。

class Animal {
public:Animal() {posX = posY = 0;}void move(int dx, int dy) {posX += dx, posY += dy;}void getPos() {cout << "x=" << posX << ", y=" << posY << endl;}
private:int posX, posY;
};class Climb {
public:Climb() {posZ = 0;}virtual void GoClimb(int dz) = 0;void getHeight() {cout << "z=" << posZ << endl;}
protected:int posZ;
};class Tiger :public Animal, public Climb {
public:Tiger() {this->name = "Tiger";}string name;void GoClimb(int dz) {posZ += dz;}};int main()
{Tiger t;cout << t.name << endl;t.move(3, 4);t.getPos();t.GoClimb(5);t.getHeight();return 0;
}

3,组合

组合是整体与部分的关系,个体没有独立的生命周期。

组合是把个体对象作为整体类的属性。

组合关系中,有1对1的,也有1对多的。

每只老虎有4条腿,1个头。

class Leg {
protected:int len;
};
class Head {
protected:int size;
};class Tiger {
public:Tiger() {this->name = "Tiger";}
private:string name;Leg leg[4];Head head;
};

4,聚合

聚合也是整体与部分的关系,但个体有独立的生命周期。

聚合是把个体对象的指针作为整体类的属性。

虎群里可能有1-n只老虎。

class TigerGroup {
private:vector<Tiger*> vtiger;
};

5,关联

关联是一种拥有关系,它使一个类知道另一个类的属性和方法,

如老虎拥有若干食物,那么它就知道每个食物是什么,什么颜色,有没有坏掉等等。

有1-n的单向关联,也有n-n的双向关联,双向关联可以用双向箭头,也可以没有箭头。

class Food {
protected:string foodName;string foodColor;
};class Tiger {
public:Tiger() {this->name = "Tiger";}
private:string name;Leg leg[4];Head head;vector<Food> food;
};

在《大话设计模式》中企鹅和气候的关系也是关联,理由是企鹅需要知道气候的变化。

6,依赖

依赖是一种使用关系,如老虎喝水。

class Leg {
protected:int len;
};
class Head {
protected:int size;
};class Food {
protected:string foodName;string foodColor;
};class Water {
private:float weight;
};class Tiger {
public:Tiger() {this->name = "Tiger";}void Drink(Water water) {return;}
private:string name;Leg leg[4];Head head;vector<Food> food;
};

三,总结

UML类图、6种关系相关推荐

  1. UML 类图几种关系的总结

    在 UML 类图中,常见的有以下几种关系:泛化(Generalization),实现(Realization),关联(Association),聚合(Aggregation),组合(Compositi ...

  2. UML类图五种关系与代码的对应关系

    UML类图中的五种关系的耦合强弱比较:依赖<关联<聚合<组合<继承 一.依赖关系: (一)说明 虚线+箭头 可描述为:Uses a 依赖是类的五种关系中耦合最小的一种关系. 因 ...

  3. 【UML建模】UML类图几种关系的总结

    转自:http://kb.cnblogs.com/page/129490/ 在UML类图中,常见的有以下几种关系: 泛化(Generalization),  实现(Realization),关联(As ...

  4. UML类图几种关系的总结,泛化 = 实现 组合 聚合 关联 依赖

    在UML类图中,常见的有以下几种关系: 泛化(Generalization), 实现(Realization),关联(Association),聚合(Aggregation),组合(Compositi ...

  5. UML类图几种关系的总结

    在UML类图中,常见的有以下几种关系:泛化(Generalization),  实现(Realization),关联(Association),聚合(Aggregation),组合(Compositi ...

  6. [UML] 类图之间的关系 | 1.关联关系

    [UML] 类图之间的关系 | 1.关联关系 1.关联关系 关联(Association)关系是类与类之间最常用的一种关系,它是一种结构化关系,用于表示一类对象与另一类对象之间有联系 在UML类图中, ...

  7. Java之UML类图的六种关系

    UML类图 UML图概念 UML--Unified modeling language UML(统一建模语言),是一种用于软件系统分析和设计的语言工具,它用于帮助软件开发人员进行思考和记录思路的结果. ...

  8. UML类图符号 各种关系说明以及举例

    UML中描述对象和类之间相互关系的方式包括:依赖(Dependency),关联(Association),聚合(Aggregation),组合(Composition),泛化(Generalizati ...

  9. 通过简单例子 | 快速理清 UML类图中六大关系

    类与类之间的六大关系 泛化 ( Generalization ) -> 表继承关系 实现 ( Realization ) 关联 ( Association ) 聚合 ( Aggregation ...

  10. 极简设计模式 - UML类图几种线条

    文章目录 前言 1.组合 2.聚合 3.关联 3.1单向关联 3.2双向关联 3.3自关联 4.依赖 5.实现 6.继承(泛化) 总结 参考 前言 设计模式系列目录 中间先夹一篇类图的基本点吧,与人方 ...

最新文章

  1. LeetCode Rectangle Area
  2. mysql连接查询之间的差异性
  3. h5课件制作_Articulate storyline交互H5视频课件制作技巧
  4. python迭代法求解非线性方程_荐【数学知识】非线性方程求解的二分法以及牛顿迭代法...
  5. android studio运行模拟器报错请求超时_GDA关于android脱壳的问题说明
  6. More Effective C++ (限制类的对象数量)
  7. Jakarta-ORO正则表达式的运用
  8. torch.randn
  9. ubuntu10.04 MTK开发环境
  10. U盘PE装系统-CGI一键还原备份安装方法
  11. redis 完整使用文档(2021)
  12. 服务器对比个人计算机,服务器与一般电脑有何区别,为什么差价很大?
  13. 差分放大电路及动态分析
  14. 【贪心算法】Wooden Sticks(资源调度问题)
  15. Iterative Linear Quadratic Gaussian(iLQG)
  16. 邮件客户端开源_5个最佳开源环境电子邮件客户端
  17. balser相机连接设置设置步骤
  18. Lookahead、LazyOptimizer、MaskedAdamOptimizer、AdaBound
  19. xPad该歇了,我们需要的只是小尺寸触控显示器
  20. Numpy应用100问

热门文章

  1. ORACLE ora-01502 索引失效
  2. 仙剑4 linux,仙剑奇侠传98柔情版 for Linux——SDLPAL打包
  3. 全选、全不选、反选功能的实现
  4. 双向长短期记忆网络模型_基于深度双向长短期记忆网络的空气质量预测方法与流程...
  5. [mysql]存储过程/存储函数
  6. 禁用vmware虚拟机自动挂起功能
  7. 计算机 蚂蚁搬家 教案,《观察蚂蚁搬家》教学设计
  8. OWASP固件安全测试
  9. 网络基础——牛客网刷题第四波
  10. 微信电脑版只能扫码登录的原因,你一定想不到