假舆马者,非利足也,而致千里;假舟楫者,非能水也,而绝江河。君子生非异也,善假于物也。
我们曾借白茶清欢等一个人,曾借花开花落叹宠辱不惊。今天借着类图来了解面向对象又有何不可呢?
对象模型中,类图是来描述系统的静态结构,是对模拟客观世界的对象及对象见的联系的映射。
类的表示
UML中矩形表示类,用两条横向把矩形分成上、中、下3个区域。分别表示类名,属性和操作。
属性或者方法名称前加上 “+”、“-”或者“#”号则表示了这个属性或者方法的可见性。“+”表示public,“-”表示private私有的,而“#”号则表示protected也就是受保护的。
正如有人的地方就有江湖,那有类的地方就会有关系。
那接下来就来学习一下类与类之间各种千丝万缕的联系吧。
关联的表示
1)单向关联
单向关联用一个带箭头的直线表示。比如说亚当与肋骨,每个亚当类持有一个类型为肋骨类的成员变量类实现。
2)双向关联
所谓双向关联就是双方各自持有对方类型的成员变量,用不带箭头的直线表示。比如说顾客类中维护着一个产品数组,表示一个顾客购买了哪些产品,而在产品类中维护这一个顾客类型的成员变量表示这个产品被哪个顾客所购买。
3)多元关联
多元关联在绘制数据库相关的图形中常见,用一个菱形符号联结相关联的连线。
像图中所示一样,程序猿小哥哥们就会使用开发语言去开发项目呢!
4)受限关联
在UML类图中用一个带有箭头并且指向自身的直线表示。受限关联由两个类及一个限定词组成。限定词是一种特殊属性,用来减少关联的重数。比如说一个文件夹和文件两个类,一个文件只属于一个文件夹,在文件夹的内容中,文件名唯一确定一个文件,一个文件与文件夹及文件名有关。限定词“文件名”把一对多的关联简化为了一对一的关系。
5)自关联
在系统中可能会存在一些类的属性对象类型为该类本身,这种特殊的关联关系就称为自关联啦。
6)关联的重数
关联的重数可以用关联连线末端的特定符号表示。
“1+”也可以用“*”代替,表示一个或多个。如果没有符号的话就只表示一对一关联
关系的表示
1)聚合关系
UML中聚合关系中用带空心菱形和箭头的直线表示。聚合关系表示has-a的关系,是一种不稳定的包含关系。它最大的特点就是两个类之间有整体和局部的关系,并且就算没有了整体,局部也可以单独存在。就像卡车与引擎的关系,离开了卡车,引擎还是能单独存在。有你,只是锦上添花,没你,我也能光芒万丈。
2)组合关系
组合关系是用带实心的菱形和箭头的直线表示。它与聚合最大的不同之处就是部分脱离了整体便不复存在。
就像大雁与翅膀的关系一样。翅膀不能脱离了大雁而单独存在。
3)依赖关系
依赖关系用带有指向的独立类箭头的虚线表示~~是虚线啊
一个类A只有依靠另一个类B才能发挥作用就称A依赖于B。
比如说司机这个类,必须要依靠一个车对象才能发挥作用,因此就说司机类依赖于车。
4)继承关系
继承关系用带空心三角形的直线表示。当项目中有多个类出现相同部分的实例变量和方法中,我们就考虑用继承的方法。比如说人类与学生类或者老师类都是继承关系。
既然用过继承,相信大家也一定听说过泛化。
泛化表示is-a的关系,是对象之间耦合度最大的一种关系。实际上,泛化关系是继承的反关系,也就是说子类是从父类继承的,而父类则是子类的泛化。
5)实现
实现是一种类与接口的关系,表示类是接口所有特征和行为的实现。在UML类图中用带空心三角形的虚线表示。
以上就是UML图中类与类之间的关系。
古语有云:非学无以广才,非志无以成学。最后祝大家Study well(hard) and make progress every day.
领取专属 10元无门槛券
私享最新 技术干货