Object-Oriented Programming(一)

上传人:油条 文档编号:26852856 上传时间:2018-01-02 格式:PPT 页数:48 大小:215KB
返回 下载 相关 举报
Object-Oriented Programming(一)_第1页
第1页 / 共48页
Object-Oriented Programming(一)_第2页
第2页 / 共48页
Object-Oriented Programming(一)_第3页
第3页 / 共48页
Object-Oriented Programming(一)_第4页
第4页 / 共48页
Object-Oriented Programming(一)_第5页
第5页 / 共48页
点击查看更多>>
资源描述

《Object-Oriented Programming(一)》由会员分享,可在线阅读,更多相关《Object-Oriented Programming(一)(48页珍藏版)》请在金锄头文库上搜索。

1、面向对象编程基础(上),面向对象编程基础(上),程序设计发展历史面向对象编程的基本概念面向对象编程的三大原则面向对象编程详细介绍,程序设计发展历史,程序设计方法的演进 程序设计语言:机器语言汇编语言高级语言(面向过程序的高级语言面向对象的编程语言面向对象的可视化编程语言)。程序设计方法:程序设计的自然描述结构化程序设计(面向过程的程序设计方法)面向对象的程序设计方法面向对象的可视化编程方法。结枸化(面向过程)程序设计方法与面向对象程序设计方法的关系。,程序设计发展历史,面向过程程序设计的特点面向过程程序设计思想的核心:功能分解面向过程程序设计思想的主要特点:程序与数据相分离。即:程序 = 算法

2、 + 数据结构面向过程程序设计思想的主要缺点:程序代码的可重用性差,维护代价高。,程序设计发展历史,面向对象程序设计的基本概念 面向对象程序设计将数据及数据的操作(算法)当成一个整体。即: 程序 =(算法+数据结构) 主要思想:面向对象程序设计,是把一些具有相同数据特性的实例抽象成为一个类,通过对类的定义和类的使用(即对象的使用)实现对实例的使用的面向对象程序设计是一种新的程序设计范型。特点:程序由类的定义及类的使用两部分组成,通常在主程序定义各对象并规定对象间传递消息的规律,程序设计发展历史,程序中的一切操作都是通过发送消息实现的,对象接收消息后,启动相应的消息完成相应的操作对象内、对象间采

3、用消息传递机制;面向对象的程序设计最主要的优点:软件的可重用性面向对象的程序设计最重要的的概念:类与对象。,面向对象的基本概念,对象对象(Object)是状态(属性)和行为的结合体。对象是相关数据和方法的集合。对象是现实世界对象的抽象模型,使用数据和方法描述其在现实世界中的状态和行为特征,一般通过变量描述其状态,通过方法实现其行为。给定状态和行为,就确定一个对象,称为实例对象。与其相关的变量称为实例变量,相关的方法称为实例方法。,对象的两个要素,属性 用于描述对象静态特性(结构特性)的一个数据项。如描述一个人可用姓名、性别、身份证号等属性。 方法(也称服务)用于描述对象动态特性(行为特性)的一

4、个操作系列。如每个人都具有工作、学习等行为特性。,对象的封装性,对象就是一组属性和相关的方法的集合。这是面向对象方法与结构化方法的重大区别之一。 对象将数据和施加于数据上的操作打包成一个不可分割的最基本的模块,使得仅有该类的有限个方法才可以操纵、改变这些数据。,类,OOP总结对象的特征设计成类(class)。类定义了同类对象共有的变量和方法。可以生成一个有特定状态和方法的实例。面向对象编程主要就是设计类,采用自定义方式或继承方式设计一个类,然后使用它的实例对象完成具体的功能。,接口,接口(interface)可以看成是为两个不相关的类提供交流途径的工具。接口类似于协议,是一个包含方法定义和常量

5、值的集合。Java不支持多继承,子类只能有一个父类。有时需要使用其他类的方法,但又能无法直接继承,可以使用接口技术。接口不需要建立继承关系,就可以使两个不相关的类进行交互。接口提取了类的某些共同点,声明一些能被多个类实现的方法但不给出方法体。接口由类的声明语句中的implements关键字引入。,抽象的定义,抽象是指对于一个过程或者一件物品的某些细节的有目的的隐藏,以便把其他方面、细节或者结构表达得更加清楚。,抽象的例子,各种多边形对象,类与对象的关系,类、对象、实体关系图,面向对象编程的三大原则,面向对象编程,必须遵循的三个原则是:封装、继承、多态。1. 封装所谓“封装”,就是用一个框架把数

6、据和代码组合在一起,形成一个对象。遵循面向对象数据抽象的要求,一般数据都被封装起来,也就是外部不能直接访问对象的数据,外部能见到的只有提供给外面访问的公共操作(也称接口,对象之间通信的渠道)。类是支持对象封装的基本工具,对象则是封装的基本单元。封装的对象之间进行通讯的一种机制叫做消息传递。消息是向对象发出的服务请求,是面向对象系统中对象之间交互的途径。消息包含要求接收对象去执行某些活动的信息,以及完成要求所需的其他信息(参数)。发送消息的对象不需要知道接收消息的对象如何对请求予以响应。接收者接收了消息,它就承担了执行指定动作的责任,作为消息的答复,接收者将执行某个方法,来满足所接收的请求。,面

7、向对象编程的三大原则,2. 继承继承是面向对象编程技术的一块基石,通过它可以创建分等级层次的类。例如,创建一个汽车的通用类,它定义了汽车的一般属性(如:车轮、方向盘、发动机、车门)和操作方法(如:前进、倒退、刹车、转弯等)。从这个已有的类可以通过继承的方法派生出新的子类,卡车、轿车、客车等,它们都是汽车类的更具体的类,每个具体的类还可增加自己一些特有的东西。,面向对象编程的三大原则,继承的例子,汽车类的派生,类的继承,面向对象编程的三大原则,继承是父类和子类之间共享数据和方法的机制,通常把父类称为基类,子类称为派生类。一个基类可以有任意数目的派生类,从基类派生出的类还可以被派生,一群通过继承相

8、联系的类就构成了类的树型层次结构。如果一个类有两个或两个以上直接基类,这样的继承结构被称为多重继承或多继承。在现实世界中这种模型屡见不鲜,如:一些组合功能的产品像沙发床,它既有沙发的功能,又有床的功能,沙发床应允许同时继承沙发和床的特征。,面向对象编程的三大原则,多重继承的例子,多重继承示意,类的多重继承,面向对象编程的三大原则,尽管多继承从形式上看比较直观,但在实现上多继承可能引起继承操作或属性的冲突。当今的很多高级编程语言已不再支持多重继承,Java不支持多重继承,但它支持“接口”概念。接口使Java获得了多重继承的许多优点,且摒弃了相应的缺点;,面向对象编程的三大原则,菱形继承,面向对象

9、编程的三大原则,3. 多态性多态性就其字面上的意思是:多种形式或多种形态。在面向对象编程中,多态是指同一个消息或操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。 在面向对象编程中,多态性有两种,一种是静态多态,一种是动态多态。当在同一个类中,直接调用一个对象的方法时候,系统在编译时,根据传递的参数个数、参数类型以及返回值的类型等信息决定实现何种操作,这就是所谓的静态绑定。当在一个有着继承关系的类层次结构中,间接调用一个对象的方法时候,也就是说,调用经过基类的操作,这种调用只有到系统运行时,才能根据实际情况决定实现何种操作,这就是所谓的动态绑定。,类的定义,类的定义基本的Java类定

10、义格式是:类修饰符 class 类的成员变量的声明格式是:修饰符 = 初始值;例如,private String name = “Tom” ;类的成员方法的声明格式是:修饰符(形式参数列表) ,创建对象,构造方法在多数情况下,初始化一个对象的最终步骤是去调用这个对象的构造方法。构造方法的功能是:当创建一个类的对象时,首先用new 语句从堆区中分配该对象的内存空间,然后自动调用类的某一个构造方法,对该对象的内存空间进行初始化,为实例变量赋予合适的初始值。构造方法的语法规则:方法名必须与类名相同。不要声明返回类型。不能被static、final、synchronized、abstract和nati

11、ve修饰。,默认构造函数,Java语言规定,每个类都必须至少定义一个构造函数。若一个类没有定义构造方法,则编译程序提供一个构造方法。无参数的构造方法称为默认构造方法。编译程序自动提供的构造方法就是一个默认构造方法。格式如下:()super();/ 自动调用父类的默认构造方法若一个类中已定义构造方法(不论有无参数),编译程序将不再自动提供上述格式的默认构造方法了。因此,当给类定义构造方法时,建议同时定义一个无参构造方法,即默认构造方法,以避免前面所述的那种编译错误。,默认构造方法,例如下面的代码片段:,public class Dog1 / 编译程序自动提供默认方法public class Do

12、g2/ 该类缺少默认构造方法。建议程序员自定义一个 public Dog2(String s) System.out.println(“自定义构造方法);public class Dog3 / 自己定义了默认构造方法 public Dog3() System.out.println(“自定义默认构造方法); ,构造函数及重载,Java库里的String类,public final class String implements Serializable, Comparable, CharSequence private final char value;private final int of

13、fset;private final int count; public String() value = new char0; offset = 0; count = 0; public String(byte data) this(data, 0, data.length); public String(byte data, String encoding) throws UnsupportedEncodingException this(data, 0, data.length, encoding); ,析构函数,一般来说,创建一个对象时需要用构造函数初始化数据,与此相对应释放一个对象时

14、就用析构函数。所以析构函数是用于实现析构类实例所需操作的方法。JAVA因为有内存自动回收机制,所以不需要析构函数,C+则需要在析构函数里做相应的释放资源操作。析构函数没有参数,没有返回值。,this引用,this关键字,用于表示对象自身的引用值。当在类中使用实例变量x或实例方法f()时,本质上都是this.x或this.f()。在不混淆的情况下(如:没有名字隐藏),this.x可简写成x,this.f()可简写成f()。当类中有两个同名变量,一个属于类的成员变量,另一个属于某个特定的方法(方法中的局部变量),可使用this区分成员变量和局部变量。在类的static方法中,是不能使用this的。

15、这是因为类方法是一直存在,随时可用的,而此时可能该类一个对象都没有创建,自然this也就不存在,this的示例,class Pixel int x;int y; void init (int x, int y) this.x = x; this.y = y; public static void main (String args) Pixel p = new Pixel(); p.init (4,3); ,静态成员,static关键字静态变量和实例变量的区别如下:静态变量在内存中占用一份备份,运行时Java虚拟机只为静态变量分配一次内存,在加载类的过程中完成静态变量的内存空间分配。可以直接通过类名访问静态变量。对于实例变量,每创建一个实例,就会为实例变量分配一次内存。实例变量可以在内存中有多份备份,互不影响。同成员变量一样,成员方法分为静态方法和实例方法。用static修饰的方法是静态方法或类方法。访问静态方法不需要创建类的实例,可以通过类名来访问。若已创建了对象,也可通过对象引用来访问。,

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号