类与类之间的关系

对于一个工程,项目

面向对象的分析(OOA):需求,做什么
面向对象的设计(OOD):怎么样去做
面向对象的编程(OOP):做

分析与设计占到整个项目的七成甚至以上

软件需求一直在变化的,想以最小的代价去满足需求的变化。
UML:统一建模语言,主要是类图,序列图

类与类之间的关系

1,继承(泛化)

A is B
可以使用空心的三件箭头从派生类指向基类

在这里插入图片描述

2,关联

A has B
关联关系有两种形式:双向的关联关系,单向的关联关系
双向的关联关系(客户与订单的关系)(直接使用直线连接两个类)
在这里插入图片描述
单向的关联关系(条件变量知道互斥锁的存在,互斥锁不知道条件变量的存在,可以使用条件变量到互斥锁的箭头)(A知道B的存在,B不知道A的存在)
数据成员使用的是指针或引用
彼此之间不会负责对方生命周期的销毁
在这里插入图片描述

3,聚合

A has B
从部分指向整体的空心菱形箭头,类与类之间表现为整体与局部的关系,整体部分并不负责局部部分的销毁。
在代码上可以使用指针或引用。
在这里插入图片描述

4,组合

A has B
从部分指向整体的实心菱形箭头,整体部分会负责局部对象的销毁,可以将局部类创建的对象作为整体的数据成员。
在这里插入图片描述

5,依赖

A use B,是偶然的,临时的,并非固定的
在代码上:B作为A的 成员函数参数
B作为A的成员函数的 局部变量
A的成员函数调用B的静态方法
在这里插入图片描述

各关系的比较与总结

1,继承体现的是类与类之间的纵向关系(垂直关系),其他四种体现的是类与类之间的横向关系;
2,耦合:两个模块或者两个部分之间的连接关系;低耦合(让两个模块或者两个类之间的关系变得微弱一些)
耦合强度:
依赖 < 关联 < 聚合 < 组合 < 继承(泛化)
3,语义上说 继承(泛化)A is B ;关联、聚合、组合A has B;依赖 A use B;
4,当组合与依赖结合时,可以替代继承

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值