UML中类关系实现(类图)

以下是博主学习笔记,错误之处,请指正


在类与类关系中关系强度从弱到强依次为:
依赖关系(Dependency) < 关联关系(Association) < 聚合(Aggregation) < 组合(Composition) < 泛化(Generalization)


一、依赖关系

表示对象之间瞬时的联系;在UML中用虚线箭头表示
在这里插入图片描述
依赖关系表现形式:作为people某个方法的局部变量、参数或者返回值
C++实现:

class computer{
public:
	computer(){
	}
};

class people{
public:
	computer programming(computer cmp){
		return cmp
	}
};

二、关联关系

关联关系明确类与类之间存在的静态关联,体现为类中增加的实例变量
在UML中用实线箭头表示

(一)双向关联:

在这里插入图片描述
关系解释:一个多边形由3个及以上边组成,3个及以上的边组成一个多边形
C++实现:

class side{
public:
	side(){
	}
	Polygon getPolygons(){
	}
	void addPolygons(){
	}
private:
	Polygon polygons = new Polygon();
};

class Polygon{
public:
	Polygon(){
	}
	void addBian(){
	}
	side getBian(){
	}
private:
	set<side> bian{3,4,5};  #因为是一个多边形对应多条边所以类型用集合类型声明,并且由于最少三条边,所以应该初始化最少三条边
};
基本集合类型元素顺序要求元素唯一性要求
Set不要求无重复{unique}
Bag或者Multiset不要求允许重复
OrderedSet要求{ordered}无重复{unique}
List或Sequence要求{ordered}允许重复

(二)单向关联:

在这里插入图片描述
关联解释:
一个多边形由至少三条边组成,Polygon通过sides变量管理side类
C++实现:

class side{
public:
	side(){
	}
};

class Polygon{
public:
	Polygon(){
	}
	void addBian(){
	}
	side getBian(){
	}
private:
	set<sides> bian{3,4,5};  #因为是一个多边形对应多条边所以类型用集合类型声明,并且由于最少三条边,所以应该初始化最少三条边
};

(三)自我关联:

在这里插入图片描述

关联解释:一个点通过points变量管理多个点(包括0个)
C++代码实现:

class Point{
public:
	Point(){
	}
	void addPoints(){
	}
	Point getPoints(){
	}
private:
	Point points
};

三、聚合关系

空心菱形符号表示多边形与点的弱包含关系,即不存在层面的依赖关系。
在这里插入图片描述

关系解释:一个多边形由三条以上的边构成,并由sides变量管理side类。删 除多边形类后side类不会消失,并且可以构成其他多边形
C++伪代码实现:

class side{
public:
	side(){
	}
	void setSide(){
	}
private:
	double side
};

class Polygon{
public:
	Polygon(){
	初始化边
	}
	void addSides(side* S){
		this->side = S
	}
	side *getSides(){
		return side;
	}
	//或者利用C++中地址操作符&,获取对象的地址用于函数参数中
	void addSides(side& S){
		this->side = S
	}
	side &getSides(){
	return side;
	}
private:
	set *sides;
};

在上述实现方法中,getSides得到的是side类的一个地址,能够随意修改side类,打破了原有的封装,其sides也不依赖Polygon类“存活”。

四、组合关系

用实心的菱形表示整体与部分的强包含关系:
在这里插入图片描述
关系解释:一个多边形类(Polygon)由三个及以上边(side)组合而成。若删除多边形类,则对应的点类也同时删除,即同生共死关系
C++伪代码实现:

class side{
public:
	side(){
	}
}

class Polygon{
public:
	Polygon(){
	初始化,至少三条边
	}
	void addSides(side S){
		初始化
	}
	side getSides(){
	}
private:
	side sides;
}

上述实现方法中,Polygon中的side类,作为其中的一个参数存在,与Polygon类“同生共死”。

五、泛化关系

在这里插入图片描述
表示类与接口之间的继承关系
C++伪代码实现:

class Animal{
public:
	自由行动();
};

class Cat : public Animal{
privite:
	老鼠天敌;
	喵喵喵;
};

class Dog : public Animal{
privite:
	人类伙伴;
	汪汪汪;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值