下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、2020/8/2,第九章 面向对象方法学引论,2020/8/2,2,本讲内容,9.1 面向对象方法学概述 9.2 面向对象的概念 9.3 面向对象建模 9.4 对象模型 9.5 动态模型 9.6 功能模型 9.7 3种模型之间的关系,2020/8/2,9.1 面向对象方法学概述,2020/8/2,4,9.1 面向对象方法学概述,- 传统的软件工程方法学应用于大型软件产品的开发时,似乎很少取得成功。 - 源于20世纪60年代后期出现的面向对象编程语言Simula-67(类和对象的概念),逐步形成了面向对象方法学 。到了20世纪90年代,面向对象方法学已经成为人们在开发软件时首选的范型。,2020
2、/8/2,5,9.1.1 面向对象方法学的要点,面向对象方法学的要点,2020/8/2,6,9.1.1 面向对象方法学的要点,语义断层 不同的语言(/对象)来表达问题和解. 客观世界中的实体既具有静态的属性又具有动态的行为。然而传统语言提供的解空间对象实质上却仅是描述实体属性的数据,必须在程序中从外部对它施加操作,才能模拟它的行为。,2020/8/2,7,9.1.1 面向对象方法学的要点,对象?(面向对象语言),在问题空间中,对象是 现实世界中存在的实体 应用所关心的抽象概念、规则、事件、或者具有明确边界和意 义的具体事物 在解空间 (计算机系统) 中,对象是 问题空间中的对象在计算机系统中的
3、表示 封装 (encapsulation) 了数据和行为的通信单位,2020/8/2,8,9.1.1 面向对象方法学的要点,与传统方法相反,面向对象方法是一种以数据或信息为主线,把数据和处理相结合的方法。 面向对象方法把对象作为由数据及可以施加在这些数据上的操作所构成的统一体。 对象与传统的数据有本质区别,它不是被动地等待外界对它施加操作,相反,它是进行处理的主体。,面向对象方法是一种新的思维方法,它是把程序看作是相互协作而又彼此独立的对象的集合。 这样就减小了语义断层:系统中解空间对象可以直接模拟问题空间的对象,解空间与问题空间的结构十分一致。,2020/8/2,9,9.1.1 面向对象方法
4、学的要点,面向对象方法具有下述4个要点: (1)认为客观世界是由各种对象组成的,任何事物都是对象,复杂的对象可以由比较简单的对象以某种方式组合而成。因此,面向对象的软件系统是由对象组成的。 (2)类(class)是对一组对象的抽象,集中了该组对象的共同特性(一组数据和一组方法)。对象是类的实例。 (3) 按照子类(或称为派生类)与父类(或称为基类)的关系,把若干个对象类组成一个层次结构的系统(也称为类等级)。在这种结构中,下层的派生类自动具有和上层的基类相同的特性,这种现象称为继承(inheritance)。 (4) 对象彼此之间仅能通过传递消息互相联系。一切局部于该对象的私有信息,都被封装在
5、该对象类的定义中,就好像装在一个不透明的黑盒子中一样,在外界是看不见的,更不能直接使用,这就是“封装性”。,2020/8/2,10,9.1.1 面向对象方法学的要点,面向对象的方法学可以用下列方程来概括: OO=objects +classes +inheritance +communication with messages 面向对象就是既使用对象又使用类和继承等机制,而且对象之间仅能通过传递消息实现彼此通信。 也可以说,只有同时使用对象、类、继承和消息的方法,才是真正面向对象的方法。,9.1.2 面向对象方法学的优点,1 与人类习惯的思维方法一致 2 稳定性好 3 可重用性好 4 较易开发
6、大型软件产品 5 可维护性好,2020/8/2,11,9.2 面向对象的概念,2020/8/2,12,对象 类 类间关系 消息与事件 多态性,9.2.1 对象,2020/8/2,13,对象,在解空间 (计算机系统) 中,对象的非严格记法: := ,9.2.1 对象,2020/8/2,14,对象的基本特征 每个对象均有自己的惟一标识,从而区别于其他对象。 对象之间通过消息进行通信。 对象总是处于一定的状态。 对象有若干种行为。 对象的行为分为三类:创建新对象、与其他对象通信、改变自身状态。 对象的状态只能被自身的行为所改变。,9.2.1 对象,2020/8/2,15,对象的特点 以数据为中心。
7、对象是主动的。 实现数据的封装。 本质上具有并行性。 模块独立性好。,9.2.2 其他概念,2020/8/2,16,类 在问题空间中 “人以类聚,物以群分” 类代表着具有类似性质的一组对象 类中的每一个对象即为类的不同实例 (instance) 在解空间 (计算机系统) 中 类是对一组对象的抽象,集中了该组对象的共同特性。 在构造软件时,类实际上是具有特定功能的模块,其代码由该种所有对象所共享。 类 vs. 对象:静 vs. 动。,9.2.2 其他概念,2020/8/2,17,类的两种图形记法:,9.2.2 其他概念,2020/8/2,18,对象 状态:张三,30岁,计算机系,讲师,1000元
8、 行为:提职称,调工资 类 (教师) 属性:姓名,年龄,系别,职称,工资 操作:提职称,调工资 方法 (指操作的具体代码实现) 实际上,类是创建对象的模板!,9.2.2 其他概念,2020/8/2,19,类间关系 继承 (inheritance) 聚合 (aggregation) 关联 (relationship),9.2.2 其他概念,2020/8/2,20,继承的含义 继承是一种“求同存异”的高度抽象方式 相关术语 超类 (super-class) / 父类 (parent class) / 祖先类 (ancestor class) 子类 (sub-class) / 后裔类 (descen
9、dant class) 一般化 (generalization) 具体化 (specialization),9.2.2 其他概念,2020/8/2,21,继承的分类 单继承 多继承 多继承使类层次复杂化 多继承容易产生配置控制方面的潜在问题 继承的图形记法,9.2.2 其他概念,2020/8/2,22,一般化、具体化、继承等术语均是复用思想的体现 一般化和具体化是对同一个类间关系的不同角度审视 父类是子类的一般化 (从父类角度出发) 子类是父类的具体化 (从子类角度出发) 继承强调一般化 / 具体化关系中共享属性和操作的机制,9.2.2 其他概念,2020/8/2,23,聚合的含义 聚合表示“
10、部分整体”关系 相关术语 组元类 (component class) 组合类 (assembly class) 注意,组合对象的存在依赖于组元对象!,9.2.2 其他概念,2020/8/2,24,聚合的图形记法,9.2.2 其他概念,2020/8/2,25,关联的含义 对象实例之间的物理或概念联结被称为链 关联是对一组语义与结构相似的链的抽象 链是关联的实例 关联 vs. 链:类 vs. 对象,(a) 二元关联,(b)三元关联,9.2.2 其他概念,2020/8/2,26,聚合 vs. 继承 聚合更强调对象实例之间的关系,本质上是“与关系” (is part of,ISP) 继承更关注对象类之
11、间的关系,本质上是“或关系”(is a,ISA) 聚合树 vs. 继承树 聚合 vs. 关联 聚合是关联的一种特殊形式 聚合与关联之间的模糊差异无关紧要,9.2.2 其他概念,2020/8/2,27,消息和事件(message & event) 消息是对象之间进行通信的构造或结构 消息分为请求消息和完成消息两种 (由消息模式描述) 消息模式:发送对象、接收对象、内容 事件指对象之间一次消息的传递 多个事件按照时间顺序可构成事件序列 消息 vs. 事件:静 vs. 动,9.2.2 其他概念,2020/8/2,28,消息与对象 一个对象能接收不同形式不同内容的多个消息。 相同形式的消息可以送往不同
12、的对象。 对于相同形式的消息,不同对象可以有 不同的解释,可以作出不同的反映。 消息与方法 对象接收到有效消息后,总会以某种行为做出适当反映。期间,对象行为复用了类操作的代码实现 (即类方法)。 在某种程度上,消息与方法可视为同义词。但是,必须牢记:消息与代码无关,而方法是操作的代码实现。,9.2.2 其他概念,2020/8/2,29,多态性( polymorphism) -含义 同一个操作可以是多个不同类的行为。 不同对象接收到同一个消息后,可产生完全不同的反映。 同一个消息可调用不同的方法。 -意义 允许每个对象以自己最合适的方式去响应共同的消息,从而增强软件的灵活性和可复用性。,9.2.
13、2 其他概念,2020/8/2,30,多态性的示例,9.3 面向对象建模,2020/8/2,31,建立问题模型是人们理解表达问题的方法之一。 模型是对事物作出的一种抽象,是对事物的一种形式化的描述。 模型常由专门的语言 (一组图示符号和规则)来描述. 面向对象建模就是根据面向对象观点(模拟人类习惯的思维方式)建立问题的解模式. 面向对象的实现能将此模式在计算机上实施.,9.3 面向对象建模,2020/8/2,32,面向对象方法需要建立3种形式的模型: 描述系统数据结构的对象模型 描述系统控制结构的动态模型 描述系统功能的功能模型 在不同的应用问题中,这3种模型的相对重要程度会有所不同,对象模型
14、始终都是最重要、最基本、最核心的。 典型的软件系统组合了上述3方面内容: 使用数据结构(对象模型),执行操作(动态模型),并且完成数据值的变化(功能模型)。 本课程介绍UML作为描述这些模型的语言.,9.4 对象模型,2020/8/2,33,UML(Unified Modeling Language)产生于90年代中期。它不仅统一了Booch、OMT和OOSE方法中的概念和表示法,而且对其作了进一步扩展,最终成为在面向对象技术领域占主导地位的、并被大众所接受的标准建模语言。 1、UML概述 UML的发展历程(下图) UML是一个通用的标准建模语言,可以对任何具有静态结构和动态行为的系统进行可视
15、化建模。UML不是一个开发过程,也不是一个方法,但允许任何一种开发过程和面向对象方法使用它。,统一建模语言UML,2020/8/2,34,2020/8/2,35,UML,事物,关系,图,结构 事物,行为 事物,组织 事物,辅助 事物,静态 图,实现 关系,泛化 关系,依赖 关系,关联 关系,动态 图,交 互,状 态 机,包,注 释,顺 序 图,活 动 图,用 例 图,实 施 图,类 图,构 件 图,对 象 图,状 态 图,协 作 图,节 点,组 件,活 动 类,协 作,接 口,类,用 例,9.4 对象模型,2020/8/2,36,(1) 统一标准 UML统一了Booch、OMT和OOSE等方法
16、中的基本概念,已成为OMG的正式标准,提供了标准的面向对象的模型元素的定义和表示。 (2) 面向对象 UML还吸取了面向对象技术领域中其他流派的长处。UML符号表示考虑了各种方法的图形表示,删掉了大量易引起混乱的、多余的和极少使用的符号,也添加了一些新符号。 (3) 可视化、表示能力强 系统的逻辑模型或实现模型都能用UML模型清晰的表示,可用于复杂软件系统的建模。 (4) 独立于过程 UML是系统建模语言,独立于开发过程。 (5) 易掌握、易用 由于UML的概念明确,建模表示法简洁明了,图形结构清晰,易于掌握使用。,9.4 对象模型,2020/8/2,37,对象模型表示静态的、结构化的系统的“
17、数据”性质。它是对模拟客观世界实体的对象以及对象彼此间的关系的映射,描述了系统的静态结构。 用UML表达的对象模型由类图(类和类间关系)构成.,9.4.1 类图的基本符号,2020/8/2,38,类图描述类及类与类之间的静态关系。类图是一种静态模型,它是创建其他UML图的基础。一个系统可以由多张类图来描述,一个类也可以出现在几张类图中。 1. 定义类,UML中类的图形符号为长方形,用两条横线把长方形分成上、中、下3个区域(下面两个区域可省略),3个区域分别放类的名字、属性和服务,如右图所示。,9.4.1 类图的基本符号,2020/8/2,39,为类命名时应该遵守以下几条准则: (1) 使用标准
18、术语。 例如,“交通信号灯”比“信号单元”这个名字好,“传送带”比“零件传送设备”好。 (2) 使用具有确切含义的名词。 例如,“库房”比“房屋”或“存物场所”更确切。 (3) 必要时用名词短语作名字。 例如,“最小的领土单元”、“储藏室”、“公司员工”等 都是比较恰当的名字。 总之,名字应该是富于描述性的、简洁的而且无二义性的。,9.4.1 类图的基本符号,2020/8/2,40,2. 定义属性 UML描述属性的语法格式如下: 可见性 属性名: 类型名=初值 性质串 类的属性中还可以有一种能被该类所有对象共享的属性,称为类的作用域属性,也称为类变量。C+语言中静态数据成员就是这样的属性,在类
19、图中表示为带下划线的属性。 例如:发货单类的类变量“货单数”: -货单数:Integer,9.4.1 类图的基本符号,2020/8/2,41,3. 定义服务 服务也就是操作,UML描述操作的语法格式如下: 可见性 操作名(参数表): 返回值类型性质串 参数表是用逗号分隔的形式参数的序列。描述一个参数的语法如下: 参数名: 类型名=默认值 当操作的调用者未提供实在参数时使用默认值。 与属性类似,在类中也可定义类作用域操作:这种操作只能存取本类的类作用域属性。 “- set_counters(Integer=0, Integer): Integer -1,0”,9.4.2 表示关系的符号,2020
20、/8/2,42,类与类之间通常有关联、泛化(继承)、依赖和细化 等4种关系。 1. 关联 关联表示两个类的对象之间存在某种语义上的联系。例如,作家使用计算机,我们就认为在作家和计算机之间存在某种语义连接,因此,在类图中应该在作家类和计算机类之间建立关联关系。,2020/8/2,43,(1) 普通关联 普通关联是最常见的关联关系,只要在类与类之间存在连接关系就可以用普通关联表示。普通关联的图示符号是连接两个类之间的直线,如图所示。 通常,关联是双向的,可在一个方向上为关联起一个名字,在另一个方向上起另一个名字(也可不起名字)。为避免混淆,在名字前面(或后面)加一个表示关联方向的黑三角。,2020
21、/8/2,44,在表示关联的直线两端可以写上重数(multiplicity),它表示该类有多少个对象与对方的一个对象连接。重数的表示方法通常有: 01表示0到1个对象 0*或*表示0到多个对象 1+或1*表示1到多个对象 115表示1到15个对象 3表示3个对象 如果图中未明确标出关联的重数,则默认重数是1。,2020/8/2,45,(2) 关联的角色 在任何关联中都会涉及到参与此关联的对象所扮演的角色(即起的作用),在某些情况下显式标明角色名有助于别人理解类图。例如,下图是一个递归关联(即一个类与它本身有关联关系)。一个人与另一个人结婚,必然一个人扮演丈夫的角色,另一个人扮演妻子的角色。如果
22、没有显式标出角色名,则意味着用类名作为角色名。,2020/8/2,46,(3) 限定关联 限定关联通常用在一对多或多对多的关联关系中,可以把模型中的重数从一对多变成一对一,或从多对多简化成多对一。在类图中把限定词放在关联关系末端的一个小方框内。 例如,某操作系统中一个目录下有许多文件,一个文件仅属于一个目录,在一个目录内文件名确定了惟一一个文件。图利用限定词“文件名”表示了目录与文件之间的关系,可见,利用限定词把一对多关系简化成了一对一关系。,2020/8/2,47,(4) 关联类 为了说明关联的性质可能需要一些附加信息。可以引入一个关联类来记录这些信息。关联中的每个连接与关联类的一个对象相联系。关联类通过一条虚线与关联连接。,2020/8/2,48,2. 聚集 聚集也称为聚合,是关联的特例。聚集表示类与类之间的关系是整体与部分的关系。在陈述需求时使用的“包含”、“组成”、“分为部分”等字句,往往意味着存在聚集关系。除了一般聚集之外,还有两种特殊的聚集关系,分别是共享聚集和组合聚集。,2020/8/2,49,(1) 共享聚集 如果在聚集关系中处于部分方的对象可同时参与多个处于
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年安庆医药高等专科学校单招综合素质考试题库带答案详解(综合题)
- 2026年四川财经职业学院单招职业适应性测试题库附答案详解(研优卷)
- 2026年天津职业大学单招职业技能考试题库及一套完整答案详解
- 2026年天津机电职业技术学院单招职业技能测试题库及答案详解(考点梳理)
- 2026年天津艺术职业学院单招职业技能测试题库含答案详解(a卷)
- 农村养老服务机构服务质量监测实施办法
- 2026年威海职业学院单招职业技能考试题库带答案详解(基础题)
- 2026年天津财经大学珠江学院单招职业技能测试题库含答案详解(预热题)
- 2026年大庆职业学院单招职业适应性考试题库(含答案详解)
- 2026年四川长江职业学院单招职业倾向性测试题库带答案详解(夺分金卷)
- JGJ31-2003 体育建筑设计规范
- 2024年河南省信阳市事业单位招聘考试(职业能力倾向测验)题库学生专用
- 农贸市场营销策划方案
- 【可行性报告】2023年高纯氮化铝粉体行业项目可行性分析报告
- 营养支持讲课最终课件
- 出口海运工厂集装箱货物绑扎加固指南
- 电动机检修作业指导书
- TS30测量机器人Geocom中文说明书
- 化工厂监控系统解决方案
- GB/T 3565.1-2022自行车安全要求第1部分:术语和定义
- GB/T 3452.4-2020液压气动用O形橡胶密封圈第4部分:抗挤压环(挡环)
评论
0/150
提交评论