类图(class diagram)描述一组类、接口、协作和它们之间的关系
对象图(object diagram)描述一组对象及它们之间的关系、对象图描述了在类图中所建立的事物实例的静态快照。
类图和对象图基本上是一样的,只是对象图一般会在类前面有个冒号,或者变量名:类名, 具体的属性可能会具有具体的值。
类图如下,是抽象出来的概念
对象图如下,抽象的一种具体实现,对象具有具体的变量,对象的苏还行具有具体的值。但是图的关系是一样的。
类图:分三层,第一层表示类名,第二层表示类的属性,第三层表示类具有的方法
对象图:也分三层,第一层格式“对项名:类名”,表示是类的实例化。第二层表示属性,属性可以被赋值。第三层表示方法。当然,层数是可以省略或者不写的。
类与类之间的关系
我们使用一个简单的类图来说明类与类之间的关系。
类和类之间可能存在1对0到多的这种关系,比如上面的一个书籍列表,可以对应0到多本书籍,也就是可以包含多本书籍,也可以不包含。所以书籍列表和书籍之间是1:0..*的关系。
如何来判断这种1对0..*多关系呢,其实可以通过E-R图来进行判断。类图里面也是同样的逻辑。只是这个类图会比E-R更加细致一点而已。
概念:一个事物发生变化影响另一个事物,它们之间的关系就叫做依赖关系
使用正向虚线实心箭头表示。
上图就是表示A调用了B的方法,当B类发生变化时,A也要跟着发生变化,这就是依赖关系。
概念:泛化关系表示的是特殊和一般的关系,也是父子关系,特殊指的是子类,一般指的的父类。子类继承了父类的特点,所以子类的特殊,父类是一般。
使用正向实线空心箭头表示。
动物是一般的类,狗子是一种特殊的动物,除了会动物的喝水技能,还会自己的特殊技能汪汪叫。
概念:描述了一组链,链是对象之间的连接
聚合关系:整体与部分生命周期不同,使用正向实线空心菱形头表示
组合关系:整体与部分生命周期相同,使用正向实线实心菱形头表示
整体是带有菱形的那一端
聚合和组合的共性就是都表示整体和部分的关系。比如上面的书籍列表和书籍就是整体和部分的关系
聚合和组合的不同在于生命周期是否与整体相同,相同则是组合关系,不同则是聚合关系。
比如:车子和轮胎的关系就是聚合关系,车子坏了,轮胎是新的,轮胎可以拆下来放在其他车子上。也就意味着车子的消亡,并不会影响轮子的消亡。也就是轮子(部分)的生命周期和车子(整体)的生命周期是不同的。
比如:公司和部门的关系就是组合关系,公司倒闭了,公司的部门一定也会随之消亡。不存在公司都不存在了,公司的某个部门还存在。整体和部分的生命周期是一样的,这就是组合关系。
组合和聚合的应用场景
组合和聚合的应用场景是不同的,可能导致的情景也是不一样的。主要应用在内存回收场景。
比如我们在游戏场景,我们要去捡一个装备,装备没捡到我们掉线了,服务器不能回收装备,导致内存居高不下。但是重启后又好了,因为内存回收了。这就是聚合场景导致的问题。但是组合场景又不适用,因为装备你不捡,其他人还可能去捡。
概念:表示接口与类之间的关系,,接口只定义类的方法,而接口的实现类就是对接口的实现
使用正向虚线空心箭头表示
今天主要学习了类图的概念和类图对应的关系的理解的图形表示,用例图和类图属于非常重要的图,我们需要化一定的时间去记住和理解这些概念和图形表示。学无止境,继续加油!
联系客服