《面向对象设计》PPT课件

合集下载

面向对象设计精品PPT课件

面向对象设计精品PPT课件

理想的设计变动情况
2021/1/9
大连理工大学软件学院
15
11.4 系统分解
• 大多数系统的面向对象设计模型,在逻辑上都由 四大部分组成。分别是问题域子系统,人-机交互 子系统、任务管理子系统和数据管理子系统。
• 这四个子系统如果重要程度和规模过大,在设计 过程中应该进一步划分成更小的子系统,规模过 小的可合并在其他子系统中。
1. 2. 3. 4. 不要提供太多服务(保持适当内聚的基础上)
2021/1/9
大连理工大学软件学院
13

– 消息中的参数不要超过3个。

– 设计出来的类中的服务通常都很小,有的仅 3~5行源程序语句,可以用一个动词和一个 宾语的简单句子描述功能。
• 把设计变动减至最小(结构稳定)
– 设计质量越高,设计结果保持不变的时间也 越长 (Refactoring)
– 单向交互比双向交互更容易理解,也更容易 设计和修改,因此应该尽量使用客户—供应 商关系。
2021/1/9
大连理工大学软件学院
18
• • 把子系统组织成完整的系统时,有水平层次组织
1. 层次组织
– 把软件系统组织成层次系统,每层是一个子系统。 – 上层在下层的基础上建立,下层为实现上层功能而提
供必要的服务。
2021/1/9
大连理工大学软件学院
11
11.2 启发规则
• • 提高软件可维护性和可重用性重要措施。
1. 用词一致 2. 使用已有的协议(重载) 3. 减少消息模式的数目 4. 避免模糊的定义
2021/1/9
大连理工大学软件学院
12
• 一般—
– 应该使类等级中包含的层次数适当。

第10章-面向对象设计PPT课件

第10章-面向对象设计PPT课件

第10章 面向对象设计
3
教学重点
⒈架构设计的概念和原则; ⒉常用的架构摸式; ⒊详细设计原则和设计内容; ⒋设计模式。
教学难点
⒈架构设计的概念; ⒉常用的架构摸式; 3.详细设计原则和设计内容。
目录 首页 上页 下页 末页
第10章 面向对象设计
4
10.1 架构设计
一、软件架构与框架
(1)什么是软件架构 软件架构是一种思想,一个系统蓝图,对软件结构组
目录 首页 上页 下页 末页
第10章 面向对象设计
15
10.1 架构设计
四、常用的架构模式
2.黑板模式
黑板模式的思想是,有一系列独立的模块,或者说是 方案,这些方案能解决部分问题的一部分,这些方案进行 协作,使得问题问题能够最终解决。这就像一群人在一 块 黑板前,共同解决一个问题,根据当前问题解决的程度 和状态,不同的人上前到黑板上解决他所能解决的部分, 这样经过多人的协作,最终能够将问题解决。这就是 黑板 模式这个名字的来历。黑板模式的实现分为三个主要的组 件:黑板(Blackboard),知识源(Knowledge Source)和控制 (Control)。。如图下所示。
目录 首页 上页 下页 末页
第10章 面向对象设计
19
• 这种构架具有以下优点:
• 可以创建具有良好隐蔽性和高内聚、低耦合的构件。
• 设计者可以将整个系统的输入/输出行为看成是多个过 滤器行为的简单合成。
第10章 面向对象设计
1
第10章 面向对象设计
10.1 架构设计 10.2 详细设计 10.3 设计模式
目录 首页 上页 下页 末页
第10章 面向对象设计
2
教学目的与要求

《面向对象设计》PPT课件

《面向对象设计》PPT课件
一般来说,所有的继承都会引入编译时依赖 性。依赖性是可传递的,也就是说,如果C依赖 B,B依赖A,那么C也依赖A。
类及其依赖性
② 运行时继承依赖性
下图举例说明了在一棵继承树中涉及客户对象访问类服务的运行时 继承依赖性。图中类B的do1( )方法是从父类A继承来的,因此Test与 B没有运行时继承依赖性,只是一个静态依赖性,通过从Test到A的关 联来表明。如果在doTest方法中调用的是do2( )方法,或者在B中覆盖 了A的do1( )方法,则从Test到A和B就会存在运行时依赖性。
接口及其依赖性
2.实现依赖性
一个类可以实现多个接口,由类实现的接口集合称为该 类的供给接口。在UML2.0中,将一个类和该类实现的接口 之间的依赖性称为实现依赖性。
右图所示为实现依赖性的 UML符号,在箭头末端的类 实现了箭头所指向的接口。 从图中可以看到,Class1实 现了Interface1接口和 Interface2接口,而Class2 只实现了Interface2接口。
包及其依赖性
1. 包
包(package)又可称为层或子系统,是表示组织类的一 种方式,用于划分应用程序的逻辑模型。包是高度相关的类 的聚合,这些类本身是内聚的,但相对于其他聚合来说又是 松散耦合的。
包可以嵌套。外层包可以直接访问包括在它的嵌套包中的 任何类。包还可以导入其他包,例如,在包A中导入了包B, 这意味着包A或者包A的元素可以引用包B或者包B的元素。 因此,虽然一个类只属于一个包,但是它可以被导入其他包。 包的导入操作会引入包之间的依赖性以及它们的元素之间的 依赖性。
类及其依赖性
(2)无多态继承 使用继承最简单的方式是子类不覆盖从父类继承来的方法,
这样就不存在多态性继承问题。虽然无多态的继承有时并不 是十分有用,但理解和管理起来是最容易的。 (3)扩展继承和约束继承

软件工程――10面向对象设计PPT课件

软件工程――10面向对象设计PPT课件
模块化内聚耦合复用系统设计识别设计元素数据存储策略部署子系统对象设计方法建模属性建模状态建模关系建模数据库设计将对象映射到关系数据库用户界面设计设计原则交互方式信息表示用户支持艺术家和其他人一样专注于自己的工作以至于不能在工作和休息之间有个明确的界线
《软件工程》
Software Engineering (An Introduction)
重用设计 把问题域专用类组合在一起 通过增添一般类而建立协议 调整继承的支持级别 改进性能 增加低层的类和对象
06.11.2020
J. Yu, 计算机学院
21
一.问题域部分的设计
调整继承的支持级别
如OOA的一般/特殊结构包括 多继承, 在使用只有单继承或 无继承性的编程语言时,需对 OOA的的结果进行修改。
06.11.2020
J. Yu, 计算机学院
37
OOD遵循的原则
(五)强内聚
2. 类的内聚性:设计类的原则是,一个 类应该只有一个用途,类中的属性和操作应 该全都是完成该类的任务所必需的,其中不 包括无用的属性和操作。如果某个类有多个 用途,通常应该把它分解成多个专用的类。
3.层次结构的内聚性:对象之间通过继承
06.11.2020
J. Yu, 计算机学院
32
OOD应遵循的原则
继承耦合:如果一个类出现以下两种情况:
– (1)一个类明显地拒绝了它的一般类中的许多 属性和服务,它和它的一般类之间就不是强耦 合的。
– (2)特殊类从它的一般类中继承了许多属性, 但是完全没有使用它们。
在这样两种情况下设计者都应寻找另外的一 般-特殊结构,使每个特殊类都继承并使用 其一般类中的属性和服务,使之高耦合。
从废弃 型开发
实现

第七章-面向对象设计PPT课件

第七章-面向对象设计PPT课件

面向对象的软件设计过程
7.1 设计用例实现方案
本节介绍UML交互图的语言机制和用例实现方案的设 计方法。
UML的交互图包括顺序图和协作图,适于用例实 现方案的表示。
用例实现方案的设计方法有三个步骤: (1) 提取边界类、实体类和控制类; (2) 构造交互图; (3) 根据交互图精化类图。
7.1.1 顺序图
(1) 界面控制:包括输入数据的格式及内容转换,输出结果的 呈现,软件运行过程中界面的变化与切换等。
(2) 外部接口:实现目标软件系统与外部系统或外部设备之间 的信息交流和互操作。主要关注跨越目标软件系统边界的 通信协议。
(3) 环境隔离:将目标软件系统与操作系统、数据库管理系统、 应用服务器中间件等环境软件进行交互的功能与特性封装 于边界类之中,使目标软件系统的其余部分尽可能地独立 于环境软件。
UML四种类型的消息
(1) 简单消息(Simple Message) 以一种简单、抽象的函数表示对象之间的信息传 递,不考虑通信过程的内部细节。简单消息在 UML顺序图中用普通的有向箭头表示。
(2) 同步消息(Synchronous Message) 消息源发出消息后必须等待消息处理过程完毕并返 回处理结果后,消息源才可继续执行后续操作。前 面所述的自调用消息应该是同步的。同步消息的表 示图元与简单消息相同,这表明UML在缺省情形 下认为简单消息即为同步消息。
第七章 面向对象的设计方法
设计用例实现方案 设计技术支撑方案 设计用户界面 精化设计模型 RUP中的分析与设计流程
面向对象的设计方法
基于UML的面向对象设计方法将分析模型转换为设 计模型。
面向对象: 分析模型---顶层架构图、用例与用例图、领域概念 模型构成。 设计模型----- 以包图表示的软件体系结构图 以交互图表示的用例实现图 完整、精确的类图 复杂对象的状态图 描述流程化处理过程的活动图

面向对象程序设计(共13张PPT)

面向对象程序设计(共13张PPT)
9.2.2 对象的使用
对象的使用主要体现在对其成员的引用上,对 象只能访问公有成员,一般格式为:
<对象名> . <公有成员数据名>
<对象名> . <公有成员函数名>(<参数表>)
prev
next
back
第5页,共13页。
9.2 类的使用
9.2.2 对象的使用
成员选择运算符 这里的符号“.”称为 对象数组的元素通过缺省构造函数而得到初始化。
4. 一个类的对象可作为另一个类的成员,
prev
称为对象成员。
next
back
第7页,共13页。
9.2 类的使用
9.2.3 对象数组和对象指针
定义一维对象数组的一般格式为:
《存储类型》<类名> <对象数组名>[<常量表达式
>];
对象数组中的每个元素可以象一般的对 象使用。
注意,在说明对象数组时,不能对它进 行初始化。对象数组的元素通过缺省构
第12页,共13页。
9.2 类的使用
9.2.5 类实现数据的封装
对象的封装性是指将对象的属性(成员数据)和 作用于这些属性上的操作(成员函数)封装在一 起,对象的使用者只能通过提供给它的接口
(公有成员函数)使用这个对象。
类通过对其成员设计不同的访问权限实现数据的
封装。公有成员是类的外部表现(在类外可以对 其进行访问和修改),而私有和保护成员则被 隐藏了。
prev
在定义类时,通常将该类的所有属性(成员数
据)和只供内部调用的操作(成员函数)定义为私
next
有成员或保护成员。
例9.5
back
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
在设计阶段我们往往关注类、接口和包,在实现阶段关注 构件,而在部署阶段则关注构件的部署,也就是将构件部 署在哪些结点上。
类及其依赖性
1. 类
在面向对象的程序设计中,类和接口是程序的基本组成单 元。 一个典型程序需要界面类专门负责表示用户界面信息, 需要数据库类负责与数据库进行交互,需要有业务逻辑类 负责算法计算等。 在计算机程序中,要设计和实现的所有类都具有唯一的 名字,在不同的阶段或从不同的角度可以将它们称为设计 类、实现类、系统类、应用类等。
类及其依赖性
2.继承依赖性
依赖性管理中最棘手的问题是由于继承所引起的依赖 性。继承是一种在父类和子类之间共享属性和行为的方式, 所以运行时可以用一个子类对象代替其父类对象。程序中凡 是使用父类对象的地方,都可以用子类对象来代替。一个子 类对象是一种特殊的父类对象,它继承父类的所有特征,同 时它又可以覆盖父类的方法,从而改变从父类继承的一些特 征,并可以在子类中增加一些新的功能。这样,从客户的角 度看,在继承树中为请求提供服务的特定对象不同,系统的 运行行为可能会有所不同。
类及其依赖性
(1)多态继承 根据为请求提供服务的对象不同可以得到不同的行为,这
种现象称为多态。在运行时对类进行实例化,并调用与实例 化对象相应的方法,称为动态绑定、后期绑定或运行时绑 定。相应地,如果方法的调用是在编译时确定的,则称为是 静态绑定、前期绑定或编译时绑定。
多态并不是伴随着继承而出现。如果在子类中不覆盖父类 中的任何方法,就不会产生多态行为。
二是如果确实需要创建新类,则在设计这些新类的协议时, 应该考虑将来的可重复使用性。
10.2 体系结构模块及依赖性
体系结构设计描述了建立计算机系统所需的数据结构和程 序构件。一个好的体系结构设计要求软件模块的分层及编 程标准的执行。
在面向对象软件中,常见的软件模块有类、接口、包 Nhomakorabea构 件。
(4) 对象设计及优化。对象设计以问题领域的对象设计为核 心,其结果是一个详细的对象模型。对象设计过程包括 使用模式设计对象、接口规格说明、对象模型重构、对 象模型优化4组活动。
10.1 面向对象设计过程与准则
• 面向对象设计准则
(1) 模块化 传统的面向过程方法中的模块通常是函数、过程及子程
类实际上就是一种抽象数据类型。可以将类的抽象分为 规格说明抽象及参数化抽象。 类对外开放的公共接口构成了类的规格说明,即协议。 这种接口规定了外部可以使用的服务,使用者无需知道 这些服务的具体实现算法。通常将这类抽象称为规格说 明抽象。 参数化抽象是指当描述类的规格说明时并不具体指定所 要操作的数据类型,而是将数据类型作为参数。
10.1 面向对象设计过程与准则
(5) 强内聚 • 内聚衡量一个模块内各个元素彼此结合的紧密程度。在面
向对象设计中存在以下3种内聚: (1) 服务内聚:一个服务应该完成一个且仅完成一个功能。
(2) 类内聚:设计类的原则是,一个类应该只有一个用途, 它的属性和服务应该是高内聚的。类的属性和服务应该全 都是完成该类对象的任务所必需的,其中不包含无用的属 性或服务。如果某个类有多个用途,通常应该把它分解成
10.1 面向对象设计过程与准则
(2) 设计系统体系结构。体系结构设计可以自底向上进行, 如将关系紧密的对象组织成子系统或层;也可以自顶向 下进行,尤其是使用设计模式或遗产系统时,会从子系
统的划分入手。
(3) 对各个子系统进行设计。对于面向对象的系统,典型的 子系统有问题域子系统、人机交互子系统和任务管理子 系统。
10.1 面向对象设计过程与准则
(3) 信息隐藏 在面向对象方法中,信息隐藏通过对象的封装性实现。对
于类的用户来说,属性的表示方法和操作的实现算法都应 该是隐藏的。 (4) 弱耦合 耦合是指一个软件结构内不同模块之间互连的紧密程度。 在面向对象方法中,对象是最基本的模块,因此,耦合主 要指不同对象之间相互关联的紧密程度。
很明显,继承会带来类和方法之间的依赖性。继承带来的 依赖性有编译时继承依赖性和运行时继承依赖性。
类及其依赖性
① 编译时继承依赖性 右图所示的例子说明了一棵树中类之间的编
译时依赖性。在这个例子中,B继承A,但没有 覆盖A中的方法do1( )。因此,B和A之间没有 运行时继承依赖性。也就是说,由于编译时依 赖性的存在,A中do1( )方法的任何变化,都会 被B在编译时(静态地)继承。
(3) 一般—特殊内聚:设计出的一般—特殊结构,应该符合 多数人的概念,更准确地说,这种结构应该是对相应的领 域知识的正确抽取。
10.1 面向对象设计过程与准则
(6) • 软件重用是提高软件开发生产率和目标系统质量
的重要途径。 • 重用基本上从设计阶段开始。重用有两方面的含
义:
一是尽量使用已有的类(包括开发环境提供的类库,及以 往开发类似系统时创建的类),
序等,而面向对象方法中的模块则是类、对象、接口、 构件等。 在面向过程的方法中,数据及在数据上的处理是分离的; 而在面向对象方法中,数据及其上的处理是封装在一起 的,具有更好的独立性,也能够更好地支持复用。
10.1 面向对象设计过程与准则
(2) 抽象 面向对象方法不仅支持过程抽象,而且支持数据抽象。
第10章 面向对象设计
• 面向对象设计过程与准则 • 体系结构模块及依赖性 • 系统分解 • 问题域部分的设计 • 人机交互部分的设计 • 任务管理部分的设计 • 数据管理部分的设计 • 对象设计
10.1 面向对象设计过程与准则
• 面向对象设计过程
(1) 建立系统环境模型。在设计的初始阶段,系统设计师用 系统环境图对软件与外部实体交互的方式进行建模。下图 给出了系统环境图的一般的结构。
一般来说,所有的继承都会引入编译时依赖 性。依赖性是可传递的,也就是说,如果C依赖 B,B依赖A,那么C也依赖A。
类及其依赖性
② 运行时继承依赖性
下图举例说明了在一棵继承树中涉及客户对象访问类服务的运行时 继承依赖性。图中类B的do1( )方法是从父类A继承来的,因此Test与 B没有运行时继承依赖性,只是一个静态依赖性,通过从Test到A的关 联来表明。如果在doTest方法中调用的是do2( )方法,或者在B中覆盖 了A的do1( )方法,则从Test到A和B就会存在运行时依赖性。
相关文档
最新文档