《软件工程引论教学课件》第6章 面向对象设计共77页

合集下载

软件工程 面向对象分析与设计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打开该文档
对象模型是客观世界对象、属性以及对象彼 此间关系的抽象表达,描述了系统的静态结 构
表示方法
类与对象 结构与连接
一般特殊关系,分类关系,归纳关系,继承 整体部分关系,组成关系 实例连接,对象间属性之间的静态联系 消息连接,对象行为之间的动态联系

第6 章 面向对象的软件设计PPT课件

第6 章 面向对象的软件设计PPT课件

第6 章 面向对象的软件设计
(7)效率 (8)持久保存对象 (9)参数化类 (10)开发环境 2.面向对象语言的选择 (1)可复用性 (2)类库和开发环境 (3)其他因素
第6 章 面向对象的软件设计
6.4.2 程序设计风格 1.提高可重用性 (1)提高方法的内聚 (2)减小方法的规模 (3)保持方法的一致性 (4)把策略与实现分开 (5)全面覆盖
第6 章 面向对象的软件设计
举例:
第6 章 面向对象的软件设计
6.3 详细设计
6.3.1 系统详细设计 1.细化和重组类 2.增加遗漏的属性,指定属性的类型和可见性 3.分配职责,定义执行每个职责的方法 通用职责分配软件模式 : (1)专家模式:应该将职责分配给信息专家 (2)创建者模式:如果类A和类B满足下列条件中的一个,
第6 章 面向对象的软件设计
2.详细设计 (1)细化、补充类的属性和操作 (2)设计类操作的实现算法 (3)优化数据访问路径 (4)实现外部交互式的控制 (5)调整类结构,增加继承性 (6)设计类之间的关联的实现方式 (7)确定对象属性的精确表示 (8)把类和关联打包归纳到模块中
第6 章 面向对象的软件设计
(6) 尽量不使用全局信息 (7)利用继承机制
第6 章 面向对象的软件设计
2.提高可扩充性 (1)封装实现策略 (2)不要用一个方法遍历多条关联链 (3)避免使用多分支语句 (4)精心确定公有方法 3.提高健壮性 (1)预防用户的操作错误 (2)检查参数的合法性 (3)不要预先确定限制条件 (4)先测试后优化
只和该子系统中的其他类协作; ✓ 子系统的数量不宜太多; ✓ 可以在子系统内部再次划分,以降低复杂度。
第6 章 面向对象的软件设计
6.2.2 物理体系结构建模 用构件图和部署图来描述系统的物理体系结构 1.构件图 构件图就是描述构件类及其它们之间的关系。 (1)构件间的依赖关系:主要是依赖关系,用

软件工程06第六章:面向对象学导论

软件工程06第六章:面向对象学导论




通常,客观世界中的实体既具有静态的属性,又具有 动态的行为。 软件系统本质上是信息处理系统。数据和处理原本是 密切相关的,把数据和处理人为地分离成两个独立的 部分,会增加软件开发的难度。 面向对象方法学所提供的“对象”概念,是让软件开 发者自己定义或选取解空间对象,然后把软件系统作 为一系列2.定义服务 每个对象应该知道怎样完成自己负责提供的服务功能 ,使用者只需向对象发送消息提出要求即可。 本例每个类中定义的属性都是简单变量,因此,实现 常规服务(即读/写属性值)的算法非常简单,仅用一 条读/写语句即可实现。
第六章:面向对象方法学导论

6.1 6.2 6.3 6.4 6.5 6.6 6.7 6.8 6.9
第六章:面向对象方法学导论


传统的软件工程方法学 曾经给软件产业带来了巨大 进步,部分地缓解了软件危机,使用这种方法学开发 的许多中、小规模软件项目都获得了成功。但是,当 把这种方法学应用于大型软件产品的开发时,却很少 取得成功。 在20世纪60年代后期出现的面向对象编程语言Simula67中首次引入了类和对象的概念,自20世纪80年代中 期起,人们开始注重对面向对象分析和设计的研究, 从而逐步形成了面向对象方法学。到了20世纪90年代 ,面向对象方法学已经成为人们在开发软件时首选的 范型。可以说,面向对象技术是当前最好的软件开发 技术。
面向对象的要点




① 认为客观世界是由各种对象组成的,任何事物都是 对象,复杂的对象可以由比较简单的对象以某种方式 组合而成。 ② 把所有对象都划分成各种对象类,每个对象类都定 义了一组数据和一组方法。 ③ 按照子类(或称为派生类)与父类(或称为基类) 的关系,把若干个对象类组成一个层次结构的系统( 也称为类等级)。 ④ 对象彼此之间仅能通过传递消息互相通信。

软件工程导论面向对象方法学引论第六张海潘编著分析PPT学习教案

软件工程导论面向对象方法学引论第六张海潘编著分析PPT学习教案
对象响应消息时,按照消息模式找出与之匹配的 方法,并执行该方法。
第11页/共79页
2、对象的定义
从动态角度或对象的实现机制来看,对象是一台自动机来
模拟: 具有内部状态S,操作fi(i=1,2,…,n),且与操作fi对应
的状态转换函数为gi(I=1,2,…,n)的一个对象。
输入fi , X
状态 S
第20页/共79页
7、继承 继(承,In是h子e类ri自ta动n地c共e)享基类中定义的数据和
方法的机制。
类A A的操作 A的变量
A的实例a1 类A
A的实例变量
类B:A的子类 从A的继承特性
B的操作 B的变量
B的实例b1 类B
继承来的A的实例变量
B的实例变量
图9.4 实现继承机制的原理
第21页/共79页
按键来操作; 按下“Play(放音)”键,则录音带正向转动,通过喇叭放出录音带中
记录的歌曲或其他声音; 按下“Record(录音)”键,则录音带正向转动,在录音带中录下新
的音响;
完成放音、录音的各种功能的电子线路被装在录音机的外壳中,人 们无须了解这些电子线路的工作原理就可以随心所欲地使用录音机 。
继承举例
第22页/共79页
8、多态性(Polymorphism)
多态性,指子类对象可以象父类对象那样使用,同样 的消息既可以发送给父类对象,也可以发送给子类对象。
即不同等级的类,可以公用一个方法的名字。不同层 次中的每个类却各自按自己的需要来实现这个行为。
第23页/共79页
9、重载(Overloading)
使用对象的时候,只能通过对象与外界的界面来 操作;
操作时,只需知道该操作的名字和所需要的参数 ,不需要知道这些操作是如何实现的;

软件工程 6 面向对象分析

软件工程 6 面向对象分析
例:复查“图书借阅管理系统“中的参与者与用 例
建立用例图
第六章 面向对象分析
标题 用例名称: 用例标识号: 简要说明: 前置条件:
基本事件流:
其他事件流:
异常事件流:
后置条件:
编写用例描述
说明
借阅图书。
UC204
读者可通过此用例借阅图书,借阅成功后修改读者和图书的状态。
读者选择要借阅的图书。
⒈ 判断该读者的状态是否为正常。 ⒉ 判断该图书的状态是否为正常可借。 ⒊ 判断读者是否还能借阅图书,即是否已到最大借阅数。 ⒋ 上述条件都满足时,修改读者的状态和图书的状态,完成借阅过程。 ⒌ 用例结束。
需求人员事前准备 访谈内容的设计,列出大纲 访谈方式 可以全面了解用户的业务 不适用于大规模用户
访谈-用户访谈问题大纲第六章 面向对象分析
1. 用户情况
姓名:
(用户姓名)
公司及部门:
(用户所在公司及部门)
职务:
(用户在公司中的职务)
主要职责:
(用户在公司中所负的主要职责)
(注:多留些空白,以记录其他基本情况)
第六章 面向对象分析
访谈-用户访谈问题大纲(续)
4. 反馈理解情况 业务问题理解: 有否补充问题: 5. 询问非功能需求 可靠性预期: 性能预期: 维护和服务预期: 安全需求: 安装和配置需求: 其它需求: 6. 总结 访谈之后如何联系: 用户参加需求审阅: 需求优先级:
(对刚才询问用户的业务问题,用自己的话复述问题,以确认问题没有被误解) (用户对刚才的理解是否有需要补充之处)
用例向与之关联的角色输出什么信息? 用例需要对哪些硬件设备进行操作? 例:“图书借阅管理系统“中类的识别
第六章 面向对象分析

《软件工程》-电子教案 第6章 面向对象技术

《软件工程》-电子教案  第6章 面向对象技术

系统设计过程 子系统设计 人机交互设计 任务管理设计 数据管理设计
6.4.1

系统设计过程
面向对象设计分为系统结构设计和对象设 计。在分析完成之后,对象设计之前,系统结 构设计要确定给出一个解的框架,实现系统的 策略和目标系统的高层结构。系统高层结构是 在时间和空间、软件和硬件等系列之间作出权 衡,例如子系统的划分、内在的并发、子系统 对硬软件的分配、数据管理资源协调以及边界 条件和优先权。

3.动态模型 描述系统的动态行为,通过时序图/协作图 描述对象的交互,以揭示对象间如何协作 来完成每个具体的用例,单个对象的状态 变化/动态行为可以通过状态图来表达。
6.3 面向对象的分析


6.3.1论域分析(Domain Analysis) 6.3.2应用分析( Analysis)
【本章重点】



面向对象、类、继承、封装、多态等 面向对象技术中的概念; 面向对象的开发模型; 面向对象的分析; 面向对象的系统设计过程; 子系统设计、人机交互设计、任务管 理设计和数据管理设计; 面向对象的实现;
6.1 面向对象技术的概述
面向对象技术中的“对象”和“面向对象”的 关系是这样的, 面向对象(Object-oriented)= 对象(Object )+ 类(Classification)+继承 (Inheritance)+通信(Communication)。

面向对象实现主要包括两项工作: 把面 向对象设计结果翻译成用某种程序语言 书写的面向对象程序;测试并调试面向 对象的程序。具体测试并调试的过程将 在第9章软件测试中具体讲解。

对于交互系统,人机交互包括指定窗口和报表 的形式、系统响应时间和设计命令层次等内容。 人机交互设计融合了一般交互、信息显示和数 据输入的设计,整体上控制全局性,以保持界 面的设计的友好高效。

《软件工程》第6章 面向对象的软件开发技术2

《软件工程》第6章 面向对象的软件开发技术2

– 实现表示对该契约的具体实现细节(如何做)
• 例:接口/子系统、用例/用例实现、操作/方法…
北京大学远程教育课程
Software Engineering_Chapter6-21
通用划分(续)
• 类型和角色的分离(新增)
– 任何作为其它实体结构的一部分实体(如属性)都具有两个方面的特 性:
• 从固有类型派生出来的含义 • 在语境中的角色派生出来的含义
北京大学远程教育课程
Software Engineering_Chapter6-24
构造型(stereotypes)
• 构造型(stereotypes)
– 根据模型中的其他元素定义一个新元素 – 建立在UML已定义的模型元素基础上
– 可以用于所有的UML模型元素,如类、关联、用例、构件等
– 每个UML元素只能定义一种构造型 – UML规范提供了一些预定义的构造型
UML发展背景
• 90年代:面向对象分析设计方法学之战 • 方法大战
– B.H. Sellers等提出喷泉模型 – G. Booch提出面向对象开发OMT方法等 – P. Coad和E.Yourdon提出OOA和OOD – Jacobson提出OOSE – ……
北京大学远程教育课程
Software Engineering_Chapter6-8
– 主要UML 1.3、UML 1.4 – 2003年3月正式发布UML 1.5
• UML 2.0
– 2003年6月OMG采纳了UML 2.0的Superstructure的提案 – 2005年7月正式发布Infrastructure和Superstructure – OCL, XMI, MDA, ….?
Software Engineering_Chapter6-14

软件工程课件Ch_6 面向对象基础

软件工程课件Ch_6 面向对象基础

详细描述的(Specifying)
详细描述意味着建立精确的和无歧义的模型 UML 为所有重要的分析、设计和实现决策提供 了精确的、无歧义的和完整的描述。
33
6.3.1 什么是UML
构造的( Constructing )
UML 不是一种可视化的编程语言,但它所描述的 模型可以映射成不同的编程语言,如 JAVA、C++ 和 Visual Basic 。 正向工程:从 UML 模型到编程语言的代码生成。 逆向工程:由编程语言代码重新构造 UML 模型
12
6.2.1 面向对象基本概念
属性是用来描述对象静态特征的一个数据 项。 服务是用来描述对象动态特征(行为)的 一个操作序列。
13
6.2.1 面向对象基本概念
2.类(Class)是具有相同属性和服务的一组 对象的集合,它为属于该类的全部对象提 供了统一的抽象描述,其内部包括属性和 服务两个主要部分。 类代表一个抽象的概念或事物,对象是在 客观世界中实际存在的类的实例。 类体现了人们认识事物的基本思维方法: 分类 问题:类还是对象?
软件开发的常见问题
需求的错误
• 不完整、不一致、不明确 • 开发人员和用户无法以同样的方式说明需求
需求的变化
• 需求在整个项目过程中始终发生变化 • 设计后期发生改变
持续的变化
• 系统功能不断变化 • 许多变化出现在项目后期 • 维护过程中发生许多变化
系统结构的崩溃
• 系统在不断的变化中最终变得不可用
1
问题的解决方法
解决方法
严格的需求和规划阶段 设计系统结构使其适应变化
分析
问题域相对而言是稳定的
银行系统:帐户、客户、ATM
系统功能和数据表示极有可能发生变化
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

面向对象的设计(OOD)概述
什么是面向对象设计
OOD——按实现条件对OOA模型进行调整,并补充几个新的 组成部分(也是由对象构成)
与实现有关的因素:
图形用户界面系统
OOA 模型
硬件、操作系统及网络 数据管理系统
补充
其他——编程语言、可复用
OOA与OOD的关系:
1、从OOA到OOD不是转换;
MiniLibrary:识别设计元素
MiniLibrary:识别设计元素
识别子系统接口
在确定了设计元素之后,需要描述子系统的行为,也 就是准确定义接口操作的集合。同时,还要确定“子 系统接口”与其他设计元素之间的依赖关系
数据存储策略
数据文件
数据文件是由操作系统提供的存储形式,应用系统将数 据按字节顺序存储,并定义如何以及何时检索数据
定义关系
在详细设计阶段,需要进一步确定详细的关联关 系、依赖关系和聚合关系等 不同对象之间的可能连接
12
MiniLibrary:软件体系结构
MiniLibrary:软件体系结构
MiniLibrary:软件体系结构
识别设计元素
识别设计元素
确定设计元素的基本原则
如果一个“分析类”比较简单,代表着单一的逻辑抽 象,那么可以将其映射为“设计类” 如果一个“分析类”的职责比较复杂,很难由单个“ 设计类”承担,则应该将其映射成“子系统接口” 子系统的划分应该符合高内聚低耦合的原则
在辅助模型中要增加分别用 于描述构件模型和部署模型 的构件图和部署图
OOD过程模型 ➢问题域部分的设计 ➢人机交互部分的设计 ➢控制流管理部分的设计 ➢数据管理部分的设计 ➢构件部署部分的设计
前4项不强调次序
每个部分均采用与OOA一致的概念、表示法及活动,但具 有自己独特的策略。
进行构件部署设计要在其前面四个部分完成后进行。
何时选择关系数据库
复杂的数据查询 数据集规模大
何时选择面向对象数据库
数据集处于中等规模 对象间没有规则联系
部署子系统
部署图反映了系统中软件和硬件的物理架构,表示系统运 行时的处理节点以及节点中组件的配置
MiniLibrary系统的部署图
详细设计
详细设计需要细化分析和系统设计产生的模型,确定新的 设计对象,消除问题域与实现域之间的差距 详细设计模型可以分割成类的集合,通常由单个开发人员 实现
统一建模语言UML
图:部署图
面向对象的设计
面向对象设计的过程
体系结构 设计说明
详细 设计说明
系统设计
设计系统的体系结构
选择合适的体系结构策略,建立系统的总体结构
识别设计元素
识别类和子系统 识别子系统接口
定义数据的存储策略 部署子系统
选择硬件配置和系统平台,将子系统分配到相应 的物理节点
检查系统设计
——是调整和增补
将OOA模型搬到OOD; 进行必要的调整, 作为OOD模型的问题域 部分;
增补其它部分,成为完 整的OOD模型。
OOA 模型
控制驱动部分


机 交
问题域
据 管
互 部分 理




构件部署部分
9
2、采用一致的概念和表示法
——不存在分析与设计之间的鸿沟
分析
数据流图 (DFD)
设计
模块结构图 (MSD) 实体-关系图(ERD)
具体说明属性的名称、类型、缺省值、可见性等
基本原则
将所有属性的可见性设置为private; 仅通过set方法更新属性; 仅通过get方法访问属性; 在属性的set方法中,实现简单的有效性验证,而在独立 的验证方法中实现复杂的逻辑验证。
定义属性
定义状态
在详细设计阶段,状态建模一般只发生在依赖状 态展示不同行为的类上
详细设计的主要任务
精化类的属性和操作
-明确定义操作的参数和基本的实现逻辑 -明确定义属性的类型和可见性
明确类之间的关系 整理和优化设计模型
详细设计
边界类的设计策略
用户界面设计因素
-用户界面的开发工具 -所创建的界面数量
外部系统接口类
实体类的设计策略
考虑性能需求对实体对象的影响
控制类的设计策略
是否真正需要?是否应该继续细化? 考虑复杂性、变化适应性、分布性和性能、事务处 理等要求
统一建模语言UML
图:活动图
活动图反映系统中从一个活动到另一个活动的流 程,强调对象间的控制流程
统一建模语言UML
图:组件图
组件图描述组件以及它们之间的关系,表示系统 的静态实现视图
统一建模语言UML
图:部署图
部署图反映了系统中软件和硬件的物理架构,表 示系统运行时的处理节点以及节点中组件的配置
关系数据库
在关系数据库中,数据是以表的形式存储在预先定义好 的称为Schema的类型中
面向对象数据库
与关系数据库不同的是,面向对象数据库将对象和关系 做为数据一起存储
数据存储策略
何时选择文件
存储大容量数据、临时数据、低信息密度数据
何时选择数据库
并发访问要求高、系统跨平台、多个应用程序使用相同 数据
属性赋值
+ setName(name : String) + setAddress(address : String)
其他
+ addLoan(theLoan : Loan) + removeLoan(theLoan : Loan) + isAllowed() : Boolean ……
定义属性
定义属性
OOA
OOD
一致的
OO模型
概念 一致的
OO模型
表示法
传统方法分析与设 计之间的鸿沟
面向对象的分析与设计 之间不存在鸿沟
3、有不同的侧重点和不同的策略
OOA主要针对问题域,识别有关的对象以及它们之间的 关系,产生一个满足用户需求,独立于实现的OOA模型。
OOD主要解决与实现有关的问题,基于OOA模型,针
对具体的软、硬件条件(如机器、网络、OS、GUI、
DBMS等)产生一个可实现的OOD模型。
10
OOD模型和过程
OOD模型
——从两个侧面来描述
从另一侧面观察 OOD模型每个部分 如何用OO概念表达 ——采用OOA的概念
及 模型组织方式
从一个侧面观察 OOD模型包括几个主
要部分 ——一个核心部分加
几个外围部分
定义操作
定义操作的过程
找出满足基本逻辑要求的操作 补充必要的辅助操作
-初始化类的实例 -验证两个实例是否等同 -……
完整地描述操作
-确定操作的名称、参数、返回值、可见性等 -应该遵从程序设计语言的命名规则
简要说明操作的内部实现逻辑
定义操作
举例:BorrowerInfo类
构造函数
<<class>> + new()
相关文档
最新文档