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

下载本文档

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

文档简介

1、第一章 面向对象程序设计概述,软件方法 对象与类 抽象与封装 继承 多态 对象特性,软件方法,结构化程序设计思想:过程驱动。 程序=(算法)(数据结构),面向对象程序设计思想:数据驱动。 对象=(算法数据结构) 程序=(对象1对象2对象n),什么是面向对象程序设计? 面向对象程序设计是一种新的程序设计范例。 面向对象程序的主要结构特点是: 第一,程序一般由类的定义和类的使用两部分组成,在主程序中定义各对象并规定它们之间传递消息的规律; 第二,程序中的一切操作都是通过向对象发送消息来实现的,对象接收到消息后,启动有关方法完成相应的操作。,面向对象程序的结构特点: 1、程序由类的定义和类的使用组成

2、,主程序中定义对象并设定对象间传递消息的规律; 2、通过向对象发送消息来实现有关操作,各对象接收消息后,启动有关方法完成相应操作。,面向对象程序设计的最大优点: 软件具有可重用性,可维护性提高,可靠性可到增强。 面向对象程序设计提供了一个快速原型可使用平台。,对象与类(一),类(class):一组具有共同属性特征(数据成员)和行为特征(成员函数)的事物的抽象定义,是创建对象的样板,包含对象的状态描述和行为说明。 例,对象(object):类的实例,由属性和操作构成。 属性(attributes):区别于其它对象的特征。 操作(actions):对象可以完成的任务。 例,对象的状态:对象的静态属

3、性和属性的动态值。,烤箱类 属性: 容量:=5kg; 温度级:250C; 加热源(烤,烘) 操作: 打开/ 关闭烤箱; 选择加热源(烤,烘); 设置温度级,类的示例,对象与类(二),方法:对象能够完成的操作。 消息:要求一个对象执行某个操作的规格说明。包括接收消息的对象、消息名、零个或多个变元。 1、同一个对象可以接收不同的消息,做出不同的响应; 2、相同形式的消息可传递给不同的对象,可得到不同的响应; 3、对象可以响应消息,也可以不响应。 消息分为公有和私有两种,私有消息只在对象内部传递,共有消息可在对象间传递。,对象与类(三),类的确定: 1、有一个以上的实例; 2、实例间无绝对不同点。,

4、类函数集,类可以看做一个抽象数据类,用于定义对象,只在源代码和编译中存在;对象作为类的实例,在运行时存在,占用内存空间。,面向对象系统的特性: 封装性(Encapsulation) 继承性(Inheritance) 多态性(Polymorphism)。,对象名:烤箱1 属性: 容量:=2kg; 温度级:=150C; 加热源(烤:上面,烘:下面) 操作: 打开/ 关闭烤箱; 选择加热源(烤,烘); 设置温度级,对象示例,抽象与封装,数据抽象:通过对数据实例的分析,抽取数据描述和操作的共性。 数据封装:隐藏数据的表示和操作细节,将数据抽象的外部接口与内部实现细节划分开。 对象的封装性: 1、对象的

5、私有数据和成员函数的细节被封装; 2、有一个对外接口,说明消息传递的使用方法; 3、其它对象不能直接修改一个对象的内部代码和数据。 封装性提供了动态代码重用性,一个类的多个实例在程序运行时共享类中定义的代码。,继 承(一),继承:面向对象技术中,子类自动共享父类中的数据定义和方法的机制。,面向对象技术把类组织成一个层次结构。 例图,父类(基类):层次结构中有下层结点的类。,子类(派生类):层次结构中有上层结点的类,它继承了其上层全部基类的特性,同时还具有自己的特性。,一个类可以既是基类又是派生类。,继承层次结构,动物,猫,鸟,百灵鸟,继承方式,人,学生,教师,在职学生,职工,学生,单继承,多继

6、承,大学生,继 承(二),当一个类只允许有一个父类时,为单继承方式; 若一个类同时有多个父类,为多继承方式。 例图,按继承内容不同,分为取代继承、包含继承、受限继承和特化继承。,继承性提供了静态代码重用性,基类对象与派生类对象共享基类中定义的代码。,多 态(一),多态:相同的消息作用于不同的对象得到不同的响应。 多态性分为:编译时的多态性(重载)和运行时的多态性(虚函数)。 运算符重载:同一个运算符可作用于不同类型的数据,包括系统定义的数据类型和用户自定义数据类型。 函数重载:相同标识符为不同的函数命名。 虚函数与动态联编:重载函数在运行时才确定要调用的函数。,多 态(二),多态性允许各对象以

7、适合自身的方式响应共同的消息,用户不必为相同功能的操作作用于不同类型的对象而设计代码,增强了操作的透明性、可理解性和可维护性。,多态性增强了软件的灵活性和重用性,允许用户以更明确、易懂的方式建立通用的软件。,对象的特性,封装性:私有数据和实现操作的细节被隐藏,通过对外接口与外部联系。,模块独立性:每一个对象都是一个独立的模块,可独立成为软件的组件,可重用。,动态连接性:对象通过消息传递机制与其它对象联系,若干对象可协同完成任务。,易维护性:软件系统的维护以对象为单位,对对象以外的代码没有影响。,面向对象程序设计语言,面向对象程序设计语言应具备下述特征: 它支持对象的概念(包括对象所有的特性,如

8、封装等); 要求对象属于类; 提供继承机制。,高级程序设计语言的发展过程: 第一代:FORTRAN和Algol 60,前者提出了许多重要的程序设计基本概念,后者提出了快结构的概念。 第二代:Pascal和C,他们的重点在于如何有效地表达算法。 第三代:Ada,引入了抽象数据类型概念的程序设计语言,被认为是基于对象的语言。 第四代:Smalltalk, Object-C和C+,面向对象程序设计语言,面向对象程序设计语言的发展过程 60年代开发的Simula67,它是公认的面向对象语言的鼻祖。提供了对象、类以及继承的概念,奠定了面向对象语言的基础,并提出了面向对象的术语。主要用途是仿真建模。 Smalltalk,包括了Simula的面向对象的特征,而且数据封装更为严格。 Object-C是在1983年前后开发的,是对C进行扩充以后形成面向对象的语言,语法更像Smalltalk。它并没有扩充已有的

温馨提示

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

评论

0/150

提交评论