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

下载本文档

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

文档简介

1、面向对象程序设计面向对象程序设计编程语言的发展史机器语言汇编语言高级语言面向对象语言编程语言的发展史机器语言汇编语言高级语言面向对象语言编程语言的发展史机器语言汇编语言高级语言面向对象语言指令序号机器语言程序指令功能11011000000001000把数字8送到累加器AL中20000010000001001AL中的内容与数字9相加,结果存入累加器AL311110100停止操作 机器语言是由一连串机器指令序列形成的程序设计工具。编程语言的发展史机器语言汇编语言高级语言面向对象语言指令序号编程语言的发展史机器语言汇编语言高级语言面向对象语言 汇编语言是机器语言的符号化表示。语句序号汇编语言程序语句

2、功能1MOV AL,8把数字8送到累加器AL中2ADD AL,9AL中的内容与数字9相加,结果存入累加器AL3HLT停止操作编程语言的发展史机器语言汇编语言高级语言面向对象语言 汇编语编程语言的发展史机器语言汇编语言高级语言面向对象语言 高级语言采用人类语言和表达习惯的符号和表达式来编制程序C语言程序main() int al; al=8+9; printf(“%dn”,al);编程语言的发展史机器语言汇编语言高级语言面向对象语言 ?编程语言的发展史机器语言汇编语言高级语言面向对象语言?编程语言的发展史机器语言汇编语言高级语言面向对象语言第一章 面向对象程序设计概述面向对象思想的由来面向对象程

3、序设计语言面向对象的基本概念面向对象程序的特性面向对象的程序设计第一章 面向对象程序设计概述面向对象思想的由来面向对象程序1.1 面向对象思想的由来 软件危机首次爆发于二十世纪六十年代。在大型程序设计中,人们发现投入大量的人力、物力、时间开发出的软件,其成本、效率、质量等方面却处于失控状态,尤其软件维护异常困难。程序的修改扩充往往需要大量重复性投入。软件危机1.1 面向对象思想的由来 软件危机首次爆发于二十世1.1 面向对象思想的由来软件危机产生的原因2 软件是一种逻辑产品而非物理产品,软件的开发过程本质上是人的思考过程。3 人的智力在面对越来越复杂的问题时,处理问题的效率会越来越低。1 软件

4、开发者不熟悉用户问题的领域,或没有理解用户需求,软件产品与要求不一致。1.1 面向对象思想的由来软件危机产生的原因2 软件是一种 程序设计范型 语言支持结构化程序设计(SP)Structure Programming Pascal、 C 面向对象程序设计(OOP)Object Oriented Programming C+、Java1.1 面向对象思想的由来 程序设计范型 语言支持结构化程序设计程序 = 算法 + 数据结构 结构化程序设计的基本思想是采用自顶向下、逐步细化的设计方法和单入单出的控制结构。这种设计方法的着眼点是面向过程的,特点是将数据与程序分开存储,即数据与数据处理分离。1.1

5、面向对象思想的由来结构化程序设计程序 = 算法 + 数据结构 结构化程序结构化程序设计1.1 面向对象思想的由来模块 22.12.2模块 11.21.11.31.3.11.3.21.3.3模块 33.13.23.1.13.1.2 程 序结构化程序设计1.1 面向对象思想的由来模块 22.12. 例如:输入一组整数,统计正整数和负整数的个数。按照结构化程序设计的思想,可以将其拆分为以下的子任务:1. 读入数据;2.统计正数、负数的个数; 3. 输出结果; 正整数个数为0;负整数个数0; 取第一个整数:1 如果该数大于 0,正整数个数加1;2 如果该数小于0,负整数个数加1;3 取下一个整数;重复

6、至统计完 例如:输入一组整数,统计正整数和负整数的个数例如:一个简单的学生成绩管理系统用来管理若干个学生的信息。包括学号、姓名、某门课的平时成绩、期末成绩、总评成绩和名次。typedef struct studentScore char number10; /学号 char name10; /姓名 int dailyScore ; /平时成绩 int finalScore; /期末成绩 float generalScore; /总评成绩 int place; /名次 SS; /结构体类型名例如:一个简单的学生成绩管理系统用来管理若干个学生的信息。包例如:一个简单的学生成绩管理系统用来管理若干个

7、学生的信息。主要操作:成绩的录入、计算、排名、输出。总评成绩=平时成绩*0.3+期末成绩*0.7。操作数据的几个函数:void readData(SS stu ,int n); /输入n个学生的学号、姓名、平时及期末成绩void calcuScore(SS stu ,int n); /计算n个学生的总评成绩void sortScore(SS stu ,int n);/根据总评成绩排名,得出每个学生的place值void printOut(SS stu ,int n); /按一定的格式输出n个学生的完整信息例如:一个简单的学生成绩管理系统用来管理若干个学生的信息。操现在,需求改变了:在C语言课程

8、中,需要增加实验成绩这一项,学生的总评成绩计算方法修改为:总评成绩=平时成绩*0.2+实验成绩*0.2+期末成绩*0.6。显然,类型SS中需要增加一个数据项int experiScore; 表示实验成绩。同时,所有的函数代码都应该作相应地修改 例如:一个简单的学生成绩管理系统用来管理若干个学生的信息。现在,需求改变了:例如:一个简单的学生成绩管理系统用来管理若缺点以过程为中心,打破事物间的相互关联,给后续开发带来困难可重用性差可维护性差1.1 面向对象思想的由来结构化程序设计缺点以过程为中心,打破事物间的相互关联,给后续开发带来困难 面向对象技术追求的是软件系统对现实世界的直接模拟,尽量实现将

9、现实世界中的事物直接映射到软件系统的解空间。1.1 面向对象思想的由来 面向对象技术追求的是软件系统对现实世界的直物质: 一辆白色 的自行车意识: 自行车具体事物: “对象” 自行车类的实例抽象概念: “类” 自行车类现实问题空间面向对象解空间1.1 面向对象思想的由来抽象性事物共有的属性和状态事物共有的行为或功能物质:具体事物:现实问题空间面向对象解空间1.1 面向对象问题空间:企业员工工资管理系统员工类工作编号;姓名;基本工资;出勤率;设置基本工资;查询基本工资;计算实发工资;类名设置基本工资;查询基本工资;计算实发工资;设置基本工资;查询基本工资;计算实发工资;设置基本工资;查询基本工资

10、;计算实发工资;操作设置基本工资;查询基本工资;计算实发工资;属性设置基本工资;查询基本工资;计算实发工资;工作编号;姓名;基本工资;出勤率;设置基本工资;查询基本工资;计算实发工资;工作编号;姓名;基本工资;出勤率; 数据抽象 :int m_iStaffNum / 工作编号 char m_pName / 姓名 float m_fBasicSal / 基本工资 float m_fRateOfAttend / 出勤率 行为抽象 :SetBasicSal ( ) / 设置基本工资 GetBasicSal ( ) / 查询基本工资 CalculateSal( ) / 计算实际发放工资 问题空间:企业

11、员工工资管理系统员工类工作编号;设置基本工资;class SS private: char number10; char name10; int dailyScore; int finalScore ; float generalScore; int place ; public: void readData( );void calcuScore( );void printOut( ); friend void sortScore(SS stu ,int n) ; ; 例如:一个简单的学生成绩管理系统用来管理若干个学生的信息。class SS public: 例如:一个简单的学此时的主函数代码

12、为:void main( ) SS stu30; /定义30个学生类的对象 int i, n=5; /对前5个学生执行下列操作 for (i=0;in; i+) stui.readData( ); for (i=0;in; i+) stui.calcuScore( ); sortScore( stu,5) ; for (i=0;in;i+) stui.printOut( ); 若在类SS中增加 int experiScore; 表示实验成绩,总评成绩计算方法改变,则类的成员函数代码需做相应地改造,但主函数的代码不需做任何变动。例如:一个简单的学生成绩管理系统用来管理若干个学生的信息。程序=对象

13、+消息此时的主函数代码为:例如:一个简单的学生成绩管理系统用来管理1.2 面向对象的基本概念对象(object) 一般意义上的对象指的是一个实体的实例,在这个实体中包括了特定的数据和对这些数据的操作。1.2 面向对象的基本概念对象(object) 1.2 面向对象的基本概念对象(object)封装的实体 = 数据+方法(操作)数据:属性或状态方法:作用于数据上的操作封装:属性的访问和变化通过方法完成每个对象由对象标识符唯一标识1.2 面向对象的基本概念对象(object)封装的实体 圆圆心位置半径颜色移动面积对象名属性操作1.2 面向对象的基本概念对象(object)r圆圆心位置移动对象名属性

14、操作1.2 面向对象的基本概念对象1.2 面向对象的基本概念对象(object) 特点1. 以数据为中心。 对象是由数据及有权对这些数据施加的操作组成的统一体,这些操作围绕着对其数据所需进行的处理来设置,操作的结果也与这些数据的值相关。1.2 面向对象的基本概念对象(object) 特点11.2 面向对象的基本概念对象(object) 特点2. 对象是主动的。 对象是进行处理的主体。当系统需要完成某对象内部的某个操作时,不能从外部直接加工该对象自己的数据,而是必须通过公共接口向该对象发消息,请求该对象执行某个操作,处理相关的数据。1.2 面向对象的基本概念对象(object) 特点21.2 面

15、向对象的基本概念对象(object) 特点3. 实现了数据封装。 对象的数据和操作完全被封装在对象的内部,对外是隐蔽、不可见的。对对象内部数据的访问和处理只能通过共有的操作进行。1.2 面向对象的基本概念对象(object) 特点31.2 面向对象的基本概念对象(object) 特点4. 本质上具有并行性。 不同对象各自独立地处理自身的数据,彼此通过发消息传递信息完成通信。1.2 面向对象的基本概念对象(object) 特点41.2 面向对象的基本概念对象(object) 特点5. 模块性好。 对象是面向对象软件系统的基本模块,对象的操作围绕着对其内部数据所需进行的处理来设置,没有无关的操作。

16、1.2 面向对象的基本概念对象(object) 特点51.2 面向对象的基本概念属性(Attribute) 描述对象静态特征的数据项种类 公有(public)保护(protected)私有(private)1.2 面向对象的基本概念属性(Attribute) 描述1.2 面向对象的基本概念方法(Method) 描述对象的动态特征或行为是对象与外界的接口作用 改变对象的属性返回对象的属性object 1object 21.2 面向对象的基本概念方法(Method) 描述对象的1.2 面向对象的基本概念 操作的方式 以某种方式操纵数据的操作(如增、删、 查询、选择); 完成某种计算的操作; 为控制

17、事件的发生而监控对象的操作。方法(Method)1.2 面向对象的基本概念 操作的方式方法(Method)1.2 面向对象的基本概念类(class)r1r2r3 类是对具有相同属性和方法的一组相似对象的抽象描述。obj1obj2obj31.2 面向对象的基本概念类(class)r1r2r3 1.2 面向对象的基本概念自行车对象数据抽象自行车类属性:架子尺寸 车轮尺寸 颜色 原材料操作:转弯 移动 修理1.2 面向对象的基本概念自行车对象数据抽象自行车类属性:1.2 面向对象的基本概念类(class)类与对象的关系类是对象的抽象对象是类的实例1.2 面向对象的基本概念类(class)类与对象的关

18、系1.2 面向对象的基本概念教师1教师2教师3教师N属性: 行为:教师号 获取教师号姓名 获取姓名年龄 获取年龄 职称 获取职称对象(教师1)对象(教师2)对象(教师3)对象(教师N)教师群体教师类对象1.2 面向对象的基本概念教师1属性: 行1.2 面向对象的基本概念类(class) 对于同一类的不同实例之间,必定具有: 相同的操作集合 相同的属性集合 不同的对象名称1.2 面向对象的基本概念类(class) 对于同一类1.2 面向对象的基本概念消息(message) 消息对象之间相互请求或相互协作的途径,是要求某个对象执行其中某个功能操作的规格的说明。object 1object 2发送方

19、接收方1.2 面向对象的基本概念消息(message) 1.2 面向对象的基本概念消息(message)消息有三部分组成:接收消息的对象消息名零个或多个变元如:MyCircle.Show(Red)1.2 面向对象的基本概念消息(message)消息有三部1.2 面向对象的基本概念消息(message)同一对象可接收不同形式的多个消息,产生不同的响应;同一个消息可以发给不同的对象,所做出的响应可以截然不同;发送方不需要知道接受方如何对请求予以响应的。1.2 面向对象的基本概念消息(message)同一对象可1.3 面向对象程序的特性1. 封装性圆圆圆心位置半径颜色移动面积接口1.3 面向对象程序

20、的特性1. 封装性圆圆接口1.3 面向对象程序的特性1. 封装性一个清楚的边界,封装的基本单位是对象;具有确定接口,这个接口描述该对象与其他对象之间的相互作用;受保护的内部实现,提供对象的相应软件功能细节。object封装性的条件:1.3 面向对象程序的特性1. 封装性一个清楚的边界,封装1.3 面向对象程序的特性class CCompanyStaff /封装单元(类)/* 行为封装 */public: /外部接口标志void SetBasicSal( float ); /设置基本工资 float GetBasicSal ( void ); /查询基本工资float CalculateSal(

21、 float, float ); /计算实际发放工资 /* 数据封装 */private: /内部隐藏标志int m_iStaffNum; /工作编号char m_pName ; /姓名float m_fRateOfAttend; /出勤率float m_fBasicSal ; /基本工资; 1.3 面向对象程序的特性class CCompanySt1.3 面向对象程序的特性有效的实现了信息隐藏,真正实现了软件的模块化。减小了内外修改相互的影响,提高了软件的可维护性。作用:1. 封装性1.3 面向对象程序的特性有效的实现了信息隐藏,真正实现了1.3 面向对象程序的特性2. 继承性继承性是父类和

22、子类之间共享数据和方法的机制;继承性具有传递性;继承性包括单继承和多重继承。 子类继承部分个性部分父类共性部分1.3 面向对象程序的特性2. 继承性继承性是父类和子类之1.3 面向对象程序的特性形体大小、颜色、位置等移动、擦除、着色等共性:移动、擦除、着色等特性:面积的计算2. 继承性1.3 面向对象程序的特性形体大小、颜色、位置等移动、擦除1.3 面向对象程序的特性单继承多重继承设备输出设备I/O设备输入设备2. 继承性1.3 面向对象程序的特性单继承多重继承设备输出设备I/O1.3 面向对象程序的特性人工人2. 继承性学生教师农民小学生中学生大学生研究生助教讲师教授1.3 面向对象程序的特

23、性人工人2. 继承性学生教师农民小1.3 面向对象程序的特性清晰体现相关类间层次结构关系;减小代码和数据的重复冗余度,增加程序的重用性;通过增强一致性来减少模块间的接口和界面,增加易维护性;自动传播代码;构建扩充新类的有效手段。优点:2. 继承性1.3 面向对象程序的特性清晰体现相关类间层次结构关系;优1.3 面向对象程序的特性3. 多态性 不同的对象收到同一个消息可产生完全不同的效果,这一现象叫做多态。大学生中学生继承计算成绩计算成绩语文数学英语高等数学计算机普通物理1.3 面向对象程序的特性3. 多态性 不同1.3 面向对象程序的特性形体大小、颜色、位置等移动、擦除、着色等面积=边长2面积

24、=PI*r23. 多态性1.3 面向对象程序的特性形体大小、颜色、位置等移动、擦除1.3 面向对象程序的特性增强了操作的透明性、可理解性和可扩展性;增强了软件的灵活性和重用性。作用:3. 多态性1.3 面向对象程序的特性增强了操作的透明性、可理解性和可1.4 面向对象的程序面向对象程序设计经历的几个阶段:面向对象分析(OOA)面向对象设计(OOD)面向对象编程(OOP)面向对象测试(OOT)1.4 面向对象的程序面向对象程序设计经历的几个阶段:面一个简单图形程序的需求: 在显示器荧光屏上圆心坐标为(100,100)的位置上,画一个半径为40的圆,在圆心坐标为(200,300)的位置上,画一个半

25、径为20的圆,在圆心坐标为(400,150)的位置上,画一条弧,弧的起始角度为30,结束角度为120,半径为50。注意:功能需求必须是可测试的。一、面向对象分析1.4 面向对象的程序一个简单图形程序的需求:一、面向对象分析1.4 面向对象一、面向对象分析 面向对象分析就是抽取和整理用户需求并建立问题域精确模型的过程。面向对象分析的关键工作,是分析确定问题域中的对象及对象间的关系,从而建立起问题域的对象模型。1.4 面向对象的程序一、面向对象分析 面向对象分析就是抽取和整理用户需 在显示器荧光屏上圆心坐标为(100,100)的位置上,画一个半径为40的圆,在圆心坐标为(200,300)的位置上,

26、画一个半径为20的圆,在圆心坐标为(400,150)的位置上,画一条弧,弧的起始角度为30,结束角度为120,半径为50。显示器荧光屏,圆心坐标,位置,半径,圆,弧,起始角度,结束角度1. 确定对象一、面向对象分析 在显示器荧光屏上圆心坐标为(100,100)的位置显2. 确定属性一、面向对象分析弧圆心坐标半径起始角度结束角度可见性圆圆心坐标半径可见性 注意:不可能在需求陈述中找到所有属性,还必须借助领域知识和常识,才能分析得出所需要的全部属性,圆和弧都应该再增加一个属性可见性。2. 确定属性一、面向对象分析弧圆心坐标半径起始角度结束角度3. 确定服务一、面向对象分析圆圆心坐标半径可见性读/写

27、圆心坐标读/写半径读/写可见性显示隐藏弧圆心坐标半径起始角度结束角度可见性读/写圆心坐标读/写半径读/写起始角度读/写结束角度读/写可见性显示隐藏3. 确定服务一、面向对象分析圆圆心坐标半径可见性读/写圆心二、面向对象设计 面向对象设计就是把通过分析得出的对程序的准确需求转变成实现程序的方案的过程。建立类等级定义属性定义服务1.4 面向对象的程序二、面向对象设计 面向对象设计就是把通过分析得出的三、面向对象编程识别问题及问题的解中出现的对象根据对象的共同点和不同点对它们进行分类设计出对象间的相互的消息实现执行对象间相互作用的算法的方法1.4 面向对象的程序三、面向对象编程识别问题及问题的解中出

28、现的对象1.4 面四、面向对象测试 运用面向对象技术,对组装成一个完整的应用系统进行以对象概念为中心的软件测试。OOT以对象的类作为基本测试单位,查错的范围主要是类定义之内的属性和服务,以及有限的对外接口所涉及的部分。1.4 面向对象的程序四、面向对象测试 运用面向对象技术,对组装成一1.5 面向对象程序设计语言 从20世纪60年代开始,先后出现了Simula、Smalltalk、Object-C、Eiffel、Ada、C+和Java等面向对象的程序设计语言,每种语言各有其优势和应用领域。1.5 面向对象程序设计语言 从20世纪60Simula67语言: 20世纪60年代开发,被认为是面向对象

29、程序设计语言的鼻祖,它提供了对象、类、继承的概念,提出了面向对象的术语,面向对象程序设计的许多原始思想都来源于此语言。1.5 面向对象程序设计语言Simula67语言: 1.5 面向对象程序设计语言Smalltalk语言: 从20世纪70年代开始开发,它完整体现了来自于Simula以及其他早期原型语言中面向对象的概念,历经了Smalltalk-72、Smalltalk-76和Smalltalk-80几个版本,现在一般用Smalltalk-80 。1.5 面向对象程序设计语言Smalltalk语言: 1.5 面向对象程序设计语言Object-C语言: 1983年左右开发,它在C语言的基础上进行了扩充,通过新引入的构造和运算符来完成类定义和消息传递,其语法更像Smalltalk。1.5 面向对象程序设计语言Object-C语言: 1.5 面向对象程序设计语言Eiffel语言:

温馨提示

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

评论

0/150

提交评论