资源预览内容
第1页 / 共53页
第2页 / 共53页
第3页 / 共53页
第4页 / 共53页
第5页 / 共53页
第6页 / 共53页
第7页 / 共53页
第8页 / 共53页
第9页 / 共53页
第10页 / 共53页
亲,该文档总共53页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
面向对象软件开发,面向对象技术是一个有全新概念的开发模式,其特点是: 方法是对软件开发过程所有阶段进行综合考虑而得到的; 从生存期的一个阶段到下一个阶段所使用的方法与技术具有高度的连续性; 将OOA、OOD、OOP集成到生存期的相应阶段。,面向对象软件开发,面向对象的分析:建立应用领域的面向对象模型,识别出的对象反映了与待解决问题相关的一些实体及操作。 面向对象的设计:建立软件系统的面向对象模型,这个软件系统能实现识别出的需求。在面向对象设计的对象与要解决问题的答案是关联的。虽然两者存在密切的关系,但设计者有时不得不通过增加新的对象和转换问题对象的方法来实现答案。 面向对象的程序设计:使用面向对象的成语设计语言来实现软件设计。面向对象的程序语言支持对象的直接实现和提供设施来定义对象。,面向对象分析 OOA,面向对象分析方法确实不同于结构化分析方法吗? Fichman and Kemerer 在“Object-oriented Conventional Analysis and Design Methodologies” 中阐述: 我们的结论是面向对象分析方法表现了相对面向过程的方法学(如结构化分析)的根本性变化,而且相对面向数据的方法学仅仅是增量性的变化。面向过程的方法学在建模过程中的关注点不是对象的内在性质,从而导致了和面向对象的三个基本原理相正交的问题域模型。,OOA,OOA方法使得软件工程师能够定义待解决问题的类和对象,类之间的相互关联的方式,对象的内部结构(属性和操作),以及允许对象在一起工作的通信机制(消息)来对问题域进行建模。 OOA的目标是开发一些列的模型,这些模型描述软件系统,以满足用户需求。与结构化分析方法的目标是一致的。,OOA,建立分析模型5个基本原则: (1)建模信息域; (2)描述模块功能; (3)表示模型行为; (4)分解数据、功能和行为模型 以表示更多细节; (5)早期模型表示问题的本质, 而后期模型提供 实现细节。,OOA,OOA的意图是提供系统的精确、简明、易理解的面向对象模型,也就是“蓝图”自动化。为了达到这个目标,必须完成以下任务: 1. 必须在客户和软件工程师之间沟通, 了解基本的用户需求; 2. 必须标识类(定义属性和方法); 3. 必须刻划类的层次结构; 4. 表示对象与对象关系(关联); 5. 必须建模对象行为; 6. 任务1到5迭代反复使用,直至完成建模。,OOA建模方法,建模方法过程标记工具 过程:说明如何收集需求并确定要建模的提炼。 标记:用于交流模型的一种图形“语言”。 工具:使标记工作自动化, 一般使用“Drag and Draw”方式。 过程是最重要的,然后是标记,工具是三者中重要性最低的。,流行的几种建模方法,Booch方法 Coad-Yourdon方法 James Rumbaugh方法 (Object Modeling Technology, OMT) Jacobson方法(简称OOSE) ESA的HOOD方法 Wirfs-Brook的RDD方法 由Rumbaugh, Booch, Jacobson 提出的统一建模语言(Unify Modeling Language, UML),Booch方法,Booch方法包含微开发过程和宏开发过程。微级别定义一组分析任务在宏过程中的每个步骤中被反复应用。其宏过程包括: 标识类和对象 标识类和对象的语义 标识类和对象间的关系 进行精化,Jacobson方法,Jacobson方法提出面向对象的软件工程OOSE,强调use case,描述用户和产品或系统之间如何交互的场景scenario.,Coad/Yourdon方法,Coad/Yourdon的OOA过程概述: 使用“寻找什么”标准来标识对象 定义一般/特殊结构 定义整体/部分结构 标识主题(子系统构件的表示) 定义属性 定义服务,Rumbaugh方法 (OMT),Rumbaugh的OOA过程概述: 开发对问题的范围陈述 建造对象模型 开发动态模型 构造系统的功能模型,统一的OOA方法,Rumbaugh, Booch, Jacobson提出的统一建模语言(Unify Modeling Language, UML)。 UML是一种定义良好,易于表达,功能强大且普遍实用的建模语言。,OOA建模,不同面向对象分析方法的相似步骤: (1)获取系统的用户需求; (2)标识场景scenario或用例usecase; (3)使用基本需求作为指南,选择类和对象; (4)为对象定义属性和操作; (5)定义类的结构和层次; (6)建造对象-关系模型; (7)建造对象-行为模型; (8)根据usecase来评审OOA模型。,构造OOA概念模型的层次,构造和评审OOA概念模型的顺序和由五个层次组成。 这五个层次是分析过程中的层次。 每个层次的工作都为系统的规格说明增加了一个组成部分。 这五个层次是:类与对象、属性、服务、结构和主题。,识别类和对象,面向对象分析的第一个层次主要是识别类和对象。 类和对象是对与应用有关的概念的抽象。不仅是说明应用问题的重要手段,同时也是构成软件系统的基本元素。这一层工作是整个分析模型的基础。 识别开始于搜索选定的问题陈述,标识可以表示问题论域概念的术语。 对它们进行评估。,选择类和对象的原则:,对象类应当提供某些服务或处理 多属性 所有属性对于类中所有实例都应有意义 对象类应表示问题论域的需求 排除不必要的类和不正确的类: 冗余类 模糊类 不相干的类,标识结构,面向对象分析的下一步工作是标识结构。典型的结构有两种: 一般化-特殊化结构(Gen-Spec结构) 整体-部分结构(Whole-Part结构),一般化-特殊化结构,整体-部分结构,以特殊化的视点来看,一个 Gen-Spec 结构可以看作是 “is a” 或 “is a kind of” 结构。例如, a Truck Vehicle is a Vehicle a Truck Vehicle is a kind of Vehicle 在 Gen-Spec 结构中,使用继承将较一般化的属性和服务放在一般化的类和对象中。,从整体的视点来看,一个 Whole-Part 结构可看作一个 “has a” 或 “is a part of” 结构。例如, Vehicle has a Engine Engine is a part of Vehicle 其中,Vehicle是整体对象,Engine是局部对象。,标识Gen-Spec结构的方法和策略,对于每一个类和对象,将它看作是一个 一般化的类,对它的所有特殊情况,考虑以下问题: 它是否在问题论域中? 它是否在系统的职责内? 继承性是否存在? 它是否能够符合选择类和对象的标准?,同样地,把每一个类和对象置于特殊化对象的地位,对于它所有的一般化情形,考虑上述4个问题。 检查以前在相同或类似问题论域中面向对象分析的结果,看是否有可直接复用的Gen-Spec 结构。 如果一个一般化对象可能有多个特殊化对象,应当先考虑最简单的特殊化对象和最复杂的特殊化对象,然后再考虑中间其他的特殊化对象。,标识Whole-Part结构的方法和策略,应当寻找什么 总体-部分(Assembly-Parts)关联,如飞机-发动机之间的关系。 包容-内含(Container-Content)关联,如飞机-飞行员之间的关系。 收集-成员(Collection-Members)关联,如机构-职员之间的关系。,将每一个类看作是一个Whole类,对它的所有可能Parts情况,考虑以下问题: 它是否在问题论域中? 它是否在系统的职责内? 它是否代表一个以上的状态值? 若不是,是否将它变为Whole中的一个属性? 它是否提供问题论域中有用的抽象?,同样地,把每一个类置于Part 的地位,对于它所有的Whole情形,考虑上述5个问题。 检查以前在相同或类似问题论域中面向对象分析的结果,看是否有可直接复用的Whole-Parts结构。,标识属性,下一个层次称为属性层,对前面已识别的类和对象做进一步的说明。在这里,对象所保存的信息称为它的属性。 类的属性所描述的是状态信息,每个实例的属性值表达了该实例的状态值。,属性层,标识属性的方法和策略,每个对象至少需包含一个属性 属性取值必需适合对象类的所有实例 出现在Gen-Spec关系中的对象所继承的属性必须与Gen-Spec关系一致。子对象不能继承那些不是为该子对象定义的属性。所继承的属性必须在应用论域中有意义。 所有系统的存储数据需求必须定义为属性,标识属性的方法和策略,每个对象至少需包含一个属性 属性取值必需适合对象类的所有实例 出现在Gen-Spec关系中的对象所继承的属性必须与Gen-Spec关系一致。子对象不能继承那些不是为该子对象定义的属性。所继承的属性必须在应用论域中有意义。 所有系统的存储数据需求必须定义为属性,标识实例连接关系,标识完实例连接后调整对象,如果有多对多的实例连接,则可能需要增加一个新的“交互”对象。 对于同一个类各个实例之间的实例连接,若有属性描述它,则应建立新的类或对象。如“婚姻”是人与人间的关系,除了对象“人”外,还需建立“婚姻”事件对象。 如果两个类之间有两个或两个以上的实例连接时,可能需要加入一个类或对象来区分这些实例连接的含义。,定义服务,对象收到消息后所能执行的操作称为它可提供的服务。 对每个对象和结构的增加、修改、删除、选择等服务有时是隐含的,在图中不标出,但在存储类和对象有关信息的对象库中有定义。 其它服务则必须显式地在图中画出。,服务层,定义服务的方法和策略,找出每一个对象的所有状态,在各种状态需要做的工作。 利用状态迁移图,找出必要的操作。 建立消息连接。 描述服务:利用状态转换图、脚本和事件追踪图,描述服务的功能。,消息连接的标识,两个对象之间可能存在着由于通信需要而形成的关系,这称为消息连接。 消息连接表示从一个对象发送消息到另一个对象,由那个对象完成某些处理。它们在图中用箭头表示,方向从发消息的对象指向收消息的对象。,找出消息连接的方法及策略,对于每一个对象,执行: 查询该对象需要哪些对象的服务,从该对象画一箭头到哪个对象; 查询哪个对象需要该对象的服务,从那个对象画一箭头到该对象; 循消息连接找到下一个对象,重复以上步骤。,识别主题,主题可以看成是高层的模块或子系统。 对于面向对象分析模型,主题表示此模型的整体框架。可以是一 个层次结构。 通过对主题的识别,可以让人们能够比较清晰地了解大而复杂的模型。,编辑管理的主题,识别主题,将每一种结构(包括整体-部分结构、和一般化-特殊化结构)中最上层的类提升成为主题; 将各不属于任何结构的类提升主题; 检查在相同或类似的问题论域中以前做面向对象分析的结果,看是否有可直接复用的主题。,7.4 建立动态模型,建立动态模型的步骤: 1)编写典型交互行为的脚本; 2)从脚本中提取事件,确定触发每个事件的动作对象以及接受事件的目标对象; 3)排列事件发生的次序,确定每个对象可能有的状态及状态间的转换关系,并用。,7.4.1 编写脚本,所谓“脚本”,原意是指表演戏曲,话剧,拍摄电影和电视剧等所依据的本子,里面记载了台词和故事情节等。 在建立动态模型的过程中,脚本是指系统在某一执行时间内出现的一系列事件。 编写脚本的过程实际上是分析用户对系统行为的要求的过程。,ATM系统的正常脚本,ATM请用户插入银行卡 ATM接受该卡并读取它上面分行代码和卡号 ATM请求用户输入密码 ATM请求总行验证卡号和密码;然后通知ATM该卡有效 ATM要求用户选择事务类型(取款,查询等);用户选择“取款” ATM要求用户输入取款额 ATM确认取款额在规定的限额内,然后要求总行处理这个事务;总行把请求转给分行,该分行成功处理完这项事务并返回该帐户的新余额 ATM吐出现金并请用户拿走现金;用户拿走现金 ATM问用户是否继续;用户回答“不” ATM打印帐单,推出银行卡;用户拿走银行卡和帐单 ATM请
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号