《面向对象软件开发技术》由会员分享,可在线阅读,更多相关《面向对象软件开发技术(35页珍藏版)》请在金锄头文库上搜索。
1、第第3章章 面向对象软件开发技术面向对象软件开发技术 本章简介本章介绍面向对象程序设计语言、软件开发的方法与过程、面向对象的分析与设计的软件开发方法,面向对象的软件开发方法与UML模型的关系,对UML图在软件开发阶段所处的位置也作简要说明。 面向对象编程语言 面向对象概念的由来OOP的简史C+语言Java语言当前新推出的IDE几乎都是面向对象的,例如,Oracle9i JDeveloper,C+ Builder。软件开发的方法与过程 软件开发的方法与过程,描述了在系统开发过程中各开发阶段之间的顺序,以及从前一阶段到后一阶段的过渡原则。 软件开发的方法定义了一种设计与实现软件的方法,并确定了需要
2、执行的任务以及这些任务的输出。 过程要定义一个在组织中开发软件需要执行的任务序列,这可能会包括技术性的与非技术性的内容。 瀑布模型(Waterfall Model)。 面向对象的系统开发模型,例如,螺线模型(Spiral Model)。 结构性的方法定义了功能分解、建立数据流程图以及过程图。面向对象方法则需要建立类与对象图,建立类的状态转换图,以及建立消息序列图 瀑布模型 瀑布模型定义了软件开发周期中基本的过程和步骤,并就它们的作用与顺序提供了指导。 瀑布模型将软件系统的开发分为7个阶段:需求汇总、分析、结构设计、系统设计、实现、测试、配置并操作,如图所示。 瀑布模型 螺线模型 螺线模型是瀑布
3、模型与快速原型方法的结合,因而具有两种方法的优点。 螺线模型是由分析、设计、实现和测试4个部分组成的迭代模型,每一个周期都是一次迭代过程。每迭代一次,系统就生成一个新版本,软件开发就前进一个层次。 螺线模型提供了大型软件设计的宏观过程,在早期就注意到软件重用、软件进化和快速原型螺线模型 面向对象软件开发方法 面向对象软件开发方法就是将面向对象技术应用于软件开发的整个过程,包括OOA、OOD和OOP。 在分析阶段要确定系统做什么,要对现实世界中的概念进行抽象,构造出对象和类; 在设计阶段要确定系统如何实现预期目标,要把分析阶段的模型进行分解和细化,得到系统实施的具体方案。这样,设计的结果很容易用
4、面向对象的程序设计语言来实现。 面向对象的分析 面向对象的分析方法将软件系统描述成一组对象的集合,采用抽象的对象模型、记号系统和方法。 主要的面向对象的分析方法有:Coad与Yourdon的面向对象的分析方法、Bailin的面向对象的结构化分析方法和Shlaer与Mellor的面向对象的分析方法。 Coad与Yourdon的面向对象分析方法分为5个步骤:发现对象和类、标识结构、定义主题词、描述属性、描述外部服务(操作) 1发现对象和类 Coad与Yourdon的OOA方法中,用粗圆角的方框表示类,分为3个部分,分别放类名、属性和操作;类的对象用细的方框来表示。在使用这种方法进行分析时,不必拘泥
5、于Coad与Yourdon的表示方法,可以采用UML中的表示方法来表示类和对象。 2标识结构 在Coad与Yourdon的OOA方法中,将一般 特殊结构用半圆记号表示,一般的类在上,特殊的类在下,半圆指向一般化的类。用三角记号表示整体 部分结构,用连线连接对象,整体对象在上,部分对象在下。现在,各种方法的表示都可以统一为UML表示法,所以在标识结构时,也可以采用UML中的表示方法。 3定义主题词 在现实的系统中,往往存在大量的对象和结构,因此要加上一个主题层,对问题空间进行高度概括和总结,从一个更高的角度来考查整个系统。定义主题时,首先要找出系统中最主要的类,然后按问题的子领域来对这些候选主题
6、进行筛选,并考虑主题间的相互依赖和交互作用,使彼此的相互影响达到最小。 4描述属性属性是描述类中每个对象的特征的数据。要从有关问题领域与系统责任的描述中识别属性,并通过一般 特殊结构中的继承关系,将属性放到适当的位置。为每个属性确定一个易理解的名字,加上一些描述以及对属性说明的约束。 5. 描述外部服务一般情况下,对象包含的操作主要有:对象的创建与初始化、对象的连接、存取对象的属性值、释放对象、计算、监督等。用适当的名字来标识这些操作,并加上适当的文字或图表说明。最后,将所有的OOA文档汇集起来,包括:5层OOA模型(主题、类 对象、结构、属性和操作)、类 对象说明和必要的辅助文档。 面向对象
7、的设计 面向对象的设计是把分析阶段得到的需求转变成符合成本和质量要求的、抽象的系统实现方案的过程。从分析到设计,是一个逐渐扩充模型的过程。或者说,面向对象的设计就是用面向对象的观点建立求解域模型的过程。 Coad和Yourdon的OOD方法 Coad和Yourdon提出的OOD方法,由4部分组成:问题领域部件设计、用户界面部件设计、任务管理部件设计和数据管理部件设计。每个部件由主题词、对象及类、结构、属性和外部服务5层组成,如图所示。 设计阶段的四个组成部分 Wirfs Brock的责任驱动设计 Wirfs Brock的责任驱动设计方法,也称为CRC方法,其核心是用类所承担的责任来描述系统。这
8、种方法采用责任把封装的概念带到分析与设计的活动中去,通过客户 服务器模型来改进封装性。 可以采用CRC卡来记录初始的设计。每个类写在一张卡上,类的名字在顶部,责任写在左边,完成责任时需要为其提供服务的合作者的类名写在责任的右边,如图所示。 CRC卡 Booch的OOD 其方法主要包括以下步骤:(1)标识类与对象。(2)标识类与对象的语义。(3)标识类与对象之间的关系。(4)实现类与对象。 对象模型化技术 OMT以面向对象思想为基础,通过构造一组相关的模型来确定系统的需求、有关的设计和实现原则,再将问题领域的分析模型变换成实现领域的计算机模型。 在OMT方法中,主要用到3种面向对象软件模型:对象
9、模型、动态模型和功能模型对象模型化技术对象模型主要描述系统中对象的静态结构,表示系统中的对象、类及之间的静态联系,包括分析对象模型和设计对象模型。分析对象模型描述了问题领域中的类、类的属性、操作以及类之间的继承、聚集和关联关系。设计对象模型描述了实现领域中的类、类的属性、方法和类之间的继承、聚集和依赖等关系。 对象模型化技术在UML中,将各种方法使用的符号进行了统一,因此现在可以使用UML表示法来描述对象模型。 动态模型描述了系统中的动态行为,即与时间有关的方面以及操作发生的顺序。动态模型用状态转换图表示,每个状态转换图描述了系统中对一个类的对象允许的事件和状态序列。图中的事件对应于对象模型中
10、的操作,而动作则对应于功能模型中的功能。 对象模型化技术功能模型用数据流图来表示,描述了系统中与值转换有关的情况,包括函数、映射、约束和功能性依赖。动态模型和功能模型都是对象模型的补充。 OMT设计方法包括分析、系统设计和对象设计3个步骤。 对象模型化技术分析阶段要对描述系统需求的问题陈述进行处理,产生一个形式化的模型,描述系统中的对象、对象之间的关系、动态的控制流和数据的函数性转换。系统设计阶段决定系统的整体结构,以对象模型为依据,将系统划分成子系统,并实现并发在对象设计阶段,要设计系统中主要函数的实现算法,对分析模型进行求精和优化,产生一个实用的设计方案。 设计模式 设计模式通常包括模式的
11、描述、UML图,模式要解决的问题范围、范例代码、其他竞争的设计模式选择、这些选择中的有关协定等。设计模式正在成为通用的解决方案,因为它很容易应用于特殊的软件开发项目之中 UML模型和视图 UML(Unified Modeling Language,统一建模语言)是一种用于建立商业模型及软件系统模型的标准语言和图形符号,它能以图表方式对软件系统进行可视化描述,是“软件分析与设计中的标准语言”。 UML定义了一种抽象的用来描述软件系统结构和行为的语言,还定义了一种标准的用来建立模型元素视图的图形符号。一般地,可以将UML标准图分为结构图和行为图。 1UML结构图 (1)类图(Class Diagr
12、ams) 描述系统中一组类和接口间的静态关系,这些关系既包括类之间的继承关系,也包括类之间的关联关系。(2)对象图(Object Diagrams) 提供在指定时刻位于类实例间的关系的快照视图。在以一种静态的方法保存并说明系统内复杂的动态时,对象图会很有用。 (3)组件图(Compenent Diagrams) 描述系统的静态实现视图,显示了一组组件和它们之间的关系。组件代表的是模型中逻辑抽象的物理实现,例如,类和它们的交互。(4)部署图(Deployment Diagrams) 描述在一个系统结构视图中物理节点的链接,节点是为执行一个或多个组件提供物理操作环境的计算资源。 2UML行为图 (
13、1)用例图(Use Case Diagrams) 通过描述一组用例与其执行者之间的关系,为系统、子系统或类的行为建立模型。(2)活动图(Activity Diagrams) 显示了一个系统的活动流,包括从活动到活动的连续流,以及执行这些活动或由这些活动产生的对象。 (3)状态图(Statechart Diagrams) 描述一系列对象的内部状态以及状态的变化和转移,常用于给对象的事件顺序行为建模。(4)顺序图(Sequence Diagrams) 通过强调消息的时间顺序,描述对象间的相互关系。这些对象是类的典型实例,且可以描述其他的分类者,例如,执行者、组件或节点。(5)协作图(Collaboration Diagrams)描述对象间的相互关系,但强调的是负责接收与发送消息的对象的结构组织。 UML图与软件开发阶段 本章小结 明确UML图在软件开发阶段所处的位置,对于将UML图正确地应用于软件开发的各个阶段是非常重要的。UML正在成为用来描述软件系统的标准语言,并且在实践中已经被认可,不再仅仅是一种正式的理论标准。这一事实为UML建模工具提供了快速发展和进行良性竞争的动力,一些开放源代码工程也开发出了免费的UML建模工具。