软件工程导论class13面向对象方法学引论

合集下载

软件工程导论张海藩课后习题答案(完整版)

软件工程导论张海藩课后习题答案(完整版)
作业及解答
作业一 基本概念(第1-2章) 作业二 需求分析(第3章) 作业三 系统设计(第5章) 作业四 详细设计(第6章) 作业五 系统实现(第7章) 作业六 系统维护(第8章) 作业七 面向对象方法学引论(第9章) 作业八 面向对象分析(第10章) 作业九 面向对象设计(第11章) 作业十 面向对象实现(第12章) 作业十一 软件项目管理(第13章)
M40e0 8.2(0 8 191 99 5)60 7,357,677(字 9) 408e09.8
如果字长为32位,则这个存储器的价格是:
P0.00 33 20.71291 99 5 77 4 35777,16 27(7 美9 元)
如果一条指令为一个字长,则为使存储器装满程序共需 73,577,679条指令。
E2 病人
F2生理信号
E3 时钟
F3日前、时间
F5安全范围 D2患者安全范围
P2 分析信号
危及病人信息
P3 产生警告信息
F2生理信号
F4警告信息
P1 接收信号
F2生理信号
E1 护士
P4 定时取样 生理信号
定时的生理信号 F6日志
P5 更新日志
D1患者日志
E1 护士
F6日志 F1要求报告
P6 产生病情报告
2-4目前住院病人主要由护士护理,这样做不仅需要大量护 士,而且由于不能随时观察危重病人的病情变化,还会延 误抢救时机。某医院打算开发一个以计算机为中心的患者 监护系统,请分层次地画出描述本系统功能的数据流图。
医院对患者监护系统的基本要求是随时接收每个病人的生 理信号(脉搏、体温、血压、心电图等),定时记录病人情 况以形成患者日志,当某个病人的生理信号超出医生规定 的安全范围时向值班护士发出警告信息,此外,护士在需 要时还可以要求系统印出某个指定病人的病情报告。

软件工程导论第章面向象方法学引论

软件工程导论第章面向象方法学引论

第9章面向对象方法学引论传统地软件工程方法学曾经给软件产业带来巨大进步,部分地缓解了软件危机,使用这种方法学开发地许多中、小规模软件工程都获得了成功。

但是,人们也注意到当把这种方法学应用于大型软件产品地开发时,似乎很少取得成功。

在20世纪60年代后期出现地面向对象编程语言Simdla_67中首次引入了类和对象地概念,自20世纪80年代中期起,人们开始注重面向对象分析和设计地研究,逐步形成了面向对象方法学。

到了20世纪90年代,面向对象方法学已经成为人们在开发软件时首选地范型。

面向对象技术已成为当前最好地软件开发技术。

9.1面向对象方法学概述9.1.1 面向对象方法学地要点面向对象方法学地出发点和基本原则,是尽可能模拟人类习惯地思维方式,使开发软件地方法与过程尽可能接近人类认识世界解决问题地方法与过程,也就是使描述问题地问题空间(也称为问题域)与实现解法地解空间(也称为求解域)在结构上尽可能一致。

客观世界地问题都是由客观世界中地实体及实体相互间地关系构成地。

我们把客观世界中地实体抽象为问题域中地对象(object)。

因为所要解决地问题具有特殊性,因此,对象是不固定地。

一个雇员可以作为一个对象,一家公司也可以作为一个对象,到底应该把什么抽象为对象,由所要解决地问题决定。

从本质上说,用计算机解决客观世界地问题,是借助于某种程序设计语言地规定,对计算机中地实体施加某种处理,并用处理结果去映射解。

我们把计算机中地实体称为解空间对象。

显然,解空间对象取决于所使用地程序设计语言。

例如,汇编语言提供地对象是存储单元;面向过程地高级语言提供地对象,是各种预定义类型地变量、数组、记录和文件等等。

一旦提供了某种解空间对象,就隐含规定了允许对该类对象施加地操作。

从动态观点看,对对象施加地操作就是该对象地行为。

在问题空间中,对象地行为是极其丰富多彩地,然而解空间中地对象地行为却是非常简单呆板地。

因此,只有借助于十分复杂地算法,才能操纵解空间对象从而得到解。

软件工程导论class13面向对象方法学引论

软件工程导论class13面向对象方法学引论
软件工程导论 第13课
第 9 章 面向对象方法学引论
发展概述
面向对象并非是一个新的概念,实际上它已有30 多年的历史。寻其根源可追溯到60年代的挪威, 当时挪威计算中心的Kristen Nygaard和OleJohan Dahl开发了一种称作Simula67的语言。 Simula67首次引入了类、协同程序和子类的概 念,这很象今天的面向对象语言。

使用类-对象-消息
面向对象(objects-based)方法

使用类-对象-消息-继承
9.1.2 面向对象方法学的优点
与人类习惯的思维方式一致 稳定性好 可重用性好 可维护性好 注意:OOM并不是减少了开发时间,而是
通过提高可重用性、可维护性,进行扩充和 修改的容易程度等,从长远角度改进了软件 的质量。
解空间与问题空间的“语义断层” 对象 解空间对象和问题空间对象 解空间对象的呆板 问题空间对象具有静态属性又具有动态行为
OOM的4个要素
(1)对象(object):世界由对象组成。
(2)类(class) :具有相同属性和操作的对象 可划分为类; 单个对象可视为某一类的实例 (instance)
派生类只要理解新生部分,理解量少
(4)容易测试、调试
调试只对新派生类进行,类独立性强,只对 类内部进行调试,比较容易。
9.2 面向对象的概念
9.2.1 对象
在应用领域中有意义的、与所要解决的问题 有关系的任何事物都可以作为对象,对象既 可以是具体的物理实体的抽象,也可以是人 为的 概念,或者是任何有明确边界和意义的 东西。
4 较易开发大型软件产品
构成软件系统的每个对象就象一个微型程序, 有自己的数据、操作、功能、用途。把一个 大型软件产品分解成一系列本质上相互独立 的小产品处理,降低了技术难度。

软件工程 第9章 面向对象方法学引论

软件工程 第9章 面向对象方法学引论


面向对象方法学:到了20世纪90年代,面向对 象方法学已经成为人们在开发软件时首选的 范型。面向对象技术已成为当前最好的软件 开发技术。
向过程开发模式中优先考虑的是过程抽 象,在面向对象开发模式中优先考虑的是实 体(问题论域的对象)。 在面向对象开发模式中,把标识和模型化问 题论域中的主要实体做为系统开发的起点, 主要考虑对象的行为而不是必须执行的一系 列动作。
9.1 面向对象方法学概述
9.1.1 面向对象方法学的要点

出发点和基本原则是尽可能模拟人类习 惯的思维方式,使开发软件的方法与过 程尽可能接近人类认识世界解决问题的 方法与过程,也就是使描述问题的问题 空间与实现解法的解空间在结构上尽可 能一致。
面向对象方法学的四个要点
认为客观世界是由各种对象组成的,任何 事物都是对象,复杂的对象可以由比较 简单的对象以某种方式组合而成。 面向对象方法用对象分解取代了传统方法 的功能分解。
从动态角度或对象的实现机制来看,对象是一台自 动机。具有内部状态S,操作fi(i=1,2,…,n),且与 操作fi对应的状态转换函数为gi(i=1,2,…,n)的一个 对象,可以用图9.3所示的自动机来模拟:
图9.3 用自动机模拟对象
3 对象的特点
1、以数据为中心。操作围绕对其数据所需做的处 理来设置,而且操作的结果往往与当时的所处的 状态(数据值)有关。 2、对象是主动的。程序不能直接从外部直接加工 它的私有数据。 3、实现了数据封装。数据对外隐藏,不可见。 4、本质上是并行的。不同对象各自独立地处理自 身的数据,彼此通过发消息传递信息完成通信。 5、模块独立性好。对象内部各种元素彼此结合得 很紧密,内聚性相当强。对象的元素(数据和方 法)基本上都被封装在对象内部,与外界的联系 少,对象之间的耦合较松。

面向对象方法学引论.pptx

面向对象方法学引论.pptx
第34页/共67页
图9.14 多重继承示例
第35页/共67页
完全继承指的是父类的所有子类都已在类图中穷举出来了,图示符号是指定{完全}约束。不完全继承与完全继承恰好相反,父类的子类并没有都穷举出来,随着对问题理解的深入,可不断补充和维护,这为日后系统的扩充和维护带来很大方便。不完全继承是一般情况下默认的继承关系。
第2页/共67页
Message
Send by method
对象Object
Object
= 属性Attribute
Attributes: location; employee; ……
+ 操作Method
Methods: send; sell; ……
注意:对象内部的属性不允许外部用户直接改动,只有当它提供了相应的服务操作时,用户才能通过发送消息来提请它执行。
④ 消息(message):对象间只能通过发送消息进行联系,外界不能处理对象的内部数据,只能通过消息请求它进行处理(如果它提供相应消息的话)。
第4页/共67页
OOM:以object 为核心,强调对现实概念的模拟而不强调算法。“面向对象方法学的基本原则,是按照人们习惯的思维方式建立问题域的模型,开发出尽可能直观、自然地表现求解方法的软件系统”。
表示关系的符号
第17页/共67页
类1
类2
角色
角色
关联名
角色表示该类在这个关联中的作用。如果没有显式标出角色名,则意味着用类名作为角色名。重数:该类有多少个对象与对方的一个对象连接。
关联
重数
1、关联
第18页/共67页
在表示关联的直线两端可以写上重数(multiplicity),它表示该类有多少个对象与对方的一个对象连接。重数的表示方法通常有:0…1 表示0到1个对象0…*或* 表示0到多个对象1+或1…* 表示1到多个对象1…15 表示1到15个对象3 表示3个对象如果图中未明确标出关联的重数,则默认重数是1。

第6章 面向对象方法学引论

第6章 面向对象方法学引论
例2:发送消息 MyCircle.Show(Green)
18
《 软件工程导论》
第6章 面向对象方法学引论
消息
注意 倒置 区别:
call turnLeft(hom1,40)
传统软件技术
先 申请一个过 程单元
然后 向其提供操 作的对象
消息 hom1.turnLeft(40)
面向对象技术
先 申请一个对象 然后 执行其中一
已存在的类通常称作超类,新的类通常称作子类。
继承(从C到D) 是指:
类D在类C中隐式的定义其每个属性和操作,就好像这 些属性和操作是在类D本身中定义一样。
C称为D的超类;D称为C的子类。
对象类D可以充分利用类C对象的属性和操作。
21
《 软件工程导论》
第6章 面向对象方法学引论
继承(inheritance)
消息是一个实例对象与另一个实例对象的通信单元,是 要求某个实例对象执行类中定义的某个操作。
发送给一个实例对象的消息定义了一个操作名和一个参 数表(可能是空的),并指定某一个实例对象。
一个实例对象接收的消息则调用消息中指定的操作,并 将形式参数与参数表中相应的值结合起来。
17
《 软件工程导论》
第6章 面向对象方法学引论
3
《 软件工程导论》
第6章 面向对象方法学引论
6.1 面向对象方法学概述
90年代,以OOA/OOD方法逐渐走向实用。一些专家按 照面向对象思想,对系统分析和系统设计工作的步骤、 方法、图形工具等进行了详细的研究,提出了许多不同 的实施方案。其中最有影响的有: 1988年 Shlaer 和 Mellor发表第一本OOA书; 1990年 Coad 和 Yourdon 发展出更简单的合作行 为思想; Booch 进行综合工作; Rumbaugh 提出的 OMT(对象模型化技术); Jacobson 的 OOSE(面向对象的软件工程);

面向对象的方法学导论

面向对象的方法学导论

游戏开发
游戏开发中,面向对象方 法学可以用于游戏对象的 设计和管理。
Web开发
移动应用开发
Web开发中,面向对象方 法学可以用于设计和开发 Web应用程序和Web服务。
移动应用开发中,面向对 象方法学可以用于设计和 开发各种移动应用程序。
02
面向对象的基本原则
抽象原则
01 定义
抽象原则是指将对象的共同属性和行为抽象出来, 形成一个通用的抽象类,以减少重复的代码。
与传统的过程式或函数式编 程相比,面向对象编程可能 会带来一定的性能开销,尤 其是在处理大量数据时。
可维护性问题
由于面向对象编程鼓励使用 大量的类和对象,这可能导 致代码结构变得复杂,从而 增加维护的难度。
06
面向对象方法学的未来发展
面向对象方法学的局限性
过度抽象
面向对象方法学强调抽象,但过度抽象可能导致代码难以理解和 维护。
简化问题复杂度。
封装性
封装隐藏了对象的内 部实现细节,提高了 代码的安全性和可维
护性。
继承性
通过继承,子类可以 继承父类的属性和行 为,提高了代码的复
用性。
多态性
多态提高了代码的灵 活性和可扩展性,可 以实现动态绑定和接 口的多种实现方式。
面向对象方法学的应用领域
软件工程
面向对象方法学适用于软 件工程领域,特别是大型 软件系统的设计和开发。
实现
在面向对象编程中,通过访问控 制修饰符(如private、 protected、public)来控制对象 的属性和方法的访问权限,实现 封装。
优点
封装原则可以提高代码的安全性 和稳定性,减少外部对内部细节 的干扰和破坏。
继承原则
01 定义

面向对象方法学引论

面向对象方法学引论

文件在目录 内是唯一的
39
关联的属性
进一步说明对象间关联的性质,可引入 一个关联类来记录这些附加信息。关联类通 过一条虚线与关联连接。
40
41
类图
借方 人 * 抵押 本金 利率 到期 *{有 序 } 房屋 信贷银行 银行 * 债权人 * 金融机构
持有人
财产
*
42
2、聚合
一种“整体与成员”的关系。表示整体 类的那一端增加一个菱形框。 包括共享聚合和组合聚合。如:
20
6 、封装(encapsulation )
封装是把对象的属性和实现操作的代码 结合成一个独立的系统单位,并尽可能隐藏 对象的内部细节,对象以外的部分不能直接 作用于对象的内部数据(属性),对象间的 通信只能通过明确的消息来进行。
21
7、继承( inheritance)
在现存类定义的基础上,建立新定义类 的技术。 新类的定义可以是现存类所声明的数据、 定义与新类所增加的声明的组合。 新类复用现存类的定义,而不要求修改 现存类。 现存类可当作父类(泛化类、基类或超 类)来引用,则新类相应地可当作子类(特 化类、子女类或派生类)来引用。
49
关系 行为者 方框代表系统
椭圆代表用例
图9.16自动售货机系统用例图
50
建模实例:某金融贸易系统用例图 (UML )
51
建模实例:用例图举例( UML )
52
用例之间的关系
13
表示内部状态的数据、实现各操作的代码及 局部数据,被隐藏,无法从外面看见、访问 或修改; 使用对象的时候,只能通过对象与外界的界 面来操作; 操作时,只需知道该操作的名字和所需要的 参数,不需要知道这些操作是如何实现的; 简单、方便,安全性和可靠性高。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

整理ppt
11
3 可重用性好
传统方法:通过建立标准函数库来重用软构 件。但标 准函数缺少必要的“柔性”,难以 适应不同场合的不同需要。
OOM:封装性,信息隐蔽,独立性
灵活性:一个class所有的instances 都可 重用它的代码;由派生出的新的class 可重 用其父类的代码,并且可以修改、扩充而不 影响其父类的使用。
改;
(2)容易修改:Class 独立性强:只要修改不涉及 class的对外接口,则内部修改完全不影响外部调 用;
继承(Inheritance)和多态性(polymorphism)使其 易被修改和扩充;
(3)容易理解、容易测试、调试
整理ppt
14
5 可维护性好
(3)容易理解 符合人的思维习惯,软件系统结构与问题空
4
9.1.1 面向对象方法学的要点
OOM的出发点和基本原则: 尽可能模拟人类习惯的思维方式,使描述问
题的问题空间与实现解法的解空间在结构上 尽可能一致。
面向对象方法是一种以数据和信息为主线, 把数据和处理相结合的方法:
面向对象方法把对象作为由数据及可以施加 在这些数据上的操作所构成的统一体
整理ppt
3
自90年代以来,软件与硬件之间的差距至少 有两代处理器之多,并且这种差距还在增大。 当软件系统变得更加复杂时,常规软件工具、 技术和概念已不足以应付,从而使软件开发 者陷入了困境。但面向对象的方法能够控制 软件的复杂性,从而促进了面向对象的发展, 掀起了一股“面向对象”热。
整理ppt
使用类-对象-消息
面向对象(objects-based)方法
使用类-对象-消息-继承
整理ppt
8ቤተ መጻሕፍቲ ባይዱ
9.1.2 面向对象方法学的优点
与人类习惯的思维方式一致 稳定性好 可重用性好 可维护性好 注意:OOM并不是减少了开发时间,而是
通过提高可重用性、可维护性,进行扩充和 修改的容易程度等,从长远角度改进了软件 的质量。
70年代中期,Xerox Palo Alto研究中心的研究人 员设计了Smalltalk语言,该语言的每个元素都 被当作一个对象来实现,其程序设计环境及相 关的各个方面都是面向对象的。
整理ppt
2
但是,面向对象的推广很慢。例如:Samlltalk的 成果直到1981年8月因Byte杂志的介绍才为外 界所知,许多软件开发人员了解Samlltalk时, 都把它看作是一个窗口系统,而不是程序设计 技术的一次革命。
软件工程导论 第13课
第 9 章 面向对象方法学引论
整理ppt
1
发展概述
面向对象并非是一个新的概念,实际上它已有30 多年的历史。寻其根源可追溯到60年代的挪威, 当时挪威计算中心的Kristen Nygaard和OleJohan Dahl开发了一种称作Simula67的语言。 Simula67首次引入了类、协同程序和子类的概 念,这很象今天的面向对象语言。
间的结构基本一致,便于理解
派生类只要理解新生部分,理解量少
(4)容易测试、调试
调试只对新派生类进行,类独立性强,只对 类内部进行调试,比较容易。
整理ppt
15
9.2 面向对象的概念
9.2.1 对象
在应用领域中有意义的、与所要解决的问题 有关系的任何事物都可以作为对象,对象既 可以是具体的物理实体的抽象,也可以是人 为的 概念,或者是任何有明确边界和意义的 东西。
整理ppt
12
4 较易开发大型软件产品
构成软件系统的每个对象就象一个微型程序, 有自己的数据、操作、功能、用途。把一个 大型软件产品分解成一系列本质上相互独立 的小产品处理,降低了技术难度。
便于管理
整理ppt
13
5 可维护性好
传统方法:可维护性是最令人头痛的问题。
OOM:从以下几方面改善了可维护性 (1)稳定性好:需求的变化不牵动全局,只需局部修
例如,一名职工、一家公司、一个窗口、一 座图书馆、一本图书、贷款、借款等等,都 可以作为一个对象。
整理ppt
16
9.2.1 对象
由于客观世界中的实体通常都具有静态的属 性,又具有动态的行为
80年代,C成为很受欢迎的程序设计语言,它不 仅可用在微机上,还可用在多种结构的系统和 环境中。80年代早期,AT&T贝尔实验室的 Bjarne Stroustrup把C语言扩展为支持面向对 象程序设计的C++。在C++中,程序员可以在 其熟悉的语言环境下学习掌握面向对象的程序 设计技术,而不必去探究一种新的语言和环境。
Class:由特殊到一般的归纳(induction) Inheritance:由一般到特殊的演绎(deduction)
整理ppt
10
2 稳定性好
传统方法:结构依赖于功能,不稳定。 OOM:以object模拟实体,以对象间的联
系刻画实体间的联系。需求变化不会引起结 构的整体变化,只需做一些局部修改。因为 实体相对稳定,故系统也相应稳定。
整理ppt
5
9.1.1 面向对象方法学的要点
解空间与问题空间的“语义断层” 对象 解空间对象和问题空间对象 解空间对象的呆板 问题空间对象具有静态属性又具有动态行为
整理ppt
6
OOM的4个要素
(1)对象(object):世界由对象组成。
(2)类(class) :具有相同属性和操作的对象 可划分为类; 单个对象可视为某一类的实例 (instance)
(3)继承(inheritance):类可分层下层子类与 上层父类有相同特征,称为继承
(4)消息(message):对象间只能通过发送消 息进行联系, 外界不能处理对象的内部数据, 只能通过消息
整理ppt
7
基于对象(objects-based)方法
使用对象-消息
基于类(class-based)方法
整理ppt
9
1 与人类习惯的思维方式一致
传统方法:面向过程设计,以计算为核心,数据与 操作分离,不易理解。
② OOM:以object 为核心,
基本原理:使用现实世界的概念抽象地思考问题从 而自然地解决问题,强调对现实概念的模拟而不强 调算法。
面向对象方法学的基本原则,是按照人们习惯的思 维方式建立问题域的模型,开发出尽可 能直观、 自然地表现求解方法的软件系统。
相关文档
最新文档