版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第9章面向对象方法学引论n 教学目标掌握面向对象方法学的概念、掌握用于面向对象分析、设计的3种模型(对象模型、动态模 型、功能模型)。n 教学重点面向对象方法学的基本概念n 教学难点面向对象建模的了解第9章面向对象方法学引论面向对象的思想最初出现于挪威斯陆大学和挪威计算机中心共同研制的Simula67语言中,其后,随着位于美国加利福尼亚的Xerox(施乐)研究中心推出的Smalltalk-76和80语言,面向对象的的程序设计技术迅猛的发展。到了20世纪90年代,面向对象方法学已经成为人们在开发软件是首选的成熟的范型,成为当前 最好的软件开发技术。第9章面向对象方法学引论传统的软件工程方法是面向
2、过程的,将数据和处理过程分离,求解过程是先对应用领域(问题 空间)进行分析,建立起问题空间的逻辑模型, 再通过一系列复杂的转换和算法,构造计算机系 统,获得解空间。由于问题空间与解空间的模型、描述方式的不 同,存在着复杂的转换过程,需求变化就更难适 应。传统的软件工程方法难于支持软件复用。第9章面向对象方法学引论q 教学内容9.1 面向对象方法学概述9.2 面向对象的概念9.3 面向对象建模9.4 对象模型9.5 动态模型9.6 功能模型9.7 三种模型之间的关系9.1 面向对象方法概述9.1.1 什么是面向对象的开发方法OOSD(Object-OrientedSoftwareDevelopm
3、ent) 法是一种把面向对象的思想应用于软件开发过程, 指导开发活动的系统方法。面向对象的方法是一种运用对象、类、继承、封装、聚合、消息传送、多态性等概念来构造系 统的软件开发方法。9.1.1 什么是面向对象的开发方法什么是面向对象根据Coad和Yourdon的定义,按照以下4个概念设计和实现的系统,称为是面向对象的。面向对象=对象(object)+类(classification)+继承(inheritance)+通信(communication with messages)9.1.1 什么是面向对象的开发方法面向对象技术的特点1、对软件开发过程所有阶段进行综合考虑。2、软件生存期各阶段所使
4、用的方法、技术具有 高度的连续性,用符合人类认识世界的思维方式来分析、解决问题。3、将OOA、OOD、OOP有机地集成在一起。OOA(Object-Oriented Analysis)面向对象分析OOD( Object-Oriented Design )面向对象设计OOP( Object-Oriented Program )面向对象的程序设计9.1.2 面向对象开发方法的组成OOSD由三部分组成:OOA(Object-Oriented Analysis)面向对象的分析OOD(Object-Oriented Design)面向对象的设计OOP (Object-Oriented Program)面
5、向对象的程序设计强调的是对一个系统中的对象特征和行为的定义。建立系统的三类(对象、状态、处理)模型。OOOOAA与OOA密切配合顺序实现对现实世界的进一步建模。OOD是面向对象的技术中发展最快的,使用面向对象的程序设计语言,进行编码。OOP9.1.2 面向对象开发方法的组成1、OOA法就是要解决“做什么”的问题。OOA法的基本任务就是要建立三种模型:对象模型(信息模型)定义构成系统的类和对象,它们的属性与操作。状态模型(动态模型)描述任何时刻对象的联系及其联系的改变,即时序。常用状态图,追踪图描述。处理模型(函数模型)描述系统内部数据的传送处理。显然,在三大模型中,最重要的是对象模型。9.1.
6、2 面向对象开发方法的组成2、OOD法在需求分析的基础上,进一步解决“如何作”的问题,OOD 法也分为概要设计和详细设计。概要设计:细化对象行为,添加新对象,认定类,组类库,确定外部接口及主要数据结构详细设计:加细对象描述3、OOP法使用面向对象的程序设计语言,如C+进行程序设计。Coad和Yourdon给出一个面向对象的定义: 面向对象=对象+类+继承+消息如果一个软件系统是按照这样四个概念设计和实现的,则可以认为这个软件系统是面向对象的。面向对象开发过程(I)OO方法的步骤测试实现设计需求分析面向对象开发过程(II)获取需求,建立需求模型。分析的典型活动:1、获取领域知识;、定义系统功能(
7、用例图 );3、确定合适的类;4、建立类的静态模型(类图 );5、描述对象的动态行为(状态图、协作图、时序图、活动图 );6、验证 (专家对模型作静态验证);7、 给出基本的用户界面原型(整体结构的原型:主窗口的内容、窗口之间的导航等)。测试实现设计需求分析面向对象开发过程(III)设计是分析结果在技术上的扩充和修改,重点是如何实现该系统。设计中的典型活动:、将分析所得的类划分为功能包,并从技术层面(用户界面、数据库处理、通信等)增加新包,建立包之间的通信联系。、标识并发需求并建模。、指出系统输出的详细格式:如用户界面,报告,向其它系统发送的事务等。、数据管理(建立类与表单的对应关系, 对数据
8、库的访问机制)。、异常处理、分配类和构件(构件图、配置图) 。测试实现设计需求分析面向对象开发过程(IV)实现活动实际上就是编写程序代码,包括反复的编译、连结、排错等。并应遵循传统的编程准则。测试实现设计需求分析面向对象方法的优点1. 与人类习惯的思维方式一致2. 稳定性好3. 可重用性好4. 可维护性好9.2面向对象的概念理解面向对象的基本概念对于学习和掌握面向对象的开发方法是十分重要的。对象(Object)类(Class)继承(Inheritance)多态性(Polymorphism)消息(Information)方法(method)9.2.1 对象(I)n 是客观事物或概念的抽象表述,即
9、对客观存在的事物的描述统称为对象n 对象可以是事、物、或抽象概念 ,是将一组数据和使用该数据的一组基本操作或过程封装在一起的实体。9.2.1 对象(II)对象的特点(1) 以数据为中心。(2) 对象是主动的。(3) 实现了数据封装。(4) 本质上具有并行性。(5) 模块独立性好。9.2.2 类n 类又称对象类(Object Class),是一组具有相同属性和相同操作的对象的集合。在一个类中,每个对象都是类的实例(instance) ,它们都可以使用类中提供的函数。Circle类9.2.3 实例n 实例就是由某个特定的类所描述的一个具体的对象。类是对具有相同属性和行为的一组相似的对象的抽象,类在
10、现实世界中并不能真正存在。9.2.4 消息n 消息就是向对象发出的服务请求(互相联系、协同工作等)。一个消息包含3个部分:接收消息的对象,消息名,消息变元。n 例如,MyCircle是Circle类的一个实例,发送消息如下:n MyCircle.show(GREEN);9.2.5 方法n 方法就是对象所能执行的操作,也就是类中所定义的服务。n 方法描述了对象执行操作的算法,响应消息的方法。在C+语言中把方法称为成员函数。9.2.6 属性n 属性就是类中所定义的数据,它是对客观世界实体所具有的性质的抽象。9.2.7 封装n 对象封装了对象的数据以及对这些数据的操作。教师(设计)职 称 教工号姓
11、名 性别授课信息: 对象集合入校()离校()接受课程()解除课程()增加()删除()修改信息()课程(设计)课 程 名 课 程 号 创建日期上课学期学分添加课程()删除课程()修改课程信息()9.2.8 继承(I)n 继承是指能够直接获得已有的性质和特征,而不必重复定义它们。在面向对象的软件技术中,继承是子类自动地共享基类中定义的数据和方法的机制。n 单重继承:子类仅从一个父类继承属性和方法n 多重继承:子类可从多个父类继承属性和方法9.2.8 继承(II)9.2.9 多态性n 在类等级的不同层次中可以共享(公用)一个行为(方法)的名字,然而不同层次中的每个类却各自按自己的需要来实现这个行为。
12、n 当对象接收到发送给它的消息时,根据该对象所属于的类动态选用在该类中定义的实现算法9.3 面向对象建模(I)n 面向对象方法最基本的原则,是按照人们习惯的思维方式,用面向对象观点建立问题域的模型, 开发出尽可能自然地表现求解方法的软件。n OMT( Object Model Technology)是一种软件工程方法学,支持整个面向对象软件生命周期, 它覆盖了问题构成、分析、设计和实现等阶段。9.3 面向对象建模(II)n 面向对象开发软件,需要建立3种形式的模型。n 对象模型。描述系统数据结构数据结构。n 动态模型。描述系统控制结构执行操作。n 功能模型。描述系统功能数值变化。n 这三种模型
13、从不同侧面描述了对系统的需求。在面向对象的分析(OOA)阶段,这三种模型是必不可少的。9.4 对象模型n 对象模型描述了系统的静态结构。OO方法强调围绕对象而不是功能来构造系统。n 使用统一建模语言UML (Unified Modeling Language)提供的类图来建立对象模型。n UML用例图是建立功能模型的有力工具。n 9.4.1 类图的基本符号n 9.4.2 表示关系的符号9.4.1类图的基本符号(I)n 1. 定义类n UML中类的图形符号为长方形,用两条横线把长方形分成上、中、下3个区域,3个区域分别放类的名字、属性和服务9.4.1类图的基本符号(II)2. 定义属性属性用来描
14、述类的特征,表示需要处理的数据。定义如下:visibilityattribute-name : type =initial-valueproperty-string:类型 =性质串可见性属性名缺省值其中:可见性(visibility)表示该属性对类外的元素是否可见。分为:public(+) 公有的,即模型中的任何类都可以访问该属性。private(-) 私有的,表示不能被别的类访问。protected(#) 受保护的,表示该属性只能被该类及其子类访问如果可见性未申明,表示其可见性不确定。9.4.1类图的基本符号(III)3. 定义操作对数据的具体处理方法的描述则放在操作部分,操作说明了该类能做
15、些什么工作。UML描述操作的语法格式如下:操作可见性的定义方法与属性相同。参数表是用逗号分隔的形式参数的序列。描述一个参数的语法如下:参数名: 类型名=默认值visibility operating-name(parameter-list): return-typeproperty- string可见性 操作名(参数表):返回类型性质串9.4.2表示关系的符号(I)n 类与类之间关系有:n 关联n 聚集n 泛化(继承)n 依赖n 细化9.4.2.1 关联(I)n 关联表示两个类的对象之间存在某种语义上的联系。n (1) 普通关联普通关联示例9.4.2.1 关联(II)在表示关联的直线两端可以写
16、上重数(multiplicity),它表示该类有多少个对象与对方的一个对象连接。重数的表示方法通常有:010*或*1+或1*1153表示0到1个对象表示0到多个对象表示1到多个对象表示1到15个对象表示3个对象如果图中未明确标出关联的重数,则默认重数是1。9.4.2.1 关联(III)(2) 关联的角色在任何关联中都会涉及到参与此关联的对象所扮演的角色(即起的作用),在某些情况下显式标明角色名有助于别人理解类图。如果没有显式标出角色名,则意味着用类名作为角色名。递归关联(Recursiveassociation)一个类与本身有关联关系9.4.2.1 关联(IV)(3) 限定关联限定关联通常用在
17、一对多或多对多的关联关系中,可以 把模型中的重数从一对多变成一对一,或从多对多简化成多 对一。在类图中把限定词放在关联关系末端的一个小方框内。9.4.2.1 关联(V)(4) 关联类为了说明关联的性质可能需要一些附加信息。可以引入一个关联类来记录这些信息。关联中的每个连接与关联类的一个对象相联系。关联类通过一条虚线与关联连接。9.4.2.1 关联(VI)关联的语言实现n 1-1: Public class ProgrammerComputer * GetUsedComputer(void) Public class Computer Programmer * GetQuotingProgram
18、mer(void) 9.4.2.1 关联(VII)n 1-n Public class Company Product * GetProduct(); Private Product * Product, ; Public class Product Company * GetCompany(); 9.4.2.1 关联(VIII)n 限定关联 Public class Bookshelf Book * GetHoldingBook(int bookID); Public class Book BookShelf * GetBookShelf(void);9.4.2.2聚集(I)聚集是一种特殊的
19、关联,它指出类间的“整体-部分”关系。(1) 共享聚集如果在聚集关系中处于部分方的对象可同时参与多个处于整方对象的构成,则该聚集称为共享聚集。9.4.2.2聚集(II)(2) 组合聚集如果部分类完全隶属于整体类,部分与整体共存,整体不存在了部分也会随之消失,则该聚集称为组合聚集。9.4.2.3泛化(I)UML中的泛化关系就是通常所说的继承关系。(1) 普通泛化附加标记普通泛化注释9.4.2.3泛化(II)(2) 受限泛化可以给泛化关系附加约束条件,以进一步说明该泛化关系的使用方法或扩充方法,这样的泛化关系称为受限泛化。预定义的约束有4种: 多重、不相交、完全和不完全。下图:多重继承9.4.2.
20、3泛化(III)完全继承指的是父类的所有子类都已在类图中穷举出来了,图示符号是指定完全约束。不完全继承与完全继承恰好相反,父类的子类并没有都穷举出来,不完全继承是一般情况下默认的继承关系。性别complete男人女人人抽象类组合聚集抽象操作泛化组合聚集组合聚集图9.12复杂类图示例具体实现9.4.2.4依赖依赖关系表示: 其中一个模型元素是独立的,另一个模型元素不是独立的,它依赖于独立的模型元素,如果独立的模型元素改变了,将影响依赖于它的模型元素。9.4.2.5细化当对同一个事物在不同抽象层次上描述时,这些描述之间具有细化关系。假设两个模型元素A和B描述同一个事物, 它们的区别是抽象层次不同,
21、如果B是在A的基础上的更详细的描述,则称B细化了A,或称A细化成了B。注意是虚线,实线就成了泛化习题现有一医院病房监护系统,病症监视器安置在每个病房,将病人的病症信号实时传送到中央监视系统进行分析处理。在中心值班室里,值班护士使用中央监视系统对病员的情况进行监控,根据医生的要求随时打印病人的病情报告,定期更新病历, 当病症出现异常时,系统会立即自动报警, 并实时打印病人的病情报告,立及更新病历。建立相应的对象模型,用类图表示。首先给出类的名称及相应的属性和方法病人姓名性别年龄病症提供病症信号()医生用户名查看病情报告()要求打印病情报告()查看病历()要求打印病历()值班护士用户名查看病情报告() 打印病情报告()病症监视采集频率病症信号格式化信号数据() 采集信号()信号组合()标准病症信号脉搏血压体温生成标准信号()病历格式病人基本情况打印时间生成病历() 查看病历() 打印病历()病情报告标题格式生成病情报告() 查看病情报告() 打印病情报告()病人
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年玉林市玉州区街道办人员招聘考试模拟试题及答案解析
- 2026年广东省深圳市幼儿园教师招聘笔试备考题库及答案解析
- 2025年石家庄市桥西区街道办人员招聘考试试题及答案解析
- 2026年贵州省幼儿园教师招聘笔试备考试题及答案解析
- 2026年毕节地区幼儿园教师招聘笔试参考题库及答案解析
- 2026年百色市右江区街道办人员招聘考试备考题库及答案解析
- 2026年贵阳市花溪区街道办人员招聘笔试模拟试题及答案解析
- 2026年衢州市柯城区街道办人员招聘考试备考题库及答案解析
- 2026年河北省事业单位联考审计理论知识试题及答案解析
- 2025年有限空间教育培训考及答案
- 湖南省长沙市湖南师大附中教育集团2022-2023学年七下期中数学试题(原卷版)
- 洞箫曲谱200首带目录
- 2024年山东省泰安市中考物理试卷(附真题答案)
- GB/T 44585.1-2024风险管理在接入IT网络的医疗器械中的应用第1部分:联网医疗器械或健康软件在其实施和使用中的安全、有效性和网络安全
- PAS 2050:2011-商品和服务在生命周期内的温室气体排放评价规范(英文)
- 23J916-1 住宅排气道(一)
- DL-T2078.2-2021调相机检修导则第2部分:保护及励磁系统
- 手术患者安全转运与交接
- GB/T 43924.2-2024航空航天MJ螺纹第2部分:螺栓和螺母螺纹的极限尺寸
- 农业机械设计手册上册
- 2024年广东中山市文化广电旅游局招聘笔试冲刺题
评论
0/150
提交评论