收藏 分享(赏)

面向对象技术第四章.ppt

上传人:myw993772 文档编号:8027949 上传时间:2019-06-05 格式:PPT 页数:56 大小:514.50KB
下载 相关 举报
面向对象技术第四章.ppt_第1页
第1页 / 共56页
面向对象技术第四章.ppt_第2页
第2页 / 共56页
面向对象技术第四章.ppt_第3页
第3页 / 共56页
面向对象技术第四章.ppt_第4页
第4页 / 共56页
面向对象技术第四章.ppt_第5页
第5页 / 共56页
点击查看更多>>
资源描述

1、第 四 章,面向对象的技术,4.1 面向对象的基本概念,面向对象的思想最初出现于挪威奥斯陆大学和挪威计算机中心共同研制的Simula 67语言中,其后,随着位于美国加利福尼亚的Xerox研究中心推出的Smalltalk-76和80语言,面向对象的的程序设计方法得到了比较完善的实现。此后,面向对象的概念和应用已超越了程序设计和软件开发,扩展到很宽的范围;如数据库系统,交互式界面,分布式系统,网络管理结构和人工智能等领域。一些新的工程概念及其实现,如并发工程,综合集成工程等也应用到面向对象的概念,所以面向对象的技术已成为软件开发的一种新方法,新技术。,4.1 面向对象的基本概念,4.1.1 什么是

2、面向对象的开发方法,4.1.1 什么是面向对象的开发方法 OOSD (Object-Oriented Software Development)法是一种 把面向对象的思想应用于软件开发过程,指导开发活动的系统方法。,面向对象的方法是一种运用对象、类、继承、封装、聚合、消息传送、多态性等概念来构造系统的软件开发方法。,什么是面向对象根据Coad 和 Yourdon 的定义,按照以下4个概念设计和实现的系统,称为是面向对象的。 面向对象=对象 (object)+类 (classification)+继承(inheritance)+通信 (communication with messages),面

3、向对象技术的特点 1、对软件开发过程所有阶段进行综合考虑。 2、软件生存期各阶段所使用的方法、技术具有高度的连续性,用符合人类认识世界的思维方式来分析、解决问题。 3、将OOA、OOD、OOP有机地集成在一起。 OOA(Object-Oriented Analysis)OOD(Object-Oriented Design)OOP(Object-Oriented Program),4.1.1 什么是面向对象的开发方法,理解面向对象的基本概念对于学习和掌握面向对象的开发方法是十分重要的。,4.1.2 面向对象的概念,4.1.2 面向对象的基本概念,1、 对象(Object)对象(Object)是客

4、观事物或概念的抽象表述,即对客观存在的事物的描述统称为对象,对象可以是事、物、或抽象概念 ,是将一组数据和使用该数据的一组基本操作或过程封装在一起的实体。对象都存在一定的状态(state),内部标识(identity),可以给对象定义一组运算(operation),对象通过其运算所展示的特定行为称为对象行为(behavior),对象本身的性质称为属性(attribute),对象将它自身的属性及运算“包装起来”,称为“封装”(encapsulation).对象的最基本的特征是封装性和继承性。,4.1.2 面向对象的基本概念,2、 类(Class) 类又称对象类(Object Class),是一组

5、具有相同属性和相同操作的对象的集合。在一个类中,每个对象都是类的实例(instance) ,它们都可以使用类中提供的函数。 类具有属性,用数据结构来描述类的属性,类具有操作,它是对象的行为的抽象,操作实现的过程称为方法(method) ,方法有方法名,方法体和参数。,4.1.2 面向对象的概念,由于对象是类的实例,在进行分析和设计时,通常把注意力集中在类上,而不是具体的对象上。,图4.1 对象类的描述,对象和类的描述对象和类一般采用“对象图” 和 “类图” 来描述。,对象,类,4.1.2 面向对象的概念,对象和类的描述,3、 继承 (Inheritance)继承是使用现存的定义作为基础,建立新

6、定义的技术。是父类和子类之间共享数据结构和方法的机制,这是类之间的一种关系。在定义和实现一个类的时候,可以在一个已经存在的类的基础上来进行,把这个已经存在的类所定义的内容做为自己的内容,并加入若干新内容。继承性分:单重继承:一个子类只有一个父类。即子类只继承一个父类的数据结构和方法。多重继承:一个子类可有多个父类。继承多个父类的数据结构和方法。,4.1.2 面向对象的概念,现存类定义父类(基类),新类定义子类(派生类),继 承,图 4.3 继承性,4、消息(Message) 消息就是向对象发出的服务请求(互相联系、协同工作等)。对象之间的联系可表示为对象间的消息传递,即对象间的通讯机制。一个消

7、息应该包含以下信息:消息名、接收消息对象的标识、服务标识 、消息和方法、输入信息、回答信息。,注意:在并发系统中,多个控制线程(Thread of Control)并发执行,情况就复杂得多,消息可以是发出服务请求、提交数据、发布事件信息、或是传递同步控制信息。,在对象的操作中当一个消息发送给某个对象时,消息包含接收对象去执行某种操作的消息。,4.1.2 面向对象的概念,4、消息(Message),4.1.2 面向对象的概念,图4.5 对象、类和消息传递,5、多态性和动态绑定多态性(Polymorphism)是指相同的操作或函数,过程作用于不同的对象上并获得不同的结果。即相同的操作的消息发送给不

8、同的对象时,每个对象将根据自己所属类中所定义的操作去执行,故产生不同的结果。例如: “绘图”操作,作用在“椭圆” 和“矩形” 上,画出不同的图形。动态绑定(dynamic binding)是在运行时根据对象接收的消息动态地确定要连接的服务代码。,4.1.2 面向对象的概念,6、永久对象(Persistent object)所谓永久对象是指生存期可以超越程序的执行时间而长期存在的对象。目前,大多数OOPL不支持永久对象,如果一个对象要长期保存,必须依靠于文件系统或数据库管理系统实现,程序员需要作对象与文件系统或数据库之间数据格式的转换,以及保存和恢复所需的操作等烦琐的工作。为了实现永久对象,使上

9、述烦琐工作由系统自动完成,需要较强的技术支持;需要一个基于永久对象管理系统OMS(object management system),能够描述和处理永久对象的编程语言。,4.1.2 面向对象的概念,图4.6 面向对象开发过程的应用生存期模型,OOA,应用生存期 在面向对象开发的各个阶段,开发的“部件”都是类,因此面向对象的各个阶段都是对类的信息进行细化。类是分析、设计和实现的基本单元。,虽然图中各阶段的顺序是线性的,但实际过程的交错和相互作用要复杂得多。,OOD,其主要开发过程如下: 论域分析(domain analysis) 应用分析(application analysis) 高层设计、下

10、层设计 类的设计-对象设计,4. 面向对象的开发过程,4.面向对象的开发过程,4.3 面向对象的分析,2.3 面向对象的分析,面向对象分析OOA(Object-Oriented Analysis)的目标是完成对所求解问题的分析,确定系统“作什么”,并建立系统的模型。,OOA的基本任务 运用面向对象的方法,对问题域和系统责任进行分析和理解,找出描述它们的类和对象,定义其属性和操作,及其结构、静态联系和动态联系。,OOA面临的问题: 1、问题域和系统责任问题问题域(problem domain) 被开发系统的应用领域。系统责任(system responsibilities) 所开发的系统应具备的

11、职能。 2、交流问题(各类人员之间的要求) 3、需求的不断变化(用户、竞争因素、经费、技术因素),4.3.1 OOA分析过程,1、获取用户基本需求用户与开发者之间进行充分交流,常用User case来收集和描述用户的需求。即先标识使用该系统的不同的行为者(actor)。,4.3.1 OOA的分析过程1,行为者所提出的每个使用场景(或功能)称为一个用例,所有的用例则构成完整的系统需求。,图4.7 OOA分析过程,4.3.1 OOA分析过程,2、标识类和对象标识类与对象是一致的。在确定系统的用例后,可标识类及类的属性和操作。,4.3.1 OOA的分析过程2,确定最终对象可根据以下原则确定:需要保留

12、的信息,需要的服务,具有多个属性,具有公共属性及操作。,从问题域或用例描述入手,发现对象。对象可能的形式有:外部实体 、事物、发生的事件、角色、组织单位、场所、构造物等。,标识属性从本质上讲,属性定义了对象。可从问题的陈述中或通过对类的理解而标识出属性。,定义操作操作定义了对象的行为并以某种方式修改对象的属性。操作分为:对数据的操作,计算操作,控制操作。,4.3.1 OOA分析过程,3、定义类的结构和层次 类的结构有:一般特殊 (generalization - specialization)结构整体部分(whole-part)结构,4.3.1 OOA的分析过程3,构成类图的元素所表达的模型信

13、息,分为三个层次:对象层给出系统中所有反映问题域和系统责任的对象。特征层给出类(对象)的内部特征,即类的属性和操作。关系层给出各类(对象)之间的关系,包括继承、组装、一般特殊 、整体部分、属性的静态依赖关系,操作的动态依赖关系。,对象层,特征层,关系层,图4.8 OOA基本模型,4.3.1 OOA分析过程,用“对象-关系模型”描述了系统的静态结构。 5、建立对象-行为模型描述了系统的动态行为。,4、建立类(对象)间的关系,4.3.2 OOA模型及详细说明,4.3.2 OOA模型及详细说明,完整的OOA模型分为基本模型和补充模型以及详细说明。,一、 基本模型 基本模型是一个类图(class di

14、agram),是以直观的方式表达系统最重要的信息。OOA基本模型的三个层次分别描述了:系统中应设哪几类对象,每类对象的内部构成,对象与外部的关系。,二、 补充模型 补充模型有主题图和交互图。 1、主题(subject)又称为子系统(subsystem)是将一些联系密切的类组织在一起的类的集合。按照粒度控制原则,将系统组成几个主题,便于理解。主题图画出了系统的主题。 2、交互图(interaction diagram) 是Use case与系统成分之间的对照图。,4.3.2 OOA模型及详细说明,4.3.2 OOA模型及详细说明,三、 详细说明 按照分析方法所要求的格式,对分析模型进行说明和解释

15、。主要以文字为主。,图4.9 OOA模型与详细说明,4.4 面向对象的设计,面向对象的设计OOD(Object-Oriented Design)是面向对象方法在软件设计阶段应用与扩展的结果。是将OOA所创建的分析模型转换为设计模型,解决如何作的问题。OOD与OOA没有明显的分界,采用相同的符号。,4.4 面向对象的设计,4.4.1 OOD步骤 1、系统设计 将分析模型划分为若干子系统,子系统应该具有良好的接口,子系统内的类相互协作。标识问题本身的并发性,为子系统分配处理器。 2、对象设计 为每个类的属性和操作进行详细设计,包括属性和操它们的数据结构和实现算法。 3、消息设计设计连接类与它的协作

16、者之间的消息规约(specification of the messages)。 4、复审,4.4.1 OOD步骤,4.4.2 OOD模型,4.4.2 OOD模型,OOD模型分为4个部分,一、面向对象设计准则:1)模块化 2)抽象 3)信息隐藏 4)弱耦合 5)强内聚 6)可重用,二、面向对象设计的主要内容有:1)设计问题域组元2)设计人机交互组元3)设计任务管理组元4)设计数据管理组元,图4.10 设计模型,二、类的生存期系统开发的各个阶段都会标识新的类,但各阶段所标识的类的作用是不同的。主要步骤为:,图4.11 类的生存期模型,、实现 通过实例的声明、操作界面的实现及支持界面操作的函数的实

17、现,可实现一个类的行为和状态。、测试 类的测试以单个类为单元,沿继承关系自顶而下进行,新类可以完全测试,而已测试的部分无需再测试。、求精和维护 类由于封装和实现的隐蔽而具有较高的独立性,便于增加新操作、修改实现、改进性能。,1、类的规格说明 是要标识类,并给出它的规格说明。包括类的实例可执行的操作和数据表示。 2、设计 是将分析阶段产生的结构作为输入,确定类的其它属性,给出类的其它细节。,1、Coda方法 由OOA,OOD构成 主要建立问题域的分析模型。该模型由5个层次组成:即主题层、对象层、结构层、属性层和服务层。要建立4个组元的设计模型:问题域组元、人机交互组元、任务管理组元和数据管理组元

18、。该方法的特点是:简单、易学,对于对象、结构、服务的认定较系统、完整、可操作性强。其开发模型包括静态模型和动态模型,静态模型分为逻辑模型和物理模型,描述了系统的构成和结构,动态模型分为状态图和时序图。,随着面向对象开发方法的发展,逐渐形成了三个主要的流派:即Coda方法, Booch方法和 OMT方法。,4.5 coda方法,4.5 coda方法,4.5.1 Coda方法的OOA,4.5.1 Coda方法的OOA,在Coda方法中,构造和评审OOA概念模型的顺序由五个层次组成。这五个层次不是构成软件系统的层次,而是分析过程中的层次,即分析的不同侧面。这五个层次是:类与对象、属性、服务、结构和主

19、题。图2.7给出了每个层次中所涉及到主要概念和相应的图形表示。,4.5.1 Coda方法的OOA,下面给出一些应用实例:,图4.13 服务层的例子,4.5.1 Coda方法的OOA,4.5.2 Coda方法的OOD,在Coad方法,面向对象的设计模型是在面向对象的分析模型的5个层次基础上,建立系统的4个组成成分(组元),4个组元对应于面向对象设计的4个主要活动步骤:,2.5.2 Coda方法的OOD,图4.15 Coda OOD模型,1)设计问题域组元(problem domain component) 2)设计人机界面组元(human interaction component) 3)设计任

20、务管理组元(task management component) 4)设计数据管理组元(data management component),Booch方法的开发模型包括静态模型和动态模型,静态模型分为逻辑模型和物理模型,描述了系统的构成和结构,动态模型分为状态图和时序图。该方法对每一步都作了详细的描述,描述手段丰富、灵活。不仅建立了开发方法,还提出了设计人员的技术要求,不同开发阶段的资源人力配制。,4.6 Booch方法,4.6 Booch方法,4.6.1 Booch方法的基本模型,4.6.1 Booch方法的基本模型,一、静态模型 1、类图,对象图由对象和消息组成,2、对象图,4.6.1

21、Booch方法的基本模型,图4.18 温室管理系统的对象图,图4.17 对象图的表示,3、状态图,4.6.1 Booch方法的基本模型,图4.19 环境控制器类的状态图,图2.13 状态图的表示,4、时序图,5、模块图,4.6.1 Booch方法的基本模型,6、进程图,图4.21 温室管理系统的模块图,图4.22温室管理系统的进程图,面向对象的方法学又称为对象模型技术,OMT( Object Model Technology)是一种软件工程方法学,支持整个软件生存周期,它覆盖了问题构成、分析、设计和实现等阶段。OMT方法使用了建模的思想,讨论如何建立一个实际的应用模型。从3个不同而又相关的角度

22、建立了三类模型:对象模型、动态模型和函数模型,OMT为每一个模型提供了图形表示。,4.7 面向对象的建模技术(OMT),4.7 面向对象的建模技术(OMT),4.7.1 对象模型技术的基本概念,OMT 方法讨论的核心就是建立三类模型: 对象模型描述了由对象和相应实体构成的系统静态结构,描述了系统中对象的标识,属性、操作及对象的相互关系,该模型使用了对象图来描述,它是分析阶段3个模型的核心,提供了其它两类模型都适用的框架。动态模型根据事件和状态描述了系统的控制结构,系统中与时间和操作顺序有关的内容。如:标记变化的事件,事件的顺序,定义事件背景的状态等。函数模型着重描述系统中与值的转换有关的问题,

23、如函数、映射、约束和函数作用等。三类模型描述的角度不同,却又相互联系。,4.7.1 对象模型技术的基本概念,4.7.2 建立对象模型,建立对象模型通常有五个层次: 1)确定类&对象类和对象是在问题域中客观存在的,系统分析员的主要任务,就是通个分析找出这些类和对象。 2)确定关联两个或多个对象之间的相互依赖,相互作用的关系就是关联,分析确定关联,要考虑问题域的边缘情况。 3) 划分主题将大型、复杂系统进一步划分成为不同的主题,以降低系统的复杂,4) 确定属性属性是对象的性质,一般确定属性的过程包括分析和选择两个步骤。5) 识别继承关系确定了类中应该定义的属性之后,就可以利用继承机制共享公共性质,

24、并对系统中众多的类加以组织。一般使用自底向上和自顶向下两种方式建立继承关系。,4.7.2 建立对象模型,4.7.3 对象图和类图,类的描述:,人 姓 名:字符串 年 龄: 整 型 改换工作 改换地址,文件 文件名 文件大小 最近更新日期 打印,对象的描述:,4.7.3 对象和类的描述,属性:属性名、补充细节。 操作:应用于类中对象或被类中对象使用的一种功能或者转换,包含操作允许的参数。,图4.24 对象的一般描述,对象图与类图 对象与类是构成对象模型的基本元素,图4.23给出了类图的一般描述形式,由类名、属性和操作三部分组成,属性和操作还可作进一步的描述。图4.24则是对象图的一般描述。,4.

25、7.3 对象和类的描述,4.7.4 链和关联,4.7.4 链和关联,关联,链,图 4. 26 链与关联,建立对象模型,必须要描述构成系统的对象之间的联系,链(Link)和关联(association)都是建立对象和类之间关系的手段。链 表示两个(或多个)对象之间的关系。关联 描述具有公共结构和语义的一组链。关联是描述两个或多个类之间的关系,链是关联的实例(程序设计中,关联常用一个对象到另一对象的指针实现。)。,4.7.4 链和关联,两个类之间的关联称为二元关联,三个类之间的关联称为三元关联。,如果对关联的含义作出某种限制,称为受限关联。,一、关联,二、重 数,也可在连线上标注数字表示重数。 “

26、1” 表示只有1个 “1+” 表示1个或多个 “3 5” 表示 3个到5个之间 “2,4,15” 表示2个,4个或15个,引入重数进一步描述类之间的关联,也称关联的多重性。表示一个类中有多少个实例与一个相关类的某一例子有关,重数限定了相关对象的个数。,2.7.4 链和关联,三、链属性链属性是关联中链的性质,链的每一个属性都有一个值。如图4.34所示,链属性的OMT符号是一个盒子。,可进一步说明可访问(关联)性。D:edcdate1.Dat(读-写) 李红D:( 读) 张立,角色说明类在关联中的作用和角色,常与附加链属性一起进一步描述对象之间的联接(图2.30)。,4.7.4 链和关联,可用聚集

27、来代表整体与部分的关系(图2.31),还可构成不同层次的多级聚集关系(图2.32)。,4.7.4 链和关联,4.7.5 继承性(Inheritance),概括描述了类和具体实例之间的关系。,4.7.5 继承性,继承是使用现存的定义作为基础,建立新定义的技术。继承性通常又称为概括,表示基类与子类的关系。子类的公共属性和操作归属于基类,并为每个子类共享,子类继承了基类的特征。 继承性分:单重继承、多重继承。,运输工具,陆上运输工具,水上运输工具,汽车,水陆两用车,船,图4.38 继承关系,继承性的实例,图4.39 继承性实例,4.7.6 建立动态模型,动态模型着重于系统的逻辑结构;描述某时刻对象及

28、其联系的改变。包括状态图和事件追综图。,一、事件和状态 状态 对象所具有的属性值,具有时间性和持续性。 事件 对于对象的触发行为,指从一个对象到另一个对象的信息的单向传递。 脚本在系统的某一执行期间内的一系列事件。在系统中具有属性值、链路的对象,可能相互激发,引起状态的一系列变化。,有的事件传递的是简单信号,有的事件则传递的是数据值。由事件传送的数据值称为“属性”。,4.7.6 建立动态模型,二、状态图,状态图是一个状态和事件的网络,侧重于描述每一类对象的动态行为,状态的迁移。,状态A 活动,状态B,状态A / 操作,事件B条件,起始状态,终结状态,状态图,动态模型由多个状态图组成,每个有重要

29、行为的类都有一个状态图。各状态图可并发地执行及独立改变状态。,菜单消失,菜单显示,按下右键/菜单显示,释放右键/擦去菜单,图例 状态 状态迁移,状态,4.7.6 建立动态模型,三、事件追踪图,事件追踪图侧重描述系统执行过程中的一个特定的“场景(Scenarios)”。场景有时也叫“脚本”,是完成系统某个功能的一个事件序列。即是描述多个对象的集体行为。,脚本系统某一次特定运行时期内发生的事件序列。例如:打电话的场景:,1、拿起电话受话器 12、打电话者听见振铃声 2、电话忙音开始 13、对方接电话 3、拨电话号码数5 12、接话方停止振铃 4、电话忙音结束 14、打电话方停止振铃声 5、拨电话号

30、码数5 15、通电话 6、拨电话号码数5 16、对方挂电话 7、拨电话号码数1 17、电话切断 8、拨电话号码数2 18、打电话者挂电话 11、对方电话开始振铃,4.7.6 建立动态模型,打电话的事件追踪图,打电话者 电话线 接电话者,拿起接收器 拨号音开始 拨号(5) 忙音结束 拨号(5) 拨号(5) 拨号(1) 拨号(2) 拨号(3) 拨号(4) 拨号(8) 铃声铃声停止 电话连通电话断开 打电话者挂机,铃声 受话方回答 铃声停止 电话连通 受话方挂机 电话断开,打电话者,打电话的事件追综图,4.7.6 建立动态模型,电话线状态图,4.7.6 建立动态模型,图4.40 打电话状态图,功能模

31、型着重于系统内部数据的传递与处理。定义“做什么?”的问题,表明值之间的依赖关系及其相关的功能。描述手段为分层数据流图,DFD图有助于表示功能的依赖关系,其中的处理对应于状态图的活动和动作,数据流对应于对象图中的对象或属性。建立功能模型的步骤为:1) 确定输入值,输出值先列出输入输出值,输入输出值是系统与外部世界之间的事件参数。检测问题陈述,从中找到遗漏的所有输入输出值。2) 建立数据流数据流图说明输出值是怎样从输入值得来的。数据流图通常按层次组成,最顶层由单个处理组成,也可由数据输入计算值及生成结果的一个综合处理构成。,4.7.7 建立功能模型,4.7.7 建立功能模型,3) 描述处理当数据流

32、图已细化到一定程度后,对各处理进行描述,描述的方式用自然语言,伪码及判断树等。描述可以是说明的或过程的。 4) 确定对象的约束约束是那些不存在输入输出关系的对象之间的函数依赖,同一时间内约束可以出现于两个对象中,约束也可以在一个对象不同时间中,或不同时间的不同对象中,函数的前置条件是输入值必须满足的约束,而后置条件则是输出承受的约束。 5)添加操作操作与对象模型中属性和关联查询,与动态模型的事件及与功能模型的处理有关,关键操作应归结到对象模型中,所添加的操作如下:,对象模型中的操作。 来自事件的操作。 来自状态上的活动的操作。 来自处理的操作。,4.7.7 建立功能模型,4.8 面向对象的软件

33、工程(OOSE),OOSE将面向对象的思想应用于软件工程中,建立五个模型:1、需求模型(RM)2、分析模型(AM)3、设计模型(DM)4、实现模型(IM)5、测试模型(TM),4.8 面向对象的软件工程(OOSE),OOSE的开发活动主要分为三类:分析、构造和测试。,用例(Use case)是OOSE中的重要概念,在开发各种模型时,用例贯穿了OOSE活动的核心,描述了系统的需求及功能。,4.8 面向对象的软件工程(OOSE),图4.41 用例图,分析模型 use case模型通过分析来构造。 设计模型 use case模型通过设计来具体化。 实现模型 该模型依据具体化的设计来实现use case模型。 测试模型 用来测试具体化的use case模型。,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报