面向对象程序设计教程_第1页
面向对象程序设计教程_第2页
面向对象程序设计教程_第3页
面向对象程序设计教程_第4页
面向对象程序设计教程_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

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

文档简介

面向对象程序设计教程第一页,共三十四页,2022年,8月28日2023/4/1Java面向对象程序设计教程2主要内容1.1面向过程与面向对象的方法论比较1.1.1关于系统建模方法1.1.2关于程序设计方法1.1.3面向过程方法的优势1.1.4面向对象方法的优势1.1.5结合面向过程与面向对象方法的应用优势1.1.6历史反思1.2面向对象技术的基本原则1.3面向对象技术的基本要素1.3.1封装性1.3.2继承性1.3.3多态性1.3.4面向对象概念和术语总结1.4面向对象的软件开发体系1.4.1面向对象框架下软件开发的生命周期1.4.2面向对象相关技术的基本概念1.4.3面向对象程序设计的重要性1.4.4面向对象分析与设计的重要性1.4.5Java的地位第二页,共三十四页,2022年,8月28日1.1面向过程与面向对象的

方法论比较第三页,共三十四页,2022年,8月28日2023/4/1Java面向对象程序设计教程4系统建模方法软件危机与系统建模方法的发展两种流行的建模方法:面向过程建模方法面向对象建模方法第四页,共三十四页,2022年,8月28日2023/4/1Java面向对象程序设计教程5面向过程的建模方法和建模语言始于20世纪70年代的结构化分析设计(StructuredAnalysisandDesign,SAD)方法。把一个系统看作是功能的集合,可以进行分解。用数据流图设计系统的模块结构。IDEF(ICAMDEFinitionmethod)图形化建模语言是面向过程建模技术的代表。第五页,共三十四页,2022年,8月28日2023/4/1Java面向对象程序设计教程6IDEF的基本表示法盒子代表活动,连到盒子上的箭头表示由活动产生的、或活动所需要的信息或真实对象。盒子左边及上方进入的箭头表示为完成此活动所需要的数据,控制说明了控制变换的条件或环境,或者说是约束;右边离开盒子的箭头表示执行活动时产生的数据;下方的箭头作为执行的机制,可以是执行活动的人或设备。箭头限制了盒子间的关系,而不是表示活动的顺序。第六页,共三十四页,2022年,8月28日2023/4/1Java面向对象程序设计教程7面向对象的建模方法与建模语言发源于20世纪60年代,Simula语言中引入了类(Class)的概念;但真正的面向对象程序设计是Smalltalk语言奠定基础的,“面向对象”一词也是Smalltalk首先采用的;C++的问世促进面向对象技术的发展,也使之成为标准化的面向对象程序设计语言。20世纪90年代初,Booch、Jocobson、Rumbaugh一起开发了统一建模语言(UnifiedModelingLanguage,UML)。UML可以用于确定、展示和记录软件系统,UML中的图形标记尤其适用于面向对象的软件设计。第七页,共三十四页,2022年,8月28日2023/4/1Java面向对象程序设计教程8UML的基本表示法UML有一套复杂的标记法,这里只给出对类的基本表示,就是在一个矩形框中可以详细描述类(抽象类、接口、对象实例等)的名称、属性和操作。第八页,共三十四页,2022年,8月28日2023/4/1Java面向对象程序设计教程9面向过程程序设计方法从程序设计范型(Paradigm,指设计程序的规范、模型和风格)看:

程序=过程(定义)+(过程)调用。从程序语言角度出发,依靠各种循环、函数调用、参数传递维护程序。重视程序流程,不在乎数据的传递方式,只要程序能运行就可以了。第九页,共三十四页,2022年,8月28日2023/4/1Java面向对象程序设计教程10面向过程程序设计方法的缺点子程序(过程)的抽象级别(函数)太低,难以重用。需要花相当多的成本维护程序与程序之间的关联性。数据和操作相分离,当一个或多个数据的结构发生了变化,这种变化将波及程序的很多部分甚至遍及整个程序,往往变量和参数传来传去,传到最后根本就不知道这个变量的作用何在,故程序的复杂性很难控制。已不适宜描述复杂的数据对象。第十页,共三十四页,2022年,8月28日2023/4/1Java面向对象程序设计教程11面向对象软件开发方法面向对象程序的基本元素为对象(Object)。程序结构一般由类的定义和类的使用两部分组成。程序中的一切操作都是通过向对象发送相应的消息来实现:对象接收到消息后,启动有关的方法完成相应的操作。从面向对象程序设计范型看:

程序=对象+消息。第十一页,共三十四页,2022年,8月28日2023/4/1Java面向对象程序设计教程12面向对象技术的优点直观性可增加程序的模块性(Modularity)可提高程序的可复用性(Reusability)增加可扩展性(Extendibility)可改善程序的可维护性(Maintainability),减少维护负荷可控制程序的复杂性可改进质量,降低成本第十二页,共三十四页,2022年,8月28日2023/4/1Java面向对象程序设计教程13面向对象技术的缺点与困难面向对象需要完全改变每个人的思想以及开发文化面向对象不仅仅是编程面向对象需要更关注于需求、分析和设计开发人员必须和用户紧密合作面向对象的许多优点要经过较长的时间才能显示出来面向对象技术不能保证你能构建出正确的系统第十三页,共三十四页,2022年,8月28日2023/4/1Java面向对象程序设计教程14讨论面向过程方法的优势面向对象方法的优势结合面向过程与面向对象方法的应用优势历史反思第十四页,共三十四页,2022年,8月28日1.2面向对象技术的基本原则第十五页,共三十四页,2022年,8月28日2023/4/1Java面向对象程序设计教程16OO(ObjectOrientation)四原则抽象(Abstraction)封装(Encapsulation)模块化(Modularity)分层(Hierarchy)第十六页,共三十四页,2022年,8月28日2023/4/1Java面向对象程序设计教程17问题域的合理抽象实体抽象一个对象表示一个问题域的实体的有用模型。动作抽象一个对象提供一个通用化的操作集,它们的执行是相似或有关联的功能。子系统抽象一个对象是一组对象和操作的集合,它们是一个大系统的特定组成部分。对象设计成败的关键就是抽象类型必须符合人们对该客观事物的认识习惯,这就要求设计人员对问题域应该有深入的理解,并且具有较强的综合分析能力,而达到这一步往往是有难度的。第十七页,共三十四页,2022年,8月28日1.3面向对象技术的基本要素第十八页,共三十四页,2022年,8月28日2023/4/1Java面向对象程序设计教程19写字课老师:强调“飞凤家”

——遥远的记忆,仍耳熟能详…面向对象老师:强调“PIE”

——多态(Polymorphism)

——继承(Inheritance)

——封装(Encapsulation)

“写好飞凤家”对于学习面向对象的启示

第十九页,共三十四页,2022年,8月28日2023/4/1Java面向对象程序设计教程20封装性外界要改变一个对象的状态,也就是对它所包含的数据进行操作,只能向该对象发出请求消息,然后由该对象的对应方法来改变其自身的状态。是一种典型的“黑箱”机制。有利于代码复用和信息隐藏。第二十页,共三十四页,2022年,8月28日2023/4/1Java面向对象程序设计教程21信息隐藏(Informationhiding)如果一个类想获取另一个类的信息,必须先征得同意,而不是直接拿来就用;意味着类模块中除了向外界提供的接口以外,还有大量不为外界所知的用以支持这些接口实现的属性和方法。第二十一页,共三十四页,2022年,8月28日2023/4/1Java面向对象程序设计教程22继承性继承是在类、子类以及对象之间自动地共享属性和方法的一种机制。继承具有传递性,即如果有类C继承B,B(间接)继承A,则C(间接)继承A。一个类实际上继承了层次结构中在其上面的所有类的全部描述。第二十二页,共三十四页,2022年,8月28日2023/4/1Java面向对象程序设计教程23继承性保证类可合理层次化第二十三页,共三十四页,2022年,8月28日2023/4/1Java面向对象程序设计教程24多态性同一个方法名的操作不仅仅定义一种行为,因此有比较强的表达能力和更多的用途。多态形式:

参数多态(即重载,Overload)

包含多态(即覆盖,Override)多态为描述客观事物提供了极大的能动性。第二十四页,共三十四页,2022年,8月28日2023/4/1Java面向对象程序设计教程25不同人对play()请求的响应第二十五页,共三十四页,2022年,8月28日2023/4/1Java面向对象程序设计教程26面向对象概念和术语abstractclass(抽象类)对象不能从中实例化的类abstraction(抽象)某项目(如类或操作)的基本特征aggregation(聚合)表示两个类或组件之间是“ispartof”关系aggregationhierarchy(聚合层次)通过聚合联系的一组类association(关联)对象和其它对象发生联系attribute(属性)类知道的东西(数据/信息)cardinality(基数)表示概念“多少”?class(类)相似对象的软件抽象,创建对象的模板cohesion(内聚)封装单元(例如组件或类)的相关程度collaboration(协作)类协作来完成它们的职责第二十六页,共三十四页,2022年,8月28日2023/4/1Java面向对象程序设计教程27面向对象概念和术语(续)component(组件)可以独立开发、分发以及与其它组件一起构建较大单元的内聚功能单元composition(组合)更强类型的聚合,其中“整体”完全负责它的各组成部分,每“部分”对象仅和一个“整体”对象相联系concreteclass(具体类)可以进行对象实例化的类coupling(耦合)两个项目的依赖程度encapsulation(封装)把相关的概念(例如类或组件)归组到一个项目informationhiding(信息隐藏)限制外部对属性的访问inheritance(继承)表示“isa”、“islike”或“iskindof”关系inheritancehierarchy(继承层次)通过继承相联系的一组类instance(实例)对象是类的一个实例第二十七页,共三十四页,2022年,8月28日2023/4/1Java面向对象程序设计教程28面向对象概念和术语(续)instantiate(实例化)从类中实例化对象interface(接口)定义内聚行为集的一个或多个操作特征标记的集合message(消息)消息是信息请求或执行一个动作的请求messaging(消息传递)为了协作,类互相发送与接收消息method(方法)类完成的事情(与结构化编程中的函数相似)multipleinheritance(多重继承)类直接从一个以上的类继承object(对象)一个人、地址、物品、事件、概念、屏幕显示或者报表objectspace(对象空间)主存,加上网络上所有可供使用的存储空间optionality(可选性)表示概念“你想要吗?”override(覆盖)有时在子类中你需要覆盖(重定义)属性与方法第二十八页,共三十四页,2022年,8月28日2023/4/1Java面向对象程序设计教程29面向对象概念和术语(续)pattern(模式)考虑到相关因素时通用问题的可复用方案persistence(持久性)对象怎样永久被保存的问题persistentobject(持久对象)一个保存到永久存储的对象polymorphism(多态)以不同方式响应同一消息的不同对象,使对象可以不必知道相互的类型而交互singleinheritance(单一继承)一个类直接从唯一一个类继承stereotype(原型)表示一种建模元素的通用用法subclass(子类)如果类B继承自类A,我们说B是A的子类superclass(父类)如果类B继承自类A,我们说A是B的父类transitoryobject(临时对象)一个没有被保存到永久存储的对象第二十九页,共三十四页,2022年,8月28日1.4面向对象的软件开发体系第三十页,共三十四页,2022年,8月28日2023/4/1Java面向对象程序设计教程31面向对象框架下软件开发的生命周期

第三十一页,共三十四页,2022年,8月28日2023/4/1Java面向对象程序设计教程32OO框架下软件项目开发的一般过程

业务模型需求模型分析模型设计模型实现模型测试模型关键UML元素业务流程(用例)、业务域对象系统、角色、用例、交互业务包/类/对象/消息软硬件配置、包/类/对象/消息组件、节点、编码测试计划和测试案例关键问题业务建模系统黑箱建模不含实现细节的问题域业务元素建模面向特定实现(如软硬件配置)分析图及其说明书更改分布式环境物理元素建模以及按需求编码单元(类/操作)测试、集成系统测试目标(元素之间的低耦合高聚合)足够的业务或企业信息足够的用例/方案信息以及递增/迭代计划满足需求的最简单业务/问题域模型支持最

温馨提示

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

评论

0/150

提交评论