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

下载本文档

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

文档简介

1、清华大学出版社 编著者 叶乃文 喻国宝 主讲老师:刘坤良主讲老师:刘坤良 我国软件业目前最缺我国软件业目前最缺JAVA人才人才 IDC的数据显示,目前我国对软件人才的需求 已达20万,并且以每年20%左右的速度增长。在 未来5年内,合格软件人才的需求将远大于供给。 2005年,我国软件人才的缺口已达42.5万,其中 尤以JAVA人才最为缺乏。 根据IDC的统计数字,在所有软件开发类人才 的需求中,对JAVA工程师的需求达到全部需求量 的60%70%。同时,JAVA工程师的薪水相对 较高。通常来说,具有35年开发经验的工程 师,拥有年薪10万元是很正常的一个薪酬水平。 程序设计方法 结构化程序设

2、计方法结构化程序设计方法(从系统的功能入(从系统的功能入 手手 ,可重用性、稳定性不高),可重用性、稳定性不高) 面向对象程序设计方法面向对象程序设计方法(数据为中心而(数据为中心而 不是以服务(功能)为中心来描述系统不是以服务(功能)为中心来描述系统 ,可,可 重用性高,稳定性强)重用性高,稳定性强) 1.1.2 结构化程序设计方法结构化程序设计方法 n自顶向下、逐步求精的开发方法自顶向下、逐步求精的开发方法 n 模块化的组织方式模块化的组织方式 n 结构化的语句结构结构化的语句结构 自顶向下、逐步求精 将编写程序看成是一个逐步演化的将编写程序看成是一个逐步演化的 过程。所谓自顶向下是指将分

3、析问过程。所谓自顶向下是指将分析问 题的过程划分成若干个层次,每一题的过程划分成若干个层次,每一 个新的层次都是上一个层次的细化,个新的层次都是上一个层次的细化, 即步步深入,逐层细分。即步步深入,逐层细分。 模块化 将整个系统分解成若干个模块,每个将整个系统分解成若干个模块,每个 模块实现特定的功能,最终的系统将模块实现特定的功能,最终的系统将 由这些模块组装而成。模块之间通过由这些模块组装而成。模块之间通过 接口传递信息,力求模块具有良好的接口传递信息,力求模块具有良好的 独立性。独立性。 语句结构化 A B T A B 顺序结构顺序结构 分支结构分支结构 Y N A T Y N A T

4、Y N while 循环结构循环结构 do 循环结构循环结构 结构化程序设计的特点 程序设计数据结构算法程序设计数据结构算法 程序内容过程过程调用程序内容过程过程调用 M M1M2M3M4Mn M31M32M33 分解过程 组装过程组装过程 其基本过程:分解和组装其基本过程:分解和组装 面向对象程序设计方法 对象对象 (object)现实世界中的一个实现实世界中的一个实 体体 我们可以把生活所在的真实世界(我们可以把生活所在的真实世界(Real World)当作是由许多大小不同的对象所组)当作是由许多大小不同的对象所组 成的。对象可以是有生命的个体,比如一成的。对象可以是有生命的个体,比如一

5、个人或一只鸟个人或一只鸟。 面向对象程序设计方法 对象也可以是无生对象也可以是无生 命的个体,比如一命的个体,比如一 辆汽车或一台计算辆汽车或一台计算 机机。 对象也可以是一件对象也可以是一件 抽象的事物,如天抽象的事物,如天 气或鼠标所产生的气或鼠标所产生的 事件事件。 面向对象程序设计方法 对象的特征对象的特征 对象有两个特征:属性和行为。对象有两个特征:属性和行为。 例如:一个人有他的身高或体重等属性,并有他例如:一个人有他的身高或体重等属性,并有他 的行为的行为如唱歌、打球、骑摩托车、开汽车。一如唱歌、打球、骑摩托车、开汽车。一 只狗有它的颜色作状态,也有它的行为,如吠叫或只狗有它的颜

6、色作状态,也有它的行为,如吠叫或 跳跃跳跃。 而在程序设计中,软件对象的概念由真实世界对象而在程序设计中,软件对象的概念由真实世界对象 而来。软件对象将状态保存在变量(而来。软件对象将状态保存在变量(variables)或)或 称数据字段(称数据字段(data field)里。而行为则借助方法)里。而行为则借助方法 (methods)为工具来实现)为工具来实现 。 data field 1 data field n method 1 method n 数据数据字段字段(状态)(状态) 方法(行为)方法(行为) 对象具有下面对象具有下面5 5个基本特性:个基本特性: n 自治性,指对象具有一定的

7、独立操作能力;自治性,指对象具有一定的独立操作能力; n 封闭性,指对象具有信息隐蔽的能力;封闭性,指对象具有信息隐蔽的能力; n 通信性,指对象具有与其他对象通信的能力;通信性,指对象具有与其他对象通信的能力; n 被动性,指对象的状态转换需由外界刺激引发;被动性,指对象的状态转换需由外界刺激引发; n 暂存性,指对象的动态创建与消亡。暂存性,指对象的动态创建与消亡。 面向对象程序设计方法 在真实世界里,有许多同在真实世界里,有许多同“种类种类”的对象。的对象。 而这些同而这些同“种类种类”的对象可被归类为一个的对象可被归类为一个 “类类”。例如我们可将世界上所有的汽车归。例如我们可将世界上

8、所有的汽车归 类为汽车类,所有的动物归为动物类为汽车类,所有的动物归为动物类。类。 动物类 汽车类 类类是一组具有相同属性特征的对象的抽象是一组具有相同属性特征的对象的抽象 描述描述( (抽象的概念抽象的概念) )。 面向对象程序设计方法 自然对象 植物 动物 矿物 爬行动物 哺乳动物 两栖动物 昆虫 狗 奶牛 猴子 类之间存在的三种关系:泛化、关联、聚合类之间存在的三种关系:泛化、关联、聚合 面向对象程序设计方法 汽车类 class) 实例 instance) NEW 你的车 面向对象程序设计方法 学生类:学生类: 类对象的属性:类对象的属性: 学号学号 专业专业 性别性别 身高身高 体重体

9、重 类对象的功能:类对象的功能: 回答学号回答学号 回答专业回答专业 回答性别回答性别 回答身高回答身高 回答体重回答体重 体重变化体重变化 修理电器修理电器 开车开车 自身所承受的操作自身所承受的操作 施加于其他对象的操作施加于其他对象的操作 学生对象:学生对象: 属性:属性: 学号:学号:0410430129 专业:电气专业:电气 性别:男性别:男 身高:身高:175cm 体重体重: 65kg 对象的功能:对象的功能: 回答学号回答学号 回答专业回答专业 回答性别回答性别 回答身高回答身高 回答体重回答体重 体重变化体重变化 修理电器修理电器 开车开车 赋具体值赋具体值 对对 象象 类的实

10、类的实 例例 cl class Student int No; /学号学号 String name; /姓名姓名 Date birth; /出生年月日出生年月日 float score; /学习成绩学习成绩 static float salary=80; /每月补贴每月补贴 Student() Student(int No,String str,Date date,score) this.No=No; name=new String(str); birth=new Date(date); this.score=score; int getNo()return No; void setScore

11、(float num)score=num; String getName() return name; static void addSalary() salary+=50; 0310430240 张平张平 1985年年8月月8日日 98 赋具体值赋具体值 对对 象象 Date date=new Date(1985,8,8); Student stu=new Student(0310430240,“张平张平”,date,98); 类的实类的实 例例 面向对象程序设计方法是指用面向对象程序设计方法是指用面向对象的方面向对象的方 法指导程序设计的整个过程法指导程序设计的整个过程,所谓面向对象,所谓

12、面向对象 是指以是指以对象对象为中心,分析、设计及构造应用为中心,分析、设计及构造应用 程序的机制。程序的机制。 面向对象程序设计方法 面向对象程序设计具有的特征 l 所有待处理的内容都表示成对象;所有待处理的内容都表示成对象; l 对象间依靠相互发送消息或响应消息实现通信;对象间依靠相互发送消息或响应消息实现通信; l 每个对象都有自己的惟一标识,以便区别属于同每个对象都有自己的惟一标识,以便区别属于同 一个类的不同对象;一个类的不同对象; l 对象一定属于某个类,我们又将这个对象称为所对象一定属于某个类,我们又将这个对象称为所 属类的一个实例;属类的一个实例; l 类是将具有共同属性的对象

13、进行抽象的结果,它类是将具有共同属性的对象进行抽象的结果,它 可以具有层次关系,即一个类既可以通过继承其可以具有层次关系,即一个类既可以通过继承其 他类而来,也可以被其他类继承。他类而来,也可以被其他类继承。 为什么需要面向对象方法? 面向对象设计方法的四个核心概念 一、抽象一、抽象 所谓所谓抽象抽象是指从许多事物中,舍弃个别的、非是指从许多事物中,舍弃个别的、非 本质的属性,抽取出共同的、本质的属性。本质的属性,抽取出共同的、本质的属性。 抽象包括抽象包括过程抽象过程抽象和和数据抽象数据抽象 面向对象设计方法的四个核心概念 将对象的属性和行为分别用将对象的属性和行为分别用数据结构数据结构和和

14、方方 法法描述,并将它们绑定在一起形成一个可供访描述,并将它们绑定在一起形成一个可供访 问的基本逻辑单元。(通过问的基本逻辑单元。(通过访问属性访问属性限制对限制对对对 象属性象属性的操作)的操作) 二、封二、封装装 属性属性 行为行为1 行为行为2 行为行为3 行为行为4 行为行为5 行为行为6 行为行为8 行为行为7 面向对象设计方法的四个核心概念 指一个类的定义可以基于另外一个已经存指一个类的定义可以基于另外一个已经存 在的类,即子类基于父类,从而实现父类代码在的类,即子类基于父类,从而实现父类代码 的重用。的重用。 三、三、继承继承 子子 类类 继承部分继承部分 个性部分个性部分 父父

15、 类类 共性部分共性部分 汽车类 轿车 巴士计程车 面向对象设计方法的四个核心概念 四、四、多态性多态性 不同的类对象收到同一个消息可以产生不同的类对象收到同一个消息可以产生 完全不同的响应效果,这种现象叫做多态。完全不同的响应效果,这种现象叫做多态。 哺乳动物 狗 猫鸭子 Sound()消息消息 多态性多态性 依托于依托于 继承性继承性 消息消息 消息是一个对象要求另一个对象实施某项消息是一个对象要求另一个对象实施某项 操作的请求。在一条消息中,需要包含消操作的请求。在一条消息中,需要包含消 息的息的接收者接收者和要求和要求接收者接收者执行哪项操作的执行哪项操作的 请求请求,而并没有说明应该

16、怎样做,具体的,而并没有说明应该怎样做,具体的 操作过程由接收者自行决定。操作过程由接收者自行决定。 消息传递是对象之间相互联系的惟一途径。消息传递是对象之间相互联系的惟一途径。 发送者发送消息,接收者通过调用相应的发送者发送消息,接收者通过调用相应的 方法响应消息,这个过程被不断地重复,方法响应消息,这个过程被不断地重复, 使得应用程序在人的有效控制下运转起来,使得应用程序在人的有效控制下运转起来, 最终得到相应的结果。可以说,最终得到相应的结果。可以说,消息是驱消息是驱 动面向对象程序运转的源泉动面向对象程序运转的源泉。 data field 1 data field n method n

17、 method 1 对象A对象B 消息 面向对象的4个特性 p 抽象性抽象性 p 封装性封装性 p 继承性继承性 p 多态性多态性 面向对象程序设计面向对象程序设计 面向对象程序设计方法是指用面向对象的面向对象程序设计方法是指用面向对象的 方法指导程序设计的整个过程,所谓面向方法指导程序设计的整个过程,所谓面向 对象是指以对象为中心,分析、设计及构对象是指以对象为中心,分析、设计及构 造应用程序的机制。造应用程序的机制。 面向对象程序设计的优点 1 1能够实现对现实世界客体的自然描述能够实现对现实世界客体的自然描述 2 2可控制程序的复杂性可控制程序的复杂性( (属性和行为的绑定属性和行为的绑

18、定) ) 3 3可增强程序的模块性可增强程序的模块性 4 4可提高程序的重用性可提高程序的重用性 5 5可改善程序的可维护性可改善程序的可维护性 6 6可适应新型的硬件环境(可适应新型的硬件环境(对象消息机制与对象消息机制与 分布式、并行处理、多机系统、网络等硬件分布式、并行处理、多机系统、网络等硬件 环境吻合环境吻合) 面向对象程序设计语言 所谓面向对象程序设计语言所谓面向对象程序设计语言OOPL (Object-Oriented Programming Language)是)是 指提供描述面向对象方法所涉及到的指提供描述面向对象方法所涉及到的 等基本概念的程序设计等基本概念的程序设计 语言。语言。 几种有代表性的OOPL n Simula67,支持单继承、一定含义上的多,支持单继承、一定含义上的多 态和部分动态联编。态和部分动态联编。 n Smalltalk,支持单继承、多态和动态联编。,支持单继承、多态和动态联编。 n Eiffel,支持多继承、多态和动态联编。,支持多继承、多态和动态联编。 n C+,支持多继承、多态和部分动态联编。,支持多继承、多态和部分动态联编。 n Java,提供了类机制,以及有效的接口模,提供了类机制,以及有效的接口模 型。支持单继承、多态和动态联编。型。支持单继承、多态和动态联编。 nC+,十分流行的面向对象程序设计语言,是,十分流行的面向对

温馨提示

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

评论

0/150

提交评论