软件工程导论课件第9章+面向对象方法学引论_第1页
软件工程导论课件第9章+面向对象方法学引论_第2页
软件工程导论课件第9章+面向对象方法学引论_第3页
软件工程导论课件第9章+面向对象方法学引论_第4页
软件工程导论课件第9章+面向对象方法学引论_第5页
已阅读5页,还剩57页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第9章 面向对象方法学引论9.1 面向对象方法学概述9.2 面向对象的概念9.3 面向对象建模9.4 对象模型9.5 动态模型9.6 功能模型9.7 3种模型之间的关系目标 了解面向对象方法学 了解面向对象基本概念 了解面各向对象模型建立 建立系统对象模型 建立系统功能模型 建立系统动态模型9.1面向对象方法学概述 9.1.1 传统方法学缺点 9.1.2 面向对象开发方法 9.1.3 面向对象方法要点 9.1.4 面向对象方法组成 9.1.5 面向对象方法过程 9.1.6 面向对象方法优点9.1.1 传统方法的缺点结构化分析方法:面向功能软件结构严重依赖于功能,而功能是软件开发中最不稳定的因素

2、。数据和操作相分离9.1.2 面向对象开发方法OOSD (Object-Oriented Software Development)是一种 把面向对象的思想应用于软件开发过程,指导开发活动的系统方法。 面向对象=对象 (objects) +类 (classes) +继承(inheritance) +通信 (communication with messages)9.1.3 面向对象方法的要点 认为客观世界是由各种对象组成的,任何事物都是对象。 把所有对象都划分成各种对象类(简称为类,class),每个对象类都定义了一组数据和一组方法。 按照子类(或称为派生类)与父类(或称为基类)的关系,把若干

3、个对象类组成一个层次结构的系统(也称为类等级)。 对象彼此之间仅能通过传递消息互相联系。9.1.4 面向对象方法组成 OOSD由三部分组成:由三部分组成: OOA(Object-Oriented Analysis)面向对象的分析面向对象的分析 OOD(Object-Oriented Design)面向对象的设计面向对象的设计 OOP (Object-Oriented Program)面向对象的程序设计面向对象的程序设计OOA强调的是对一个系统中的对象特征和行强调的是对一个系统中的对象特征和行为的定义。建立系统的三类模型。为的定义。建立系统的三类模型。OOD与与OOAOOA密切配合顺序实现对现实

4、世界的进密切配合顺序实现对现实世界的进一步建模。一步建模。OOP是面向对象的技术中发展最快的,使用是面向对象的技术中发展最快的,使用面向对象的程序设计语言,进行编码。面向对象的程序设计语言,进行编码。9.1.5 面向对象开发过程(I)需求分析需求分析设计设计实现实现测试测试OO方法的步骤方法的步骤9.1.5 面向对象开发过程(II)需求分析需求分析设计设计实现实现测试测试获取需求,建立需求模型。获取需求,建立需求模型。分析的典型活动:分析的典型活动: 1、获取领域知识;、获取领域知识;、定义系统功能(用例图、定义系统功能(用例图 );); 3、确定合适的类;、确定合适的类; 4、建立类的静态模

5、型(类图、建立类的静态模型(类图 );); 5、描述对象的动态行为(状态图、描述对象的动态行为(状态图、协作图、时序图、活动图协作图、时序图、活动图 );); 6、验证、验证 (专家对模型作静态验证);(专家对模型作静态验证); 7、 给出基本的用户界面原型(整体给出基本的用户界面原型(整体结构的原型:主窗口的内容、窗口之结构的原型:主窗口的内容、窗口之间的导航等)。间的导航等)。9.1.5 面向对象开发过程(III)需求分析需求分析设计设计实现实现测试测试设计是分析结果在技术上的扩充和修设计是分析结果在技术上的扩充和修改,重点是如何实现该系统。改,重点是如何实现该系统。设计中的典型活动:设计

6、中的典型活动:、将分析所得的类划分为功能包,并从、将分析所得的类划分为功能包,并从技术层面(用户界面、数据库处理、通信技术层面(用户界面、数据库处理、通信等等) )增加新包,建立包之间的通信联系。增加新包,建立包之间的通信联系。、标识并发需求并建模。、标识并发需求并建模。、指出系统输出的详细格式:如用户、指出系统输出的详细格式:如用户界界面,报告,向其它系统发送的事务等。面,报告,向其它系统发送的事务等。、数据管理、数据管理( (建立类与表单的对应关系,建立类与表单的对应关系,对数据库的访问机制对数据库的访问机制) )。、异常处理、异常处理、分配类和构件(构件图、配置图、分配类和构件(构件图、

7、配置图) ) 。9.1.5 面向对象开发过程(IV)需求分析需求分析设计设计实现实现测试测试实现活动实际上就是编写程序实现活动实际上就是编写程序代码,包括反复的编译、连结、排代码,包括反复的编译、连结、排错等。错等。并应遵循传统的编程准则。并应遵循传统的编程准则。9.1.6 面向对象方法的优点1.与人类习惯的思维方式一致2.稳定性好3.可重用性好4.可维护性好9.2 面向对象的概念 9.2.1 对象 9.2.2 类 9.2.3 实例 9.2.4 消息 9.2.5 方法 9.2.6 属性 9.2.7 封装 9.2.8 继承 9.2.9 多态性9.2.1 对象(I) 是客观事物或概念的抽象表述,即

8、对客观存在的事物的描述统称为对象 对象可以是事、物、或抽象概念 ,是将一组数据和使用该数据的一组基本操作或过程封装在一起的实体。9.2.1 对象(II)对象的特点(1) 以数据为中心。 (2) 对象是主动的。(3) 实现了数据封装。(4) 本质上具有并行性。(5) 模块独立性好。9.2.2 类 类又称对象类(Object Class),是一组具有相同属性和相同操作的对象的集合。在一个类中,每个对象都是类的实例(instance) ,它们都可以使用类中提供的函数。Circle类9.2.3 实例 实例就是由某个特定的类所描述的一个具体的对象。类是对具有相同属性和行为的一组相似的对象的抽象,类在现实

9、世界中并不能真正存在。9.2.4 消息 消息就是向对象发出的服务请求(互相联系、协同工作等)。一个消息包含3个部分:接收消息的对象,消息名,消息变元。 例如,MyCircle是Circle类的一个实例,发送消息如下: MyCircle.show(GREEN);9.2.5 方法 方法就是对象所能执行的操作,也就是类中所定义的服务。 方法描述了对象执行操作的算法,响应消息的方法。在C+语言中把方法称为成员函数。9.2.6 属性 属性就是类中所定义的数据,它是对客观世界实体所具有的性质的抽象。9.2.7 封装 对象封装了对象的数据以及对这些数据的操作。课程( 设计)课程名课程号创建日期上课学期学分添

10、加课程()删除课程()修改课程信息()教师(设计 )职称教工号姓名性别授课信息 : 对象集合入校()离校 ()接受课程 ()解除课程()增加()删除()修改信息()9.2.8 继承(I) 继承是指能够直接获得已有的性质和特征,而不必重复定义它们。在面向对象的软件技术中,继承是子类自动地共享基类中定义的数据和方法的机制。 单重继承:子类仅从一个父类继承属性和方法 多重继承:子类可从多个父类继承属性和方法9.2.8 继承(II)9.2.9 多态性 在类等级的不同层次中可以共享(公用)一个行为(方法)的名字,然而不同层次中的每个类却各自按自己的需要来实现这个行为。 当对象接收到发送给它的消息时,根据

11、该对象所属于的类动态选用在该类中定义的实现算法9.3 面向对象建模(I) 面向对象方法最基本的原则,是按照人们习惯的思维方式,用面向对象观点建立问题域的模型,开发出尽可能自然地表现求解方法的软件。( Object Model Technology)是一种软件工程方法学,支持整个面向对象软件生命周期,它覆盖了问题构成、分析、设计和实现等阶段。9.3 面向对象建模(II) 面向对象开发软件,需要建立3种形式的模型。 对象模型。描述系统数据结构数据结构。 动态模型。描述系统控制结构执行操作。 功能模型。描述系统功能数值变化。 这三种模型从不同侧面描述了对系统的需求。在面向对象的分析(OOA)阶段,这

12、三种模型是必不可少的。9.4 对象模型 对象模型描述了系统的静态结构。OO方法强调围绕对象而不是功能来构造系统。 使用统一建模语言UML Unified Modeling Language)提供的类图来建立对象模型。 UML用例图是建立功能模型的有力工具。9.3 面向对象建模 UML(Unified Modeling Language)产生于90年代中期。它不仅统一了Booch、OMT和OOSE方法中的概念和表示法,而且对其作了进一步扩展,最终成为在面向对象技术领域占主导地位的、并被大众所接受的标准建模语言。1、UML概述UML的发展历程(下图)UML是一个通用的标准建模语言,可以对任何具有静

13、态结构和动态行为的系统进行可视化建模。UML不是一个开发过程,也不是一个方法,但允许任何一种开发过程和面向对象方法使用它。 9.3 面向对象建模UML事物事物关系关系图图结构事物行为事物组织事物辅助事物静态图实现关系泛化关系依赖关系关联关系动态图交互状态机包注释顺序图活动图用例图实施图类图构件图对象图状态图协作图节点组件活动类协作接口类用例 (1) (1) 统一标准统一标准 UMLUML统一了统一了BoochBooch、OMTOMT和和OOSEOOSE等方法中的基本概念,已成为等方法中的基本概念,已成为OMGOMG的的正式标准,提供了标准的面向对象的模型元素的定义和表示。正式标准,提供了标准的

14、面向对象的模型元素的定义和表示。(2) (2) 面向对象面向对象 UMLUML还吸取了面向对象技术领域中其他流派的长处。还吸取了面向对象技术领域中其他流派的长处。UMLUML符号表示符号表示考虑了各种方法的图形表示考虑了各种方法的图形表示, ,删掉了大量易引起混乱的、多余的和极删掉了大量易引起混乱的、多余的和极少使用的符号少使用的符号, ,也添加了一些新符号。也添加了一些新符号。 (3) (3) 可视化、表示能力强可视化、表示能力强 系统的逻辑模型或实现模型都能用系统的逻辑模型或实现模型都能用UMLUML模型清晰的表示,可用于复模型清晰的表示,可用于复杂软件系统的建模。杂软件系统的建模。(4)

15、 (4) 独立于过程独立于过程 UMLUML是系统建模语言,独立于开发过程。是系统建模语言,独立于开发过程。 (5) (5) 易掌握、易用易掌握、易用 由于由于UMLUML的概念明确,建模表示法简洁明了,图形结构清晰,易于的概念明确,建模表示法简洁明了,图形结构清晰,易于掌握使用。掌握使用。面向对象建模9.4.1类图的基本符号(I) 1. 定义类 UML中类的图形符号为长方形,用两条横线把长方形分成上、中、下3个区域,3个区域分别放类的名字、属性和服务9.4.1类图的基本符号(II)属性用来描述类的特征,表示需要处理的数据。属性用来描述类的特征,表示需要处理的数据。定义如下:定义如下:2. 定

16、义属性定义属性visibility attribute-name : type = initial-value property-string 可见性可见性 属性名属性名 :类型:类型 = 缺省值缺省值 性质串性质串其中:可见性其中:可见性(visibility)表示该属性对类外的元素是否可见。表示该属性对类外的元素是否可见。分为:分为: public(+) 公有的,即模型中的任何类都可以访问该属性。公有的,即模型中的任何类都可以访问该属性。 private(-) 私有的,表示不能被别的类访问。私有的,表示不能被别的类访问。 protected(#) 受保护的,表示该属性只能被该类及其子类访受

17、保护的,表示该属性只能被该类及其子类访问。问。 如果可见性未申明,表示其可见性不确定。如果可见性未申明,表示其可见性不确定。9.4.1类图的基本符号(III)3. 定义操作 对数据的具体处理方法的描述则放在操作部分,操作说明了该类能做些什么工作。UML描述操作的语法格式如下:操作可见性的定义方法与属性相同。参数表是用逗号分隔的形式参数的序列。描述一个参数的语法如下:参数名: 类型名=默认值visibility operating-name(parameter-list): return-type property- string 可见性可见性 操作名(参数表):返回类型操作名(参数表):返回类

18、型性质串性质串9.4.2 表示关系的符号(I) 类与类之间关系有: 关联 聚集 泛化(继承) 依赖 细化9.4.2.1 关联(I) 关联表示两个类的对象之间存在某种语义上的联系。 (1) 普通关联普通关联示例9.4.2.1 关联(II)在表示关联的直线两端可以写上重数(multiplicity),它表示该类有多少个对象与对方的一个对象连接。重数的表示方法通常有:01表示0到1个对象0*或*表示0到多个对象1+或1*表示1到多个对象115表示1到15个对象3表示3个对象如果图中未明确标出关联的重数,则默认重数是1。9.4.2.1 关联(III) (2) 关联的角色 在任何关联中都会涉及到参与此关

19、联的对象所扮演的角色(即起的作用),在某些情况下显式标明角色名有助于别人理解类图。如果没有显式标出角色名,则意味着用类名作为角色名。递归关联递归关联(Recursive association)一个类与本身一个类与本身有关联关系有关联关系9.4.2.1 关联(IV)(3) 限定关联限定关联通常用在一对多或多对多的关联关系中,可以把模型中的重数从一对多变成一对一,或从多对多简化成多对一。在类图中把限定词放在关联关系末端的一个小方框内。9.4.2.1 关联(V)(4) 关联类为了说明关联的性质可能需要一些附加信息。可以引入一个关联类来记录这些信息。关联中的每个连接与关联类的一个对象相联系。关联类通

20、过一条虚线与关联连接。9.4.2.1 关联(VI)关联的语言实现1-1:Public class ProgrammerComputer * GetUsedComputer(void)Public class ComputerProgrammer * GetQuotingProgrammer(void)9.4.2.1 关联(VI)关联的语言实现1-1:Public class ProgrammerComputer * GetUsedComputer(void)Public class ComputerProgrammer * GetQuotingProgrammer(void)9.4.2.1 关

21、联(VII)1-nPublic class CompanyProduct * GetProduct();Private Product * Product,;Public class ProductCompany * GetCompany();9.4.2.1 关联(VIII)限定关联Public class BookshelfBook * GetHoldingBook(int bookID);Public class BookBookShelf * GetBookShelf(void);9.4.2.2 聚集(I)聚集是一种特殊的关联,它指出类间的“整体-部分”关系。(1) 共享聚集如果在聚集关

22、系中处于部分方的对象可同时参与多个处于整体方对象的构成,则该聚集称为共享聚集。9.4.2.2 聚集(II)(2) 组合聚集如果部分类完全隶属于整体类,部分与整体共存,整体不存在了部分也会随之消失,则该聚集称为组合聚集。9.4.2.3 泛化(I) UML中的泛化关系就是通常所说的继承关系。(1) 普通泛化附加标记注释普通泛化9.4.2.3 泛化(II)(2) 受限泛化可以给泛化关系附加约束条件,以进一步说明该泛化关系的使用方法或扩充方法,这样的泛化关系称为受限泛化。预定义的约束有4种: 多重、不相交、完全和不完全。下图:多重继承9.4.2.3 泛化(III)完全继承指的是父类的所有子类都已在类图

23、中穷举出来了,图示符号是指定完全约束。不完全继承与完全继承恰好相反,父类的子类并没有都穷举出来,不完全继承是一般情况下默认的继承关系。complete人人女人女人男人男人性别性别图9.13 复杂类图示例组合聚集组合聚集抽象类组合聚集抽象操作泛化具体实现9.4.2.4 依赖依赖关系表示: 其中一个模型元素是独立的,另一个模型元素不是独立的,它依赖于独立的模型元素,如果独立的模型元素改变了,将影响依赖于它的模型元素。9.4.2.5 细化当对同一个事物在不同抽象层次上描述时,这些描述之间具有细化关系。假设两个模型元素A和B描述同一个事物,它们的区别是抽象层次不同,如果B是在A的基础上的更详细的描述,

24、则称B细化了A,或称A细化成了B。注意是虚线,实线就成了泛化 习题。现有一医院病房监护系统,病症监视器安置在每个病房,将病人的病症信号实时传送到中央监视系统进行分析处理。在中心值班室里,值班护士使用中央监视系统对病员的情况进行监控,根据医生的要求随时打印病人的病情报告,定期更新病历,当病症出现异常时,系统会立即自动报警, 并实时打印病人的病情报告,立及更新病历。 建立相应的对象模型,用类图表示。 医生医生 用户名用户名密码密码 查看病情报告()查看病情报告()要求打印病情报告()要求打印病情报告()查看病历()查看病历()要求打印病历()要求打印病历() 病人病人 姓名姓名性别性别年龄年龄病症

25、病症 提供病症信号()提供病症信号() 用户名用户名密码密码 查看病情报告()查看病情报告()打印病情报告()打印病情报告() 值班护士值班护士 病症监视病症监视采集频率采集频率病症信号病症信号 格式化信号数据()格式化信号数据()采集信号()采集信号()信号组合()信号组合()首先给出类的名称及相应的属性和方法首先给出类的名称及相应的属性和方法报警信号报警信号 声音声音灯光灯光文字文字 报警()报警()数模转化()数模转化() 病历库病历库类型类型大小大小容量容量生成病历()生成病历()更新病历()更新病历()查看病历()查看病历()打印病历()打印病历() 类型类型大小大小容量容量 提供标

26、准信号()提供标准信号() 标准病症信号库标准病症信号库 输入输入输出输出 分解信号()分解信号()比较信号()比较信号()报警()报警()数据格式化()数据格式化()中央监护系统中央监护系统 病人病症信号病人病症信号 脉搏脉搏血压血压体温体温生成病症信号()生成病症信号() 病历病历格式格式病人基本情况病人基本情况打印时间打印时间生成病历()生成病历()查看病历()查看病历()打印病历()打印病历() 标准病症信号标准病症信号脉搏脉搏血压血压体温体温 生成标准信号()生成标准信号() 标题标题格式格式 生成病情报告()生成病情报告()查看病情报告()查看病情报告()打印病情报告()打印病情报告() 病情报告病情报告*1111111111111

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论