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

上传人:m**** 文档编号:567684952 上传时间:2024-07-22 格式:PPT 页数:55 大小:382.50KB
返回 下载 相关 举报
软件工程第九章-面向对象方法学引论_第1页
第1页 / 共55页
软件工程第九章-面向对象方法学引论_第2页
第2页 / 共55页
软件工程第九章-面向对象方法学引论_第3页
第3页 / 共55页
软件工程第九章-面向对象方法学引论_第4页
第4页 / 共55页
软件工程第九章-面向对象方法学引论_第5页
第5页 / 共55页
点击查看更多>>
资源描述

《软件工程第九章-面向对象方法学引论》由会员分享,可在线阅读,更多相关《软件工程第九章-面向对象方法学引论(55页珍藏版)》请在金锄头文库上搜索。

1、软件工程中南大学Central South University第九章 面向对象方法学引论2021/6/3本讲内容9.1 面向对象方法学概述9.2 面向对象的概念9.3 面向对象建模9.4 对象模型9.5 动态模型9.6 功能模型9.7 3种模型之间的关系2021/6/32软件工程中南大学Central South University9.1 面向对象方法学概述2021/6/39.1 面向对象方法学概述- 传统的软件工程方法学应用于大型软件产品的开发时,似乎很少取得成功。- 源于20世纪60年代后期出现的面向对象编程语言Simula-67(类和对象的概念),逐步形成了面向对象方法学 。到了20

2、世纪90年代,面向对象方法学已经成为人们在开发软件时首选的范型。2021/6/349.1.1 面向对象方法学的要点面向对象方法学的要点2021/6/359.1.1 面向对象方法学的要点n语义断层语义断层 不同的语言不同的语言(/(/对象对象) )来表达问题和解来表达问题和解. .n客观世界中的实体既具有静态的属性又具有动态的行为。客观世界中的实体既具有静态的属性又具有动态的行为。然而传统语言提供的解空间对象实质上却仅是描述实体然而传统语言提供的解空间对象实质上却仅是描述实体属性的数据,必须在程序中从外部对它施加操作,才能属性的数据,必须在程序中从外部对它施加操作,才能模拟它的行为。模拟它的行为

3、。2021/6/369.1.1 面向对象方法学的要点n对象?(面向对象语言)对象?(面向对象语言)在问题空间问题空间中,对象是 现实世界中存在的实体实体 应用所关心的抽象概念抽象概念、规则规则、事件事件、或者具有明确边界和意 义的具体事物具体事物在解空间解空间 (计算机系统计算机系统) 中,对象是 问题空间中的对象在计算机系统中的表示 封装封装 (encapsulation) 了数据和行为的通信单位2021/6/379.1.1 面向对象方法学的要点n与传统方法相反,面向对象方法是一种以数据或信息为与传统方法相反,面向对象方法是一种以数据或信息为主线,把主线,把数据和处理数据和处理相结合的方法。

4、相结合的方法。n面向对象方法把对象作为由数据及可以施加在这些数据面向对象方法把对象作为由数据及可以施加在这些数据上的操作所构成的统一体。上的操作所构成的统一体。n对象与传统的数据有本质区别,它不是被动地等待外界对象与传统的数据有本质区别,它不是被动地等待外界对它施加操作,相反,它是进行处理的主体。对它施加操作,相反,它是进行处理的主体。n面向对象方法是一种新的思维方法,它是把面向对象方法是一种新的思维方法,它是把程序程序看作是看作是相互协作而又彼此独立的对象的集合。相互协作而又彼此独立的对象的集合。n这样就减小了语义断层这样就减小了语义断层: :系统中解空间对象可以直接模拟系统中解空间对象可以

5、直接模拟问题空间的对象,解空间与问题空间的结构十分一致。问题空间的对象,解空间与问题空间的结构十分一致。2021/6/389.1.1 面向对象方法学的要点面向对象方法具有下述面向对象方法具有下述4 4个要点:个要点:(1)认为客观世界是由各种认为客观世界是由各种对象对象组成的,任何事物都是对象,复杂的对象可组成的,任何事物都是对象,复杂的对象可以由比较简单的对象以某种方式组合而成。因此,以由比较简单的对象以某种方式组合而成。因此,面向对象的软件系统是面向对象的软件系统是由对象组成的。由对象组成的。(2)类类(class)是对一组对象的抽象,集中了该组对象的共同特性(一组数据是对一组对象的抽象,

6、集中了该组对象的共同特性(一组数据和一组方法)。对象是类的实例。和一组方法)。对象是类的实例。(3) 按照子类按照子类(或称为派生类或称为派生类)与父类与父类(或称为基类或称为基类)的关系,把若干个对象类的关系,把若干个对象类组成一个层次结构的系统组成一个层次结构的系统(也称为类等级也称为类等级)。在这种结构中,下层的派生类。在这种结构中,下层的派生类自动自动具有和上层的基类相同的特性,这种现象称为具有和上层的基类相同的特性,这种现象称为继承继承(inheritance)。 (4) 对象彼此之间对象彼此之间仅仅能通过传递能通过传递消息消息互相联系。一切局部于该对象的私有互相联系。一切局部于该对

7、象的私有信息,都被封装在该对象类的定义中,就好像装在一个不透明的黑盒子中信息,都被封装在该对象类的定义中,就好像装在一个不透明的黑盒子中一样,在外界是看不见的,更不能直接使用,这就是一样,在外界是看不见的,更不能直接使用,这就是“封装性封装性”。2021/6/399.1.1 面向对象方法学的要点n面向对象的方法学可以用下列方程来概括:面向对象的方法学可以用下列方程来概括:OO=objects+classes+inheritance+communication with messagesn面向对象就是既使用对象又使用类和继承等机制,而且面向对象就是既使用对象又使用类和继承等机制,而且对象之间仅能

8、通过传递消息实现彼此通信。对象之间仅能通过传递消息实现彼此通信。n也可以说,只有同时使用对象、类、继承和消息的方法,也可以说,只有同时使用对象、类、继承和消息的方法,才是真正面向对象的方法。才是真正面向对象的方法。2021/6/3109.1.2 面向对象方法学的优点n1 与人类习惯的思维方法一致n2 稳定性好n3 可重用性好n4 较易开发大型软件产品n5 可维护性好2021/6/3119.2 面向对象的概念n对象n类n类间关系n消息与事件n多态性2021/6/3129.2.1 对象n对象在解空间解空间 ( (计算机系统计算机系统) ) 中,对象的非严格记法:l := 2021/6/3139.2

9、.1 对象n对象的基本特征对象的基本特征每个对象均有自己的惟一标识惟一标识,从而区别于其他对象。对象之间通过消息消息进行通信。对象总是处于一定的状态状态。对象有若干种行为行为。对象的行为分为三类三类:创建新对象、与其他对象通信、改变自身状态。对象的状态只能被自身的行为所改变。对象的状态只能被自身的行为所改变。2021/6/3149.2.1 对象n对象的特点对象的特点以数据为中心。对象是主动的。实现数据的封装。本质上具有并行性。模块独立性好。2021/6/3159.2.2 其他概念n类在问题空间问题空间中n“人以类聚,物以群分人以类聚,物以群分”n类代表着具有类似性质的一组对象n类中的每一个对象

10、即为类的不同实例 (instance)在解空间解空间 ( (计算机系统计算机系统) ) 中n类是对一组对象的抽象,集中了该组对象的共同特性。n在构造软件时,类实际上是具有特定功能的模块,其代码由该种所有对象所共享。n类 vs. 对象:静静 vs. 动动。2021/6/3169.2.2 其他概念l类的两种图形记法:类的两种图形记法:2021/6/3179.2.2 其他概念n对象n状态:张三,30岁,计算机系,讲师,1000元n行为:提职称,调工资n类 (教教师)n属性:姓名,年龄,系别,职称,工资n操作:提职称,调工资n方法 (指操作的具体代码实现)n实际上,类是创建对象的模板!类是创建对象的模

11、板!2021/6/3189.2.2 其他概念n类间关系n继承继承 (inheritance)n聚合聚合 (aggregation)n关联关联 (relationship)2021/6/3199.2.2 其他概念n继承的含义继承的含义n继承是一种“求同存异求同存异”的高度抽象方式n相关术语相关术语n超类 (super-class) / 父类 (parent class) / 祖先类 (ancestor class)n子类 (sub-class) / 后裔类 (descendant class)n一般化 (generalization)n具体化 (specialization)2021/6/320

12、9.2.2 其他概念l继承的分承的分类l单单继承继承l多多继承继承 l多继承使类层次复杂化l多继承容易产生配置控制方面的潜在问题l继承的图形记法2021/6/3219.2.2 其他概念n一般化一般化、具体化具体化、继承承等术语均是复用复用思想的体现n一般化和具体化是对同一个类间关系同一个类间关系的不同角度审视不同角度审视n父类是子类的一般化 (从父类角度出发)n子类是父类的具体化 (从子类角度出发)n继承强调一般化 / 具体化关系中共享属性和操作的机共享属性和操作的机制制2021/6/3229.2.2 其他概念n聚合的含义n聚合表示聚合表示“部分部分整体整体”关系关系n相关术语n组元类组元类

13、(component class)n组合类组合类 (assembly class)n注意,组合对象的存在依赖于组元对象!注意,组合对象的存在依赖于组元对象!2021/6/3239.2.2 其他概念l聚合的图形记法2021/6/3249.2.2 其他概念n关联的含义n对象实例之间的物理或概念联结被称为链链n关联关联是对一组语义与结构相似的链的抽象n链是关联的实例n关联 vs. 链:类 vs. 对象(a a) 二元关联二元关联人员公司雇用雇用二元关联的例(人员)张涛(公司)通大雇用雇用链的例子(b b)三元关联)三元关联项目语言人三元关联的例(项目)CAD系统(语言) C +(人)李波链的例子20

14、21/6/3259.2.2 其他概念l聚合聚合 vs. 继承继承l聚合更强调对象实例之间的关系,本质上是“与关系与关系” (is part of,ISP)l继承更关注对象类之间的关系,本质上是“或关系或关系”(is a,ISA)l聚合树 vs. 继承树l聚合聚合 vs. 关联关联l聚合是关联的一种特殊形式l聚合与关联之间的模糊差异无关紧要无关紧要2021/6/3269.2.2 其他概念n消息和事件(消息和事件(message & event) 消息是对象之间进行通信的构造构造或结构结构n消息分为请求请求消息和完成完成消息两种 (由消息模式消息模式描述)n消息模式:发送对象、接收对象、内容事件指

15、对象之间事件指对象之间一次一次消息的传递消息的传递n多个事件按照时间顺序可构成事件序列消息 vs. 事件:静静 vs. 动动2021/6/3279.2.2 其他概念n消息与对象消息与对象n一个一个对象能接收不同形式不同内容的多个多个消息。n相同相同形式的消息可以送往不同不同的对象。n对于相同相同形式的消息,不同对象可以有 不同不同的解释,可以作出不同不同的反映。n消息与方法消息与方法n对象接收到有效消息后,总会以某种行为做出适当反映。期间,对象行为复用复用了类操作的代码实现 (即类方法)。n在某种程度上,消息与方法可视为同义词。但是,必须牢记:消息与代码无关消息与代码无关,而方法是操作的代码实

16、现。2021/6/3289.2.2 其他概念n多态性( polymorphism)-含义n同一个操作同一个操作可以是多个可以是多个不同不同类的行为。类的行为。n不同对象接收到不同对象接收到同一个消息同一个消息后,可产生完全后,可产生完全不同不同的的反映。反映。n同一个消息同一个消息可调用可调用不同不同的方法。的方法。-意义n允许每个对象以自己最合适的方式去响应共同的消允许每个对象以自己最合适的方式去响应共同的消息,从而增强软件的灵活性和可复用性。息,从而增强软件的灵活性和可复用性。2021/6/3299.2.2 其他概念l多态性的示例多态性的示例2021/6/3309.3 面向对象建模n建立问

17、题模型是人们理解表达问题的方法之一。建立问题模型是人们理解表达问题的方法之一。n模型是对事物作出的一种抽象,是对事物的一种形式模型是对事物作出的一种抽象,是对事物的一种形式化的描述。化的描述。n模型常由专门的语言模型常由专门的语言 ( (一组图示符号和规则一组图示符号和规则) )来描述来描述. .n面向对象建模就是根据面向对象观点面向对象建模就是根据面向对象观点( (模拟人类习惯的模拟人类习惯的思维方式思维方式) )建立问题的解模式建立问题的解模式. . 面向对象的实现能将此面向对象的实现能将此模式在计算机上实施模式在计算机上实施. .2021/6/3319.3 面向对象建模n面向对象方法需要

18、建立面向对象方法需要建立3 3种形式的模型种形式的模型: :1)描述系统数据结构的对象模型2)描述系统控制结构的动态模型3)描述系统功能的功能模型在不同的应用问题中,这在不同的应用问题中,这3 3种模型的相对重要程度会有种模型的相对重要程度会有所不同,所不同,对象模型对象模型始终都是最重要、最基本、最核心的。始终都是最重要、最基本、最核心的。典型的软件系统组合了上述典型的软件系统组合了上述3 3方面内容:方面内容:使用数据结构使用数据结构( (对象模型对象模型) ),执行操作,执行操作( (动态模型动态模型) ),并且,并且完成数据值的变化完成数据值的变化( (功能模型功能模型) )。本本课程

19、介程介绍UML作作为描述描述这些模型的些模型的语言言.2021/6/3329.4 对象模型n UML(Unified Modeling Language)产生于90年代中期。它不仅统一了Booch、OMT和OOSE方法中的概念和表示法,而且对其作了进一步扩展,最终成为在面向对象技术领域占主导地位的、并被大众所接受的标准建模语言。1、UML概述UML的发展历程(下图)UML是一个通用的标准建模语言,可以对任何具有静态结构和动态行为的系统进行可视化建模。UML不是一个开发过程,也不是一个方法,但允许任何一种开发过程和面向对象方法使用它。 统一建模语言统一建模语言统一建模语言统一建模语言UMLUML

20、2021/6/333UML 2.0UML 2.0UML 2.0UML 2.0UML 1.2UML 1.2UML 1.2UML 1.2UML 1.1UML 1.1UML 1.1UML 1.1UML1.0UML1.0UML1.0UML1.0UML 0.9UML 0.9UML 0.9UML 0.9Unified Method 0.8Unified Method 0.8Unified Method 0.8Unified Method 0.8UML 1.3UML 1.3UML 1.3UML 1.3UML 1.4UML 1.4UML 1.4UML 1.4199519951995199519951995文档

21、版类文档版类文档版类文档版类文档版类文档版类199619961996199619961996精华相关精华相关精华相关精华相关精华相关精华相关199719971997199719971997年年年年年年1 1 1 11 1月最月最月最月最月最月最初提交给初提交给初提交给初提交给初提交给初提交给 OMGOMGOMGOMGOMGOMG199719971997199719971997年年年年年年9 9 9 99 9月最后月最后月最后月最后月最后月最后提交给提交给提交给提交给提交给提交给OMGOMGOMGOMGOMGOMG19981998199819981998199819991999199919991

22、9991999 2000 2000 2000 2000 2000 2000年年年年年年( ( ( ( (计划的较小修订计划的较小修订计划的较小修订计划的较小修订计划的较小修订计划的较小修订) ) ) ) ) 200120012001200120012001年年年年年年计划的重要修订计划的重要修订计划的重要修订计划的重要修订计划的重要修订计划的重要修订文字上的修改没有显文字上的修改没有显文字上的修改没有显文字上的修改没有显文字上的修改没有显文字上的修改没有显著的技术变化著的技术变化著的技术变化著的技术变化著的技术变化著的技术变化2021/6/334UML事物事物关系关系图图结构事物行为事物组织事

23、物辅助事物静态图实现关系泛化关系依赖关系关联关系动态图交互状态机包注释顺序图活动图用例图实施图类图构件图对象图状态图协作图节点组件活动类协作接口类用例2021/6/3359.4 对象模型(1) 统一标准统一标准 UML统一了统一了Booch、OMT和和OOSE等方法中的基本概念,已成为等方法中的基本概念,已成为OMG的正式标准,提供了标准的面向对象的模型元素的定义和表示。的正式标准,提供了标准的面向对象的模型元素的定义和表示。(2) 面向对象面向对象 UML还吸取了面向对象技术领域中其他流派的长处。还吸取了面向对象技术领域中其他流派的长处。UML符号表符号表示考虑了各种方法的图形表示示考虑了各

24、种方法的图形表示,删掉了大量易引起混乱的、多余的和极删掉了大量易引起混乱的、多余的和极少使用的符号少使用的符号,也添加了一些新符号。也添加了一些新符号。(3) 可视化、表示能力强可视化、表示能力强 系统的逻辑模型或实现模型都能用系统的逻辑模型或实现模型都能用UML模型清晰的表示,可用于模型清晰的表示,可用于复杂软件系统的建模。复杂软件系统的建模。(4) 独立于过程独立于过程 UML是系统建模语言,独立于开发过程。是系统建模语言,独立于开发过程。(5) 易掌握、易用易掌握、易用 由于由于UML的概念明确,建模表示法简洁明了,图形结构清晰,易的概念明确,建模表示法简洁明了,图形结构清晰,易于掌握使

25、用。于掌握使用。2021/6/3369.4 对象模型对象模型表示静态的、结构化的系统的对象模型表示静态的、结构化的系统的“数据数据”性质。它是对模拟客观世界实体的对象以及性质。它是对模拟客观世界实体的对象以及对象彼此间的关系的映射,描述了系统的静态对象彼此间的关系的映射,描述了系统的静态结构。结构。用用UML表达的对象模型由类图表达的对象模型由类图(类和类间关系类和类间关系)构构成成.2021/6/3379.4.1 类图的基本符号类图描述类及类与类之间的静态关系。类图是一种静态模类图描述类及类与类之间的静态关系。类图是一种静态模型,它是创建其他型,它是创建其他UML图的基础。一个系统可以由多张

26、类图的基础。一个系统可以由多张类图来描述,一个类也可以出现在几张类图中图来描述,一个类也可以出现在几张类图中。1. 定义类UML中类的图形符号为长方形,用两条横线把长方形分成上、中、下3个区域(下面两个区域可省略),3个区域分别放类的名字、属性和服务,如右图所示。2021/6/3389.4.1 类图的基本符号为类命名时应该遵守以下几条准则:(1) (1) 使用标准术语。使用标准术语。 例如,“交通信号灯”比“信号单元”这个名字好,“传送带”比“零件传送设备”好。(2) (2) 使用具有确切含义的名词。使用具有确切含义的名词。 例如,“库房”比“房屋”或“存物场所”更确切。(3) (3) 必要时

27、用名词短语作名字。必要时用名词短语作名字。 例如,“最小的领土单元”、“储藏室”、“公司员工”等 都是比较恰当的名字。总之,名字应该是富于描述性的、简洁的而且无二义性的。2021/6/3399.4.1 类图的基本符号2. 定义属性UML描述属性的语法格式如下:可见性 属性名: 类型名=初值 性质串类的属性中还可以有一种能被该类所有对象共享的属性,称为类的作用域属性,也称为类变量。C+语言中静态数据成员就是这样的属性,在类图中表示为带下划线的属性。例如:发货单类的类变量“货单数”: -货单数:Integer2021/6/3409.4.1 类图的基本符号3. 定义服务服务也就是操作,UML描述操作

28、的语法格式如下:可见性 操作名(参数表): 返回值类型性质串参数表是用逗号分隔的形式参数的序列。描述一个参数的语法如下:参数名: 类型名=默认值当操作的调用者未提供实在参数时使用默认值。与属性类似,在类中也可定义类作用域操作:这种操作只能存取本类的类作用域属性。“- set_counters(Integer=0, Integer): Integer -1,0”2021/6/3419.4.2 表示关系的符号类与类之间通常有类与类之间通常有关联、泛化(继承)、依赖和细化关联、泛化(继承)、依赖和细化等等4种关系。种关系。1. 关联关联关联表示两个类的对象之间存在某种语义上的联系。例如,作家使用计算

29、机,我们就认为在作家和计算机之间存在某种语义连接,因此,在类图中应该在作家类和计算机类之间建立关联关系。2021/6/342(1) 普通关联普通关联是最常见的关联关系,只要在类与类之间存在连接关系就可以用普通关联表示。普通关联的图示符号是连接两个类之间的直线,如图所示。通常,关联是双向的,可在一个方向上为关联起一个名字,在另一个方向上起另一个名字(也可不起名字)。为避免混淆,在名字前面(或后面)加一个表示关联方向的黑三角。2021/6/343在表示关联的直线两端可以写上重数(multiplicity),它表示该类有多少个对象与对方的一个对象连接。重数的表示方法通常有:01表示0到1个对象0*或

30、*表示0到多个对象1+或1*表示1到多个对象115表示1到15个对象3表示3个对象如果图中未明确标出关联的重数,则默认重数是1。2021/6/344(2) 关联的角色在任何关联中都会涉及到参与此关联的对象所扮演的角色(即起的作用),在某些情况下显式标明角色名有助于别人理解类图。例如,下图是一个递归关联(即一个类与它本身有关联关系)。一个人与另一个人结婚,必然一个人扮演丈夫的角色,另一个人扮演妻子的角色。如果没有显式标出角色名,则意味着用类名作为角色名。2021/6/345(3) 限定关联限定关联通常用在一对多或多对多的关联关系中,可以把模型中的重数从一对多变成一对一,或从多对多简化成多对一。在

31、类图中把限定词放在关联关系末端的一个小方框内。例如,某操作系统中一个目录下有许多文件,一个文件仅属于一个目录,在一个目录内文件名确定了惟一一个文件。图利用限定词“文件名”表示了目录与文件之间的关系,可见,利用限定词把一对多关系简化成了一对一关系。2021/6/346(4) 关联类为了说明关联的性质可能需要一些附加信息。可以引入一个关联类来记录这些信息。关联中的每个连接与关联类的一个对象相联系。关联类通过一条虚线与关联连接。2021/6/3472. 聚集聚集也称为聚合,是关联的特例。聚集表示类与类之间的关系是整体与部分的关系。在陈述需求时使用的“包含”、“组成”、“分为部分”等字句,往往意味着存

32、在聚集关系。除了一般聚集之外,还有两种特殊的聚集关系,分别是共享聚集和组合聚集。2021/6/348(1) 共享聚集如果在聚集关系中处于部分方的对象可同时参与多个处于整体方对象的构成,则该聚集称为共享聚集。例如,一个课题组包含许多成员,每个成员又可以是另一个课题组的成员,则课题组和成员之间是共享聚集关系,一般聚集和共享聚集的图示符号,都是在表示关联关系的直线末端紧挨着整体类的地方画一个空心菱形空心菱形。2021/6/349(2) 组合聚集如果部分类完全隶属于整体类,部分与整体共存,整体不存在了部分也会随之消失(或失去存在价值了),则该聚集称为组合聚集(简称为组成)。例如,在屏幕上打开一个窗口,

33、它就由文本框、列表框、按钮和菜单组成,一旦关闭了窗口,各个组成部分也同时消失,窗口和它的组成部分之间存在着组合聚集关系。图9.11是窗口的组成,组成关系用实心菱形表示。2021/6/3503. 泛化UML中的泛化关系就是通常所说的继承关系,它是通用元素和具体元素之间的一种分类关系。具体元素完全拥有通用元素的信息,并且还可以附加一些其他信息。在UML中,用一端为空心三角形的连线表示泛化关系,三角形的顶角紧挨着通用元素。注意,泛化针对类型而不针对实例,一个类可以继承另一个类,但一个对象不能继承另一个对象。实际上,泛化关系指出在类与类之间存在“一般-特殊”关系。泛化可进一步划分成普通泛化和受限泛化。2021/6/351(1) 普通泛化普通泛化与9.2.2节中讲过的继承基本相同,对普通泛化的概念此处不再赘述。需要特别说明的是,没有具体对象的类称为抽象类。抽象类通常作为父类,用于描述其他类(子类)的公共属性和行为。图示抽象类时,在类名下方附加一个标记值abstract。2021/6/352图9.12 抽象类示例图下方的两个折角矩形是模型元素“笔记”的符号,其中的文字是注释,分别说明两个子类的操作drive的功能。2021/6/3532021/6/354部分资料从网络收集整理而来,供大家参考,感谢您的关注!

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 研究生课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号