第六章 面向对象程序设计的思考ppt课件.pptx
《第六章 面向对象程序设计的思考ppt课件.pptx》由会员分享,可在线阅读,更多相关《第六章 面向对象程序设计的思考ppt课件.pptx(63页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、第六章 面向对象程序设计的思考中国铁道出版社Java语言程序设计主要学习内容知识目标:理解类的抽象与封装的概念;理解类与类之间的关系;理解关联、组合、聚合的概念;能力要求:理解类之间的关系;理解面向对象编程的思想;Java语言程序设计前言类的抽象与封装6.1面向对象程序的设计6.2目录CONTENTE第六章 面向对象程序设计的思考6.1类的抽象与封装6.1类的关系6.3类的抽象与封装6.1Java语言程序设计第六章 面向对象程序设计的思考6.1 类的抽象与封装Java语言程序设计第六章 面向对象程序设计的思考动物动物这就是一个抽象,它是猫、猪、狗等其他动物的抽这就是一个抽象,它是猫、猪、狗等其
2、他动物的抽象,表述了只属于动物的特征属性和行为,包括:吃、喝、象,表述了只属于动物的特征属性和行为,包括:吃、喝、拉、撒、睡。拉、撒、睡。 电脑正在使用的电源插座就是一个很好的封装例子,我们只电脑正在使用的电源插座就是一个很好的封装例子,我们只需要知道电源插座是三孔还是两孔,不需要了解插座内部的需要知道电源插座是三孔还是两孔,不需要了解插座内部的电线如何连接,插座对电脑来说隐藏了其内部用的电线以及电线如何连接,插座对电脑来说隐藏了其内部用的电线以及电线是如何连接的电线是如何连接的即属性和实现细节。即属性和实现细节。6.1 类的抽象与封装1.抽象(1)抽象的含义p 抽象:抽象是一种研究方法,即去
3、除掉研究对象中与主旨无关的次要部分,或是暂时不予考虑的部分,仅仅抽取出与研究工作有关的实质性的内容加以考察。 Java语言程序设计第六章 面向对象程序设计的思考6.1 类的抽象与封装1.抽象(2)抽象的原则p 在计算机软件开发领域,抽象原则的运用非常广泛,概括起来,可分为过程抽象和数据抽象两类。p 过程抽象:将整个系统的功能划分为若干部分,强调功能完成的过程和步骤,而隐藏其具体的实现,任何一个明确定义的功能操作都可被看做单个的实体,尽管这个操作实际上可能由一系列更低级的操作来完成。面向过程的软件开发方法采用这种抽象方法。使用过程抽象有利于控制,降低整个程序的复杂度,但是这种方法本身自由度较大,
4、难于规范化和标准化,操作起来有一定难度,在质量上不易保证。Java语言程序设计第一章 搭建JAVA运行环境Java语言程序设计第六章 面向对象程序设计的思考6.1 类的抽象与封装1.抽象(2)抽象的原则p 数据抽象:将需要处理的数据和这些数据上的操作结合在一起,抽象成不同的抽象数据类型,根据功能,性质,作用等因素抽象成不同的抽象数据类型。每个抽象数据类型既包含了数据,也包含了针对这些数据的操作,相对于过程抽象,数据抽象是更为合理的抽象方法。面向对象的软件开发方法采用数据抽象的方法来构建程序类的类,对象和方法。它强调把数据和操作结合为一个不 可分的系统单位对象,对象的外部只需要知道这个对象能做什
5、么,而不必知道它是如何做的。Java语言程序设计第六章 面向对象程序设计的思考6.1 类的抽象与封装2.封装(1)封装的定义p 封装是一种信息隐蔽技术利用抽象数据类型将数据和基于数据的操作封装在一起,用户只能看到对象的封装界面信息,对象的内部细节对用户是隐蔽的,封装的目的在于将对象的使用者和设计者分开,使用者不必知道行为实现的细节,只需使用设计者提供的消息来访问对象。Java语言程序设计第六章 面向对象程序设计的思考6.1 类的抽象与封装2.封装(2)接口p 对象向对象提供的方法,外界可以通过这些方法与对象进行交互;p 受保护的内部实现;p 功能的实现细节,不能从类外访问。Java语言程序设计
6、第六章 面向对象程序设计的思考6.1 类的抽象与封装2.封装(3)封装的意义p 在面向对象的程序设计中,类封装了数据及对数据的操作,是程序中的最小模块;p 禁止了外界直接操作类中的数据,模块与模块之间只能通过严格控制的接口进行交互,这使得模块之间的偶合度大大降低;p 保证了模块具有较好的独立性,程序维护和修改较为容易。Java语言程序设计第六章 面向对象程序设计的思考6.1 类的抽象与封装3.封装和抽象的不同p 抽象和封装是互补的概念。一方面,抽象关注对象的行为。另一方面,封装关注对象行为的细节。一般是通过隐藏对象内部状态信息做到封装,因此,封装可以看成是用来提供抽象的一种策略。p 类的抽象和
7、封装是一个问题的两个方面。 Java语言程序设计第六章 面向对象程序设计的思考面向对象程序的设计6.2Java语言程序设计第六章 面向对象程序设计的思考6.2 面向对象程序的设计1.面向对象程序设计的基本概念p 面向对象(ObjectOrientedProgramming,OOP)是一种计算机编程的架构。OOP的一条基本原则是由单个能够起到作用的单元或对象组合而成。OOP达到了软件工程的三个主要目标:重用性、灵活性和扩展性。为了实现整体运算,每个对象都能够接收信息、处理数据和向其它对象发送信息。Java语言程序设计第六章 面向对象程序设计的思考6.2 面向对象程序的设计1.面向对象程序设计的基
8、本概念(1)对象p 对象(Object)可以对其做事情的一些东西。一个对象有状态、行为和标识三种属性。 Java语言程序设计第六章 面向对象程序设计的思考6.2 面向对象程序的设计1.面向对象程序设计的基本概念(2)类p 类是一个共享相同结构和行为的对象的集合。 Java语言程序设计第六章 面向对象程序设计的思考6.2 面向对象程序的设计1.面向对象程序设计的基本概念(3)封装p 封装(encapsulation):第一层意思:将数据和操作捆绑在一起,创造出一个新的类型的过程。第二层意思:将接口与实现分离的过程。 Java语言程序设计第六章 面向对象程序设计的思考6.2 面向对象程序的设计1.
9、面向对象程序设计的基本概念(4)继承p 继承类之间的关系,在这种关系中,一个类共享了一个或多个其他类定义的结构和行为。继承描述了类之间的“是一种”关系。子类可以对基类的行为进行扩展、覆盖、重定义。Java语言程序设计第六章 面向对象程序设计的思考6.2 面向对象程序的设计1.面向对象程序设计的基本概念(5)组合p 组合既是类之间的关系也是对象之间的关系。在这种关系中一个对象或者类包含了其他的对象和类。组合描述了“有”关系。 Java语言程序设计第六章 面向对象程序设计的思考6.2 面向对象程序的设计1.面向对象程序设计的基本概念(6)多态类型p 多态类型理论中的一个概念,一个名称可以表示很多不
10、同类的对象,这些类和一个共同的超类有关。因此,这个名称表示的任何对象可以以不同的方式响应一些共同的操作集合。 Java语言程序设计第六章 面向对象程序设计的思考6.2 面向对象程序的设计1.面向对象程序设计的基本概念(7)动态绑定p 动态绑定也称动态类型,指的是一个对象或者表达式的类型直到运行时才确定。通常由编译器插入特殊代码来实现。与之对立的是静态类型。 Java语言程序设计第六章 面向对象程序设计的思考6.2 面向对象程序的设计1.面向对象程序设计的基本概念(8)静态绑定p 静态绑定也称静态类型,指的是一个对象或者表达式的类型在编译时确定。 Java语言程序设计第六章 面向对象程序设计的思
11、考6.2 面向对象程序的设计1.面向对象程序设计的基本概念(9)消息传达p 消息传递指的是一个对象调用了另一个对象的方法(或者称为成员函数)。 Java语言程序设计第六章 面向对象程序设计的思考6.2 面向对象程序的设计2.面向对象程序设计的特征p 面向对象设计方法以对象为基础,利用特定的软件工具直接完成从对象客体的描述到软件结构之间的转换。这是面向对象设计方法最主要的特点和成就。面向对象设计方法的应用解决了传统化开发方法中客观世界描述工具与软件结构的不一致性问题,缩短了开发周期,解决了从分析和设计到软件模块结构之间多次转换映射的繁杂过程,是一种很有发展前途的系统开发方法。Java语言程序设计
12、第六章 面向对象程序设计的思考6.2 面向对象程序的设计2.面向对象程序设计的特征p (1)基本特征。面向对象的程序设计把计算看作是一个系统的开发过程,系统由对象组成,经历一连串的状态变化以完成计算任务。面向对象程序设计对体系结构和支撑软件系统没有突变要求,因而不存在难以利用现有资源的问题。Java语言程序设计第六章 面向对象程序设计的思考6.2 面向对象程序的设计2.面向对象程序设计的特征p (2)基础构件。面向对象程序的基础构件是对象和类,从程序设计角度来看,对象是一种不依赖于外界的模块,对应着存储器的一块被划分的区域。它包含数据,在逻辑上包含作用于这些数据的过程,这些过程称为方法。Jav
13、a语言程序设计第六章 面向对象程序设计的思考6.2 面向对象程序的设计3.面向对象程序设计的优点p 面向对象出现以前,结构化程序设计是程序设计的主流,结构化程序设计又称为面向过程的程序设计。在面向过程程序设计中,问题被看作一系列需要完成的任务,函数(在此泛指例程、函数、过程)用于完成这些任务,解决问题的焦点集中于函数。其中函数是面向过程的,即它关注如何根据规定的条件完成指定的任务。Java语言程序设计第六章 面向对象程序设计的思考6.2 面向对象程序的设计3.面向对象程序设计的其他优点p数据抽象的概念可以在保持外部接口不变的情况下改变内部实现,从而减少甚至避免对外界的干扰;p通过继承大幅减少冗
14、余的代码,并可以方便地扩展现有代码,提高编码效率,也减低了出错概率,降低软件维护的难度;p结合面向对象分析、面向对象设计,允许将问题域中的对象直接映射到程序中,减少软件开发过程中中间环节的转换过程;p通过对对象的辨别、划分可以将软件系统分割为若干相对为独立的部分,在一定程度上更便于控制软件复杂度;p以对象为中心的设计可以帮助开发人员从静态(属性)和动态(方法)两个方面把握问题,从而更好地实现系统;p通过对象的聚合、联合可以在保证封装与抽象的原则下实现对象在内在结构以及外在功能上的扩充,从而实现对象由低到高的升级。Java语言程序设计第六章 面向对象程序设计的思考6.2 面向对象程序的设计4.
15、程序设计的比较p 面向机器的程序:最早的计算机程序,为特定的硬件系统专门设计的。其运行速度和效率都很高,但是可读性和可移植性很差,随着软件开发规模的扩大,面向机器的程序逐渐被以C为代表的面向过程的程序所取代。 Java语言程序设计第六章 面向对象程序设计的思考6.2 面向对象程序的设计4. 程序设计的比较p 面向过程的程序:模拟问题的解决过程。数据结构,算法是面向过程问题求解的核心组成。面向过程的问题求解可以精确,完备地描述具体的求解过程,但却不足以把一个包含了多个相互关联的过程的复杂系统表述清楚。 Java语言程序设计第六章 面向对象程序设计的思考6.2 面向对象程序的设计4. 程序设计的比
16、较p 面向对象的程序:面向对象的程序设计语言对现实世界的直接模拟体现在:客观世界是由一些具体的事物构成,每个事物都具有自己的一组静态特征(属性)和一组动态特征(行为)。 Java语言程序设计第六章 面向对象程序设计的思考【例6-1】例如写一个程序计算自己的身体指数BMI,知道是否处在标准体重的范围内。 Java语言程序设计分析:如果我们只是给出如何计算身体质量指数的程序,也是可以实现的,但是这样的代码不能在其他程序中重用,为使得它具备重用性,我们考虑编写这个程序时,可以定义一个静态方法计算身体质量指数,如:public static double getBMI(double weight,do
17、uble height)这个方法也有它的局限性,如何知道是哪个人的身体指数呢,可以创建一个包含这个人属性的对象,即身体质量指数BMI类。第六章 面向对象程序设计的思考BMI类UseBMI类类的关系6.3Java语言程序设计第六章 面向对象程序设计的思考6.3 类的关系1.类与类之间的关系p 类与类之间的关系有很多种,在大的分类上可以分为两种关系:纵向关系,横向关系,纵向关系就是继承关系,实现关系;横向关系较为微妙,按照UML大体分为四种:依赖关系(Dependency),关联关系(Association),聚合关系(Aggregation),组合关系(Composition),它们的强弱关系是
18、:依赖关联聚合组合 Java语言程序设计第六章 面向对象程序设计的思考6.3 类的关系2.依赖关系(1)含义 p 依赖关系是一种使用关系,特定事物的改变有可能会影响到使用该事物的事物,反之不成立。在你想显示一个事物使用另一个事物时使用,两个元素之间的一种关系,其中一个元素(服务者)的变化将影响另一个元素(客户),或向它(客户)提供所需信息。它是一种组成不同模型关系的简便方法。依赖表示两个或多个模型元素之间语义上的关系。它只将模型元素本身连接起来而不需要用一组实例来表达它的意思。它表示了这样一种情形,提供者的某些变化会要求或指示依赖关系中客户的变化。Java语言程序设计第六章 面向对象程序设计的
19、思考6.3 类的关系2.依赖关系(2)UML表示法:虚线+箭头 Java语言程序设计第六章 面向对象程序设计的思考p 关系:use ap 依赖关系最为简单,也最好理解,所谓的依赖关系就是某一对象的功能依赖于另外一个对象,而被依赖的对象只是作为一种工具在使用,并不持有对它的引用。6.3 类的关系例6-2人依赖于新鲜的空气生存。 p UML表示法:虚线+箭头 Java语言程序设计第六章 面向对象程序设计的思考public class Humanpublic void live()Air freshAir=new Air();freshAir.releasePower();public static
20、 void main(String agrs)Human human=new Human();human.live();class Airpublic void releasePower() / TODO Auto-generated method stubSystem.out.println(提供提供氧气氧气); 6.3 类的关系3.关联关系(1)含义 p 关联关系是类与类之间关系的一种比较重要的关系。所谓关联就是某个对象会长期的持有另一个对象的引用,而二者的关联往往也是相互的。关联的两个对象彼此间没有任何强制性的约束,只要二者同意,可以随时解除关系或是进行关联,它们在生命期问题上没有任何约
21、定。被关联的对象还可以再被别的对象关联,所以关联是可以共享的。Java语言程序设计第六章 面向对象程序设计的思考6.3 类的关系3.关联关系(1)UML表示法 p 实线+箭头 Java语言程序设计第六章 面向对象程序设计的思考p 简单的关联关系用实现和箭头就可以表示,另外,关联也可由两个类之间的实线表示,可以有一个可选的标签描述关系,如下图所示: 6.3 类的关系3.关联关系(3)关联的分类 p 关联体现的是两个类,或者类与接口之间予以级别的一种强依赖关系,普通关联关系的两个类处于同一个层次上,关联可以是单向(只有一个类知道另外一个类的公共属性和操作)的,也可以是双向的(两个类都知道另一个类的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第六章 面向对象程序设计的思考ppt课件 第六 面向 对象 程序设计 思考 ppt 课件
限制150内