




已阅读5页,还剩86页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第2章面向对象技术与UML,2.1面向对象技术概述2.2面向对象的分析2.3面向对象的设计2.4基于UML的面向对象分析、设计过程,软件开发的难点,结构化软件开发方法的主要思想:对问题进行功能分解,如果分解后得到的功能过大,那么再对这些功能进行分解,直到最后分解得到的功能能比较方便地处理和理解为止。(功能分解法),在结构化方法中,现实世界被映射为功能(函数)的集合。,结构化方法的特点:结构化程序设计:程序=算法+数据结构从算法的角度进行建模,大量精力都集中在控制流程和算法的分解上(功能分解)。缺点:需求变动、维护困难,2.1面向对象技术概述,面向对象方法的引入:软件复杂性的增长,使软件开发越来越困难。面向对象的方法按照人类的自然思维的方式,面对客观世界建立软件模型。,软件现实业务映射到计算机,面向对象软件开发方法的主要思想:安照人类的自然思维的方式,对客观世界建立软件模型。客观实体和实体之间的联系构成了现实世界的所有问题。面向对象技术将现实世界中的实体及相互关系映射为对象及对象间的关系,实体间的相互作用被映射为对象间的消息发送等。,面向对象方法的主要优点,把易变的数据结构和部分功能封装在对象内并加以隐藏保证了对象行为的可靠性对其修改并不会影响其它对象,有利于维护,对需求变化有较强的适应性封装性和继承性有利于复用对象把对象的属性和操作捆绑在一起,提高了对象(作为模块)的内聚性,减少了与其它对象的耦合,为复用对象提供了可能性和方便性在继承结构中,特殊类对一般类的继承,本身就是对一般类的属性和操作的复用,什么叫问题域?,开发一个软件是为了解决某些问题,这些问题所涉及的业务范围称为该软件的问题域。不同问题域中同一事务描述的角度就不相同。问题域的范围也对软件开发的复杂程度有一定的影响。,2.1.1面向对象的基本概念,Coad和Yourdon:面向对象=对象+类+继承+通信面向对象技术基于对象概念,以对象为中心,以类和继承为构造机制,充分利用接口和多态提供灵活性,来认识、理解、刻划客观世界和设计、构建相应的软件系统。,2.1.1面向对象的基本概念,面向对象技术的基本观点:客观世界由对象组成,任何客观实体都是对象,复杂对象可以由简单对象组成。具有相同数据和操作的对象可归纳成类,对象是类的一个实例。类可以派生出子类,子类除了继承父类的全部特性外还可以有自己的特性。对象之间的联系通过消息传递来维系。,2.1.1面向对象的基本概念,面向对象的核心元素:对象类抽象封装继承多态性消息结构与连接,1.对象,客观世界里的任何实体都可以被称为对象。对象可以是具体的、有形的物,也可以是无形的事物或概念。对象是问题域或实现域中某些事物的一个抽象。不同的角度和不同的问题域对一个对象的描述有所不同。对象是一个封装数据属性和操作行为的实体。系统中的对象在软件生命周期的各个阶段可能有不同的表示形式。例如:分析设计阶段和编码阶段不同。,对象的标识(名字),每一个对象都有一个唯一的标识,即使其状态有可能与其它对象一样。,no1,no2,no3,对象的状态(数据属性),一个对象的状态是它反映于现实世界的一系列属性:基本描述载客人数飞机类型它与其它对象的关系飞机驾驶员所属的航空公司任一时刻的历史状态,可能的状态:停泊飞行着陆,班机747,对象的行为(操作行为),定义当其它对象发出请求时,该对象如何反应由对象定义的一系列操作决定,动作:起飞着落,UML中的对象表示,注意:对象名下有下划线,1.命名对象,2.匿名对象,对象名,对象名:类名,:类名,2.类,类是一组具有相同数据结构和相同操作的对象的集合,类是对象的抽象,它为属于该类的对象提供了统一的抽象描述。在下面这副图中您看到了什么类?,属性,属性是类的特征或特性属性的值是某一特定对象的属性值在类中属性名必须是唯一的同类的对象具有相同的属性,但属性值会有所不同。,银行帐户类属性帐号银行名称拥有者金额,Mary的银行帐户属性值12345678FirstNationalBankMarySmith$1024.48,UML对象的绘制注意:对象名下有下划线,属性取决于视点,从销售人员的角度型号价格颜色里程数,一辆汽车具有的属性:,从维修人员的角度马达类型传动类型维修记录,操作,对象的行为是由为此对象定义的一系列操作决定的。操作访问或修改对象的属性值。一个类可能同时存在多个实例,也可能在某一时刻没有实例。一个类的所有实例都可以使用在这个类中定义的操作。,从销售人员的角度处理客户定单准备销售合同加入清单从清单中删除,一辆汽车具有的操作:,从维修人员的角度测试刹车修理刹车转动轮胎检查马达速度,操作取决于视点,类和对象,对象,实体,类,抽象数据类型,计算机世界,实例化,抽象,映射,映射,现实世界,类是生成对象的模板,类是生成对象的模板类的定义中包含有产生和删除对象的操作。(构造函数和析构函数)一个类定义了使用哪种数据表示法来描述属性每一个实例都采用有属性值的数据表示法。一个类通过一系列操作来定义行为这种操作能在每个实例中激活。,类和对象的关系,每一个对象都是某一个类的实例。每一个类在某一时刻都有零个或更多的实体。类是静态的;它们的存在、语义和关系在执行前就已经定义好了。对象是动态的;它们在程序执行时可以被创建和删除。,3.抽象,抽象是从众多的事物中抽取出共同的、本质性的特征。抽取对问题域有帮助的对象属性和行为。问题域不同,抽象结果也不同。,Sample-ObjectandClass,现实世界中的学生对象和对Student类的建模,Bob,John,Kate,Beverly,Student属性方法,一些Student对象,Student类,抽象为,一个项目的抽象依赖于定义抽象的问题域问题域不同,抽象程度也不同,4.封装(encapsulation),封装是面向对象方法的一个重要原则。封装有两个含义:结合性(数据抽象):把对象的属性和方法结合起来,形成一个不可分割的单位。信息隐蔽性:尽可能隐藏对象的内部细节,对象的私有数据不能被外界存取,对外使用接口与外部发生联系。例如:电视机,为什么要封装,结构化程序设计:程序=算法+数据结构,全局数据,算法,算法,算法,算法,一个大问题:如何保证数据的一致性和安全性?,面向对象程序设计:程序=对象s+消息对象1算法+数据结构.对象n算法+数据结构,封装信息隐藏的过程有选择的数据隐藏防止意外的数据破坏,保证数据的一致性和安全性更易于隔离和修复错误,封装的目的,将对象的使用者和对象的设计者分开,使用者不必知道行为实现的细节,只需用设计者提供的消息来访问该对象。把定义和实现分开,可以大大提高软件的可维护性、可修改性。,可见性问题,Visibility可见性层次public:+protected:#private:-friend友元,UML类图,ROSE画出的类图,5.继承,继承性是面向对象程序设计语言不同于其他语言的最主要特点。继承是指子类可以自动拥有父类的全部属性与操作的机制。父类(基类)子类(派生类),继承性表示类之间的层次关系。类间具有共享特征类间具有差别或新增部分类间具有层次关系继承关系是“isa”或“kindof”的关系。,继承的好处,通过继承可实现代码复用,可降低软件开发和维护的费用,继承是OO技术和非OO技术的一个很明显的区别。继承的另一个好处是可以保证类之间的一致性,父类可以为所有的子类定制规则,子类必须去遵守这些规则。如C+中的虚函数,Java中的接口。,继承的描述子类可以继承父类的全部属性与操作,并可以添加或重新定义所继承的方法。如果是重新定义,称为覆盖。注意:覆盖和重载是不同的。,覆盖的例子publicclassAStringname;publicStringgetValues()return“Nameis”+name;publicclassBextendsAStringaddress;publicStringgetValues()return“addressis”+address;,重载的例子publicclassAStringname;publicStringgetValues()return“Nameis”+name;publicclassBextendsAStringaddress;publicStringgetValues(Stringname)return“addressis”+address;,继承性又分为单重继承和多重继承两类。,单重继承:子类只有一个父类,多重继承:有多个父类的继承,思考一下?,C+是否支持多继承?JAVA是否支持多继承?继承是否具有传递性?,6.多态性,定义:同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。例子:动物叫,多态性是指在父类中定义的属性和操作被子类继承后,可以表现出不同的行为。在父类与子类的类层次结构中,利用多态性可以使不同层次的类之间共享一个方法名,而个自有不同的操作。当一个对象接收到一个请求消息时,所采取的操作将根据该对象所属的类决定。,多态性分为两种:1.编译时的多态性。通过重载和对象调用实现。(静态绑定)2.运行时的多态性。通过指向基类的指针实现,并且需要虚函数。(动态绑定),接口(Interface)的概念,接口是一组没有相应方法实现的操作,非常类似于仅包含抽象方法的抽象类。接口是对对象行为的描述,但是并不给出对象的实现和状态。(通俗的说,接口只是说明函数应该做什么(what),但没有定义函数如何做(how)。)接口只包含操作而不包含属性,并且接口也没有对外界可见的关联。,一个类可以实现多个接口。使用接口比使用抽象类要安全得多,因为它可以避免许多与多重继承相关的问题。这也是为什么像Java和C#等新型编程语言允许类实现多个接口,但只能继承一个通用或抽象类。,1.通过接口实现多态性接口描述类需要实现实现的操作以及每个操作需要接收和返回的参数类型,但将操作的特定实现留给实现接口的类去完成。多个类可以实现相同的接口。单个类可以实现一个或多个接口。实现某接口的类都有此接口定义操作的不同实现方式。,多态性的实现方式:,2.通过继承实现多态性:多个类可以从单个基类继承,子类不仅接收基类的所有方法,还可以重写基类的操作以提供不同的实现。3通过抽象类实现的多态性抽象类同时提供了继承和接口的元素。抽象类本身不能实例化,必须被继承。抽象类的部分或全部成员可能未实现,该实现由继承类提供。已实现的成员仍可被重写,并且继承类可以实现附加接口或其它功能。,7.消息message,消息是向对象发出的服务请求。一个消息包含消息名、接受对象的标志、服务(方法)标志、输入信息、回答信息等。消息传递机制。注意:消息和函数存在区别消息可以包括同步消息和异步消息。如果消息是异步的,则一个对象发送消息后,就继续自己的活动,不用等待消息接收者返回控制,而函数调用往往是同步的,消息发送者要等待接收者返回。,一个对象能够接收多个形式、内容不同的消息相同形式的消息可以发送给不同的对象不同的对象对于形式形同的消息可以有不同的解释,做出不同的反应。,面向对象例子,面向对象(ObjectOriented,简称OO)方法将世界看作一个个相互独立的对象,相互之间并无因果关系。只有在某个外部力量的驱动下,对象之间才会依据某种规律相互传递信息。,如果一次成型一辆汽车太过困难,我们可以将汽车分解为很多零件,分步制造,再依据预先设计好的接口把它们安装起来,形成最终的产品。,1.当对象们被按规则组合起来以后,就能表达预期的功能。其实世界就是这样组成的。平时看上去每个对象都互无关系,然而当它们按图示规则组织起来之后,踩下刹车,汽车便乖乖停住了。,2.每个对象都只与有限的其他对象有关系。每个对象不再需要从整个系统的角度来分析,需要关心的只是与它有关系的那几个对象。这使得我们在分析对象的时候需要考虑的信息量大大减少,减化了我们所面对的复杂程度。,3.只要符合规则要求,这些标准零件就可以替换!这给我们带来了极大的灵活性和扩展能力。,4.抽象层次。站在汽车的抽象层次,我们会发现汽车是由变速器、发动机、底盘等部件组成的;站在发动机的抽象层次,我们会现发动机是由汽缸、活塞等零件组成的;而站在活塞的抽象层次,我们还会发现活塞是由拉杆、曲轴等更小的零件组成的抽象层次的好处是不论在哪一个层次上,我们都只需要面对有限的复杂度和有限的对象结构,从而可以专心地了解这个层次上的对象是如何工作的;抽象层次的另一个更重要的好处是低层次的零件更换不会影响高层次的功能,设想一下更换了发动机的火花塞以后,汽车并不会因此而不能驾驶。,8.结构与连接,问题域中对象关系之间的描述:对象的分类关系、对象之间的组成关系,对象属性之间的静态关系,对象行为之间的动态关系。面向对象方法用以下四种方法描述对象之间的关系。一般/特殊结构整体/部分结构实例连接消息连接,1.一般/特殊结构,一般/特殊结构又称做分类结构,是一组由一般/特殊关系的类所组成的结构。,单继承树形结构,多继承网络结构,2.整体/部分结构,整体/部分结构又称为组装(成)结构,描述对象之间的组成关系。,3.实例连接,反映对象和对象间的静态关系。,可通过对象的属性表达出来。,ClassDriver/.;ClassCarDriverd;/.;,4.消息连接,描述对象之间的动态联系。一个对象需要另一个对象对它提供服务。消息连接是有向。连接从消息发送者指向消息接收者。,可通过对象之间发送消息。,实例:“东北一家人?”,东北人都是活雷锋人、东北人、雷锋老张开车去东北撞啦!老张、汽车、开车撞啦,classRegionclass人Region籍贯;interface雷锋helpPeople()class东北人extends人implements雷锋籍贯=东北;helpPeople(),classCarDriveTo(Region)throwsException(撞车)人Driver;main()人老张;Car夏利;夏利.Driver=老张;try夏利.DriveTo(东北);catch(Exception),2.1.2面向对象的开发语言,1.面向对象的建模语言2.面向对象的程序设计语言,1.面向对象的建模语言,UnifiedModelingLanguage(UML)(统一建模语言)是对象管理组织(OMG)制定的一个通用的、可视化的建模语言标准,可以用来可视化(visualize)、描述(specify)、构造(construct)和文档化(document)软件密集型系统的各种工件(artifacts,又译制品)。,UML-UnifiedModelingLanguage,UML-UnifiedModelingLanguage,语义语法,UML诞生,公众反馈,OOPSLA95UnifiedMethod0.8,工业化标准化统一化分散的各部分,Booch93OMT-2,1996.6和1996.10UML0.9&0.91,1997.9公布UML1.1,1997.1公布UML1.0,合作伙伴意见,1997.11.17UML1.1被OMG接纳为标准,Booch91OMT-1其他方法OOSE,OMG(ObjectManagementGroup)对象管理组织,UML的发展过程,UML发展现状,目前通用的是UML1.x版主要UML1.3、UML1.42003年3月正式发布UML1.5UML2.02003年6月OMG采纳了UML2.0的Superstructure的提案正处于发展阶段,UML的应用领域,信息系统:与数据库有关的系统技术系统:处理和控制技术设备嵌入式系统:控制像移动电话这样的设备以及家用设备分布式系统:分布式系统(distributedsystem)是建立在网络之上的软件系统。基于web的分布式应用(client-sever结构)系统软件:操作系统和编写系统实用程序业务系统:与工作流有关的系统,UML语言的特点,不是一种可视化的程序设计语言,而是一种可视化的建模语言。是一种建模语言规格说明,是面向对象分析与设计的一种标准表示。不是过程,也不是方法,但允许任何一种过程和方法使用它。(RUP:RationalUnifiedProcess)简单并且可扩展,具有扩展和专有化机制,便于扩展,无需对核心概念进行修改。UML独立于实现技术(如开发语言),在软件开发各个环节都可能用到。为面向对象的设计与开发中涌现出的高级概念(如协作、框架、模式和组件)提供支持,强调在软件开发中,对架构、框架、模式和组件的重用。,UML与RUP,UML并不是一个方法,而只是一种语言。UML定义了基本元素,定义了语法,但是如果要做一个软件项目,还需要有方法的指导。RUP(RationalUnifiedProcess)统一过程。统一过程归纳和整理了很多在实践中总结出来的软件工程的最佳实践,是一个采用了面向对象思想,使用UML作为软件分析设计语言,并且结合了项目管理、质量保证等许多软件工程知识综合而成的一个非常完整和庞大的软件方法。RUP定义了软件开发过程中最重要的阶段和工作(四个阶段和九个核心工作流),定义了参与软件开发过程的各种角色和他们的职责,还定义了软件生产过程中产生的工件(见注),并提供了模板。最后,采用演进式软件生命周期(迭代)将工作、角色和成果物串在一起,形成了统一过程。,74,UML主要作用,使用可视化建模来获取并表现商业逻辑和对象,使用可视化建模来分析和设计计算机应用程序,UML是客户、系统分析员和程序员之间的“桥梁”,用图形的方式展现系统,建立模型是为了更好地理解我们开发的系统,便于交流。,用例图类图对象图活动图状态图时序图组件图部署图,75,UML主要作用,UML从客户的角度将复杂的系统整理清楚。(用例图分析需求和测试),76,UML主要作用,开发人员可以从不同角度整体上理解我们要开发的系统,UML主要作用,文档化我们所作出的决定,将所建造的系统记录下来,便于新程序员跟进。并且
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 西藏昌都地区2025年-2026年小学六年级数学课后作业(上学期)试卷及答案
- 2025年全国计算机等级考试模拟题及答案详解
- 2025年XX行业求职面试指南模拟题与答案全收录
- 预防传染病知识课件
- 2025年部编版六年级上册语文第四单元测试卷及答案
- 银行从业考试中级标准题及答案解析
- 司机岗前考试表及答案解析
- 基金从业考试零分及答案解析
- 出版印刷安全题库及答案解析
- 物业公司安全培训试题及答案解析
- 2025年教科版新教材科学三年级上册全册教案设计(含教学计划)
- 2025年苏教版新教材数学二年级上册教学计划(含进度表)
- 大众文化概论-课件
- 初中英语写作教学专题讲座
- 安全风险辨识与分级管控制度
- 【无线射频电路】-微波笔记·糖葫芦低通滤波器的设计
- 大学通用俄语1
- 机械加工切削参数表
- 智能纤维案例
- 供应商现场考核记录
- 视频拍摄入门(上)课件
评论
0/150
提交评论