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

下载本文档

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

文档简介

1、 2. 什么是面向对象程序设计什么是面向对象程序设计 5. 面向对象的程序设计语言面向对象的程序设计语言 1. 程序设计方法程序设计方法 3. 面向对象程序设计的概念面向对象程序设计的概念1 1、结构化程序设计、结构化程序设计 将问题分解成若干模块,自上而下逐步求精。将问题分解成若干模块,自上而下逐步求精。 编写函数实现模块的功能,函数被调用执行完成编写函数实现模块的功能,函数被调用执行完成操作任务。操作任务。 结构化的程序设计范型结构化的程序设计范型 STRUCTURED PROGRAMING SP程序程序=过程(函数)过程(函数)+调用调用 功能分解是结构化程序设计的核心功能分解是结构化程

2、序设计的核心 根据模块功能设计根据模块功能设计数据结构数据结构 把数据结构和过程作为两个实体来看待把数据结构和过程作为两个实体来看待 重点在过程,重点在过程, 数据与过程数据与过程(即数据处理)(即数据处理)分离分离 自顶向下、逐步细化自顶向下、逐步细化的设计方法,模块的设计方法,模块之间的依赖性就会很大之间的依赖性就会很大 算法实现采用算法实现采用顺序、选择、循环顺序、选择、循环三种控三种控制结构制结构难以适应大型软件的设计(模块化相互调难以适应大型软件的设计(模块化相互调用出现的复杂性)用出现的复杂性)程序的程序的可重用性差,维护困难可重用性差,维护困难2 2、面向对象的程序设计、面向对象

3、的程序设计 程序设计范型是指设计程序的规范、模型程序设计范型是指设计程序的规范、模型和风格,它是一类程序设计语言的基础。面向和风格,它是一类程序设计语言的基础。面向对象的程序设计范型:对象的程序设计范型: 程序程序= =对象对象+ +消息消息 面向对象程序的基本元素是对象,程序的面向对象程序的基本元素是对象,程序的操作是通过向对象发送消息来实现的。操作是通过向对象发送消息来实现的。 被操作的数据成为重点,而不是实现操被操作的数据成为重点,而不是实现操作的函数过程;作的函数过程; 数据数据构成了构成了软件分解的基础软件分解的基础,而不是功,而不是功能。能。 数据和将要进行的操作看成一个整体,数据

4、和将要进行的操作看成一个整体,而不是把他们作为两个独立的实体而不是把他们作为两个独立的实体。 数据本身不能被外部程序和过程直接存数据本身不能被外部程序和过程直接存取,数据更加安全。取,数据更加安全。 程序由类的程序由类的定义和类的使用定义和类的使用两部分组成,两部分组成,在主程序中定义多个对象,规定他们之间在主程序中定义多个对象,规定他们之间传递消息的先后顺序传递消息的先后顺序。 程序中的一切操作,通过向对象发送消程序中的一切操作,通过向对象发送消息来实现。息来实现。 对象接受消息后,启动有关函数来完成对象接受消息后,启动有关函数来完成相应的操作。相应的操作。w 面向对象程序设计模式:程 序对

5、象对象对象消息消息消息输入输出w 对象对象 现实世界中,任何事物都是对象。一名学生、一辆汽车等。 对象具有静态属性和动态行为。每个对象有个名字,用属性描述他的特性,有一组操作,完成某些行为;行为包括:对自身的和其他对象的行为。 w 对象对象 在面向对象设计中,对象是属性数据与一组操作 封装在一起构成的统一体。 在面向对象程序设计中,对象与现实世界的事物对应,数据体现现实世界事物的属性,操作体现现实世界中事物的行为。 例如:一个学生对象,学号、姓名和成绩等数据就是他的属性,输入输出信息就是他的操作。w 对象(数据和操作封装成的统一体)对象(数据和操作封装成的统一体)学生1(对象)数据:学号 姓名

6、 成绩操作:输出 (学号等) 输入(学号等)学生2(对象)数据:学号 姓名 成绩操作:输出 (学号等) 输入(学号等)万物皆对象w 世界是由什么组成的?世界是由什么组成的? 名胜名胜 人人 物品物品 动物动物 ,植物,植物 身边的对象布兰尼布兰尼朱丽叶朱丽叶顾客顾客姓名:朱丽叶姓名:朱丽叶年龄:年龄:28体重:体重:52千克千克操作:操作:购买商品购买商品姓名:布兰尼姓名:布兰尼职衔:收银员职衔:收银员年龄:年龄:35体重:体重:60千克千克操作:操作:收款收款打印账单打印账单对象的特征属性w属性属性对象具有的各种特征对象具有的各种特征w每个对象的每个属性都拥有特定值每个对象的每个属性都拥有特

7、定值例如:布兰尼和朱丽叶的体重不一样例如:布兰尼和朱丽叶的体重不一样 60kg 布兰尼布兰尼属性属性 35岁岁收银员布兰尼收银员布兰尼 对象的行为方法w方法方法对象执行的操作对象执行的操作 打单打单 收银收银 方法方法 刷卡刷卡 收银员布兰尼收银员布兰尼对象的属性和方法w 法拉利法拉利F360 SpiderF360 Spider的属性和方法的属性和方法w 列出小狗对象的属性和方法列出小狗对象的属性和方法属性:属性: 品牌:法拉利品牌:法拉利 型号:型号:F360 Spider 颜色:黄色颜色:黄色 价格:价格:380万元万元方法:方法: 发动发动 停止停止 加速加速属性:属性: 颜色:白色颜色

8、:白色方法:方法: 叫叫 跑跑 吃吃对象的属性和方法w说一说教室里的对象说一说教室里的对象w描述他们的属性和方法描述他们的属性和方法 颜色:黑色颜色:黑色品牌:品牌:BENQ投影投影姓名:张三姓名:张三年龄:年龄:20学习学习类型:白炽灯类型:白炽灯开开关关变亮变亮变暗变暗材制材制: 木质木质支撑物品支撑物品w 类类 在现实世界中,“类”是一组具有相同属性和行为的对象的抽象。张三、李四每个人都是一个对象,而他们统称为人类。 类和对象之间的关系是抽象和具体的关系。现实世界中的类是一个抽象的概念。张三、李四是具体的对象,他们是人类的一个个实例。w 类类 在面向对象的程序设计中,类是对具有相同数据结

9、构和相同操作的一类对象的描述。 总是先声明类,再由类生成对象。类是建立对象的“模板”,对象是类的实例。由类创建对象的过程,叫类的实例化。(例如,做月饼的模板和月饼)从对象抽象出“类”w抽取出下列对象的属性和方法的共同抽取出下列对象的属性和方法的共同特征特征 顾客顾客 类w 顾客类顾客类w 轿车类轿车类w w 类是类是对象的模板(对象的模板(template),对象就是类的一个对象就是类的一个实例实例(instance)确定对象将会拥有确定对象将会拥有的特征(的特征(属性属性)和行为()和行为(方法方法)w 类是对象的类型类是对象的类型不同于不同于intint类型:具有方法类型:具有方法 各种口

10、味的球状冰淇淋各种口味的球状冰淇淋 球状冰淇淋模子球状冰淇淋模子类和对象w类和对象有什么区别呢?类和对象有什么区别呢?类是抽象的概念,仅仅是模板,比如说:类是抽象的概念,仅仅是模板,比如说:“人人”对象是一个你能够看得到、摸得着的具体实体,比对象是一个你能够看得到、摸得着的具体实体,比如:如:“小布什小布什”小布什小布什普京普京克林顿克林顿“人人”类类特征(属性)特征(属性)年龄年龄体重体重行为(方法)行为(方法)衣衣食食住住行行w 消息与方法消息与方法 现实世界中的对象之间相互联系、相互作用和现实世界中的对象之间相互联系、相互作用和连接,构成了各种不同的系统。连接,构成了各种不同的系统。 在

11、面向对象程序设计中,对象之间的联系称为在面向对象程序设计中,对象之间的联系称为对象交互,并对象交互,并通过通过消息传递消息传递机制实现。消息传递机制实现。消息传递机制:机制: 一个对象向另一个对象发出的请求称之为一个对象向另一个对象发出的请求称之为消息消息,这个对象称之为这个对象称之为发送者发送者,接收消息的对象(,接收消息的对象(接收接收者者)接收到消息后,就会调用有关方法,执行相)接收到消息后,就会调用有关方法,执行相应的操作,完成相应的功能。应的操作,完成相应的功能。消息传递机制消息对象数据方法1方法2对象数据方法1方法2Class A Public: void show(); priv

12、ate: int x;Void main() A a(); a.show();调用成员函数w 消息与方法消息与方法 消息的3个性质: 1、同一个对象可以接收不同形式的多个消息,做出不同的响应。 2、相同形式的消息可以传递给不同的对象,所做出的响应可以是不同的。 3、对消息的响应并不是必需的,对象可以响应消息,也可以不响应。w 消息与方法消息与方法 在面向对象的程序设计中,对象所能实现的行在面向对象的程序设计中,对象所能实现的行为或操作称之为为或操作称之为方法方法。方法包括。方法包括界面界面和和方法体方法体两两部分,方法的界面给出了方法的部分,方法的界面给出了方法的名和调用协议名和调用协议,(成

13、员函数的函数名和参数);方法体则是实现(成员函数的函数名和参数);方法体则是实现某些操作的一系列某些操作的一系列计算步骤计算步骤(函数体代码)。(函数体代码)。 调用对象的成员函数就是向该对象发送了一个调用对象的成员函数就是向该对象发送了一个消息,对象使用成员函数响应相应的消息。消息,对象使用成员函数响应相应的消息。w 抽象抽象 抽象是通过特定实例(对象)抽取共同抽象是通过特定实例(对象)抽取共同性质后性质后形成概念的过程形成概念的过程。简单理解就是复。简单理解就是复杂世界的杂世界的简单表示简单表示,强调主题,忽略无关,强调主题,忽略无关信息和细节。信息和细节。 面向对象的程序设计中的抽象包括

14、:面向对象的程序设计中的抽象包括:数数据抽象据抽象和和代码抽象代码抽象。数据抽象描述对象共。数据抽象描述对象共同的属性特征,代码抽象描述对象共同的同的属性特征,代码抽象描述对象共同的行为特征或具有相同的功能。行为特征或具有相同的功能。对对象象名名属属性性方法方法(操作操作)对象对象名名属属性性方法方法(操作操作)张张三三性别性别:男男年龄年龄:21学历学历:本本科科专业:专业: 计算计算机机 吃饭吃饭上课上课实验实验锻练锻练李四李四性别性别:女女年龄年龄:20学历学历:本本科科专业:专业:计算机计算机 吃饭吃饭上课上课实验实验锻练锻练w 封装封装 现实世界中,所谓现实世界中,所谓封装封装就是把

15、某个事物包围起就是把某个事物包围起来,使外界不知道该事物的具体内容。来,使外界不知道该事物的具体内容。 在面向对象的程序设计中,封装是指把数据和在面向对象的程序设计中,封装是指把数据和实现操作的代码集中起来放到对象的内部,并尽实现操作的代码集中起来放到对象的内部,并尽可能的隐蔽对象内部的细节。使用一个对象只需可能的隐蔽对象内部的细节。使用一个对象只需知道它对外的接口(函数),而不必知道它的数知道它对外的接口(函数),而不必知道它的数据结构细节和实现操作的代码。据结构细节和实现操作的代码。 C+中中函数名及函数参数列表函数名及函数参数列表就是对象的接口。就是对象的接口。接口接口2操作3数据操作2

16、操作1接口接口1接口接口3w 封装封装 封装的好处: 1、对象之间,相互独立,互补干扰。 2、接口联系,信息隐蔽,数据安全。w 继承继承 在面向对象的程序设计中,继承表达的在面向对象的程序设计中,继承表达的是对象类之间的是对象类之间的关系关系。继承可以使某一类。继承可以使某一类具有另外一个类的特征和能力具有另外一个类的特征和能力。继承关系。继承关系使类间具有共享特征;具有差别或新增部使类间具有共享特征;具有差别或新增部分;具有层次结构。分;具有层次结构。 继承的作用:避免继承的作用:避免重复开发重复开发公用代码,公用代码,减少冗余;减少冗余;增强一致性增强一致性,减少模块之间,减少模块之间的的

17、接口和界面。提供最大限度的接口和界面。提供最大限度的“软件复软件复用用”。生活中的继承w 子类具有父类的一般特性(包括属性和行子类具有父类的一般特性(包括属性和行为),以及自身特殊的特性。为),以及自身特殊的特性。巴士是汽车吗?巴士是汽车吗?卡车是汽车吗?卡车是汽车吗?出租车是汽车吗?出租车是汽车吗?最大载客数量最大载客数量报站报站引擎数量引擎数量外观颜色外观颜色刹车刹车加速加速汽车汽车最大载重量最大载重量卸货卸货所属公司所属公司最大载客数量最大载客数量打发票打发票属性属性行为行为请问:出租车请问:出租车包含哪些属性包含哪些属性和行为呢?和行为呢?什么是继承 继承是一种继承是一种机制机制,让,

18、让一个类一个类能够能够继承继承另另一个类一个类的的所有所有行为行为和和属性属性。 v通过继承,一个类可以拥有已有类的所有功能。通过继承,一个类可以拥有已有类的所有功能。v通过继承,所有类都以严格的层次结构来组织。通过继承,所有类都以严格的层次结构来组织。 在面向对象的程序设计中,继承被用来实现程序在面向对象的程序设计中,继承被用来实现程序的的“复用复用”。以提高程序设计的效率。以提高程序设计的效率。继承是面向对象编程技术的一块基石,因为它允继承是面向对象编程技术的一块基石,因为它允许创建许创建分等级层次分等级层次的类。的类。父类、子类w通过继承创建的新类称为通过继承创建的新类称为“子类子类”或

19、或“派派生类生类”。(subclass)(subclass)w被继承的类称为被继承的类称为“基类基类”、“父类父类”或或“超类超类”。(。(superclasssuperclass)动物动物基类(超类/父类)派生类(子类)编辑窗口类编辑窗口类窗口类窗口类对话窗口类对话窗口类玩具类玩具类车类车类玩具车类玩具车类单继承单继承多继承多继承w 多态多态 在现实世界中,有很多多态的特征在现实世界中,有很多多态的特征 在面向对象的程序设计中,多态是指发出同样在面向对象的程序设计中,多态是指发出同样的消息被不同类型的对象接收时导致完全不同的的消息被不同类型的对象接收时导致完全不同的行为。这里所说的行为。这里

20、所说的消息消息主要指对类的主要指对类的成员函数的成员函数的调用调用,而不同的行为是指成员函数的,而不同的行为是指成员函数的不同实现不同实现。 利用多态性,用户只需发送一般形式的消息,利用多态性,用户只需发送一般形式的消息,而将所有的实现留给接收消息的对象。对象根据而将所有的实现留给接收消息的对象。对象根据所接收到的消息而做出相应的动作。所接收到的消息而做出相应的动作。w 多态多态 C+语言支持两种多态性,即编译时的语言支持两种多态性,即编译时的多态性和运行时的多态性。编译时的多态多态性和运行时的多态性。编译时的多态性是指运算符和函数重载,运行时多态性性是指运算符和函数重载,运行时多态性是通过虚函数实现的。是通过虚函数实现的。 多态性增强了软件的灵活性和重用性,多态性增强了软件的灵活性和重用性,为软件的开发和维护提供了方便为软件的开发和维护提供了方便。w 软件开发效率低软件开发效率低 数据与操作分离,大型软

温馨提示

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

评论

0/150

提交评论