面向对象设计PPT演示文稿

合集下载

面向对象程序设计PPT课件 PPT资料共63页

面向对象程序设计PPT课件 PPT资料共63页
Stringed object vptr
Percussion object vptr
&Wind::play() & Stringed::play() & Percussion::play()
06.11.2019
第5章多态与抽象类
37
当通过对象调用虚函数时,是通过 vptr找到虚函数表,再找出虚函数的 真正地址。
06.11.2019
第5章多态与抽象类
28
【思考题5-4】将例5-5中用对象调用
虚函数,其结果如何?
【注意】只有通过对象指针或对象引 用来调用虚函数,才能实现动态联编 。如果采用对象来调用虚函数,则采 用的是静态联编方式。
06.11.2019
第5章多态与抽象类
29
【例5-6】将例5-4基类的成员函数 print()设为虚函数,采用对象引用调 用虚函数,进而实现动态联编。
06.11.2019
第5章多态与抽象类
32
小结
(1)如果你期望在派生类中重新定义一 个成员函数,那么你就应该在基类中 把该函数设为virtual。
(2)以单一指令调用不同函数,这种性 质就是"多态"。
(3)虚函数是C++语言的多态性质和动 态绑定的关键。
(4)虚函数派生下去仍是虚函数,而且
可以省略virtual关键词。 06.11.2019
25
该程序的运行结果为:
A student A graduate student A student A student A graduate student
06.11.2019
第5章多态与抽象类
26
【思考题5-5】如果将例5-5中Student类改 为:

面向对象的设计方法PPT课件

面向对象的设计方法PPT课件
(1) entry活动:一旦对象进入该状态,相应的活动 被触发执行。
(2) exit活动:一旦对象离开该状态,相应的活动被 触发执行。
第15页/共60页
提取边界类、实体类和控制类
• 一个用例通常对应一个控制类。
10.1设计用例实现方案
• 如果不同用例的任务有较多类似之处,也可以考虑在多个用例 的实现方案中共享同一控制类,此种情况应审慎对待,不同用 例所需要的控制、协调行为往往会有差异。
• 对于那些事件流非常简单的用例,可以不设独立的控制类,直 接在边界类中设置控制、协调功能,边界类在实体类的帮助下 完成用例要求的功能及行为。
2021/5/15
18
第18页/共60页
构造交互图
10.1设计用例实现方案
UML顺序图的横向排列次序
• 用例的主动执行者
• 用户界面的边界类
• 控制类
• 实体类和辅助类
• 外部接口和环境隔离层的边界类
• 目标软件系统的边界之外的被动执行者
2021/5/15
19
第19页/共60页
构造交互图
10.1设计用例实现方案
2021/5/15
29
第29页/共60页
10.3 设计用户界面
第十章 面向对象的设计方法
需求分析和软件设计阶段都必须考虑人机交互问题。
• 需求分析阶段要确定人机交互的 属性和外部服务
• 设计阶段要给出有关人机交互的所有系统成份,包括:用户如何操作 系统、系统如何响应命令、系统显示 信息的报表格式等。
2021/5/15
• 控制类或辅助类可以向右侧的边界类发送消 息,将信息或外部处理请求由边界类传向外 部系统(被动执行者)。
• 在用例描述中,许多用例除主事件流外,往 往还包含备选事件流,以说明在某些特殊或 者异常情况下的事件和响应动作序列。为易 于理解,在设计模型中应该用分离的UML交 互图分别表示事件流和每个备选事件流。

第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章05(面向对象设计)精品PPT课件

第10章05(面向对象设计)精品PPT课件
▪ 当我们利用UML建立模型时,该任务应该通过一 种方法或一个过程来进行管理,后者概要说明了将 要采取的不同步骤,以及如何实现这些步骤。一般 来说,这样的过程将任务划分为需求分析阶段/分析 阶段/设计阶段/实现阶段/部署阶段的连续的迭代步 骤。
用UML建模
▪ 最后,模型被实现为某种原型,用于评估实际方案中的所有 不足之处。这些不足包括功能遗漏、性能低劣或开发费用太 高。如果出现这些不足,开发人员应该返回到相应的步骤, 以消除它们。如果问题比较严重,那么开发人员可能不得不 返回到最初的集体讨论和草案拟定阶段,重新开始上述过程。 如果问题比较小,那么开发人员或许只需要改变部分组织结 构或模型的规格说明就可以了。这里,应注意,在完成了一 个UML图的绘制之后,并不能立即着手进行建立原型这一步 工作,而是应该在多个UML图可以一起建立原型时才能够开 始进行这项工作。这种原型可以是临时利用的东西,用完就 可丢弃,它仅仅是为了评估才建立的;如果建立原型这一步 是成功的,那么它就成为系统实际开发过程中的一个迭代过 程。
在图10.3中(P234)“1.1 msg2”表明msg2是“对象 1”为了处理“1.msg1”而发送的第一条消息;“1.2msg4” 表明msg4是“对象1”为了处理“1.msg1”而发送的第二 条消息;“1.1.1msg3”表明msg3是“对象2”为了处理 “1.1msg2”而发送的第一条消息依此类推。
消息类型注解 ▪ 在UML图中,简单消息和同步消息可以组合成一条线,线的
一端是同步消息箭头,而另一端则是简单消息的返回箭头。 这表明控制的返回实际上是非常快捷的(在操作调用之后几 乎马上返回)。
图3 消息类型注解
10.1.2 协作图
功能: 协作图用于描述相互合作的对象间的交互关系和 链接关系。

第一讲面向对象程序设计ppt文档

第一讲面向对象程序设计ppt文档
属于面向对象的语言有( )。( 2 分)522 A:C B:Pascal C:Java D:C++
例题分析
面向对象的的方法与面向过程的方法最大的不同在于( )。( 2 分) A:以功能为中心 B:以数据为中心 C:以功能和数据为中心 D:以事件驱动为中心
1.2 对象入门
面向对象基本概念 对象(Object)一词,早在十九世纪就有现象学大师
构造方法负责对象的初始化工作,为实例变量赋予 合适的初始ห้องสมุดไป่ตู้。构造方法必须满足以下语法规则:
方法名必须与类名相同。
不要声明返回类型。
不能被static、final、synchronized、abstract和native修 饰。
1.3.4 构造方法
构造方法可以分为参数化构造方法和隐式构造方法,参 数化构造方法即在构造方法中带有参数,隐式构造方法就是 系统默认的构造方法。
1.3 类
在Java中,完成对功能操作封装的单位称为类。 类是有共同特性(属性)和操作(行为)定义的实体 ,类是用于组合各个对象所共有操作和属性的一种机 制。可以根据类具有的属性和方法,赋予类不同的数 值,来创建不同的对象实例。
1.3.1 类定义
类的名称要符合标识符的命名规则, 不能为Java中的关键字。 不能包含空格或点号“.”,可以以下划线“_”、字
胡塞尔提出并定义。对象是客观世界中的单个物体在人们 大脑里的映像,是人的意识之所以为意识的反映。
对象由数据(描述事物的属性)和作用于数据的操作 (体现事物的行为)构成一独立整体。从程序设计者来看 ,对象是一个程序模块,从用户来看,对象为他们提供所 希望的行为。在对内的操作通常称为方法。
类是对象的模板。即类是对一组有相同数据和相同操 作的对象的定义,一个类所包含的方法和数据描述一组对 象的共同属性和行为。

面向对象的设计ppt课件

精品课件 12
二、OOA方法—对象-行为建模
精品课件 13
二、OOA方法—对象-行为建模
课堂练习 假设用户在键盘上按下了一个字符键,如果使用
Word,那么相应的字符就立刻在屏幕上显示出来。 则在屏幕的后面发生了什么?
课后完成: 假设你正在编写一个关于C#的控制台应用程序,为 一个字符型变量ch从键盘上输入一个值,那么相应 的字符就屏幕上显示出来。 请描述屏幕后面发生的事情,并用顺序图描述出来
–面向对象设计复用的目标在于实现支持可维护 性的复用。
–在面向对象的设计里面,可维护性复用都是以
面向对象设计原则为基础的,这些设计原则首
先都是复用的原则,遵循这些设计原则可以有
效地提高系统的复用性,同时提高系统的可维
护性。
精品课件
21
三、面向对象设计原则
• 软件的可维护性和可复用性 –面向对象设计原则和设计模式也是对系统进行 合理重构的指南针。 –重构是在不改变软件现有功能的基础上,通过 调整程序代码改善软件的质量、性能,使其程 序的设计模式和架构更趋合理,提高软件的扩 展性和维护性。
精品课件 22
三、面向对象设计原则
• 面向对象设计原则简介
常用的面向 对象设计原
设计原则名称 单一职责原则
则包括七个, (Single Responsibility Principle, SRP)
它们相互依
开闭原则 (Open-Closed Principle, OCP)
赖,相互补 充。
里氏代换原则 (Liskov Substitution Principle, LSP) 依赖倒转原则
三、面向对象设计原则
• 里氏代换原则实例
精品课件 37
三、面向对象设计原则
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

面向对象设计原则概述
软件的可维护性和可复用性
✓ 面向对象设计原则和设计模式也是对系统进行合理重构 的指南针,重构(Refactoring)是在不改变软件现有功 能的基础上,通过调整程序代码改善软件的质量、性能, 使其程序的设计模式和架构更趋合理,提高软件的扩展 性和维护性。
Martin Fowler
✓ 类的职责主要包括两个方面:数据职责和行为职责,数据职责通过 其属性来体现,而行为职责通过其方法来体现。
✓ 单一职责原则是实现高内聚、低耦合的指导方针,在很多代码重构 手法中都能找到它的存在,它是最简单但又最难运用的原则,需要 设计人员发现类的不同职责并将其分离,而发现类的多重职责需要 设计人员具有较强的分析设计能力和相关重构经验。
单一职责原则
以调制解调器为例如下图:
单一职责原则
从上述类图里面我们发现有四个方法Dial(拨通电话 ),Hangup(挂电话),Receive(收到信息),Send( 发送信息),经过分析不难判断出,实际上Dial(拨 通电话)和Hangup(挂电话)是属于连接的范畴,而 Receive(收到信息)和Send(发送信息)是属于数据 传送的范畴。这里类包括两个职责,显然违反了 SRP。
面向对象设计原则概述
软件的可维护性和可复用性
✓ 软件工程和建模大师Peter Coad认为,一个好的系统
设计应该具备如下三个性质:
• 可扩展性(Extensibility)
Peter Coad
• 灵活性(Flexibility)
• 可插入性(Pluggability)
面向对象设计原则概述
软件的可维护性和可复用性
✓ 软件的复用(Reuse)或重用拥有众多优点,如可以提高软件 的开发效率,提高软件质量,节约开发成本,恰当的复用还 可以改善系统的可维护性。
✓ 面向对象设计复用的目标在于实现支持可维护性的复用。 ✓ 在面向对象的设计里面,可维护性复用都是以面向对象设计
原则为基础的,这些设计原则首先都是复用的原则,遵循这 些设计原则可以有效地提高系统的复用性,同时提高系统的 可维护性。
在系统中应该尽量多使用组合和聚合关联关系,尽量少使用甚 至不使用继承关系 一个软件实体对其他实体的引用越少越好,或者说如果两个类 不必彼此直接通信,那么这两个类就不应当发生直接的相互作 用,而是通过引入一个第三者发生间接交互
★★★★☆ ★★★★★ ★★★★☆ ★★★★★ ★★☆☆☆ ★★★★☆ ★★★☆☆
单一职责原则
这样做有潜在的隐患,如果要改变连接的方式,势 必要修改Modem,而修改Modem类的结果导致凡事 依赖Modem类可能都需要修改,这样就需要重新编 译和部署,不管数据传输这部分是否需要修改。
因此要重构Modem类,从中抽象出两个接口,一个 专门负责连接,另一个专门负责数据传送。依赖 Modem类的元素要做相应的细化,根据职责的不同 分别依赖不同的接口。如下图:
里氏代换原则 (Liskov Substitution Principle, LSP)
依赖倒转原则 (Dependency Inversion Principle, DIP)
接口隔离原则 (Interface Segregation Principle, ISP)
合成复用原则 (Composite Reuse Principle, CRP)
迪米特法则 (Law of Demeter, LoD)
类的职责要单一,不能将太多的职责放在一个类中
软件实体对扩展是开放的,但对修改是关闭的,即在不修改一 个软件实体的基础上去扩展其功能 在软件系统中,一个可以接受基类对象的地方必然可以接受一 个子类对象 要针对抽象层编程,而不要针对具体类编程
使用多个专门的接口来取代一个统一的接口
面向对象设计原则
主要内容
1. 面向对象思想 2. 面向对象核心要素 3. 类与类之间的关系 4. 面向对象设计原则
2
面向对象设计原则
面向对象设计原则概述 单一职责原则 开闭原则 里氏代换原则 依赖倒转原则 接口隔离原则 合成复用原则 迪米特法则
面向对象设计原则概述
软件的可维护性和可复用性
单一职责原则
这样以来,无论单独修改连接部分还是单独 修改数据传送部分,都彼此互不影响。
面向对象设计原则概述
面向对象设计原则简介
✓ 常用的面向对象设计原则包括7个,这些原则并不是孤立存在的,它们相
互依赖,相
重要性
单一职责原则 (Single Responsibility Principle, SRP)
开闭原则 (Open-Closed Principle, OCP)
✓ 另一种定义方式如下: • 就一个类而言,应该仅有一个引起它变化的原因。
✓ 其英文定义为: • There should never be more than one reason for a class to change.
单一职责原则
单一职责原则分析
✓ 一个类(或者大到模块,小到方法)承担的职责越多,它被复用的 可能性越小,而且如果一个类承担的职责过多,就相当于将这些职 责耦合在一起,当其中一个职责变化时,可能会影响其他职责的运 作。
✓ 知名软件大师Robert C.Martin认为一个可维护性 (Maintainability) 较低的软件设计,通常由于如下4个原因造成:
• 过于僵硬(Rigidity) • 过于脆弱(Fragility)
Robert C.Martin
• 复用率低(Immobility)
• 黏度过高(Viscosity)
单一职责原则
单一职责原则定义
✓ 单一职责原则(Single Responsibility Principle, SRP)定义如下: • 一个对象应该只包含单一的职责,并且该职责被完整地封装在一个类 中。
✓ 其英文定义为: • Every object should have a single responsibility, and that responsibility should be entirely encapsulated by the class.
相关文档
最新文档