面向对象方法学引论.ppt_第1页
面向对象方法学引论.ppt_第2页
面向对象方法学引论.ppt_第3页
面向对象方法学引论.ppt_第4页
面向对象方法学引论.ppt_第5页
已阅读5页,还剩94页未读 继续免费阅读

下载本文档

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

文档简介

软件工程,第九章 面向对象方法学引论,大量实践和研究表明,软件系统产生的错误有60%80%都是需求定义不准确或错误导致的。造成需求定义不准确的主要原因是:在开发初期,用户缺乏计算机与信息系统方面的知识,常常难以清楚地给出所有需求,而开发人员缺乏用户方的业务知识,不易给出软件系统切合实际的描述。 为了解决上述问题,除了从软件过程模型中寻找适当的模型以外,也可以从考虑问题的方法上着手,也就是说尽可能地使分析、设计和实现一个系统的方法接近认识一个系统的方法,接近认识客观世界的渐进过程,这就是面向对象方法研究的课题。,9.1 概述 9.2 面向对象的概念 9.3 面向对象建模 9.4 UML简介,9.1 概述,结构化方法学 面向对象方法学,比较,从概念方面看 结构化软件是功能的集合,通过模块以及模块和模块之间的分层调用关系实现; 面向对象软件是事物的集合,通过对象以及对象和对象之间的通讯联系实现;,从构成方面看 结构化软件过程数据,以过程为中心; 面向对象软件(数据相应操作)的封装,以数据为中心;,从运行控制方面看 结构化软件采用顺序处理方式,由过程驱动控制; 面向对象软件采用交互式、并行处理方式,由消息驱动控制;,从开发方面看 结构化方法的工作重点是设计; 面向对象方法的工作重点是分析; 但是,在结构化方法中,分析阶段和设计阶段采用了不相吻合的表达方式,需要把在分析阶段采用的具有网络特征的数据流图转换为设计阶段采用的具有分层特征的结构图,在面向对象方法中则不存在这一问题。,结构化软件开发,分析:问题是什么 设计:怎样解决 实现:解决分析 确定数据流图(DFD) 建立结构图(SC) 过程设计 分析确定实体联系图(ERD) 建立关系数据模式(RM) 编码调试 运行维护,各种方法特点比较(Cont.),从应用方面看 结构化方法更加适合数据类型比较简单的数值计算和数据统计管理软件的开发; 面向对象方法更加适合大型复杂的人机交互式软件和数据统计管理软件的开发;,从发展方面看 面向对象方法是软件开发方法的发展方向。,了解面向对象语言是创建对象系统必要但并不充足的第一步。了解如何“用对象进行思考”同样重要。,Owning a hammer doesnt make one an architect,Outline,面向对象的概念和原则 Introduction to Object Technology Concepts of Object Orientation 标识对象模型元素(UML),Peter Coad和Edward Yourdon提出用下列等式识认面向对象方法: 面向对象 = 对象(object) + 分类(classification) + 继承(inheritance) + 通过消息的通信(communication with messages) 可以说,采用这四个概念开发的软件系统是面向对象的,9.2 面向对象的概念,面向对象方法的出现很快受到计算机软件界的青睐,并成为20世纪90年代的主流开发方法。我们可以从下列几个方面来分析其原因: 从认知学的角度来看,面向对象方法符合人们对客观世界的认识规律。 面向对象方法开发的软件系统易于维护,其体系结构易于理解、扩充和修改。 面向对象方法中的继承机制有力支持软件的复用。,面向对象的基本概念,1. 对象(object) 对象是指一组属性以及这组属性上的专用操作的封装体。 属性(attribute)通常是一些数据,有时它也可以是另一个对象。每个对象都有它自己的属性值,表示该对象的状态。对象中的属性只能通过该对象所提供的操作来存取或修改。 操作(operation)(也称方法或服务)规定了对象的行为,表示对象所能提供的服务。,封装(encapsulation)是一种信息隐蔽技术,用户只能看见对象封装界面上的信息,对象的内部实现对用户是隐蔽的。封装的目的是使对象的使用者和生产者分离,使对象的定义和实现分开。 一个对象通常可由对象名、属性和操作三部分组成。,用较稳定把不稳定包起来,2. 类(class) 类是一组具有相同属性和相同操作的对象的集合。一个类中的每个对象都是这个类的一个实例(instance)。 类是创建对象的模板,从同一个类实例化的每个对象都具有相同的结构和行为。 例如:Circle类 对象:一个半径3cm的绿色的圆 一个半径5cm的红色的圆 一个半径6cm的黄色的圆,Class (类),Name 名称,Attribute 属性,Operation 操作,ClassName,类的名称应该:,清楚、简单,使用问题域的词汇,ClassAttributes,ClassAttributes,UML中类属性的语法为: 可见性 属性名:类型=初值,+ public - private # protected,ClassOperation,UML中类操作的语法为: 可见性操作名(参数列表) :返回类型,+ public - private # protected,举例: + display() : Area # create() - getLocation (Point : currentPoint),Class,3. 继承(inheritance) 继承是类间的基本关系,它是基于层次关系的不同类共享数据和操作的一种机制。父类中定义了其所有子类的公共属性和操作,在子类中除了定义自己特有的属性和操作外,可以继承其父类(或祖先类)的属性和操作,还可以对父类(或祖先类)中的操作重新定义其实现方法。,有时,我们定义一个类,它把一些类组织起来,提供一些公共的行为,但并不需要使用这个类的实例,而仅使用其子类的实例。我们把这种没有实例的类称为抽象类(abstract class)。在抽象类中可以定义抽象操作,抽象操作指:只定义这个类的操作接口,不定义它的实现,其实现部分由其子类定义。抽象操作操作名用斜体字表示,也可以在操作特征(signature)后面加上特征字符串abstract。,如果一个子类只有唯一一个父类,这个继承称为单一继承。如果一个子类有一个以上的父类,这种继承称为多重继承。,4. 消息(message) 消息传递是对象间通信的手段,一个对象通过向另一个对象发送消息来请求其服务。一个消息通常包括接收对象名、调用的操作名和适当的参数(如果有必要的话)。消息只告诉接收对象需要完成什么操作,但并不指示接收者怎样完成操作。消息完全由接收者解释,接收者独立决定采用什么方法完成所需的操作。 例如:MyCircle.Show(GREEN);,5. 多态性(polymorphism) 多态性是指同一个操作作用于不同的对象上可以有不同的解释,并产生不同的执行结果。例如“画”操作,作用在“矩形”对象上,则在屏幕上画一个矩形,作用在“圆”对象上,则在屏幕上画一个圆。也就是说,相同操作的消息发送给不同的对象时,每个对象将根据自己所属类中定义的这个操作去执行,从而产生不同的结果。,6. 动态绑定(dynamic binding) 动态绑定是指在程序运行时才将消息所请求的操作与实现该操作的方法连接起来。 传统的程序设计语言的过程调用与目标代码的连接(即调用哪个过程)放在程序运行前(即编译时)进行(称为静态绑定),而动态绑定则是把这种连接推迟到运行时才进行。 动态绑定是一种在运行时确定被执行代码的技术。,在一般与特殊关系中,子类是父类的一个特例,所以父类对象可以出现的地方,也允许其子类对象出现。因此在运行过程中,当一个对象发送消息请求服务时,要根据接收对象的具体情况将请求的操作与实现的方法进行连接,即动态绑定。,if 条件 then p := t ; else p := r ; area := p.getarea ;,Var p : polygon ; Var t : triangle := triangle.new ; Var r : rectangle := rectangle.new ;,统一建模语言UML,Unified Modeling Language,UML的统一,UML概述,为何研究UML结束建模方法大战 发展历史 1994年Booch和Rumbaugh在Rational Software Corporation开始了UML的工作,其目标是创建一个“统一的方法”, 1995年OOSE的创始人Jacobson加盟到这项工作中,工作重点转移到创建一种统一的建模语言UML 1996年6月、10月、1997年1月、11月分别推出了UML0.9、 UML0.91、 UML1.0、 UML1.1,UML概述,1997年11月,OMG(Object Management Group)批准把UML1.1作为基于面向对象技术的标准建模语言 之后,UML进行了持续的修订和改进,先后产生了UML1.2、1.3、1.4、1.5版本 2004年推出了UML2.0,UML2.0对UML1.x作了重大的修改。,UML (Unified Modeling Language),UML 是一种语言,提供了用于交流的词汇表和在词汇表中组合词汇的规则。词汇表和规则则注重于对系统进行概念上和物理上的描述。UML这样的建模语言正是用于软件蓝图的标准语言。贯穿于软件开发生命期,并能表达系统体系结构的各种不同视图。对软件密集型系统的制品进行:可视化、详述、构造、文档化 Visualizing 可视化 Specifying 详述 Constructing 构造 Documenting 文档化,可视化: UML只是一组图形符号。确切地讲,UML表示法中的每一个符号都有明确语义。这样,一个开发者可以用UML绘制一个模型,而另外一个开发者可以无歧义的理解这个模型 详细描述的:详细描述意味着所建的模型是精确的、无歧义的和完整的。 构造性的:UML不是一种可视化的编程语言,但用UML描述的模型可以与各种编程语言直接相连。可以进行正向工程和逆向工程两种工程。 UML的文档化语言特性:一个健壮的软件组织除了生产可执行的代码之外,还要给出各种制品。通过这些制品的产出是度量和理解系统的关键。,UML 最适于的过程,UML 在很大程度上是独立于过程,不依赖于任何特殊的软件开发生命周期。然而,为了从UML中得到最大的收益,应该考虑这样的过程。 Use-case driven 用例驱动的 Architecture-centric 以体系结构为中心 Iterative & incremental 迭代的和增量的,RUP统一过程 (Rational Unified Process ),RUP,UML,事物,关系,图,结构 事物,行为 事物,组织 事物,辅助 事物,静态 图,实现 关系,泛化 关系,依赖 关系,关联 关系,动态 图,交 互,状 态 机,包,注 释,顺 序 图,活 动 图,用 例 图,实 施 图,类 图,构 件 图,对 象 图,状 态 图,协 作 图,节 点,组 件,活 动 类,协 作,接 口,类,用 例,模型元素 模型元素指模型中的实体以及实体间相互连接的关系,视图与图,UML定义的图,UML图形分类,静态视图 静态视图对应用领域中的概念以及与系统实现有关的内部概念建模,主要由类以及类之间的相互关系组成,在静态视图中不描述依赖于时间的系统行为。静态视图用类图来展示。 设计视图 设计视图对应用自身的设计结构建模,例如,将设计结构扩展成:结构化类元,为实现功能所需的协作和良定义接口的构件的组装。设计视图由内部结构图、协作图和构件图实现。,用例视图 用例视图对被称为执行者的外部代理所感受到的主题(如系统)功能建模。用例视图的意图是列出系统中的用例和执行者,并显示哪个执行者参与了哪个用例的执行。用例的行为用动态视图,特别是交互视图来表示。用例视图用用例图来展示。,活动视图 活动展示了包含在执行计算或工作流中的计算活动的控制流。一个动作是一个基本的计算步,一个活动结点是一组动作或子活动,一个活动可描述顺序的和并发的计算。活动视图用活动图来展示。 交互视图 交互视图描述系统各部分中消息交换的顺序。交互视图提供了系统中行为的整体视图,也就是说,它展示了多个对象间交叉的控制流。交互视图用顺序图和通信图来展示。,类图 类图展示了系统中类的静态结构,即类与类之间的相互联系。类之间有多种联系方式,如关联(相互连接)、依赖(一个类依赖或使用另一个类)、泛化(一个类是另一个类的特殊情况)等。可以把若干个相关的类包装在一起作为一个单元(包),相当于一个子系统。一个系统可以有多张类图,一个类也可以出现在几张类图中。 对象图 对象图是类图的实例,它展示了系统执行在某一时间点上的一个可能的快照。对象图使用与类图相同的符号,只是在对象名下面加上下划线,同时它还显示了对象间的所有实例链接(link)关系。,Class diagram,内部结构图 内部结构图展示了类的分解,给出了组成一个结构化类元的相互连接的部分、端口和连接器。,协作图 协作图展示了协作的定义,是一种合成的结构图。协作是为了完成某一目的而一起工作的一组对象间的上下文关系。,Collaboration diagram,构件图 构件图展示了系统中的构件(即来自应用的软件单元),构件间通过接口的连接,以及构件之间的依赖关系。构件是一种结构化类元,可以用内部结构图来定义它的内部结构。,Component diagram,用例图 用例图展示了各类外部执行者与系统所提供的用例之间的连接。一个用例是系统所提供的一个功能(也可以说是系统提供的某一特定用法)的描述,执行者是指那些可能使用这些用例的人或外部系统,执行者与用例的连接表示该执行者使用了那个用例。用例图给出了用户所感受到的系统行为,但不描述系统如何实现该功能。用例通常用普通正文描述,也可以用活动图来描述。,Use case diagram,状态机图 状态机图通常是对类描述的补充,它说明该类的对象所有可能的状态以及哪些事件将导致状态的改变。一个事件可以是另一个对象向它发送的一条消息,或者是满足了某些条件。状态的改变称为迁移(transition)。一个状态迁移还可以有与之相关的动作,该动作指出状态迁移时应做什么。 并不是所有的类都要画状态机图,有些类有一些意义明确的状态,并且其行为受不同的状态所影响和改变,这些类才需要画状态机图。,Statechart diagram,活动图 活动图展示了连续的活动流。活动图通常用来描述完成一个操作所需要的活动。当然它还能用于描述其它活动流,如描述用例。活动图由动作状态组成,它包含完成一个动作的活动的规约(即规格说明)。当一个动作完成时,将离开该动作状态。活动图中的动作部分还可包括消息发送和接收的规约。,Activity diagram,顺序图 顺序图展示了几个对象之间的动态交互关系。它主要是用来显示对象之间发送消息的顺序,它还显示了对象之间的交互,即系统执行的某一特定点所发生的事。,Sequence diagram,部署图 部署图展示了运行时处理结点和在结点上生存的制品的配置。结点是运行时的计算资源,制品是物理实体,如构件、文件。 部署图中显示部署在结点上的制品和它们之间的关系,以及结点之间的连接和通信方式。,Deployment diagram,包图 包图是由包和它们间的关系组成的结构图 模型是在某一视点给定的精度上对系统的完整描述,一个系统可以从不同的视点(如分析模型、设计模型)存在多个模型。一个模型可看作一个特定类型的包,通常仅显示包就足够了(不必显示包内部的细节)。 下图给出了剧院系统所细分成的包以及它们之间的依赖关系。,包图举例:,subsystem 课程注册子系统,系统与子系统包图,subsystem 成绩管理子系统,system 教学管理系统,选课管理,成绩管理,人事信息,教学管理包,教学管理,课程,学生登记,课程登记,开设课程,选课统计,学生成绩登记,成绩统计,学生,教师,身份验证,包图举例:,MFC类,用户接口,出错处理,教学管理,数据库,教学管理系统的包图,UML用于软件的开发 UML是一种建模语言,常用于建立软件系统的模型,适应于系统开发的不同阶段。,标准建模语言UML的主要内容可以归纳为两大类: 静态建模机制 动态建模机制,UML用于软件系统开发的不同阶段 : (1)用户需求:可使用用例图来捕获用户的需求,用例图从用户的角度来描述系统的功能,表示了操作者于系统的一个交互过程。,用例图举例,签定一份 保险单,客户,保险销 售人员,销售统计,客户统计,使用用例图举例,参与者 保险销售人员,保险 销售人员,A,B,客戶,亲自拜訪 的客戶,电話客戶,参与者表示法,参与者之间的 一般 /特殊关系表示,UML用于软件系统开发的不同阶段 : (2)系统分析: 可使用类图来描述系统的静态模型,为了实现用例,类之间需要协作,可用动态模型的状态图、顺序图、协作图来描述。 分析阶段只考虑问题域的对象建模。需要通过静态模型和动态模型来描述系统结构和系统行为,金融机构类图举例 :,所有人,财产,人员,金融机构,信贷银行,银行,抵押,本金 利率 到期,*,*,有次序的,*,*,*,借方,债权人,房屋,保险机构类图举例 :,接电话的顺序图 :,受话者,交换机,远程交换机,受话者,拿起话筒,听通话声,拨号码,铃响信号,铃响,铃响停止信号,拿起话筒,铃响停止,10 ,d,e,a,b,c,b-a1,e-d5,c-b10,路径,协作图举例,打印机忙 保存打印文件,队列,计算机,打印机空闲,打印文件,打印机,打印服务器,打印文件,电梯状态图举例,在一楼,上升,停滞,下降,回到一楼,回一楼,想要到 达楼层,想要到 达楼层,电梯行程,开始,向上,向上,向下,UML用于软件系统开发的不同阶段 : (3)系统设计: 对类进行细化,如引入人机交互的接口类、处理数据类、处理通信类。,UML用于软件系统开发的不同阶段 : (4)系统实现: 用构件图描述代码构件的物理结构以及构件之间的关系。用配置图来描述和定义系统中软硬件的物理通信结构。,主机与外设配置图举例:,“TCP/IP”,网络,A 客户机,B 客户机,应用 服务器,数据库 服务器,ATM系统配置图:,局域网,Internet,ATM客户机,银行储户,ATM应用 服务器,ATM数据 服务器,UML用于软件系统开发的不同阶段 : (5)测试: 可使用类图进行单元测试; 可使用构件图、协作图进行集成测试 可使用用例图进行确认测试,,构件图(物理模型)举例:,财务系统.exe,教学管理.exe,课程,课程管理.dll,成绩管理.dll,人事管理.dll,开设课程,选课注册,教师,学生,Actor A,Use Case 1,Use Case 2,Actor B,user : Clerk,mainWnd : MainWnd,fileMgr : Fil

温馨提示

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

评论

0/150

提交评论