类之间的关系

type
status
date
slug
summary
tags
category
icon
password

泛化关系(generalization)

类继承结构通常表现为,泛化(generalize)与实现(realize)
  • 继承关系为is-a的关系;两个对象之间如果可以用is-a来表示,就是继承关系:(.....是.....)
自行车是车;猫是动物
  • 泛化关系;可以理解为从宏观到微观。
人可以泛化为男人和女人,方向可以泛化为东方、西方、南方、北方,当然可以更具体。
  • 代码上的体现,泛化关系表现为继承非抽象类(non-abstract class)

实现关系(realize)

一个抽象的概念,不能直接定义使用,如“笔”是一个抽象的概念无法直接用来定义对象,只有指明具体的类型才可以用来定义对象,如“钢笔”、“铅笔”、“圆珠笔”等。在实际代码中C++Java都有抽象类,Java中还有接口这个概念。
  • 代码实现这种关系:表现为,继承抽象类或实现接口。

聚合关系(aggregation)

聚合关系用于表示实体对象之间的关系,表示整体由部分构成,例如班级由学生构成,整体不与部分强依赖也就是说即使放假了班级解散了,但是学生还在。
  • 代码实现

组合关系(composition)

与聚合关系不同组合关系是一种强依赖的聚合关系,如果整体不在了,那么部分也就随之消失了。
例如人的手有五根手指组成,如果手没了,剩下你自己想吧........
  • 代码实现

关联关系(association)

它描述不同类的对象之间的结构关系;它是一种静态关系, 通常与运行状态无关,一般由常识等因素决定的;它一般用来定义对象之间静态的、天然的结构; 所以,关联关系是一种“强关联”的关系;例如学生与学校之间的关系
  • 在最终代码中,关联对象通常是以成员变量的形式实现的;

依赖关系(dependency)

与关联关系不同的是,它是一种临时性的关系,通常在运行期间产生,并且随着运行时的变化; 依赖关系也可能发生变化;
依赖是有方向的,双向依赖是一种非常糟糕的结构,我们总是应该保持单向依赖,杜绝双向依赖的产生;在最终代码中,依赖关系体现为类构造方法及类方法的传入参数,箭头的指向为调用关系;依赖关系除了临时知道对方外,还是“使用”对方的方法和属性;其实就是一种类初始化或参数调用的关系。
Loading...

© ShellMing 2019-2025