当前课程知识点:面向对象分析与设计 >  面向对象建模 >  对象和类 >  对象和类

返回《面向对象分析与设计》慕课在线视频课程列表

对象和类在线视频

下一节:类之间的关系

返回《面向对象分析与设计》慕课在线视频列表

对象和类课程教案、知识点、字幕

同学们,今天我们讲第四讲

我们介绍一下面向对象里面两个最基本的概念:对象和类

我们定义一下对象和类的基本概念和UML里面如何来描述对象和类

什么是对象呢 我们知道面向对象设计与分析方法中

我们把现实世界中的事物抽象为软件中的对象

对象可以说是面向对象分析与设计中最基本的实体或者说最基本的单位

那么什么是对象 我们把对象定义成具有良好边界定义的软件实体

对于每个对象来讲 它有它的唯一标示

有它的特征属性 有它的状态和行为

对象的状态可以描述成对象的主要属性或者说它和其他对象之间的关系

它的行为可以描述成对象的操作方法或者状态机

类则描述了具有公共的属性 操作 关系和语义的对象的抽象体

我们把它定义成类

也就是说 类是对象的抽象 而对象是类的一个实例

类作为一个抽象体 它就描述了对象的一些公共的重要的特征

而把其他的一些特征隐藏掉了

这里举个例子 我们旁边是一个教师对象 J Clark老师

那么根据对他的属性的抽象 分析以后我们可以定义一个教师类

在教师类里面我们定义了重要的属性 例如名字工号学科等等

定义了重要的属性 例如接受课程 提交考试成绩等等

类被定义为对象的抽象

它定义的对象的公共的结构和行为

所有类里面对象都所必须具有的公共的结构和行为

它可以作为一个模板 用来创建类里面的对象

我们需要特别说明的是 类不是对象的集合

集合只是简单的把相关的对象放在一起

而类和对象之间具有不同的抽象层次和级别

所以我们说类不是对象的集合 而是对对象的抽象

类和类之间具有关系 主要关系有几种

第一个最基本最常见的 我们称之为关联关系

它描述了类和对象之间比较长期稳定的一种关系

关联关系可以细分为聚集关系和组合关系

类和对象之间的父子继承关系我们把它称之为泛化关系

除此之外类和对象之间还有依赖关系

类和类的接口之间还有实现关系

我们首先介绍关联关系

关联关系是类之间最常见最基本的稳定的结构化关系

关联关系描述了类的两个对象之间比较持久稳定的关系

比如说 大学中研究生和他的导师

也就是说研究生这个类和他的导师这个类

这两个类之间具有长期稳定持久的关系

所以学生和导师类之间具有关联关系

我们以教学系统为例 我们举了两个例子

一个是学生类和他的课程计划 每个同学在入学后有他的课程计划

所以课程计划类和学生类之间具有关联关系

另外课程类和它自身具有关联关系 实际上指的是课程类的对象

比如说面向对象设计与分析这门课程 它的先修课程可能是Java语言

那么Java语言与面向对象分析与设计这门课程之间有先修关系

但是这两个都属于课程这个类

也就是说类的不同对象之间具有长期稳定的先修关系

所以它们之间也可以有关联关系

在有了关联关系以后 我们要介绍一个概念叫导航性

有了关联关系之后 类和对象之间在需要的时候要互相能找到

比如说我们刚才介绍学生和老师之间有关联关系

那么老师在安排任务时需要能找到学生

所以我们把这种一个关联类能够找到另外一个所关联的目标类

这样一个导航方向我们把它称为导航性

导航性可能是单向的也可能是双向的

在这个例子中我们可以看到

注册控制这个类它的对象需要找到课程计划这个类的对象

反之课程计划类的对象不需要去找到注册控制类的对象

所以它们的导航关系是单向的 通过单向箭头来描述

还有种情况 它会是双向的

前面类的对象需要找到后面类的对象

同时后面类的对象也需要找到前面类的对象

双向关联的时候我们用一条实线来描述 不带箭头

不带箭头就表示双向的关联关系

下面我们要介绍的概念叫多重性

在关联关系当中 一个类的对象可能会关联到多个类的对象

我们把这个数量 称之为多重性

对每一个关联关系要分别进行定义标识每一个对象它所关联的另一个类的对象的数量

比如说下面这个例子

一个老师可以上若干门课程 他的多重性就是0 , *

就表示不上课是0 多门课是*

对开设的每一门课程来说

要么这门课程还没指定它的主讲老师 要么指定一个

每门课程最多只能有一个主讲老师

所以它的多重性就是0..1

对于多重性的描述经常采用的符号有以下几种

未指定则不描述

如果确实一个对象只能关联另外一个对象则描述为1

也可以描述0..*表示不关联或者关联多个

1..*表示不关联或者关联多个

甚至可以直接指定若干个的范围 例如2..4表示至少关联两个至多关联四个

下面我们介绍第二种关系 我们将它称之为聚集关系

聚集关系是种特殊的关联关系

也就是说聚集关系是关联关系的一类 是描述整体和部分的关系

在聚集关系中 一个对象表示的是整体 另一个类描述的是它的部分

例如学生是整体 他的部分是课程计划

也就是说课程计划是学生类的一个部分

第三个我们介绍组合关系

组合关系也是一种特殊的关联关系

组合关系还是一种特殊的聚集关系

组合关系同样描述的是整体和部分的关系

组合关系和聚集关系的区别在于

组合关系描述的是一种强烈的整体和部分不可分的一种关系

在组合关系中 部分只能属于这个整体

在普通的聚集关系中这个部分可能属于这个整体也可以去属于另外一个整体

比如在组合关系中我们以人为例

我们把人这个类看成一个整体 把眼睛这个类看成它的部分

眼睛只能属于这个人 这种整体部分关系就称之为组合关系

组合关系和属性具有很多相似的地方

一般情况下属性要比组合关系简单

所以在面向对象分析与设计的时候我们尽可能的将它设计成属性

但是也有一些特殊情况

比如说每个属性有独立的标识 或者说多个类有共同的属性

或者属性有自己的内部结构或者内部行为

或者属性包含了自己的关系

这些情况下我们应该将它设计成一个类然后通过组合关系来描述

其他情况下应该尽可能的将它设计为属性

今天我们介绍了面向对象中两个最基本的概念对象和类

然后介绍了类之间主要的一些关系

重点介绍了关联关系 组合关系 聚集关系

最后讲了组合关系和属性有很多相似的地方

我们在设计的时候什么情况应该设计成组合关系什么时候应该设计成类

谢谢大家

面向对象分析与设计课程列表:

面向对象概述

-软件开发过程中的主要问题和好的解决方法

--软件开发过程中的主要问题和好的解决方法

--软件开发过程中的主要问题和好的解决方法

统一软件开发(RUP)

-RUP软件开发模型的特点

--RUP软件开发模型的特点

--RUP软件开发模型的特点

面向对象建模

-四个基本原则

--四个基本原则

--四个基本原则

-对象和类

--对象和类

--对象和类

-类之间的关系

--类之间的关系

--类之间的关系

需求概述

-用例模型

--用例模型

--用例模型

-用例之间的关系

--用例之间的关系

--用例之间的关系

-用例建模

--用例建模

--用例建模

分析与设计概述

-分析与设计概述

--分析与设计概述

--分析与设计概述

架构分析

-架构分析基本概念

--架构分析基本概念

--架构分析基本概念

-定义模型的高层组织结构

--定义模型的高层组织结构

--定义模型的高层组织结构

-确定分析机制、确定关键概念、创建用例实现

--确定分析机制、确定关键概念、创建用例实现

--确定分析机制、确定关键概念、创建用例实现

用例分析概述

-用例分析概述

--用例分析概述

--用例分析概述作业

-控制类

--控制类

--控制类

-用例行为和类的关系

--用例行为和类的关系

--用例行为与类的关系

识别设计类

-识别设计元素概述

--识别设计元素概述

--识别设计元素概述

-识别子系统及接口

--识别子系统和接口

--识别子系统及接口

描述运行态软件体系架构

-描述运行态软件体系架构

--描述运行态软件体系架构

--描述运行态软件体系架构

描述分布式系统架构

-描述分布式系统架构概述

--描述分布式系统架构概述

--描述分布式系统架构概述

用例设计

-用例设计描述

--用例设计描述

--用例设计描述

子系统设计

-子系统设计概述

--子系统设计概述

--子系统设计概述

类设计

-创建初始设计类、定义类操作方法

--创建初始设计类、定义类操作方法

--创建初始设计类、定义类操作方法

-定义类状态

--定义类状态

--定义类状态

-定义类之间的依赖关系、关联关系以及多重性设计

--定义类之间的依赖关系、关联关系以及多重性设计

--定义类之间的依赖关系、关联关系以及多重性设计

-定义类的泛化关系、解决用例冲突、非功能性需求

--定义类的泛化关系、解决用例冲突、非功能性需求

--定义类的泛化关系、解决用例冲突、非功能性需求

对象和类笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。