UML类图、6种关系
目录
一,类图
二,类的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种关系相关推荐
- UML 类图几种关系的总结
在 UML 类图中,常见的有以下几种关系:泛化(Generalization),实现(Realization),关联(Association),聚合(Aggregation),组合(Compositi ...
- UML类图五种关系与代码的对应关系
UML类图中的五种关系的耦合强弱比较:依赖<关联<聚合<组合<继承 一.依赖关系: (一)说明 虚线+箭头 可描述为:Uses a 依赖是类的五种关系中耦合最小的一种关系. 因 ...
- 【UML建模】UML类图几种关系的总结
转自:http://kb.cnblogs.com/page/129490/ 在UML类图中,常见的有以下几种关系: 泛化(Generalization), 实现(Realization),关联(As ...
- UML类图几种关系的总结,泛化 = 实现 组合 聚合 关联 依赖
在UML类图中,常见的有以下几种关系: 泛化(Generalization), 实现(Realization),关联(Association),聚合(Aggregation),组合(Compositi ...
- UML类图几种关系的总结
在UML类图中,常见的有以下几种关系:泛化(Generalization), 实现(Realization),关联(Association),聚合(Aggregation),组合(Compositi ...
- [UML] 类图之间的关系 | 1.关联关系
[UML] 类图之间的关系 | 1.关联关系 1.关联关系 关联(Association)关系是类与类之间最常用的一种关系,它是一种结构化关系,用于表示一类对象与另一类对象之间有联系 在UML类图中, ...
- Java之UML类图的六种关系
UML类图 UML图概念 UML--Unified modeling language UML(统一建模语言),是一种用于软件系统分析和设计的语言工具,它用于帮助软件开发人员进行思考和记录思路的结果. ...
- UML类图符号 各种关系说明以及举例
UML中描述对象和类之间相互关系的方式包括:依赖(Dependency),关联(Association),聚合(Aggregation),组合(Composition),泛化(Generalizati ...
- 通过简单例子 | 快速理清 UML类图中六大关系
类与类之间的六大关系 泛化 ( Generalization ) -> 表继承关系 实现 ( Realization ) 关联 ( Association ) 聚合 ( Aggregation ...
- 极简设计模式 - UML类图几种线条
文章目录 前言 1.组合 2.聚合 3.关联 3.1单向关联 3.2双向关联 3.3自关联 4.依赖 5.实现 6.继承(泛化) 总结 参考 前言 设计模式系列目录 中间先夹一篇类图的基本点吧,与人方 ...
最新文章
- LeetCode Rectangle Area
- mysql连接查询之间的差异性
- h5课件制作_Articulate storyline交互H5视频课件制作技巧
- python迭代法求解非线性方程_荐【数学知识】非线性方程求解的二分法以及牛顿迭代法...
- android studio运行模拟器报错请求超时_GDA关于android脱壳的问题说明
- More Effective C++ (限制类的对象数量)
- Jakarta-ORO正则表达式的运用
- torch.randn
- ubuntu10.04 MTK开发环境
- U盘PE装系统-CGI一键还原备份安装方法
- redis 完整使用文档(2021)
- 服务器对比个人计算机,服务器与一般电脑有何区别,为什么差价很大?
- 差分放大电路及动态分析
- 【贪心算法】Wooden Sticks(资源调度问题)
- Iterative Linear Quadratic Gaussian(iLQG)
- 邮件客户端开源_5个最佳开源环境电子邮件客户端
- balser相机连接设置设置步骤
- Lookahead、LazyOptimizer、MaskedAdamOptimizer、AdaBound
- xPad该歇了,我们需要的只是小尺寸触控显示器
- Numpy应用100问