类图是UML中用的最多的图 有此可知类图是非常重要的
类图 英文是 Class Diagram 形状很简单 是由一个矩形、两个矩形或三个矩形构成的
如下图:
如图中所示 最上面一栏是类名 就是这个类的名字 第二栏是类的属性(一个类可以有一个或多个属性 当然还有些类没有属性) 第三栏就是类的方法也叫类的操作 就是说这个类可以做什么(和类的属性一样类的方法可以有一个或多个 也可以一个也没有)
类与类之间的关系:
上面只说了一个类的构成 我们写程序的时候不可能只有一个类 通常都会有好多类 如何处理好这些类之间的关系是一种很重要的事
下面让我们看一下类与类之间有什么关系:
关联 关联分为组合跟聚合
聚合(Aggregation):直接说组合的定义我感觉不是很容易理解 还是举个例子吧 我个人比较喜欢足球 所以就举个跟足球有关的例子吧
其实球员跟俱乐部之间的关系就是一种聚合关系 俱乐部由球员组成 球员属于俱乐部 俱乐部可以买卖球员 而球员也可以选择自己向往的俱乐部 他们之间没有什么必然的关系 而组合就不同了
聚合用实心箭头末尾加上空心的菱形来表示 空心菱形也可以理解为关系弱
组合(Composition):上图皇马跟C罗和卡卡的关系就是聚合关系 他们之间没有什么必然的关系 C罗和卡卡无论谁转会都不会让皇马有本质的改变 而有组合关系的类他们之间的关系是非常紧密的 C罗与C罗自己的脚、自己的手之间的关系就是这种组合关系
组合用实心箭头加上末尾的实心菱形表示 实心菱形可以理解为关系强
C罗的手跟脚相比他跟皇马的关系显然紧密了许多 如果C罗没有了脚 或没有了手 那么对他的影响是巨大的 对他来说是本质上的影响
还有一个关系就是泛化/继承(Generalize) 泛化和继承其实是一个逆过程 泛化就是有子类抽象出一个父类 而继承就是由父类具体化一个子类 例如足球比联赛跟什么西甲 意甲 英超之间就是泛化/继承的关系
泛化/继承用空心实线箭头表示
最后一种关系就是依赖(Dependency) 所谓依赖顾名思义 就是一个受另一个类的影响与制约 这就好比足球赛跟比赛规则之间的关系 一场足球赛要按照比赛规则才可以顺利的进行 而且比赛规则的改变会影响到比赛
以上就是类图中的一些东西 我的理解很肤浅 有说的不对的地方 希望大家多多指教
标签:关系,泛化,组合,类图,之间,UML,就是 From: https://blog.51cto.com/liushuijinger/5899951