-
车的类图结构为<<abstract>>,表示车是一个抽象类;
-
(Interface Realization)
它有两个继承类:小汽车和自行车;它们之间的关系为实现关系,使用带空心三角的虚线表示; -
(Generalization) 小汽车与SUV治安也是继承关系,它们之间的关系为泛化关系,使用带空心三角的实现表示;
-
(Composition)小汽车与发动机之间是组合关系,使用带实心箭头的实现表示;
-
(Aggregation)学生与班级在之间是聚合关系,使用带空心箭头的实现表示;
-
(Association)学生与省份证之间是关联关系,,使用一根实现表示;
-
(Dependency)学生上学需要用到自行车,与自行车是一种依赖关系,使用带开口三角虚线表示。
类和类之间的关系
空心三角+实线
类的继承结构表现的UML中为:泛化(generalize)和是实现(realize)
#####泛化关系(generalization)
继承关系为 is-a的关系,自行车是车,猫是动物,SUV是汽车
代码表现为继承非抽象类
实现关系(realize)
空心三角+虚线
(C++中用抽象类表示, 在JAVA中有接口的概念)
代码表现为继承抽象类
聚合关系和组合关系的不同:聚合关系不是强依赖的,及时整体不存在,部分任然存在;部门撤销了,人员不会消失;
聚合关系(aggregation)
空心菱形+实线
组合关系(composition)
实心菱形+实线
组合关系是一种强依赖的特殊聚合关系,整体不存在,部分也就不存在了,公司没了,部门也就没了
依赖关系与关联关系的不同:依赖关系是一种临时性的关系,通常在运行期间产生,并且随着运行时的变化;依赖关系也发生变化;
关联关系(association)
一条直线
它描述不同类的对象之间的结构关系,是一种静态关系,通常与运行状态无关,一般由常识等因素决定;一般用来定义对象之间的静态的、天然的结构,是一种强关联的关系;
代码中,关联对象同城是以成员变量的形式实现
依赖关系(dependency)
开口三角+虚线
描述一个对象在运行期间会用到另个对象的关系; 双向依赖是比较糟糕的结构,我们总是应该保持单项依赖,杜绝双向依赖的产生;
代码中,依赖关系体现为类构造方法及类方法的传人参数,箭头的指向为调用关系;依赖关系除了临时知道对方wait,还是“使用”对方的方法和属性