UML基本格式

一、UML的基本单元

一个图标表示一个class,有类的名字,加减号是共有或私有的,它包含一些属性和一些方法。
在这里插入图片描述

二、类的继承表示

在这里插入图片描述
空三角的箭头表明了继承,箭头方向是从子类到父类,多个子类可以共用一个箭头。

在这里插入图片描述

这里的Cat是从生物,动物一步一步继承过来的。如果结构比内容更重要,那么UML的图示可以省略具体的内容。

三、OO的核心元素

3.1 抽象(Abstraction)

一般一个类就对应一个物体(Object),物体可以是一个实物,也可以是一个虚拟的。
一个类不需要表示物理世界上的全部信息,只需要关注我们需要的内容。
比如飞机可以有飞行的属性,或者飞机也可以代表一次航班。这样不同的飞机,就可以有不同的状态和行为。
在这里插入图片描述

3.2封装(Encapsulation)

类可以通过设置public、protect和private属性,来确保类对外部有限接口。
比如我们开汽车只需要旋转钥匙就能启动汽车,而不用关心它内部如何实现,这个启动汽车的动作就可以是一个接口。
在这里插入图片描述

FlyingTransport确定了一个接口,这个fly可以被不同的子类实现不同的动作。

  • 实线加箭头,表示依赖。
  • UML里只有方法的类,其实是一个接口类。
  • 虚线加空心三角表示类实现了一个接口。

3.3 继承(Inheritance)

继承可以使得新的类不用复制相同的代码,而是通过继承服用父类的代码。
在这里插入图片描述
所有的父类如果有一些接口,那么子类全部都会实现一遍这些接口

3.4 多态(Polymorphism)

在这里插入图片描述
比如Animal里有一个抽象方法,那么子类Cat、Dog都可以实现不同的内容。发出不同的声音,这就是多态。

vector<Animal*> bag = { new Cat(), new Dog() };
foreach(Animal one : bag) {
	one.makeSound();
}
//Meow
//Woof

类之间的关系

关联(Association)

在这里插入图片描述

关联是一个对象使用或与另一个对象交互的一种关系类型。
上图用一个简单的箭头表示,Professor中使用到了Student类,这更像是在Professor类中的一块内容 。
当然也会存在双向箭头的情况,说明两个类都是互相关联的。

依赖(Dependency)

在这里插入图片描述
依赖表示一种弱的关联变量,通常暗示着类之间不是永久的链接。这种关系通常是一个类(Professor)接受另一个类(Salary)的方法、
实例化或使用另一个类(Salary)。
这里有如何发现类之间的依赖关系的:如果对一个类的定义的更改会导致对另一个类的修改,则在两个类之间存在依赖关系。

组合(Composition)

在这里插入图片描述
组成意味着“全体 – 部分” 的关系在两个类之间,一个类由另一个对象的一个或多个实力组成。
这种关系与其他关系之间的区别在于,该组件只能作为容器的一部分存在。
在UML中,组合关系由一条线表示,在容器末端有一个填充的菱形,在末端有一个箭头指向组件。

聚合(Aggregation)

在这里插入图片描述
聚合组合的一个不那么严格的变体,其中一个对象只包含对另一个对象的引用。
该容器不控制组件的生命周期。该组件可以在没有该容器的情况下存在,并且可以同时链接到多个容器。
在UML中,聚合关系的绘制方式与组合相同,但在箭头的底部有一个空菱形。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

习惯就好zz

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值