软件工程实践课件_第1页
软件工程实践课件_第2页
软件工程实践课件_第3页
软件工程实践课件_第4页
软件工程实践课件_第5页
已阅读5页,还剩129页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

北京理工大学

软件工程实践吴际北京航空航天大学北京理工大学

软件工程实践吴际1第十二讲面向对象方法与UML介绍第十二讲面向对象方法与UML介绍2内容和目的我们的座标面向对象方法面向对象:能与不能统一建模语言UML内容和目的我们的座标3我们的座标应用开发的变化开发工具和手段的发展开发方法和技术的发展我们的座标应用开发的变化4应用开发的变化70年代:小型机(或服务器)上的数学程序80年代:单机(或以太网)上的、文本界面(或简单图形界面)、计算型应用90年代:互联网(Internet)、丰富图形界面、事务处理型应用,要求快速提交产品现在,分布于Internet、Intranet,多种界面形式(基于WebBrowser、ApplicationGUI等),多种事务处理的集成(电子商务、信息管理),多种标准的支持(XML,J2EE,Corba,.NET),多种平台的支持(Windows,Linux,Unix,…)应用开发的变化70年代:小型机(或服务器)上的数学程序5开发工具和手段的发展70年代:基于汇编代码的调试器80年代:基于高级语言的调试器(TurboC,MicrosoftC,BorlandC,TurboPascal)90年代:集成了调试器、编辑器、配置管理、框架代码构造、及时编码提示、应用GUI界面编辑等的集成开发环境,如VisualStudio,Delphi现在:在集成开发环境基础上,提供更强大的开发平台支持(.NET,JDK),同时更关注应用的平台无关性和运行安全性开发工具和手段的发展70年代:基于汇编代码的调试器6开发方法和技术的发展70年代:结构化方法(设计、编码)80年代:结构化方法(分析、设计、编码),状态图,需求工程90年代:面向对象分析、设计、编码,对象建模现在:商务建模(businessmodeling)、面向对象建模(分析、设计),体系结构设计(构件化)开发方法和技术的发展70年代:结构化方法(设计、编码)7面向对象方法结构化与面向对象的提出面向对象方法特征面向对象主要流派面向对象方法结构化与面向对象的提出8结构化与面向对象的提出CFD&DFD:自顶而下的层次分解策略任何一层有变动,其下面的所有层次都必须重新进行层次分解层次间的解释关系使得难以维护层次间的一致性强调数据、功能分解,但忽略了数据、功能的整合数据与功能分离的结构化认知观点,实际偏离了人认知世界的基本原则:以实体为单位,以关系为核心尽管有缺点,但结构化仍有可借鉴之处:结构化原则数据字典状态图结构化与面向对象的提出CFD&DFD:自顶而下的层次分解9WhatdoyouthinkaboutOO?大幕拉开:面向对象面相对象的目标:以人的(获接近于人的)认知方法和原则来描述事物完全不同于结构化的描述手段:类、对象继承多态消息WhatdoyouthinkaboutOO?大幕拉10类、对象是核心面向对象分析、设计、编码的基本单位数据与功能的有效封装可直接映射到现实或抽象的实体关系、状态、行为开发管理的基本单位类测试就是“单元测试”!类、对象是核心面向对象分析、设计、编码的基本单位11继承:面向对象冠上明珠如果没有继承,谁能在一个小时之内,只使用SDK接口编写出Notepad?如果使用继承,你只需十分钟(或更少)!继承至少提供了两个方向的设计支持:重用抽象、接口(COM、DCOM、Bean)没有继承,几乎不可能有通用的容器类(ContainerorCollector)可供使用多继承:你使用过多少次?继承:面向对象冠上明珠如果没有继承,谁能在一个小时之内,只使12多态:面向对象‘自适应’中枢多态(polymorphism):多种形态,统一语义接口描述了通讯协议多态使得基于接口的通讯能够自适应Arg1,agr2,…多态:面向对象‘自适应’中枢多态(polymorphism)13多态:面向对象‘自适应’中枢两种多态:同一个类中的不同形态接口不同子类以不同形态实现(或重载)父类接口典型例子:画图程序中GraphManager类的Draw,Move,Open,…典型例子:文档编辑中针对不同对象的统一的Cut/Copy/Paste操作多态:面向对象‘自适应’中枢两种多态:14消息:可能让你失望不要试图用信息理论或通讯理论中的消息来理解也不要用操作系统中的消息(事件)来理解所谓两个对象间的一个消息就是一个对象使用了另一个对象的操作(operation),简单说就是对象的操作调用!Windows中的SendMessage和PostMessage根本就与面向对象无关!消息:可能让你失望不要试图用信息理论或通讯理论中的消息来理解15对象状态对象状态只决定于对象的数据,和全局数据、非对象的局部数据无关对象状态和对象行为之间的关系:<s1,b1>,<s2,b2>,b1=b2iffs1=s2.如果你的程序不满足这条定理,有两种情况:类的某个方法使用了全局变量类的某个方法中的局部变量初始值不确定对象状态对象状态只决定于对象的数据,和全局数据、非对象的局部16对象关系:无法让人满意目前的面向对象提供了三种对象关系描述手段:继承聚集(组成)关联:对象之间有关系!然而,现实世界中实体之间的关系丰富多彩,岂止这三种?对象关系:无法让人满意目前的面向对象提供了三种对象关系描述手17面向对象分析目标:使用对象来描述问题域,进而抽象出问题域类,并把求解问题的约束分配到问题域类关注:是否完整、清晰的描述了问题域及约束雷区:使用DFD,然后把每个处理节点都抽象为一个类雷区:很快就在某个局部(通常为方法)进入算法、编码面向对象分析模型的价值(领域重用、测试)面向对象分析目标:使用对象来描述问题域,进而抽象出问题域类,18面向对象设计目标:引入类(族)实现问题域类(在概念层次上),同时把系统约束分解、落实到类的方法层次关注:体系结构、接口、效率雷区:有些类是‘上帝’,而有些类只是‘弱智的代表’雷区:盲目追求所谓封装、抽象类面向对象设计模型的价值(设计pattern,风险跟踪、测试)面向对象设计目标:引入类(族)实现问题域类(在概念层次上),19适合面向对象的开发过程必须能够管理面向对象分析、设计、实现、测试、维护各阶段的模型的一致性需要给出一套基于类的开发任务管理方法(任务定义、风险管理、任务评审)能够在开发的不同阶段提供不同的知识库(不仅仅是类库!)以供重用RUP是个不错的选择适合面向对象的开发过程必须能够管理面向对象分析、设计、实现、20面向对象:能与不能Can使你以更有效的手段描述、实现系统提高系统的重用度有效缩短开发周期Cannot避免错误,尤其是分析、设计错误自动生成精巧的算法面向对象:能与不能Can21统一建模语言UML引论建模技术UML的模型图UML的基本视图UML的目的、主要特点和和应用领域统一建模语言UML引论22引论WhyUnified?UML是一种建模语言UML的设计目标UML的发展历程引论WhyUnified?23WhyUnified?面对众多的建模语言,用户没有能力区别不同语言之间的差别。在众多的建模语言中,实际上各有千秋,需要取长补短,日臻完善。虽然不同的建模语言大多相同,但仍存在某些细微的差别,这极大地妨碍了用户之间的交流。WhyUnified?面对众多的建模语言,用户没有能力区别24UML是一种建模语言建模方法=建模语言+建模过程。建模语言定义了用于表示设计的符号(通常是图形符号);建模过程描述进行设计所需要遵循的步骤。标准建模语言UML是一种建模语言,而不是一种方法,它统一了面向对象建模的基本概念、术语及其图形符号,为人们建立了便于交流的共同语言。UML是一种建模语言建模方法=建模语言+建模过程。建25UML的设计目标UML是由Booch,Rumbaugh和Jacobson发起,在Booch方法、OMT方法和OOSE方法的基础上,集众家之长,几经修改而成。UML的设计目标是:运用面向对象概念来构造系统模型(不仅仅针对软件)建立起从概念模型直至可执行体之间明晰的对应关系着眼于那些有重大影响的问题。创建一种对人和机器都适用的建模语言。UML的设计目标UML是由Booch,Rumbaugh和26

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的发展历程1994.10,Booch和Rumba27UML的发展历程(续)公众反馈OOPSLA95UnifiedMethod0.8工业化标准化统一化分散的各部分

Booch93OMT-21996.6和1996.10UML0.9&0.91

1997.11.171997.9公布UML1.1

1997.1公布UML1.0合作伙伴意见UML1.1被OMG

接纳为标准其他方法Booch91OMT-1OOSE1999.6UML1.3UML的发展历程(续)公众OOPSLA95Unifi28建模技术构造模型的目的建模技术要点系统的多种特性建模技术构造模型的目的29构造模型的目的在着手解决一个复杂问题之前,对解决方案进行检测。用于同客户和其他相关人员进行交流。加强视觉效果。对复杂问题进行适度简化。模型是对事物的抽象。人们常常在正式建造实物之前,先建立模型,以便更透彻地了解它的本质,抓住问题的要害。构造模型的目的在着手解决一个复杂问题之前,对解决方案进行检测30建模技术要点构造模型的基本技术是抽象,应突出与问题有关的特征,将与问题无关的性质略去。不必追求绝对的真实和完全,只需从期望的目的角度看其是否充分。应当刻画问题的关键方面,略去相对次要的因素。建模语言应支持人的由模糊到清晰、由粗到细逐渐完善的认识过程。应采用可视化图形建模语言。建模技术要点构造模型的基本技术是抽象,应突出与问题有关的特征31系统的多种特性在功能和性能方面:功能正确,性能良好(效率要高)。在非功能方面:鲁棒性、可扩充性、可再用性、兼容性、可移值性、可验证性、完整性以及易使用性等方面要好。一个系统应具有多方面的特点:一个系统要从多个视角去描述。一个视图可能包含多个模型图,每张模型图都应当简单明了,易于交流。系统的多种特性在功能和性能方面:功能正确,性能良好(效率要高32UML的模型图UML定义了5类、共9种模型图:用例图:从用户角度描述系统的功能,并指出各功能的操作者。静态图:类图、对象图和包图(在UML1.1中,包图不再看作一种独立的模型图)。

行为图:状态图,活动图。交互图:顺序图,合作图。实现图:构件图描述部件的物理结构以及各部件之间的依赖关系;配置图定义系统中软硬件的物理构架。UML的模型图UML定义了5类、共9种模型图:用例图33关于保险业务的一张用例图保险销售人员客户客户统计表签署保险文件销售统计表关于保险业务的一张用例图保险销售人员客户客户统计表签署34静态图:类图、对象图和包图静态图包括类图、对象图和包图,用以描述模型中类及其实例之间的静态关系。类图用于定义系统中的类,包括描述类之间的关系(关联、继承、聚合)以及类的内部结构,即类的属性和操作。对象图显示类的对象实例,一个对象图是类图的一个实例。包图由包或类组成,主要表示包与包、或包与类之间的关系。包图用于描述系统的分层结构。静态图:类图、对象图和包图静态图包括类图、对象图和包图,用以35关于金融贸易的一张类图客户业务量商人11..*

Owns1..*1..*

HandlesContains0..*0..*证券债券互助基金股票关于金融贸易的一张类图客户业务量商人136类图和对象图类图展示类Uses0..11..*计算机名字:String内存:Integer作者名字:String年龄:Integer小影:作者名字=“王小影”年龄=32小影的工作PC:计算机名字=“DellPIV”内存=256MB小影的工作PC:计算机名字=“HPPIII”内存=128对象图展示类的实例类图和对象图类图展示类Uses0..11..*计算机37行为图:状态图,活动图行为图包括状态图和活动图,描述系统的动态模型和组成对象间的交互关系。状态图描述一类对象的所有可能的状态以及事件发生时状态的转移条件。活动图描述为满足用例要求所要进行的活动以及活动间的约束关系。使用活动图可以很方便地表示并行活动。行为图:状态图,活动图行为图包括状态图和活动图,描述系统的动38一部电梯的状态图上升[几层]在第一层上升[几层]向第一层下降下降状态空闲状态上升状态到达[第几层]到达[第几层]下降[几层]超时[]一部电梯的状态图上升[几层]在第一层上升[几层]向第一层下降39一台打印机服务器的活动图创建附加文件显示"磁盘已满"的信息显示"正在打印"的信息[磁盘已满][尚有磁盘空间]打印机,打印[文件]删除显示信息的对话框一台打印机服务器的活动图创建附加文件显示"磁盘已满"显示"正40交互图:顺序图,合作图交互图包括顺序图和合作图,它描述对象间的交互(动态合作)关系。顺序图:用以显示对象之间在时间顺序方面的动态合作关系。因此,如果强调时间和顺序,应当使用顺序图。合作图:着重描述对象间的通信方面的动态合作关系。因此,如果强调通信关系,则可以选择合作图。交互图:顺序图,合作图交互图包括顺序图和合作图,它描述对象间41一台打印机服务器的顺序图:计算机:打印服务程序:打印机:打印队列〔打印机空闲〕打印〔文件〕〔打印机忙〕打印〔文件〕打印〔文件〕一台打印机服务器的顺序图:计算机:打印服务程序:打印机42一台打印机服务器的合作图[打印机忙]1.2保存[文件]:计算机:打印队列1:打印[文件]:打印服务程序:打印机[打印机空闲]1.1打印[文件]一台打印机服务器的合作图[打印机忙]:计算机:打印队列143实现图:构件图,配置图实现图包括构件图和配置图。构件图:描述部件的物理结构以及各部件之间的依赖关系。配置图:定义系统中(特别是在分布式及网络环境中)软硬件的物理构架。实现图:构件图,配置图实现图包括构件图和配置图。44反映程序代码构件之间

依赖关系的构件图

main.obj:主类comhnd.obj:命令处理器Whnd.obj:窗口处理器client.exe:客户程序graphic.dll:图形库comhnd.cpp:命令处理器Whnd.cpp:窗口处理器

main.cpp:主类反映程序代码构件之间

依赖关系的构件图main.obj:45描述系统物理构架的配置图《DecNet协议》客户A:个人电脑PC客户B:个人电脑PC《TCP/IP协议》《TCP/IP协议》服务器:02数据库服务器:VAX描述系统物理构架的配置图《DecNet协议》客户A:客户B:46UML的基本视图UML的用例视图UML的逻辑视图UML的构件视图UML的并发视图UML的配置视图UML的基本视图UML的用例视图47UML的五类基本视图构件示图用例视图配置视图逻辑视图并发视图UML的五类基本视图构件示图用例视图配置视图逻辑视图并发视图48UML的五类基本视图(续)用例视图:从系统外部执行者的角度理解、展示系统功能。逻辑视图:从系统的静态结构和动态行为的角度展示系统内部功能性设计。构件示图:展示代码构件的组织结构。并发视图:展示系统的并发性,刻画并发系统中的通讯和同步问题。配置视图:展示系统的物理的体系结构,其中用到的计算机和各种设备称作节点。UML的五类基本视图(续)用例视图:从系统外部执行者的角度理49UML的用例视图从系统外部执行者的角度理解系统的功能:它描述执行者与系统的交互,其执行者可以是一个用户,也可以是另一个系统。用例图面向客户、建模人员、开发人员和测试人员,是系统模型图的核心。用例视图:用例图和活动图描述。一张用例图是系统的一种用途的描述;一组用例图描述了整个系统所期望的用途。UML的用例视图从系统外部执行者的角度理解系统的功能:它描述50UML的逻辑视图描述系统如何提供要求的功能:静态结构:类(界面,内部结构);对象;关系用类图和对象图描述。动态行为:对象之间相互发送消息而引发的动态合作关系用状态图、顺序图、合作图和活动图描述各种特性:永久性,并发性主要是面向设计人员和开发人员UML的逻辑视图描述系统如何提供要求的功能:51UML的构件视图描述实现的各个模块及其相互之间的关系:模块的内部结构模块间的依赖关系关于各构件的一些附加信息:资源分配(构件的责任)其它管理信息,如开发工作的进展报告等主要面向开发人员构件视图:由构件图组成,其中构件表示不同类型的代码模块UML的构件视图描述实现的各个模块及其相互之间的关系:52UML的并发视图系统中进程和处理器的划分与任务的分配属于非功能性特性:着眼于资源的有效利用并行执行,并发地执行多线程控制,处理线程之间的通信和同步处理来自外部环境的同步事件面向开发人员和系统集成人员描述并发视图的主要模型图:动态图:状态图,合作图,活动图实现图:构件图,配置图UML的并发视图系统中进程和处理器的划分与任务的分配53UML的配置视图展示系统的物理配置,如计算机和其它设备(统称结点)及其相互之间的连接关系,包括在物理的体系结构中如何配置构件的映像关系。面向开发、集成和测试人员。配置视图用配置图描述。UML的配置视图展示系统的物理配置,如计算机和其它设备(统称54面向对象描述的三个层面概念层说明层实现层BusinessModelArchitectureDetailing 1:层次间没有分解对应关系 2:每个面向对象描述元素都可对应到这三个层面!面向对象描述的三个层面概念层说明层实现层Busi55UML的主要特点、目的和应用领域UML的主要特点使用UML的目的UML的应用领域UML的主要特点、目的和应用领域UML的主要特点56

UML的主要特点UML统一了Booch,OMT和OOSE等方法中的基本概念:用例图从OOSE来;类图从OMT和Booch等方法来;实现图(构件图和配置图)从Booch的模块图和过程图来。UML吸取了OO技术领域各流派的长处:状态图从Harel而来;活动图从工作流图而来;合作图从Booch的对象图和Fusion的对象交互作用图等而来;等等。在演变过程中UML提出了一些新的概念。UML的主要特点UML统一了Booch,OMT和OOSE57使用UML的目的软件开发的过程犹如雕琢一件艺术品,由无形到有形,由粗到细。但软件开发的最终形式必须生成程序代码。因此当考虑使用UML时,一定要想清楚,使用UML的目的以及对编写代码有何帮助。学习面向对象技术和领域专家交流帮助理解全局使用UML的目的软件开发的过程犹如雕琢一件艺术品,由无形到有58学习面向对象技术UML的各种模型图,其中用例图描述系统的功能及其外部的使用者,确定谁使用系统以及做什么。类图描述系统的静态构架,即构成系统的各种对象类及其相互关系。对象图是类图的实例化,描述系统在某个时刻可能包含的对象和相互关系。行为图和交互图描述系统的动态行为。构件图和配置图描述系统实现体的构成及其在硬件环境中的配置情况。学习面向对象技术UML的各种模型图,其中用例图描述系统的功能59和领域专家交流有效的方法是使用用例。一个用例描述了系统的某一侧面,所有用例构成了系统的整个外观。用例也有助于制订项目规划和对问题进行深入理解。类图很有用,但应注重在概念层上使用。应将每个类对应用户心中一个概念,并用用户的语言来命名和定义。对于侧重于工作流过程的应用系统,活动图非常有用。活动图也有助于对实际业务流程中的并行特性进行自然描述。和领域专家交流有效的方法是使用用例。一个用例描述了系统的某一60帮助理解全局对于大型项目,常常只见树木不见森林,采用UML有助于理解全局。譬如,类图可了解系统中有哪些类型的事物,哪些需要作进一步的考察。对大型软件,无论概念层、说明层或实现层,其模型都可能十分庞大。此时通常需要分层次地绘制很多张模型图,并为整个软件系统建立全局路线图。在较高的抽象层次,用包图刻画类图的分组情况。帮助理解全局对于大型项目,常常只见树木不见森林,采用UML有61UML的应用领域UML是一个通用的标准建模语言,可对任何具有静态结构和动态行为的系统进行建模。UML适用于系统开发的不同阶段:需求分析阶段用用例;分析阶段用类图;实现阶段用动态模型;构造阶段用OO编程语言。在测试阶段:单元测试用类图;集成测试用部件图和合作图;系统测试用用例图。在应用标准建模语言UML时,需要有相应的开发工具来支持。UML的应用领域UML是一个通用的标准建模语言,可对任何具有62小结关于面向对象技术的评论;基本的模型元素;关于视图与模型图的评注。小结关于面向对象技术的评论;63关于面向对象技术的评论OO技术的构造方法把软件系统当作结构化抽象数据类型实现的集合。UML为OO技术提供了强有力的支持。在OO构架中,每个模块建造在一个数据抽象(一组数据结构)上,由作为正式接口一部分的服务及其特性来描述。OO系统的模块称为类,其接口对应于表示抽象数据类型规格说明中功能的服务。OO技术允许一个抽象数据类型有多个实现。关于面向对象技术的评论OO技术的构造方法把软件系统当作结构化64基本的模型元素

类属性操作包状态结点用例界面构件对象属性操作注释体基本的模型元素类包状态结点用例界面构件对象注释体65关于视图与模型图的评注不同的视图可以有少量的重叠,一张图可以同时属于多个视图。图与图之间应有内在联系,最终由这些图描绘系统的全貌。视图之间和图与图之间,须便于交叉浏览和追踪分析检查。视图:展示系统的不同侧面;是由一组模型图构成的一个抽象;一组视图构成一个系统的完整画卷。模型图:描述视图内容的图形;UML有九种不同类型的模型图。模型元素:模型图用到各种OO概念(如类、对象、消息等)以及这些概念之间的关系(如关联、依赖和泛化等);一种元素可在多种图中出现,但其表示符号和语义不变。关于视图与模型图的评注不同的视图可以有少量的重叠,一张图可66谢谢!吴际82317649(O)wuji@谢谢!吴际67北京理工大学

软件工程实践吴际北京航空航天大学北京理工大学

软件工程实践吴际68第十二讲面向对象方法与UML介绍第十二讲面向对象方法与UML介绍69内容和目的我们的座标面向对象方法面向对象:能与不能统一建模语言UML内容和目的我们的座标70我们的座标应用开发的变化开发工具和手段的发展开发方法和技术的发展我们的座标应用开发的变化71应用开发的变化70年代:小型机(或服务器)上的数学程序80年代:单机(或以太网)上的、文本界面(或简单图形界面)、计算型应用90年代:互联网(Internet)、丰富图形界面、事务处理型应用,要求快速提交产品现在,分布于Internet、Intranet,多种界面形式(基于WebBrowser、ApplicationGUI等),多种事务处理的集成(电子商务、信息管理),多种标准的支持(XML,J2EE,Corba,.NET),多种平台的支持(Windows,Linux,Unix,…)应用开发的变化70年代:小型机(或服务器)上的数学程序72开发工具和手段的发展70年代:基于汇编代码的调试器80年代:基于高级语言的调试器(TurboC,MicrosoftC,BorlandC,TurboPascal)90年代:集成了调试器、编辑器、配置管理、框架代码构造、及时编码提示、应用GUI界面编辑等的集成开发环境,如VisualStudio,Delphi现在:在集成开发环境基础上,提供更强大的开发平台支持(.NET,JDK),同时更关注应用的平台无关性和运行安全性开发工具和手段的发展70年代:基于汇编代码的调试器73开发方法和技术的发展70年代:结构化方法(设计、编码)80年代:结构化方法(分析、设计、编码),状态图,需求工程90年代:面向对象分析、设计、编码,对象建模现在:商务建模(businessmodeling)、面向对象建模(分析、设计),体系结构设计(构件化)开发方法和技术的发展70年代:结构化方法(设计、编码)74面向对象方法结构化与面向对象的提出面向对象方法特征面向对象主要流派面向对象方法结构化与面向对象的提出75结构化与面向对象的提出CFD&DFD:自顶而下的层次分解策略任何一层有变动,其下面的所有层次都必须重新进行层次分解层次间的解释关系使得难以维护层次间的一致性强调数据、功能分解,但忽略了数据、功能的整合数据与功能分离的结构化认知观点,实际偏离了人认知世界的基本原则:以实体为单位,以关系为核心尽管有缺点,但结构化仍有可借鉴之处:结构化原则数据字典状态图结构化与面向对象的提出CFD&DFD:自顶而下的层次分解76WhatdoyouthinkaboutOO?大幕拉开:面向对象面相对象的目标:以人的(获接近于人的)认知方法和原则来描述事物完全不同于结构化的描述手段:类、对象继承多态消息WhatdoyouthinkaboutOO?大幕拉77类、对象是核心面向对象分析、设计、编码的基本单位数据与功能的有效封装可直接映射到现实或抽象的实体关系、状态、行为开发管理的基本单位类测试就是“单元测试”!类、对象是核心面向对象分析、设计、编码的基本单位78继承:面向对象冠上明珠如果没有继承,谁能在一个小时之内,只使用SDK接口编写出Notepad?如果使用继承,你只需十分钟(或更少)!继承至少提供了两个方向的设计支持:重用抽象、接口(COM、DCOM、Bean)没有继承,几乎不可能有通用的容器类(ContainerorCollector)可供使用多继承:你使用过多少次?继承:面向对象冠上明珠如果没有继承,谁能在一个小时之内,只使79多态:面向对象‘自适应’中枢多态(polymorphism):多种形态,统一语义接口描述了通讯协议多态使得基于接口的通讯能够自适应Arg1,agr2,…多态:面向对象‘自适应’中枢多态(polymorphism)80多态:面向对象‘自适应’中枢两种多态:同一个类中的不同形态接口不同子类以不同形态实现(或重载)父类接口典型例子:画图程序中GraphManager类的Draw,Move,Open,…典型例子:文档编辑中针对不同对象的统一的Cut/Copy/Paste操作多态:面向对象‘自适应’中枢两种多态:81消息:可能让你失望不要试图用信息理论或通讯理论中的消息来理解也不要用操作系统中的消息(事件)来理解所谓两个对象间的一个消息就是一个对象使用了另一个对象的操作(operation),简单说就是对象的操作调用!Windows中的SendMessage和PostMessage根本就与面向对象无关!消息:可能让你失望不要试图用信息理论或通讯理论中的消息来理解82对象状态对象状态只决定于对象的数据,和全局数据、非对象的局部数据无关对象状态和对象行为之间的关系:<s1,b1>,<s2,b2>,b1=b2iffs1=s2.如果你的程序不满足这条定理,有两种情况:类的某个方法使用了全局变量类的某个方法中的局部变量初始值不确定对象状态对象状态只决定于对象的数据,和全局数据、非对象的局部83对象关系:无法让人满意目前的面向对象提供了三种对象关系描述手段:继承聚集(组成)关联:对象之间有关系!然而,现实世界中实体之间的关系丰富多彩,岂止这三种?对象关系:无法让人满意目前的面向对象提供了三种对象关系描述手84面向对象分析目标:使用对象来描述问题域,进而抽象出问题域类,并把求解问题的约束分配到问题域类关注:是否完整、清晰的描述了问题域及约束雷区:使用DFD,然后把每个处理节点都抽象为一个类雷区:很快就在某个局部(通常为方法)进入算法、编码面向对象分析模型的价值(领域重用、测试)面向对象分析目标:使用对象来描述问题域,进而抽象出问题域类,85面向对象设计目标:引入类(族)实现问题域类(在概念层次上),同时把系统约束分解、落实到类的方法层次关注:体系结构、接口、效率雷区:有些类是‘上帝’,而有些类只是‘弱智的代表’雷区:盲目追求所谓封装、抽象类面向对象设计模型的价值(设计pattern,风险跟踪、测试)面向对象设计目标:引入类(族)实现问题域类(在概念层次上),86适合面向对象的开发过程必须能够管理面向对象分析、设计、实现、测试、维护各阶段的模型的一致性需要给出一套基于类的开发任务管理方法(任务定义、风险管理、任务评审)能够在开发的不同阶段提供不同的知识库(不仅仅是类库!)以供重用RUP是个不错的选择适合面向对象的开发过程必须能够管理面向对象分析、设计、实现、87面向对象:能与不能Can使你以更有效的手段描述、实现系统提高系统的重用度有效缩短开发周期Cannot避免错误,尤其是分析、设计错误自动生成精巧的算法面向对象:能与不能Can88统一建模语言UML引论建模技术UML的模型图UML的基本视图UML的目的、主要特点和和应用领域统一建模语言UML引论89引论WhyUnified?UML是一种建模语言UML的设计目标UML的发展历程引论WhyUnified?90WhyUnified?面对众多的建模语言,用户没有能力区别不同语言之间的差别。在众多的建模语言中,实际上各有千秋,需要取长补短,日臻完善。虽然不同的建模语言大多相同,但仍存在某些细微的差别,这极大地妨碍了用户之间的交流。WhyUnified?面对众多的建模语言,用户没有能力区别91UML是一种建模语言建模方法=建模语言+建模过程。建模语言定义了用于表示设计的符号(通常是图形符号);建模过程描述进行设计所需要遵循的步骤。标准建模语言UML是一种建模语言,而不是一种方法,它统一了面向对象建模的基本概念、术语及其图形符号,为人们建立了便于交流的共同语言。UML是一种建模语言建模方法=建模语言+建模过程。建92UML的设计目标UML是由Booch,Rumbaugh和Jacobson发起,在Booch方法、OMT方法和OOSE方法的基础上,集众家之长,几经修改而成。UML的设计目标是:运用面向对象概念来构造系统模型(不仅仅针对软件)建立起从概念模型直至可执行体之间明晰的对应关系着眼于那些有重大影响的问题。创建一种对人和机器都适用的建模语言。UML的设计目标UML是由Booch,Rumbaugh和93

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的发展历程1994.10,Booch和Rumba94UML的发展历程(续)公众反馈OOPSLA95UnifiedMethod0.8工业化标准化统一化分散的各部分

Booch93OMT-21996.6和1996.10UML0.9&0.91

1997.11.171997.9公布UML1.1

1997.1公布UML1.0合作伙伴意见UML1.1被OMG

接纳为标准其他方法Booch91OMT-1OOSE1999.6UML1.3UML的发展历程(续)公众OOPSLA95Unifi95建模技术构造模型的目的建模技术要点系统的多种特性建模技术构造模型的目的96构造模型的目的在着手解决一个复杂问题之前,对解决方案进行检测。用于同客户和其他相关人员进行交流。加强视觉效果。对复杂问题进行适度简化。模型是对事物的抽象。人们常常在正式建造实物之前,先建立模型,以便更透彻地了解它的本质,抓住问题的要害。构造模型的目的在着手解决一个复杂问题之前,对解决方案进行检测97建模技术要点构造模型的基本技术是抽象,应突出与问题有关的特征,将与问题无关的性质略去。不必追求绝对的真实和完全,只需从期望的目的角度看其是否充分。应当刻画问题的关键方面,略去相对次要的因素。建模语言应支持人的由模糊到清晰、由粗到细逐渐完善的认识过程。应采用可视化图形建模语言。建模技术要点构造模型的基本技术是抽象,应突出与问题有关的特征98系统的多种特性在功能和性能方面:功能正确,性能良好(效率要高)。在非功能方面:鲁棒性、可扩充性、可再用性、兼容性、可移值性、可验证性、完整性以及易使用性等方面要好。一个系统应具有多方面的特点:一个系统要从多个视角去描述。一个视图可能包含多个模型图,每张模型图都应当简单明了,易于交流。系统的多种特性在功能和性能方面:功能正确,性能良好(效率要高99UML的模型图UML定义了5类、共9种模型图:用例图:从用户角度描述系统的功能,并指出各功能的操作者。静态图:类图、对象图和包图(在UML1.1中,包图不再看作一种独立的模型图)。

行为图:状态图,活动图。交互图:顺序图,合作图。实现图:构件图描述部件的物理结构以及各部件之间的依赖关系;配置图定义系统中软硬件的物理构架。UML的模型图UML定义了5类、共9种模型图:用例图100关于保险业务的一张用例图保险销售人员客户客户统计表签署保险文件销售统计表关于保险业务的一张用例图保险销售人员客户客户统计表签署101静态图:类图、对象图和包图静态图包括类图、对象图和包图,用以描述模型中类及其实例之间的静态关系。类图用于定义系统中的类,包括描述类之间的关系(关联、继承、聚合)以及类的内部结构,即类的属性和操作。对象图显示类的对象实例,一个对象图是类图的一个实例。包图由包或类组成,主要表示包与包、或包与类之间的关系。包图用于描述系统的分层结构。静态图:类图、对象图和包图静态图包括类图、对象图和包图,用以102关于金融贸易的一张类图客户业务量商人11..*

Owns1..*1..*

HandlesContains0..*0..*证券债券互助基金股票关于金融贸易的一张类图客户业务量商人1103类图和对象图类图展示类Uses0..11..*计算机名字:String内存:Integer作者名字:String年龄:Integer小影:作者名字=“王小影”年龄=32小影的工作PC:计算机名字=“DellPIV”内存=256MB小影的工作PC:计算机名字=“HPPIII”内存=128对象图展示类的实例类图和对象图类图展示类Uses0..11..*计算机104行为图:状态图,活动图行为图包括状态图和活动图,描述系统的动态模型和组成对象间的交互关系。状态图描述一类对象的所有可能的状态以及事件发生时状态的转移条件。活动图描述为满足用例要求所要进行的活动以及活动间的约束关系。使用活动图可以很方便地表示并行活动。行为图:状态图,活动图行为图包括状态图和活动图,描述系统的动105一部电梯的状态图上升[几层]在第一层上升[几层]向第一层下降下降状态空闲状态上升状态到达[第几层]到达[第几层]下降[几层]超时[]一部电梯的状态图上升[几层]在第一层上升[几层]向第一层下降106一台打印机服务器的活动图创建附加文件显示"磁盘已满"的信息显示"正在打印"的信息[磁盘已满][尚有磁盘空间]打印机,打印[文件]删除显示信息的对话框一台打印机服务器的活动图创建附加文件显示"磁盘已满"显示"正107交互图:顺序图,合作图交互图包括顺序图和合作图,它描述对象间的交互(动态合作)关系。顺序图:用以显示对象之间在时间顺序方面的动态合作关系。因此,如果强调时间和顺序,应当使用顺序图。合作图:着重描述对象间的通信方面的动态合作关系。因此,如果强调通信关系,则可以选择合作图。交互图:顺序图,合作图交互图包括顺序图和合作图,它描述对象间108一台打印机服务器的顺序图:计算机:打印服务程序:打印机:打印队列〔打印机空闲〕打印〔文件〕〔打印机忙〕打印〔文件〕打印〔文件〕一台打印机服务器的顺序图:计算机:打印服务程序:打印机109一台打印机服务器的合作图[打印机忙]1.2保存[文件]:计算机:打印队列1:打印[文件]:打印服务程序:打印机[打印机空闲]1.1打印[文件]一台打印机服务器的合作图[打印机忙]:计算机:打印队列1110实现图:构件图,配置图实现图包括构件图和配置图。构件图:描述部件的物理结构以及各部件之间的依赖关系。配置图:定义系统中(特别是在分布式及网络环境中)软硬件的物理构架。实现图:构件图,配置图实现图包括构件图和配置图。111反映程序代码构件之间

依赖关系的构件图

main.obj:主类comhnd.obj:命令处理器Whnd.obj:窗口处理器client.exe:客户程序graphic.dll:图形库comhnd.cpp:命令处理器Whnd.cpp:窗口处理器

main.cpp:主类反映程序代码构件之间

依赖关系的构件图main.obj:112描述系统物理构架的配置图《DecNet协议》客户A:个人电脑PC客户B:个人电脑PC《TCP/IP协议》《TCP/IP协议》服务器:02数据库服务器:VAX描述系统物理构架的配置图《DecNet协议》客户A:客户B:113UML的基本视图UML的用例视图UML的逻辑视图UML的构件视图UML的并发视图UML的配置视图UML的基本视图UML的用例视图114UML的五类基本视图构件示图用例视图配置视图逻辑视图并发视图UML的五类基本视图构件示图用例视图配置视图逻辑视图并发视图115UML的五类基本视图(续)用例视图:从系统外部执行者的角度理解、展示系统功能。逻辑视图:从系统的静态结构和动态行为的角度展示系统内部功能性设计。构件示图:展示代码构件的组织结构。并发视图:展示系统的并发性,刻画并发系统中的通讯和同步问题。配置视图:展示系统的物理的体系结构,其中用到的计算机和各种设备称作节点。UML的五类基本视图(续)用例视图:从系统外部执行者的角度理116UML的用例视图从系统外部执行者的角度理解系统的功能:它描述执行者与系统的交互,其执行者可以是一个用户,也可以是另一个系统。用例图面向客户、建模人员、开发人员和测试人员,是系统模型图的核心。用例视图:用例图和活动图描述。一张用例图是系统的一种用途的描述;一组用例图描述了整个系统所期望的用途。UML的用例视图从系统外部执行者的角度理解系统的功能:它描述117UML的逻辑视图描述系统如何提供要求的功能:静态结构:类(界面,内部结构);对象;关系用类图和对象图描述。动态行为:对象之间相互发送消息而引发的动态合作关系用状态图、顺序图、合作图和活动图描述各种特性:永久性,并发性主要是面向设计人员和开发人员UML的逻辑视图描述系统如何提供要求的功能:118UML的构件视图描述实现的各个模块及其相互之间的关系:模块的内部结构模块间的依赖关系关于各构件的一些附加信息:资源分配(构件的责任)其它管理信息,如开发工作的进展报告等主要面向开发人员构件视图:由构件图组成,其中构件表示不同类型的代码模块UML的构件视图描述实现的各个模块及其相互之间的关系:119UML的并发视图系统中进程和处理器的划分与任务的分配属于非功能性特性:着眼于资源的有效利用并行执行,并发地执行多线程控制,处理线程之间的通信和同步处理来自外部环境的同步事件面向开发人员和系统集成人员描述并发视图的主要模型图:动态图:状态图,合作图,活动图实现图:构件图,配置图UML的并发视图系统中进程和处理器的划分与任务的分配120UML的配置视图展示系统的物理配置,如计算机和其它设备(统称结点)及其相互之间的连接关系,包括在物理的体系结构中如何配置构件的映像关系。面向开发、集成和测试人员。配置视图用配置图描述。UML的配置视图展示系统的物理配置,如计算机和其它设备(统称121面向对象描述的三个层面概念层说明层实现层BusinessModelArchitectureDetailing

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论