北邮软件工程课件面向对象设计

合集下载

软件工程 面向对象分析与设计PPT课件

软件工程  面向对象分析与设计PPT课件

面向过程
围绕功能,函数,数据公用,兼顾很多细节 系统规模大、数据多、操作烦杂,程序员难以应付 厂长,直接指挥每一个工人选用材料生产汽车
面向对象
面对的是一个个对象 实际上,每一组数据有特定的用途,一组操作调用一组数据,
将这组数据和操作代码,封装成一个对象,与外界相对隔离, 相对独立 厂长-车间1(发动机)车间2(轮胎)车间3(底盘)…… 类,对象,对象间接送消息,完成任务 降低难度,减少出错机会
面向对象分析的基本过程
面向对象分析法体现 在过程上的特点:不 强调活动的顺序,允 许各种活动的交替、 回溯进行
定义use case
发现对象


型 开
定义属性及服务
细 说


建立结构与连接
划分主题
建立交互图
1.23
© 2009 by Duym
Software Engineering
面向过程(po)与面向对象(OO)
利用自己已建立的类,或别人的放在类库中的类,缩短开 发周期
1.14
© 2009 by Duym
Software Engineering
2.5多态(polymorphism)
一班、二班、三班 铃声响了,走进不同的教室,上不同的课程
向不同的对象,发出相同的消息,执行不同的 操作
鼠标双击文件,exe文件则运行该文件,doc文件则运行 word打开该文档
对象模型是客观世界对象、属性以及对象彼 此间关系的抽象表达,描述了系统的静态结 构
表示方法
类与对象 结构与连接
一般特殊关系,分类关系,归纳关系,继承 整体部分关系,组成关系 实例连接,对象间属性之间的静态联系 消息连接,对象行为之间的动态联系

《面向对象设计》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 协作图
功能: 协作图用于描述相互合作的对象间的交互关系和 链接关系。

软件工程第07章 面向对象的分析和设计PPT课件

软件工程第07章 面向对象的分析和设计PPT课件
作的封装体。 属性(attribute)通常是一些数据,有时
它也可以是另一个对象。每个对象都有它自己 的属性值,表示该对象的状态。对象中的属性 只能通过该对象所提供的操作来存取或修改。
操作(operation)(也称方法或服务)规 定了对象的行为,表示对象所能提供的服务。
沈阳建筑大学信息与控制工程学院 软件工程课程
沈阳建筑大学信息与控制工程学院 软件工程课程
23
注意,执行者与用户是不同的两个概念, 一个用户可以扮演几个角色(执行者),一 个执行者可以是用户,也可以是其他系统 (应用程序或设备)。得到的用况必须进行 复审,以使需求完整。
沈阳建筑大学信息与控制工程学院 软件工程课程
24
2. 标识类和对象
类和对象来自问题领域。
沈阳建筑大学信息与控制工程学院 软件工程课程
21
面向对象分析 Object-Oriented Analysis
面向对象分析的一般步骤如下:
1. 获取客户对系统的需求:包括标识场景(scenario) 和用况(use case,也称用例),以及建造需求模 型
2. 用基本的需求为指南,来选择类和对象(包括属性 和操作)。
29
面向对象设计 (Object_Oriented Design)
面向对象设计的一般步骤如下: 1. 系统设计
• 将子系统分配到处理器 • 选择实现数据管理、界面支持和任务
管理的设计策略 • 为系统设计合适的控制机制 • 复审并考虑权衡(折衷)
沈阳建筑大学信息与控制工程学院 软件工程课程
30
2. 对象设计 • 在过程级别(procedural lavel)设计 每个操作,即设计每个操作的实现细节
面向对象 = 对象(object)

北邮c++面向对象程序设计与实践课件02-C++ Foundations

北邮c++面向对象程序设计与实践课件02-C++ Foundations
可以在声明时另行指定枚举元素的值,如:
enum weekday {sun=7, mon=1, tue, wed, thu, fri, sat}; //声明sun为7,mon为1,以后顺序加1,sat为6
18 18
9
枚举类型—enum
枚举类型应用说明:
对; 整数值不能直接赋给枚举变量,如需要将整数赋值给枚举 变量,应进行强制类型转换。 枚举值可以进行运算
44c与c的关系?c语言是在c语言的基础上进行了扩充和改进而得到的?它继承了c语言的全部内容?并在c语言的基础之上增加了面向对象编程的内容?c既支持面向过程的程序设计又支持新型的面向对象程序设计?c保持了与c语言的兼容?大部分的c代码的程序不经修改或很少修改就可被c使用?用c语言编写的许多库函数和应用软件也都可以用于c?c不是一个纯粹的面向对象程序设计语言?c语言是面向过程的语言c与c兼容支持面向过程的程序设计?由于面向过程程序设计和面向对象程序设计是两种不同风格的程序设计技术对于习惯于面向过程程序设计的程序员在学习使用c时可能存在一定的障碍355c对c的扩展?增加了一些在新的运算符使得c应用起来更加方便?newdelete用于内存管理用户不需直接使用库函数?增加了引用amp
空白符
空格、换行、制表符 注释
是用来帮助阅读、理解及维护程序 注释部分被忽略,不产生目标代码 C++语言提供两种注释方式: 一种是与C兼容的多行注释,用 /* 和 */ 分界 另一种是单行注释,以“//”开头,表明本行中“//”符号后的内容 是注释
14 14
7
C++ 简单实例
15 15
C++ 简单实例
#include <iostream> using namespace std; int main(void) { const int PRICE = 30; int num, total; num = 10; total = num * PRICE; cout << “Total:” << total <<endl; float v,r,h; r = 2.5; h = 3.2; v = 3.14159 * r * r * h; cout << v << endl; }

软件工程ppt课件第11章面向对象设计

软件工程ppt课件第11章面向对象设计
问题:设计出大量的classes,使结构复杂度增加。 解决:划分主题,提高可理解性。
4、使用简单的protocol,减少message 中传递的
parameters
5、使用简单的method(CASE 可考虑用 inheritance替代)。
6、把设计变动减至最小。
§3. 软件重用 (Software Reuse)
过程抽象: 在SD中已讨论
数据抽象: Class即是一种抽象数据类型。外界无须知道实 现方法,按照类规格说明(即协议)可以使用合法的操作 符,利用这些操作对类实例中包含的数据进行操作。
参数抽象: 将数据类型作为参数处理。
3、信息隐藏= 对象的封装
§1. OOD准则
4、耦合: 交互耦合(interactive coupling):通过传递message发生
的任务专门分离出来先做或后做。
关键任务(key task):指关系系统成败的处理, 要求高可靠性,应分离考虑,严格测试。
协调任务(coordinator):当系统中存在三个以上 tasks时,应增设一个协调任务,用于封装不同 tasks之间的协调控制。
⑷ 数据管理子系统:
§4. 系 统 分 解
1、概念: 知识重用(例如软件工程知识的重用)
方法和标准重用(例如OO方法和国家规定 的软件开发规范的重用)
知识 工程
软件成分的重用
重用软件成分有三个级别: ① 代码重用:
• 源码剪贴 —— 无法溯源,无配置管理
• Include —— 修改后所有包含了此段代码的程
序都须重新编译。
想象一下,stdio.h 被改动之后……
一个client可使用其下任一层的supplier提供 的服务—— 开放式(open)

软件工程——10、面向对象设计

© 2009 BUPT TSEG 北京邮电大学 通信软件工程中心


9
10.2.4 持久化层

对象持久化:将对象状态永久保存到物理 存储介质中。 持久化层提供了存储、检索、更新和删除 对象的基础结构。 持久层封装对永久存储介质的访问,但其 本身并不是永久存储机制。例如,持久层 可能封装了对关系数据库的访问,但本身 不是数据库,而是完成持久化功能的类的 集合。
© 2009 BUPT TSEG
北京邮电大学 通信软件工程中心
2
10.1 面向对象设计综述

面向对象的设计就是在OOA模型基础上运用面向 对象方法进行系统设计,目标是产生一个符合具 体实现条件的面向对象设计(OOD)模型。 与实现条件有关的因素有:图形用户界面、硬件 、操作系统、网络、数据库管理系统、编程语言 和可复用的类库等。 OOD的成果:
继承复用只能在一个具有相似语义类层次的上下文环 境中使用。

© 2009 BUPT TSEG
北京邮电大学 通信软件工程中心
应用程序中所编写的大多数具体类都是不 稳定的。通过把它们隐藏在抽象接口的后 面,可以隔离它们的不稳定性。
© 2009 BUPT TSEG 北京邮电大学 通信软件工程中心

19
DIP举例
Policy
Mechanism
Utility
每个较高层次都为它所需要的服 务声明一个抽象接口,较低的层 次实现了这些抽象接口,每个高 层类都通过该抽象接口使用下一 层的服务,这样高层就不依赖于 低层。低层反而依赖于在高层中 声明的抽象服务接口。
11
10.2.5 系统层

系统层提供对操作系统和非面向对象资源 的访问。 系统类将操作系统提供的系统调用封装起 来,生成系统访问类,例如Java语言中的文 件流类库。上层业务逻辑直接访问系统类 。而不直接访问系统调用。

软件工程第五章面向对象分析与设计PPT课件


记录全部访谈内容 ④ 安排补充会议 访谈之后 ⑤ 根据标准模版撰写软件需求规格说明(SRS),
打客户需求草稿 ⑥ 通过电子邮件征求客户意见
对于不同类型的应用,用例方法是一种获取和 表达需求的有效方法。
某些需求需要通过数据流图或状态图与用户沟 通。
5.1.2 描述客户需求
需求可以看成是应用与应用的外部代理(如用户) 之间的交互。可利用用例作为表达工具。
3) 标识用例 当双方确定了一组场景后,开发人 员从该场景抽象出一组用例,描述所有可能的 情况。用力表达了系统的范围。
4) 求精用例 细化每一个用例。引入带有出错处 理或带有异常处理的用例,描述系统的行为, 保证需求的描述是完全的。
5) 标识用例之间的关系 描述用例之间的依赖关 系,提取相同功能,建立用例模型。
2. 访谈用户代表 识别各种需要与要求 使用工具帮助表达用户需求 绘制GUI草图 确定硬件环境
请用户评审
3. 用标准文档格式撰写客户需求
4. 核查用户需求 用户批准后
5. 构建详细需求(分析建模)
5.1.1 与用户交互
1) 需求的来源 不同类型应用能从人员处获取需求的比例:
不受限制的
应 用 的 类 型
馆藏图书(对象)的状态图
在架 报废
注销
丢失
出借
返还
上架
损坏
借出
修补
丢失
丢失
图书管理员借书操作的状态图
login (登录)
预约图书
借书
reserve
borrow
(预约)
(借阅)
检验图书 检验读者
借书
findTitle findBorrower (检索图书) (查找借阅者)

北邮软件工程课件面向对象设计.ppt


8.2.4 一般来说,消息中的参数不要超过3个。 8.2.5 面向对象设计出来的类中的服务通常都很小,一 般只有3~5行源程序语句,可以用仅含一个动词和一 个宾语的简单句子描述它的功能。 8.2.6 通常,设计的质量越高,设计结果保持不变的时 间也越长。
图8.1 理想的设计变动情况
8.3晰、易读、易懂,是提高软件可维 护性和可重用性的重要措施。显然,人们不会重用那 些他们不理解的设计。保证设计结果清晰易懂的主要
1. 2. 3. 4. 避免模糊的定义
8.2.2 一般— 应该使类等级中包含的层次数适当。 8.2.3 应该尽量设计小而简单的类,以便于开发和管理。 1. 2. 3. 4.
8.7 设计数据管理子系统 8.8 设计类中的服务 8.9 设计关联 8.10 设计优化 8.11 面向对象分析与设计实例 8.12 小结
8.1 面向对象设计的准则
所谓优秀设计,就是权衡了各种因素,从而使得 系统在其整个生命周期中的总开销最小的设计。对大 多数软件系统而言,60%以上的软件费用都用于软件维 护,因此,优秀软件设计的一个主要特点就是容易维
8.1.1 8.1.2 抽象 8.1.3 8.1.4 1. 如果对象之间的耦合通过消息连接来实现,则这 种耦合就是交互耦合。为使交互耦合尽可能松散,应
·尽量降低消息连接的复杂程度。应该尽量减少消
·减少对象发送(或接收)
2. 与交互耦合相反,应该提高继承耦合程度。继承 是一般化类与特殊类之间耦合的一种形式。从本质上 看,通过继承关系结合起来的基类和派生类,构成了 系统中粒度更大的模块。因此,它们彼此之间应该结
8.3.2 把子系统组织成完整的系统时,有水平层次组织
1. 这种组织方案把软件系统组织成一个层次系统, 每层是一个子系统。上层在下层的基础上建立,下层 为实现上层功能而提供必要的服务。每一层内所包含 的对象,彼此间相互独立,而处于不同层次上的对象, 彼此间往往有关联。实际上,在上、下层之间存在客 户—供应商关系。低层子系统提供服务,相当于供应商, 上层子系统使用下层提供的服务,相当于客户。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档