《面向对象程序设计教程优秀课件.ppt》由会员分享,可在线阅读,更多相关《面向对象程序设计教程优秀课件.ppt(34页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、面向对象程序设计教程第1页,本讲稿共34页2022/11/302022/11/30JavaJava面向对象程序设计教程面向对象程序设计教程2 2主要内容n n1.1 1.1 面向过程与面向对象的方法论比较面向过程与面向对象的方法论比较 1.1.1 1.1.1 关于系统建模方法关于系统建模方法 1.1.2 1.1.2 关于程序设计方法关于程序设计方法 1.1.3 1.1.3 面向过程方法的优势面向过程方法的优势 1.1.4 1.1.4 面向对象方法的优势面向对象方法的优势 1.1.5 1.1.5 结合面向过程与面向对象方法的应用优势结合面向过程与面向对象方法的应用优势 1.1.6 1.1.6 历
2、史反思历史反思n n1.2 1.2 面向对象技术的基本原则面向对象技术的基本原则n n1.3 1.3 面向对象技术的基本要素面向对象技术的基本要素 1.3.1 1.3.1 封装性封装性 1.3.2 1.3.2 继承性继承性 1.3.3 1.3.3 多态性多态性 1.3.4 1.3.4 面向对象概念和术语总结面向对象概念和术语总结n n1.4 1.4 面向对象的软件开发体系面向对象的软件开发体系 1.4.1 1.4.1 面向对象框架下软件开发的生命周期面向对象框架下软件开发的生命周期 1.4.2 1.4.2 面向对象相关技术的基本概念面向对象相关技术的基本概念 1.4.3 1.4.3 面向对象程
3、序设计的重要性面向对象程序设计的重要性 1.4.4 1.4.4 面向对象分析与设计的重要性面向对象分析与设计的重要性 1.4.5 Java1.4.5 Java的地位的地位第2页,本讲稿共34页1.1 面向过程与面向对象的方法论比较第3页,本讲稿共34页2022/11/302022/11/30JavaJava面向对象程序设计教程面向对象程序设计教程4 4系统建模方法 n n软件危机与系统建模方法的发展n n两种流行的建模方法:面向过程建模方法面向过程建模方法面向对象建模方法面向对象建模方法第4页,本讲稿共34页2022/11/302022/11/30JavaJava面向对象程序设计教程面向对象程
4、序设计教程5 5面向过程的建模方法和建模语言 n n始于20世纪70年代的结构化分析设计(Structured Analysis and Design,SAD)方法。n n把一个系统看作是功能的集合,可以进行分解。n n用数据流图设计系统的模块结构。n nIDEF(ICAM DEFinition method)图形化建模语言是面向过程建模技术的代表。第5页,本讲稿共34页2022/11/302022/11/30JavaJava面向对象程序设计教程面向对象程序设计教程6 6IDEF的基本表示法 n n盒子代表活动,连到盒子上的箭头表示由活动产生的、或活动所需要的信息或真盒子代表活动,连到盒子上的
5、箭头表示由活动产生的、或活动所需要的信息或真实对象。实对象。n n盒子左边及上方进入的箭头表示为完成此活动所需要的数据,控制说明了控制变盒子左边及上方进入的箭头表示为完成此活动所需要的数据,控制说明了控制变换的条件或环境,或者说是约束;换的条件或环境,或者说是约束;n n右边离开盒子的箭头表示执行活动时产生的数据;右边离开盒子的箭头表示执行活动时产生的数据;n n下方的箭头作为执行的机制,可以是执行活动的人或设备。下方的箭头作为执行的机制,可以是执行活动的人或设备。n n箭头限制了盒子间的关系,而不是表示活动的顺序。箭头限制了盒子间的关系,而不是表示活动的顺序。第6页,本讲稿共34页2022/
6、11/302022/11/30JavaJava面向对象程序设计教程面向对象程序设计教程7 7面向对象的建模方法与建模语言 n n发源于发源于2020世纪世纪6060年代,年代,SimulaSimula语言中引入了类语言中引入了类(ClassClass)的概念;)的概念;n n但真正的面向对象程序设计是但真正的面向对象程序设计是SmalltalkSmalltalk语言奠定基础语言奠定基础的,的,“面向对象面向对象”一词也是一词也是SmalltalkSmalltalk首先采用的;首先采用的;n nC+C+的问世促进面向对象技术的发展,也使之成为标的问世促进面向对象技术的发展,也使之成为标准化的面向
7、对象程序设计语言。准化的面向对象程序设计语言。n n2020世纪世纪9090年代初,年代初,BoochBooch、JocobsonJocobson、RumbaughRumbaugh一起开发了统一建模语言一起开发了统一建模语言(Unified Modeling(Unified Modeling Language,UML)Language,UML)。UMLUML可以用于确定、展示和记可以用于确定、展示和记录软件系统,录软件系统,UMLUML中的图形标记尤其适用于面向对中的图形标记尤其适用于面向对象的软件设计。象的软件设计。第7页,本讲稿共34页2022/11/302022/11/30JavaJav
8、a面向对象程序设计教程面向对象程序设计教程8 8UML的基本表示法n nUMLUML有一套复杂的标记法,这里只给出对类的基有一套复杂的标记法,这里只给出对类的基本表示,就是在一个矩形框中可以详细描述类本表示,就是在一个矩形框中可以详细描述类(抽象类、接口、对象实例等)的名称、属性和(抽象类、接口、对象实例等)的名称、属性和操作。操作。第8页,本讲稿共34页2022/11/302022/11/30JavaJava面向对象程序设计教程面向对象程序设计教程9 9面向过程程序设计方法 n n从程序设计范型(Paradigm,指设计程序的规范、模型和风格)看:程序=过程(定义)+(过程)调用。n n从程
9、序语言角度出发,依靠各种循环、函数调用、参数传递维护程序。n n重视程序流程,不在乎数据的传递方式,只要程序能运行就可以了。第9页,本讲稿共34页2022/11/302022/11/30JavaJava面向对象程序设计教程面向对象程序设计教程1010面向过程程序设计方法的缺点n n子程序(过程)的抽象级别(函数)太低,难以重用。子程序(过程)的抽象级别(函数)太低,难以重用。n n需要花相当多的成本维护程序与程序之间的关联性。需要花相当多的成本维护程序与程序之间的关联性。n n数据和操作相分离,当一个或多个数据的结构发数据和操作相分离,当一个或多个数据的结构发生了变化,这种变化将波及程序的很多
10、部分甚至生了变化,这种变化将波及程序的很多部分甚至遍及整个程序,往往变量和参数传来传去,传到遍及整个程序,往往变量和参数传来传去,传到最后根本就不知道这个变量的作用何在,故程序最后根本就不知道这个变量的作用何在,故程序的复杂性很难控制。的复杂性很难控制。n n已不适宜描述复杂的数据对象。已不适宜描述复杂的数据对象。第10页,本讲稿共34页2022/11/302022/11/30JavaJava面向对象程序设计教程面向对象程序设计教程1111面向对象软件开发方法 n n面向对象程序的基本元素为对象(面向对象程序的基本元素为对象(ObjectObject)。)。n n程序结构一般由类的定义和类的使
11、用两部分组成。程序结构一般由类的定义和类的使用两部分组成。n n程序中的一切操作都是通过向对象发送相应的消息来实程序中的一切操作都是通过向对象发送相应的消息来实现:对象接收到消息后,启动有关的方法完成相应的操现:对象接收到消息后,启动有关的方法完成相应的操作。作。n n从面向对象程序设计范型看:从面向对象程序设计范型看:程序程序 =对象对象 +消息。消息。第11页,本讲稿共34页2022/11/302022/11/30JavaJava面向对象程序设计教程面向对象程序设计教程1212面向对象技术的优点 n n直观性 n n可增加程序的模块性(Modularity)n n可提高程序的可复用性(Re
12、usability)n n增加可扩展性(Extendibility)n n可改善程序的可维护性(Maintainability),减少维护负荷 n n可控制程序的复杂性 n n可改进质量,降低成本 第12页,本讲稿共34页2022/11/302022/11/30JavaJava面向对象程序设计教程面向对象程序设计教程1313面向对象技术的缺点与困难n n面向对象需要完全改变每个人的思想以及开发文化 n n面向对象不仅仅是编程 n n面向对象需要更关注于需求、分析和设计 n n开发人员必须和用户紧密合作 n n面向对象的许多优点要经过较长的时间才能显示出来 n n面向对象技术不能保证你能构建出正
13、确的系统 第13页,本讲稿共34页2022/11/302022/11/30JavaJava面向对象程序设计教程面向对象程序设计教程1414讨 论n n面向过程方法的优势 n n面向对象方法的优势 n n结合面向过程与面向对象方法的应用优势 n n历史反思第14页,本讲稿共34页1.2 面向对象技术的基本原则第15页,本讲稿共34页2022/11/302022/11/30JavaJava面向对象程序设计教程面向对象程序设计教程1616OO(Object Orientation)四原则 n n抽象(Abstraction)n n封装(Encapsulation)n n模块化(Modularity)
14、n n分层(Hierarchy)第16页,本讲稿共34页2022/11/302022/11/30JavaJava面向对象程序设计教程面向对象程序设计教程1717问题域的合理抽象 n n实体抽象实体抽象 一个对象表示一个对象表示一个问题域的实体的有用一个问题域的实体的有用模型。模型。n n动作抽象动作抽象 一个对象提供一一个对象提供一个通用化的操作集,它们的个通用化的操作集,它们的执行是相似或有关联的功能。执行是相似或有关联的功能。n n子系统抽象子系统抽象 一个对象是一一个对象是一组对象和操作的集合,它们组对象和操作的集合,它们是一个大系统的特定组成部是一个大系统的特定组成部分。分。n n对象
15、设计成败的关键就是抽象对象设计成败的关键就是抽象类型必须符合人们对该客观事类型必须符合人们对该客观事物的认识习惯,这就要求设计物的认识习惯,这就要求设计人员对问题域应该有深入的理人员对问题域应该有深入的理解,并且具有较强的综合分析解,并且具有较强的综合分析能力,而达到这一步往往是有能力,而达到这一步往往是有难度的。难度的。第17页,本讲稿共34页1.3 面向对象技术的基本要素第18页,本讲稿共34页2022/11/302022/11/30JavaJava面向对象程序设计教程面向对象程序设计教程1919写字课老师:强调“飞凤家”遥远的记忆,仍耳熟能详面向对象老师:强调“PIE”多态(Polymo
16、rphism)继承(Inheritance)封装(Encapsulation)“写好飞凤家”对于学习面向对象的启示 第19页,本讲稿共34页2022/11/302022/11/30JavaJava面向对象程序设计教程面向对象程序设计教程2020封装性 n n外界要改变一个对象的状态,也就是对它所包含的数据进行操作,只能向该对象发出请求消息,然后由该对象的对应方法来改变其自身的状态。n n是一种典型的“黑箱”机制。n n有利于代码复用和信息隐藏。第20页,本讲稿共34页2022/11/302022/11/30JavaJava面向对象程序设计教程面向对象程序设计教程2121信息隐藏(Informa
17、tion hiding)n n如果一个类想获取另如果一个类想获取另一个类的信息,必须一个类的信息,必须先征得同意,而不是先征得同意,而不是直接拿来就用;直接拿来就用;n n意味着类模块中除了向意味着类模块中除了向外界提供的接口以外,外界提供的接口以外,还有大量不为外界所知还有大量不为外界所知的用以支持这些接口实的用以支持这些接口实现的属性和方法。现的属性和方法。第21页,本讲稿共34页2022/11/302022/11/30JavaJava面向对象程序设计教程面向对象程序设计教程2222继承性 n n继承是在类、子类以及对象之间自动地共享属性和方法的一种机制。n n继承具有传递性,即如果有类C
18、继承B,B(间接)继承A,则C(间接)继承A。n n一个类实际上继承了层次结构中在其上面的所有类的全部描述。第22页,本讲稿共34页2022/11/302022/11/30JavaJava面向对象程序设计教程面向对象程序设计教程2323继承性保证类可合理层次化第23页,本讲稿共34页2022/11/302022/11/30JavaJava面向对象程序设计教程面向对象程序设计教程2424多态性 n n同一个方法名的操作不仅仅定义一种行为,因此有比较强的表达能力和更多的用途。n n多态形式:参数多态(即重载,Overload)包含多态(即覆盖,Override)n n多态为描述客观事物提供了极大的
19、能动性。第24页,本讲稿共34页2022/11/302022/11/30JavaJava面向对象程序设计教程面向对象程序设计教程2525不同人对play()请求的响应第25页,本讲稿共34页2022/11/302022/11/30JavaJava面向对象程序设计教程面向对象程序设计教程2626面向对象概念和术语 abstract class(抽象类)对象不能从中实例化的类abstraction(抽象)某项目(如类或操作)的基本特征aggregation(聚合)表示两个类或组件之间是“is part of”关系aggregation hierarchy(聚合层次)通过聚合联系的一组类associ
20、ation(关联)对象和其它对象发生联系attribute(属性)类知道的东西(数据/信息)cardinality(基数)表示概念“多少”?class(类)相似对象的软件抽象,创建对象的模板cohesion(内聚)封装单元(例如组件或类)的相关程度collaboration(协作)类协作来完成它们的职责第26页,本讲稿共34页2022/11/302022/11/30JavaJava面向对象程序设计教程面向对象程序设计教程2727面向对象概念和术语(续)component(组件)可以独立开发、分发以及与其它组件一起构建较大单元的内聚功能单元composition(组合)更强类型的聚合,其中“整体
21、”完全负责它的各组成部分,每“部分”对象仅和一个“整体”对象相联系concrete class(具体类)可以进行对象实例化的类coupling(耦合)两个项目的依赖程度encapsulation(封装)把相关的概念(例如类或组件)归组到一个项目information hiding(信息隐藏)限制外部对属性的访问inheritance(继承)表示“is a”、“is like”或“is kind of”关系inheritance hierarchy(继承层次)通过继承相联系的一组类instance(实例)对象是类的一个实例第27页,本讲稿共34页2022/11/302022/11/30JavaJ
22、ava面向对象程序设计教程面向对象程序设计教程2828面向对象概念和术语(续)instantiate(实例化)从类中实例化对象interface(接口)定义内聚行为集的一个或多个操作特征标记的集合message(消息)消息是信息请求或执行一个动作的请求messaging(消息传递)为了协作,类互相发送与接收消息method(方法)类完成的事情(与结构化编程中的函数相似)multiple inheritance(多重继承)类直接从一个以上的类继承object(对象)一个人、地址、物品、事件、概念、屏幕显示或者报表object space(对象空间)主存,加上网络上所有可供使用的存储空间optio
23、nality(可选性)表示概念“你想要吗?”override(覆盖)有时在子类中你需要覆盖(重定义)属性与方法第28页,本讲稿共34页2022/11/302022/11/30JavaJava面向对象程序设计教程面向对象程序设计教程2929面向对象概念和术语(续)pattern(模式)考虑到相关因素时通用问题的可复用方案persistence(持久性)对象怎样永久被保存的问题persistent object(持久对象)一个保存到永久存储的对象polymorphism(多态)以不同方式响应同一消息的不同对象,使对象可以不必知道相互的类型而交互single inheritance(单一继承)一个类
24、直接从唯一一个类继承stereotype(原型)表示一种建模元素的通用用法subclass(子类)如果类B继承自类A,我们说B是A的子类superclass(父类)如果类B继承自类A,我们说A是B的父类transitory object(临时对象)一个没有被保存到永久存储的对象第29页,本讲稿共34页1.4 面向对象的软件开发体系第30页,本讲稿共34页2022/11/302022/11/30JavaJava面向对象程序设计教程面向对象程序设计教程3131面向对象框架下软件开发的生命周期 第31页,本讲稿共34页2022/11/302022/11/30JavaJava面向对象程序设计教程面向对
25、象程序设计教程3232OO框架下软件项目开发的一般过程 业务业务模型模型需求模型需求模型分析模型分析模型设计设计模型模型实现实现模型模型测试测试模型模型关键UML元素业务流程(用例)、业务域对象系统、角色、用例、交互业务包/类/对象/消息软硬件配置、包/类/对象/消息组件、节点、编码测试计划和测试案例关键问题业务建模系统黑箱建模不含实现细节的问题域业务元素建模面向特定实现(如软硬件配置)分析图及其说明书更改分布式环境物理元素建模以及按需求编码单元(类/操作)测试、集成系统测试目标(元素之间的低耦合高聚合)足够的业务或企业信息足够的用例/方案信息以及递增/迭代计划满足需求的最简单业务/问题域模型
26、支持最大编码或手工编码的足够信息优化组件框架(网络性能等)足够的测试内容静态结构图业务域对象角色方框图及用例图包/类图包/类图组件与配置图,逆向类图第32页,本讲稿共34页2022/11/302022/11/30JavaJava面向对象程序设计教程面向对象程序设计教程3333OO框架下软件项目开发的一般过程(续)业务业务模型模型需求模型需求模型分析模型分析模型设计设计模型模型实现实现模型模型测试测试模型模型动态时基图业务流程(用例)用例图、各用例方案的顺序图、活动图各用例方案的顺序图,状态基类型的状态图及复杂操作的活动图各用例方案的顺序图,状态基类型的状态图及复杂操作的活动图选择性更改显示分布
27、信息的顺序图关键团队成员业务分析师业务分析师业务分析师开发工程师架构师,开发工程师开发工程师,测试工程师模型确认项目经理、架构师、客户项目经理、架构师、客户项目经理、架构师、客户项目经理、架构师项目经理、架构师项目经理、架构师、客户第33页,本讲稿共34页2022/11/302022/11/30JavaJava面向对象程序设计教程面向对象程序设计教程3434面向对象相关技术的基本概念及其关系 n n面向对象分析面向对象分析(Object Oriented Analysis,OOAObject Oriented Analysis,OOA)OOA=OOA=对象对象 分类分类 继承继承 消息通信消息通信 n n面向对象设计面向对象设计(Object Oriented Design,OODObject Oriented Design,OOD)n n面向对象程序设计面向对象程序设计(Object Oriented Programming,OOPObject Oriented Programming,OOP)n nJavaJava的地位的地位 第34页,本讲稿共34页
限制150内