当前课程知识点:面向对象分析与设计 >  面向对象建模 >  四个基本原则 >  四个基本原则

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

四个基本原则在线视频

下一节:对象和类

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

四个基本原则课程教案、知识点、字幕

同学们 今天我们介绍一下面向对象建模的基本概念

主要介绍一下面向对象建模的四个基本原则

首先我们回顾一下 为什么要进行软件建模

我们很多同学都跟着父母去过售楼部

在中国 很多楼房是期房

也就是说 我们买的楼房还没有盖起来

那我们怎么知道我们买的房是不是合我们心意呢

在售楼部里面 我们通常可以看到一个楼房的模型

通过模型我们可以了解到

我们所买的楼房它的位置 它的周边环境以及它的内部结构

比如说客厅是朝南还是朝北 窗户在哪个朝向等等

也就是说通过模型可以帮助我们在这个楼房盖起来之前

就可以对我们所买的楼房有一个直观的可视化的了解

那么同样 在软件里面

我们也是通过模型使得我们在软件开发完成之前就对我们的软件系统有一个直观的可视化的了解

所以除此之外 通过模型我们可以描述我们所开发软件系统的结构

比如一个软件系统它由哪些组件组成 组件之间的关系

另外我们可以指定软件系统的行为

比如我们的软件系统有哪些行为特性 也就是说功能需求

第三点 通过模型可以指导我们进行软件的开发

我们以模型为基础 进行软件的编码和构造实现

最后 我们说软件的设计过程实际上是一个决策过程

那么通过模型 我们可以记录我们对软件的一些重要决策

帮助日后我们在软件维护的时候去了解我们当初是如何进行软件的设计的

总之 通过模型可以帮助我们对一个复杂的软件系统进行一个全面的了解

也就是说 帮助我们更好地更直观的去理解我们所开发的软件系统

在建模的时候 我们所创建的软件模型

应该和我们所要解决的问题也就是我们开发软件所要解决的的应用领域是直接相关的 具有针对性

第二个 我们的模型可能有不同的精细程度

我们软件开发有阶段 比如我们有从需求 概要设计详细设计一直到编程实现

我们在不同阶段的软件模型有不同的精细度 或者说有不同的抽象级别

第三点 最好的模型和我们所开发的软件系统也就是说和现实的最终要开发完成系统是符合的 一致的

而且 我们的软件系统往往很复杂

单个模型并不能够充分的去描述我们的软件系统

比如就像盖楼一样 我们可能除了楼房的建筑结构图之外我们还需要它的电路图 水路图等等

那么模型也是一样的

我们一个软件系统除了它的结构模型可能还包括进程模型 部署模型等等

也就是说我们同样需要有多个模型从不同的角度 综合的来描述我们所开发的软件系统

在面向对象建模中 有四个基本概念

分别是 抽象 封装 模块化和层次化

什么是抽象呢

我们很多同学去过公园画过肖像画

画师寥寥几笔就可以勾勒出我们的主要特征

比如说眼睛是大是小 高鼻梁 厚嘴唇等等

但画师在画肖像画的时候 脸上的麻点是不会画的

因为麻点太琐碎 太细致 不是我们关心的重点

也就是说 肖像画就是对我们人的外观的一个抽象

在肖像画里面 保留了我们的重要特征 而人体外观的一些细节隐藏掉了

所以什么是抽象

所谓的抽象就是在软件中我们把现实事物中我们所关心的重要的主要的特征提取出来

而把我们不关心的琐碎的细节的隐藏掉

我们把这种方法称之为抽象

比如我们在教学管理系统中

我们就定义的抽象的软件对象有学生 教师 课程和开设课程

其中以学生为例

我们现实中一个学生的重要属性有他的学号 姓名 专业

还有一些不重要或者说我们不关心的属性 比如说肤色 发型

在软件里我们定义学生的时候

我们的学生属性只记录我们所关心的他的姓名 学号 专业

而我们不关心的他的发色肤色发型这些就把它忽略掉

这种方法就称之为抽象

第二个特性就是封装

什么是封装呢 就是把一个对象它的细节它的内部包起来 封装起来

对外只暴露它的接口

其他对象要和当前对象进行交互只能通过接口

那么封装的好处是什么

在封装了以后 在内部的这些细节如果变更修改 只要接口不变

就不会影响到当前对象以外的其他对象

也就是说 通过封装以后 每一个对象的内部可以进行改变进行升级

只要接口不变就不会扩散出去

因此封装以后就可以体现出面向对象软件它在设计开发过程中高内聚低耦合的特性

而且我们知道 高内低耦合对软件的复用 软件的可维护性都非常的重要

面向对象设计的第三个特性是模块化

模块化就是把一个大的复杂的软件系统通过模块化拆解成若干个模块

那么这种分解之后从本质上来讲 它是一种自顶向下的设计方法 设计思想

也就是说 通过模块化的分解

可以把大系统的软件系统的复杂任务拆解成多个简单的模块设计任务

从而降低面向对象分析设计的复杂性 也就是降低设计难度

最后一个就是层次化

在面向对象分析设计中

我们会把一些基本概念或者对象把它的公共特性抽取出来定义它的父对象

那么这样逐层抽取之后我们就可以形成一个层次状的一个继承树

越往下越具体 越往上越抽象

比如在这里例子中 我们看到它是一个资产管理系统的层次化设计

最底层有存款支票 我们抽取出来定义了一个银行账户

股票和债券我们抽取出来定义为安全投资

银行账户安全投资和不动产再将它抽取之后定义了一个顶层的抽象对象也就是资产

通过层次化 我们可以实现把具有相同级别的抽象事物放在同一层次

同学们 我们今天有关面向对象建模的四个基本概念就介绍到这里

谢谢大家

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

面向对象概述

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

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

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

统一软件开发(RUP)

-RUP软件开发模型的特点

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

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

面向对象建模

-四个基本原则

--四个基本原则

--四个基本原则

-对象和类

--对象和类

--对象和类

-类之间的关系

--类之间的关系

--类之间的关系

需求概述

-用例模型

--用例模型

--用例模型

-用例之间的关系

--用例之间的关系

--用例之间的关系

-用例建模

--用例建模

--用例建模

分析与设计概述

-分析与设计概述

--分析与设计概述

--分析与设计概述

架构分析

-架构分析基本概念

--架构分析基本概念

--架构分析基本概念

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

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

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

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

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

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

用例分析概述

-用例分析概述

--用例分析概述

--用例分析概述作业

-控制类

--控制类

--控制类

-用例行为和类的关系

--用例行为和类的关系

--用例行为与类的关系

识别设计类

-识别设计元素概述

--识别设计元素概述

--识别设计元素概述

-识别子系统及接口

--识别子系统和接口

--识别子系统及接口

描述运行态软件体系架构

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

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

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

描述分布式系统架构

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

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

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

用例设计

-用例设计描述

--用例设计描述

--用例设计描述

子系统设计

-子系统设计概述

--子系统设计概述

--子系统设计概述

类设计

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

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

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

-定义类状态

--定义类状态

--定义类状态

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

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

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

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

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

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

四个基本原则笔记与讨论

也许你还感兴趣的课程:

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