软件工程实践(12)OO

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

北京理工大学软件工程实践吴际北京航空航天大学第十二讲面向对象方法与UML介绍内容和目的我们的座标面向对象方法面向对象:能与不能统一建模语言UML我们的座标应用开发的变化开发工具和手段的发展开发方法和技术的发展应用开发的变化70年代:小型机(或服务器)上的数学程序80年代:单机(或以太网)上的、文本界面(或简单图形界面)、计算型应用90年代:互联网(Internet)、丰富图形界面、事务处理型应用,要求快速提交产品现在,分布于Internet、Intranet,多种界面形式(基于WebBrowser、ApplicationGUI等),多种事务处理的集成(电子商务、信息管理),多种标准的支持(XML,J2EE,Corba,.NET),多种平台的支持(Windows,Linux,Unix,…)开发工具和手段的发展70年代:基于汇编代码的调试器80年代:基于高级语言的调试器(TurboC,MicrosoftC,BorlandC,TurboPascal)90年代:集成了调试器、编辑器、配置管理、框架代码构造、及时编码提示、应用GUI界面编辑等的集成开发环境,如VisualStudio,Delphi现在:在集成开发环境基础上,提供更强大的开发平台支持(.NET,JDK),同时更关注应用的平台无关性和运行安全性开发方法和技术的发展70年代:结构化方法(设计、编码)80年代:结构化方法(分析、设计、编码),状态图,需求工程90年代:面向对象分析、设计、编码,对象建模现在:商务建模(businessmodeling)、面向对象建模(分析、设计),体系结构设计(构件化)面向对象方法结构化与面向对象的提出面向对象方法特征面向对象主要流派结构化与面向对象的提出CFD&DFD:自顶而下的层次分解策略任何一层有变动,其下面的所有层次都必须重新进行层次分解层次间的解释关系使得难以维护层次间的一致性强调数据、功能分解,但忽略了数据、功能的整合数据与功能分离的结构化认知观点,实际偏离了人认知世界的基本原则:以实体为单位,以关系为核心尽管有缺点,但结构化仍有可借鉴之处:结构化原则数据字典状态图WhatdoyouthinkaboutOO?大幕拉开:面向对象面相对象的目标:以人的(获接近于人的)认知方法和原则来描述事物完全不同于结构化的描述手段:类、对象继承多态消息类、对象是核心面向对象分析、设计、编码的基本单位数据与功能的有效封装可直接映射到现实或抽象的实体关系、状态、行为开发管理的基本单位类测试就是“单元测试”!继承:面向对象冠上明珠如果没有继承,谁能在一个小时之内,只使用SDK接口编写出Notepad?如果使用继承,你只需十分钟(或更少)!继承至少提供了两个方向的设计支持:重用抽象、接口(COM、DCOM、Bean)没有继承,几乎不可能有通用的容器类(ContainerorCollector)可供使用多继承:你使用过多少次?多态:面向对象‘自适应’中枢多态(polymorphism):多种形态,统一语义接口描述了通讯协议多态使得基于接口的通讯能够自适应Arg1,agr2,…多态:面向对象‘自适应’中枢两种多态:同一个类中的不同形态接口不同子类以不同形态实现(或重载)父类接口典型例子:画图程序中GraphManager类的Draw,Move,Open,…典型例子:文档编辑中针对不同对象的统一的Cut/Copy/Paste操作消息:可能让你失望不要试图用信息理论或通讯理论中的消息来理解也不要用操作系统中的消息(事件)来理解所谓两个对象间的一个消息就是一个对象使用了另一个对象的操作(operation),简单说就是对象的操作调用!Windows中的SendMessage和PostMessage根本就与面向对象无关!对象状态对象状态只决定于对象的数据,和全局数据、非对象的局部数据无关对象状态和对象行为之间的关系:s1,b1,s2,b2,b1=b2iffs1=s2.如果你的程序不满足这条定理,有两种情况:类的某个方法使用了全局变量类的某个方法中的局部变量初始值不确定对象关系:无法让人满意目前的面向对象提供了三种对象关系描述手段:继承聚集(组成)关联:对象之间有关系!然而,现实世界中实体之间的关系丰富多彩,岂止这三种?面向对象分析目标:使用对象来描述问题域,进而抽象出问题域类,并把求解问题的约束分配到问题域类关注:是否完整、清晰的描述了问题域及约束雷区:使用DFD,然后把每个处理节点都抽象为一个类雷区:很快就在某个局部(通常为方法)进入算法、编码面向对象分析模型的价值(领域重用、测试)面向对象设计目标:引入类(族)实现问题域类(在概念层次上),同时把系统约束分解、落实到类的方法层次关注:体系结构、接口、效率雷区:有些类是‘上帝’,而有些类只是‘弱智的代表’雷区:盲目追求所谓封装、抽象类面向对象设计模型的价值(设计pattern,风险跟踪、测试)适合面向对象的开发过程必须能够管理面向对象分析、设计、实现、测试、维护各阶段的模型的一致性需要给出一套基于类的开发任务管理方法(任务定义、风险管理、任务评审)能够在开发的不同阶段提供不同的知识库(不仅仅是类库!)以供重用RUP是个不错的选择面向对象:能与不能Can使你以更有效的手段描述、实现系统提高系统的重用度有效缩短开发周期Cannot避免错误,尤其是分析、设计错误自动生成精巧的算法统一建模语言UML引论建模技术UML的模型图UML的基本视图UML的目的、主要特点和和应用领域引论WhyUnified?UML是一种建模语言UML的设计目标UML的发展历程WhyUnified?面对众多的建模语言,用户没有能力区别不同语言之间的差别。在众多的建模语言中,实际上各有千秋,需要取长补短,日臻完善。虽然不同的建模语言大多相同,但仍存在某些细微的差别,这极大地妨碍了用户之间的交流。UML是一种建模语言建模方法=建模语言+建模过程。建模语言定义了用于表示设计的符号(通常是图形符号);建模过程描述进行设计所需要遵循的步骤。标准建模语言UML是一种建模语言,而不是一种方法,它统一了面向对象建模的基本概念、术语及其图形符号,为人们建立了便于交流的共同语言。UML的设计目标UML是由Booch,Rumbaugh和Jacobson发起,在Booch方法、OMT方法和OOSE方法的基础上,集众家之长,几经修改而成。UML的设计目标是:运用面向对象概念来构造系统模型(不仅仅针对软件)建立起从概念模型直至可执行体之间明晰的对应关系着眼于那些有重大影响的问题。创建一种对人和机器都适用的建模语言。UML的发展历程1994.10,Booch和Rumbaugh将Booch93和OMT-2统一,1995.10.发布UM0.8。1995年秋,经过Booch等三人的努力,1996.6和1996.10发布UML0.9和UML0.91。1996年成立UML成员协会,有700多公司支持UML,占领OO市场的85%。1997.1发布UML1.0,1997.9发布UML1.1。1997.11OMG采纳UML1.1作为OO技术的标准建模语言。此后,UML的维护工作由CrisKobryn领导的OMG版本修改小组RTF(RevisionTaskForce)负责.1998.6:UMLV.1.1(编辑修改版).1999.6:UMLV.1.3(技术终订版).目前正处于UMLV.2.0阶段UML的发展历程(续)公众反馈OOPSLA95UnifiedMethod0.8工业化标准化统一化分散的各部分Booch93OMT-21996.6和1996.10UML0.9&0.911997.11.171997.9公布UML1.11997.1公布UML1.0合作伙伴意见UML1.1被OMG接纳为标准其他方法Booch91OMT-1OOSE1999.6UML1.3建模技术构造模型的目的建模技术要点系统的多种特性构造模型的目的在着手解决一个复杂问题之前,对解决方案进行检测。用于同客户和其他相关人员进行交流。加强视觉效果。对复杂问题进行适度简化。模型是对事物的抽象。人们常常在正式建造实物之前,先建立模型,以便更透彻地了解它的本质,抓住问题的要害。建模技术要点构造模型的基本技术是抽象,应突出与问题有关的特征,将与问题无关的性质略去。不必追求绝对的真实和完全,只需从期望的目的角度看其是否充分。应当刻画问题的关键方面,略去相对次要的因素。建模语言应支持人的由模糊到清晰、由粗到细逐渐完善的认识过程。应采用可视化图形建模语言。系统的多种特性在功能和性能方面:功能正确,性能良好(效率要高)。在非功能方面:鲁棒性、可扩充性、可再用性、兼容性、可移值性、可验证性、完整性以及易使用性等方面要好。一个系统应具有多方面的特点:一个系统要从多个视角去描述。一个视图可能包含多个模型图,每张模型图都应当简单明了,易于交流。UML的模型图UML定义了5类、共9种模型图:用例图:从用户角度描述系统的功能,并指出各功能的操作者。静态图:类图、对象图和包图(在UML1.1中,包图不再看作一种独立的模型图)。行为图:状态图,活动图。交互图:顺序图,合作图。实现图:构件图描述部件的物理结构以及各部件之间的依赖关系;配置图定义系统中软硬件的物理构架。关于保险业务的一张用例图保险销售人员客户客户统计表签署保险文件销售统计表静态图:类图、对象图和包图静态图包括类图、对象图和包图,用以描述模型中类及其实例之间的静态关系。类图用于定义系统中的类,包括描述类之间的关系(关联、继承、聚合)以及类的内部结构,即类的属性和操作。对象图显示类的对象实例,一个对象图是类图的一个实例。包图由包或类组成,主要表示包与包、或包与类之间的关系。包图用于描述系统的分层结构。关于金融贸易的一张类图客户业务量商人11..*Owns1..*1..*HandlesContains0..*0..*证券债券互助基金股票类图和对象图类图展示类Uses0..11..*计算机名字:String内存:Integer作者名字:String年龄:Integer小影:作者名字=“王小影”年龄=32小影的工作PC:计算机名字=“DellPIV”内存=256MB小影的工作PC:计算机名字=“HPPIII”内存=128对象图展示类的实例行为图:状态图,活动图行为图包括状态图和活动图,描述系统的动态模型和组成对象间的交互关系。状态图描述一类对象的所有可能的状态以及事件发生时状态的转移条件。活动图描述为满足用例要求所要进行的活动以及活动间的约束关系。使用活动图可以很方便地表示并行活动。一部电梯的状态图上升[几层]在第一层上升[几层]向第一层下降下降状态空闲状态上升状态到达[第几层]到达[第几层]下降[几层]超时[]一台打印机服务器的活动图创建附加文件显示磁盘已满的信息显示正在打印的信息[磁盘已满][尚有磁盘空间]打印机,打印[文件]删除显示信息的对话框交互图:顺序图,合作图交互图包括顺序图和合作图,它描述对象间的交互(动态合作)关系。顺序图:用以显示对象之间在时间顺序方面的动态合作关系。因此,如果强调时间和顺序,应当使用顺序图。合作图:着重描述对象间的通信方面的动态合作关系。因此,如果强调通信关系,则可以选择合作图。一台打印机服务器的顺序图:计算机:打印服务程序:打印机:打印队列〔打印机空闲〕打印〔文件〕〔打印机忙〕打印〔文件〕打印〔文件〕一台打印机服务器的合作图[打印机忙]1.2保存[文件]:计算机:打印队列1:打印[文件]:打印服务程序:打印机[打印机空闲]1.1打印[文件]实现图:构件图,配置图实现图包括构件图和配置图。构件图:描述部件的物理结构以及各部件之间的依赖关系。配置图:定义系统中(特别是在

1 / 67
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功