第六章定义结构与连接 类(及其对象)之间的四种关系 两种结构,两种连接 分类关系、继承 般-特殊结构 (generalization-specialization structure 组成关系、聚合整体-部分结构 (whole-part structure) 静态联系、关联实例连接 (instance connection) 动态联系、行为依赖消息连接 (message connection) 这些关系形成了类图的关系层
类(及其对象)之间的四种关系 ——两种结构,两种连接 分类关系、继承——一般-特殊结构 (generalization-specialization structure) 组成关系、聚合——整体-部分结构 (whole-part structure) 静态联系、关联——实例连接 (instance connection) 动态联系、行为依赖——消息连接 (message connection) 这些关系形成了类图的关系层 第六章 定义结构与连接
6.1-般特殊结构 概念:一般类、特殊类、继承、多继承、多态、 一般-特殊结构、“ is a kind of 定义:一般特殊结构是由一组具有一般特殊关系(继 承关系)的类所组成的结构,它是一个以类为结点,以 继承关系为边的连通的有向图 同义词:分类结构( classification structure 作用:简化了对对象的认识、定义和理解
概念:一般类、特殊类、继承、多继承、多态、 一般-特殊结构、 “is a kind of ” 定义:一般-特殊结构是由一组具有一般-特殊关系(继 承关系)的类所组成的结构,它是一个以类为结点,以 继承关系为边的连通的有向图。 同义词:分类结构(classification structure) 6.1 一般-特殊结构 作用:简化了对对象的认识、定义和理解
表示法 般类 对继承的属性或服务重新定义 ×拒绝继承 特殊类 特殊类 多态性的表示符号 结构连接符 例 人员 般类 股东职员 顾客 特殊类 特殊类 股东职员 完整的-般-特殊结构
表示法 人员 股东 职员 顾客 股东职员 例: ● 对继承的属性或服务重新定义 × 拒绝继承 多态性的表示符号 一般类 特殊类 特殊类 结构连接符 一般类 特殊类 特殊类 完整的一般-特殊结构
如何发现一般-特殊结构 1)学习当前领域的分类学知识 2)按常识考虑事物的分类 (3)回顾一般类和特殊类的两种定义 (4)考察类的属性与服务 公司人员 公司人员 姓名 「姓名 身份证号 身份证号 公司人员 姓名 身份证号 股份 股东 职员 工资 股东 职员 股东 职员 姓名 身份证号 身份证号 ?/股份 股份 工资 工资 股份 工资
如何发现一般-特殊结构 (1)学习当前领域的分类学知识 (2)按常识考虑事物的分类 (3)回顾一般类和特殊类的两种定义 (4)考察类的属性与服务 ? 公司人员 姓名 身份证号 股份 工资 ······ ······ ? 公司人员 姓名 身份证号 ······ 股东 股份 ······ ······ 职员 工资 ······ ······ ······ 股东 姓名 身份证号 股份 ······ ······ 职员 姓名 身份证号 工资 ······ ······ 公司人员 姓名 身份证号 ······ ······ 股东 股份 ······ ······ 职员 工资 ······ ······ ?
(5)考虑领域范围内的复用 收款机领域构件 现钞收款机 A X BCDEF 现钞收款机 X Z E F Z
(5)考虑领域范围内的复用 现钞收款机 A B C D E F X Y Z 收款机 A B C X Y 现钞收款机 D E F Z 领域构件
审查与调整 (1)问题域是否需要这样的分类?(例:书善本书) (2)系统责任是否需要这样的分类?(例:职员-本市职员 (3)是否符合分类学的常识?(用“ is a kind of”去套) 汽车 运输工具 运输工具 发动机 发动机 发动机 载重量 载重量 载重量 速度 速度 速度 运输 运输 或运输 飞机 汽车 飞机 飞行高度 飞行高度 飞行高度 自动导航 自动导航 自动导航 (4)是否构成了继承关系?(确实继承了一些属性或服务
(1)问题域是否需要这样的分类?(例:书—善本书) (2)系统责任是否需要这样的分类?(例:职员—本市职员) (3)是否符合分类学的常识?(用“is a kind of ”去套) 飞机 飞行高度 ······ 自动导航 ······ × 汽车 发动机 载重量 速度 ······ 运输 ······ 运输工具 发动机 载重量 速度 ······ 飞机 飞行高度 ······ 自动导航 ······ 汽车 ······ ······ 运输工具 发动机 载重量 速度 ······ 飞机 飞行高度 ······ 自动导航 ······ 运输 ······ 运输 或 ······ 审查与调整 (4)是否构成了继承关系?(确实继承了一些属性或服务 )
一般-特殊结构的简化 (1)取消没有特殊性的特殊类 (2)增加属性简化一般-特殊结构 (3)取消用途单一的一般类,减少继承层次 般类存在的理由: 有两个或两个上以上的特殊类 需要用它创建对象实例 有助于软件复用
一般-特殊结构的简化 (1)取消没有特殊性的特殊类 (2)增加属性简化一般-特殊结构 (3)取消用途单一的一般类,减少继承层次 一般类存在的理由: ·有两个或两个上以上的特殊类 ·需要用它创建对象实例 ·有助于软件复用
62整体-部分结构 概念:整体对象、部分对象、聚合、整体-部分结构 a part of”或“hasa” 整体-部分关系是对象实例之间的关系 说“对象a是对象b的组成部分”—可以 说“类A是类B的组成部分”—不妥 说“类B和类A之间的整体-部分关系 是指它们的对象实例存在整体-部分关系 定义:整体-部分结构是把一组具有整体-部分关系的 类组织在一起的结构。它是一个以类为结点,以整 体-部分关系为边的连通的有向图 同义词:组装结构( composition structure) 区别:紧密、固定的关系和松散、灵活的关系
概念:整体对象、部分对象、聚合、整体-部分结构 “a part of”或“has a” 整体-部分关系是对象实例之间的关系 说“对象a是对象b的组成部分”——可以 说“类A是类B的组成部分”——不妥 说“类B和类A之间的整体-部分关系”, 是指它们的对象实例存在整体-部分关系 定义:整体-部分结构是把一组具有整体-部分关系的 类组织在一起的结构。它是一个以类为结点,以整 体-部分关系为边的连通的有向图。 同义词:组装结构(composition structure) 区别:紧密、固定的关系 和 松散、灵活的关系 6.2 整体-部分结构
表示法 连接符: 例子: 汽车 整体对象类 多重性: 一对 4,6 对多 多对多 发动机 车轮 部分对象类 多重性表示: 固定的数√单个数 不定的数六数对
整体对象类 部分对象类 m n 连接符: 表示法 汽 车 发动机 车 轮 1 4,6 0,1 0,1 例子: 多重性: 一对一 一对多 多对多 多重性表示: 固定的数 单个数 不定的数 数对
如何发现整体-部分结构 考察: (1)物理上的整体事物和它的组成部分 例:机器、设备和它的零部件 (2)组织机构和它的下级组织及部分 例:公司与子公司、部门 (3)团体(组织)与成员 例:公司与职员 (4)一种事物在空间上包容其它事物 例:生产车间与机器 (5)抽象事物的整体与部分 例:学科与分支学科、法律与法律条款 (6)具体事物和它的某个抽象方面 例:人员与身份、履历
如何发现整体-部分结构 考察: (1)物理上的整体事物和它的组成部分 例:机器、设备和它的零部件 (2)组织机构和它的下级组织及部分 例:公司与子公司、部门 (3)团体(组织)与成员 例:公司与职员 (4)一种事物在空间上包容其它事物 例:生产车间与机器 (5)抽象事物的整体与部分 例:学科与分支学科、法律与法律条款 ( 6)具体事物和它的某个抽象方面 例:人员与身份、履历