高级C语言程序设计.ppt
高高级级语语言言程程序序设设计计与与应应用用教教程程 第第一一章章 概概述述1 1第第第第1 1 1 1章章章章 高级语言程序设计高级语言程序设计高级语言程序设计高级语言程序设计概述概述概述概述高高级级语语言言程程序序设设计计与与应应用用教教程程 第第一一章章 概概述述2 2第第1 1章:概章:概 述述 u学习重点学习重点 程序设计语言的发展程序设计语言的发展程序设计语言的发展程序设计语言的发展 常用程序设计语言常用程序设计语言常用程序设计语言常用程序设计语言 高级语言编程的基本步骤高级语言编程的基本步骤高级语言编程的基本步骤高级语言编程的基本步骤 面向对象程序设计语言的特点面向对象程序设计语言的特点面向对象程序设计语言的特点面向对象程序设计语言的特点 C C语言程序的结构语言程序的结构语言程序的结构语言程序的结构 算法的概念算法的概念算法的概念算法的概念高高级级语语言言程程序序设设计计与与应应用用教教程程 第第一一章章 概概述述3 3程序设计语言按照语言级别可以分为低级语程序设计语言按照语言级别可以分为低级语程序设计语言按照语言级别可以分为低级语程序设计语言按照语言级别可以分为低级语言和高级语言。言和高级语言。言和高级语言。言和高级语言。低级语言有机器语言和汇编语言。低级语言低级语言有机器语言和汇编语言。低级语言低级语言有机器语言和汇编语言。低级语言低级语言有机器语言和汇编语言。低级语言与特定的机器有关,其功效高,但使用复杂、繁与特定的机器有关,其功效高,但使用复杂、繁与特定的机器有关,其功效高,但使用复杂、繁与特定的机器有关,其功效高,但使用复杂、繁琐、费时、易出差错。机器语言是表示成数码形琐、费时、易出差错。机器语言是表示成数码形琐、费时、易出差错。机器语言是表示成数码形琐、费时、易出差错。机器语言是表示成数码形式的机器基本指令集。汇编语言是机器语言中部式的机器基本指令集。汇编语言是机器语言中部式的机器基本指令集。汇编语言是机器语言中部式的机器基本指令集。汇编语言是机器语言中部分符号化的结果。分符号化的结果。分符号化的结果。分符号化的结果。高级语言的表示方法要比低级语言更接近于高级语言的表示方法要比低级语言更接近于高级语言的表示方法要比低级语言更接近于高级语言的表示方法要比低级语言更接近于待解问题的表示方法,其特点是在一定程度上与待解问题的表示方法,其特点是在一定程度上与待解问题的表示方法,其特点是在一定程度上与待解问题的表示方法,其特点是在一定程度上与具体机器无关,易学、易用、易维护。具体机器无关,易学、易用、易维护。具体机器无关,易学、易用、易维护。具体机器无关,易学、易用、易维护。1.1 1.1 程序设计语言的发展程序设计语言的发展高高级级语语言言程程序序设设计计与与应应用用教教程程 第第一一章章 概概述述4 41.1.1 1.1.1 程序设计语言的简介程序设计语言的简介(1 1 1 1)机器语言)机器语言)机器语言)机器语言 电子计算机使用的是由电子计算机使用的是由电子计算机使用的是由电子计算机使用的是由“0 0 0 0”和和和和“1 1 1 1”组成的二进制数,组成的二进制数,组成的二进制数,组成的二进制数,二进制数是计算机的语言的基础。计算机发明之初,人二进制数是计算机的语言的基础。计算机发明之初,人二进制数是计算机的语言的基础。计算机发明之初,人二进制数是计算机的语言的基础。计算机发明之初,人们只能用计算机的语言去命令计算机工作,也就是写出们只能用计算机的语言去命令计算机工作,也就是写出们只能用计算机的语言去命令计算机工作,也就是写出们只能用计算机的语言去命令计算机工作,也就是写出一串串由一串串由一串串由一串串由“0 0 0 0”和和和和“1 1 1 1”组成的指令序列交由计算机执行,组成的指令序列交由计算机执行,组成的指令序列交由计算机执行,组成的指令序列交由计算机执行,这种语言就是机器语言。这种语言就是机器语言。这种语言就是机器语言。这种语言就是机器语言。机器语言是第一代计算机语言。机器语言是第一代计算机语言。机器语言是第一代计算机语言。机器语言是第一代计算机语言。(2 2 2 2)汇编语言)汇编语言)汇编语言)汇编语言 为了克服机器语言难读、难编、难记和易出错的缺点,为了克服机器语言难读、难编、难记和易出错的缺点,为了克服机器语言难读、难编、难记和易出错的缺点,为了克服机器语言难读、难编、难记和易出错的缺点,人们用与代码指令实际含义相近的英文缩写词、字母和人们用与代码指令实际含义相近的英文缩写词、字母和人们用与代码指令实际含义相近的英文缩写词、字母和人们用与代码指令实际含义相近的英文缩写词、字母和数字等符号取代指令代码,例如,用数字等符号取代指令代码,例如,用数字等符号取代指令代码,例如,用数字等符号取代指令代码,例如,用ADDADDADDADD代表加法,用代表加法,用代表加法,用代表加法,用MOVMOVMOVMOV代表数据传递等,这样,人们能较容易读懂并理解程代表数据传递等,这样,人们能较容易读懂并理解程代表数据传递等,这样,人们能较容易读懂并理解程代表数据传递等,这样,人们能较容易读懂并理解程序,使得纠错及维护变得方便了,这种程序设计语言称序,使得纠错及维护变得方便了,这种程序设计语言称序,使得纠错及维护变得方便了,这种程序设计语言称序,使得纠错及维护变得方便了,这种程序设计语言称为汇编语言。为汇编语言。为汇编语言。为汇编语言。汇编语言是第二代计算机语言,仍然是面向机器的语汇编语言是第二代计算机语言,仍然是面向机器的语汇编语言是第二代计算机语言,仍然是面向机器的语汇编语言是第二代计算机语言,仍然是面向机器的语言。言。言。言。高高级级语语言言程程序序设设计计与与应应用用教教程程 第第一一章章 概概述述5 51.1.1 1.1.1 程序设计语言的简介程序设计语言的简介(3 3 3 3)高级语言)高级语言)高级语言)高级语言 机器语言和汇编语言都依赖计算机硬件,要求使用者机器语言和汇编语言都依赖计算机硬件,要求使用者机器语言和汇编语言都依赖计算机硬件,要求使用者机器语言和汇编语言都依赖计算机硬件,要求使用者对计算机硬件结构及其工作原理十分熟悉,这对非计算对计算机硬件结构及其工作原理十分熟悉,这对非计算对计算机硬件结构及其工作原理十分熟悉,这对非计算对计算机硬件结构及其工作原理十分熟悉,这对非计算机专业人员是难以做到的。计算机的发展应用促使人们机专业人员是难以做到的。计算机的发展应用促使人们机专业人员是难以做到的。计算机的发展应用促使人们机专业人员是难以做到的。计算机的发展应用促使人们寻求一些与人类自然语言相接近且能为计算机所接受的寻求一些与人类自然语言相接近且能为计算机所接受的寻求一些与人类自然语言相接近且能为计算机所接受的寻求一些与人类自然语言相接近且能为计算机所接受的通用易学的计算机语言。这种与自然语言相近并被计算通用易学的计算机语言。这种与自然语言相近并被计算通用易学的计算机语言。这种与自然语言相近并被计算通用易学的计算机语言。这种与自然语言相近并被计算机接受和执行的计算机语言称高级语言。高级语言是面机接受和执行的计算机语言称高级语言。高级语言是面机接受和执行的计算机语言称高级语言。高级语言是面机接受和执行的计算机语言称高级语言。高级语言是面向用户的语言。向用户的语言。向用户的语言。向用户的语言。机器的高级语言的发展经历了从早期语言到结构化程机器的高级语言的发展经历了从早期语言到结构化程机器的高级语言的发展经历了从早期语言到结构化程机器的高级语言的发展经历了从早期语言到结构化程序设计语言,从面向过程到非过程化程序语言的过程。序设计语言,从面向过程到非过程化程序语言的过程。序设计语言,从面向过程到非过程化程序语言的过程。序设计语言,从面向过程到非过程化程序语言的过程。(4 4 4 4)面向对象语言)面向对象语言)面向对象语言)面向对象语言 8 08 08 08 0年代初开始,在软件设计思想上,又产生了一次年代初开始,在软件设计思想上,又产生了一次年代初开始,在软件设计思想上,又产生了一次年代初开始,在软件设计思想上,又产生了一次革命,其成果就是面向对象的程序设计。革命,其成果就是面向对象的程序设计。革命,其成果就是面向对象的程序设计。革命,其成果就是面向对象的程序设计。高高级级语语言言程程序序设设计计与与应应用用教教程程 第第一一章章 概概述述6 6 目前有各种高级程序设计语言,其中以下目前有各种高级程序设计语言,其中以下目前有各种高级程序设计语言,其中以下目前有各种高级程序设计语言,其中以下几种应用非常广泛。几种应用非常广泛。几种应用非常广泛。几种应用非常广泛。FORTRAN FORTRAN FORTRAN FORTRAN COBOL COBOL COBOL COBOL PASCAL PASCAL PASCAL PASCAL C C C C语言语言语言语言 LISP LISP LISP LISP Java Java Java Java1.1.2 1.1.2 常用的程序设计语言常用的程序设计语言(略略)高高级级语语言言程程序序设设计计与与应应用用教教程程 第第一一章章 概概述述7 71.1.3 1.1.3 发展趋势发展趋势(略略)程序设计语言是软件的重要方面。它的发展趋程序设计语言是软件的重要方面。它的发展趋程序设计语言是软件的重要方面。它的发展趋程序设计语言是软件的重要方面。它的发展趋势是势是势是势是:可视化可视化可视化可视化智能化智能化智能化智能化构件化。构件化。构件化。构件化。高高级级语语言言程程序序设设计计与与应应用用教教程程 第第一一章章 概概述述8 81.2 1.2 高级语言编程基本步骤高级语言编程基本步骤(结合上机体会结合上机体会)编辑源程序编辑源程序编辑源程序编辑源程序目标程序目标程序目标程序目标程序有错吗?有错吗?有错吗?有错吗?可执行程序可执行程序可执行程序可执行程序有错吗?有错吗?有错吗?有错吗?编译编译编译编译连接连接连接连接运行运行运行运行是是是是是是是是否否否否否否否否程序执行结果程序执行结果程序执行结果程序执行结果图图图图1-11-1编写高级语言程序的步骤编写高级语言程序的步骤编写高级语言程序的步骤编写高级语言程序的步骤高高级级语语言言程程序序设设计计与与应应用用教教程程 第第一一章章 概概述述9 91.3.1 C1.3.1 C语言的发展语言的发展(自学自学)1.3.2 C1.3.2 C语言的特点语言的特点(略略)(1 1 1 1)语言简洁紧凑、使用灵活方便)语言简洁紧凑、使用灵活方便)语言简洁紧凑、使用灵活方便)语言简洁紧凑、使用灵活方便 (2 2 2 2)运算符丰富)运算符丰富)运算符丰富)运算符丰富(3 3 3 3)数据结构丰富)数据结构丰富)数据结构丰富)数据结构丰富(4 4 4 4)C C C C是结构式语言是结构式语言是结构式语言是结构式语言(5 5 5 5)语法限制不太严格、程序设计自由度大)语法限制不太严格、程序设计自由度大)语法限制不太严格、程序设计自由度大)语法限制不太严格、程序设计自由度大(6 6 6 6)允许直接访问物理地址,可以直接对硬件进行操作)允许直接访问物理地址,可以直接对硬件进行操作)允许直接访问物理地址,可以直接对硬件进行操作)允许直接访问物理地址,可以直接对硬件进行操作(7 7 7 7)程序执行效率高)程序执行效率高)程序执行效率高)程序执行效率高(8 8 8 8)适用范围大,可移植性好)适用范围大,可移植性好)适用范围大,可移植性好)适用范围大,可移植性好1.3 C1.3 C语言概述语言概述高高级级语语言言程程序序设设计计与与应应用用教教程程 第第一一章章 概概述述10101.3.3 C1.3.3 C语言程序的结构语言程序的结构/*ThisisaCprogram.*/*ThisisaCprogram.*/#include/*#include/*预处理命令预处理命令预处理命令预处理命令*/voidmain()/*voidmain()/*无参数无返回值的主函数无参数无返回值的主函数无参数无返回值的主函数无参数无返回值的主函数*/*/*程序开始程序开始程序开始程序开始*/intx,y,s;/*intx,y,s;/*定义变量定义变量定义变量定义变量*/x=20;y=40;/*x=20;y=40;/*语句语句语句语句*/s=x+y;s=x+y;printf(“Thesumoftwointegeris%d”,s);printf(“Thesumoftwointegeris%d”,s);/*/*程序结束程序结束程序结束程序结束*/声明声明声明声明部分部分部分部分执行执行执行执行部分部分部分部分函函函函数数数数体体体体例例例例1-11-1输入两个整数,计算这两个整数的和。(上机演示)输入两个整数,计算这两个整数的和。(上机演示)输入两个整数,计算这两个整数的和。(上机演示)输入两个整数,计算这两个整数的和。(上机演示)运行结果:运行结果:运行结果:运行结果:Thesumoftwointegeris60Thesumoftwointegeris60高高级级语语言言程程序序设设计计与与应应用用教教程程 第第一一章章 概概述述1111例例例例1-21-2用自定义函数的方法计算这两个整数的和。(上机演示)用自定义函数的方法计算这两个整数的和。(上机演示)用自定义函数的方法计算这两个整数的和。(上机演示)用自定义函数的方法计算这两个整数的和。(上机演示)运行结果:运行结果:运行结果:运行结果:Thesumoftwointegeris60Thesumoftwointegeris60/*ThisisaCprogram.*/*ThisisaCprogram.*/#include#include/*/*/*/*预处理命令预处理命令预处理命令预处理命令*/intsum(inta,intb)intsum(inta,intb);/教材此处有误,应加上该语句教材此处有误,应加上该语句教材此处有误,应加上该语句教材此处有误,应加上该语句voidmain()voidmain()/*/*/*/*无参数无返回值的主函数无参数无返回值的主函数无参数无返回值的主函数无参数无返回值的主函数*/*/*/*/*程序开始程序开始程序开始程序开始*/intx,y,s;intx,y,s;/*/*/*/*定义变量定义变量定义变量定义变量*/x=20;y=40;x=20;y=40;/*/*/*/*语句语句语句语句*/s=sum(x,y);s=sum(x,y);printf(“Thesumoftwointegeris%d”,s);printf(“Thesumoftwointegeris%d”,s);/*/*/*/*程序结束程序结束程序结束程序结束*/intsum(inta,intb)intsum(inta,intb)/*/*/*/*有参数、有返回值的自定义函数有参数、有返回值的自定义函数有参数、有返回值的自定义函数有参数、有返回值的自定义函数*/intc;intc;/*/*/*/*定义变量定义变量定义变量定义变量*/c=a+b;c=a+b;return(c);return(c);/*/*/*/*返回整数返回整数返回整数返回整数c*/c*/c*/c*/声明声明声明声明部分部分部分部分执行执行执行执行部分部分部分部分主主主主函函函函数数数数体体体体声明部分声明部分声明部分声明部分执行部分执行部分执行部分执行部分自自自自定定定定义义义义函函函函数数数数体体体体高高级级语语言言程程序序设设计计与与应应用用教教程程 第第一一章章 概概述述12121.4 1.4 面向对象程序设计的基本思想面向对象程序设计的基本思想(略讲略讲)面向对象方法面向对象方法面向对象方法面向对象方法(Object-Oriented(Object-Oriented(Object-Oriented(Object-Oriented MethodMethodMethodMethod,OOOOOOOO方法方法方法方法)是一种把面向对象的思想应用于软件开是一种把面向对象的思想应用于软件开是一种把面向对象的思想应用于软件开是一种把面向对象的思想应用于软件开发过程中,指导开发活动的系统方法,简称发过程中,指导开发活动的系统方法,简称发过程中,指导开发活动的系统方法,简称发过程中,指导开发活动的系统方法,简称OOOOOOOO(Object-Oriented)(Object-Oriented)(Object-Oriented)(Object-Oriented)方法,是建立在方法,是建立在方法,是建立在方法,是建立在“对对对对象象象象”概念基础上的方法学。面向对象的程序设概念基础上的方法学。面向对象的程序设概念基础上的方法学。面向对象的程序设概念基础上的方法学。面向对象的程序设计方法强调在软件开发过程中面向待求解总是计方法强调在软件开发过程中面向待求解总是计方法强调在软件开发过程中面向待求解总是计方法强调在软件开发过程中面向待求解总是域中的事物,它的基本特征主要包括抽象性、域中的事物,它的基本特征主要包括抽象性、域中的事物,它的基本特征主要包括抽象性、域中的事物,它的基本特征主要包括抽象性、封装性、继承性和多态性。封装性、继承性和多态性。封装性、继承性和多态性。封装性、继承性和多态性。高高级级语语言言程程序序设设计计与与应应用用教教程程 第第一一章章 概概述述1313 计算机产生的初期主要用于科学计算,这些问题的求计算机产生的初期主要用于科学计算,这些问题的求计算机产生的初期主要用于科学计算,这些问题的求计算机产生的初期主要用于科学计算,这些问题的求解主要是过程计算,因此软件设计的主要目标是设计解主要是过程计算,因此软件设计的主要目标是设计解主要是过程计算,因此软件设计的主要目标是设计解主要是过程计算,因此软件设计的主要目标是设计求解问题的过程,所以,传统的程序设计主要采用面求解问题的过程,所以,传统的程序设计主要采用面求解问题的过程,所以,传统的程序设计主要采用面求解问题的过程,所以,传统的程序设计主要采用面向过程的设计方法。随着计算机技术的发展,计算机向过程的设计方法。随着计算机技术的发展,计算机向过程的设计方法。随着计算机技术的发展,计算机向过程的设计方法。随着计算机技术的发展,计算机的应用越来越广泛,计算机的应用不再仅限于科学计的应用越来越广泛,计算机的应用不再仅限于科学计的应用越来越广泛,计算机的应用不再仅限于科学计的应用越来越广泛,计算机的应用不再仅限于科学计算,计算机处理的问题变得庞大而复杂,面向过程的算,计算机处理的问题变得庞大而复杂,面向过程的算,计算机处理的问题变得庞大而复杂,面向过程的算,计算机处理的问题变得庞大而复杂,面向过程的结构化程序设计方法的局限性明显表露出来,主要是结构化程序设计方法的局限性明显表露出来,主要是结构化程序设计方法的局限性明显表露出来,主要是结构化程序设计方法的局限性明显表露出来,主要是结构化程序设计方法将数据与处理数据的过程分离,结构化程序设计方法将数据与处理数据的过程分离,结构化程序设计方法将数据与处理数据的过程分离,结构化程序设计方法将数据与处理数据的过程分离,当数据结构改变时,相关的处理过程通常需要全部或当数据结构改变时,相关的处理过程通常需要全部或当数据结构改变时,相关的处理过程通常需要全部或当数据结构改变时,相关的处理过程通常需要全部或部分进行修改,因此代码的重用性差。部分进行修改,因此代码的重用性差。部分进行修改,因此代码的重用性差。部分进行修改,因此代码的重用性差。另外,图形用户面的普及使软件的使用者越来越方便,另外,图形用户面的普及使软件的使用者越来越方便,另外,图形用户面的普及使软件的使用者越来越方便,另外,图形用户面的普及使软件的使用者越来越方便,而软件的开发者却越来越因难,它们很难用过程语言而软件的开发者却越来越因难,它们很难用过程语言而软件的开发者却越来越因难,它们很难用过程语言而软件的开发者却越来越因难,它们很难用过程语言来实现,这时面向对象的程序设计方法产生了。来实现,这时面向对象的程序设计方法产生了。来实现,这时面向对象的程序设计方法产生了。来实现,这时面向对象的程序设计方法产生了。1.4.1 1.4.1 面向对象方法的产生面向对象方法的产生高高级级语语言言程程序序设设计计与与应应用用教教程程 第第一一章章 概概述述1414面向对象的程序设计方法有三个优点:面向对象的程序设计方法有三个优点:面向对象的程序设计方法有三个优点:面向对象的程序设计方法有三个优点:(1 1 1 1)程序的可维护性好。面向对象程序易于阅)程序的可维护性好。面向对象程序易于阅)程序的可维护性好。面向对象程序易于阅)程序的可维护性好。面向对象程序易于阅读和理解,程序的复杂性有所降低;读和理解,程序的复杂性有所降低;读和理解,程序的复杂性有所降低;读和理解,程序的复杂性有所降低;(2 2 2 2)程序易修改:程序员可以通过添加或删除)程序易修改:程序员可以通过添加或删除)程序易修改:程序员可以通过添加或删除)程序易修改:程序员可以通过添加或删除对象,较容易地实现修改、添加或删除程序;对象,较容易地实现修改、添加或删除程序;对象,较容易地实现修改、添加或删除程序;对象,较容易地实现修改、添加或删除程序;(3 3 3 3)可重用性好:对象可以使用多次程序员可)可重用性好:对象可以使用多次程序员可)可重用性好:对象可以使用多次程序员可)可重用性好:对象可以使用多次程序员可以根据需要将类和对象保存起来,随时插入到以根据需要将类和对象保存起来,随时插入到以根据需要将类和对象保存起来,随时插入到以根据需要将类和对象保存起来,随时插入到应用程序中,无需作修改。应用程序中,无需作修改。应用程序中,无需作修改。应用程序中,无需作修改。高高级级语语言言程程序序设设计计与与应应用用教教程程 第第一一章章 概概述述1515 面向对象程序设计的基本思想认为客观世界由各种各样的对面向对象程序设计的基本思想认为客观世界由各种各样的对面向对象程序设计的基本思想认为客观世界由各种各样的对面向对象程序设计的基本思想认为客观世界由各种各样的对象组成,每一类型的对象都有各自的内部状态和行为规律,象组成,每一类型的对象都有各自的内部状态和行为规律,象组成,每一类型的对象都有各自的内部状态和行为规律,象组成,每一类型的对象都有各自的内部状态和行为规律,不同对象间的相互联系和作用构成了不同的系统,形成了客不同对象间的相互联系和作用构成了不同的系统,形成了客不同对象间的相互联系和作用构成了不同的系统,形成了客不同对象间的相互联系和作用构成了不同的系统,形成了客观世界。观世界。观世界。观世界。面向对象程序设计方法中的对象是构成软件系统的一个基本面向对象程序设计方法中的对象是构成软件系统的一个基本面向对象程序设计方法中的对象是构成软件系统的一个基本面向对象程序设计方法中的对象是构成软件系统的一个基本单位,是系统用以描述客观事物的一个实例。对象由一组属单位,是系统用以描述客观事物的一个实例。对象由一组属单位,是系统用以描述客观事物的一个实例。对象由一组属单位,是系统用以描述客观事物的一个实例。对象由一组属性和一组行为构成,属性是用来描述对象静态特征的数据项,性和一组行为构成,属性是用来描述对象静态特征的数据项,性和一组行为构成,属性是用来描述对象静态特征的数据项,性和一组行为构成,属性是用来描述对象静态特征的数据项,行为是用来描述对象动态特征的一系列操作。对象是具有属行为是用来描述对象动态特征的一系列操作。对象是具有属行为是用来描述对象动态特征的一系列操作。对象是具有属行为是用来描述对象动态特征的一系列操作。对象是具有属性和行为的封装体。性和行为的封装体。性和行为的封装体。性和行为的封装体。类是具有相同属性和行为的一组对象的集合,它是属于同一类是具有相同属性和行为的一组对象的集合,它是属于同一类是具有相同属性和行为的一组对象的集合,它是属于同一类是具有相同属性和行为的一组对象的集合,它是属于同一类的全部对象提供了统一的抽象描述。类是对象的集合和再类的全部对象提供了统一的抽象描述。类是对象的集合和再类的全部对象提供了统一的抽象描述。类是对象的集合和再类的全部对象提供了统一的抽象描述。类是对象的集合和再抽象。类是具有相同属性和行为的一组对象的集合。它为属抽象。类是具有相同属性和行为的一组对象的集合。它为属抽象。类是具有相同属性和行为的一组对象的集合。它为属抽象。类是具有相同属性和行为的一组对象的集合。它为属于该类的全部对象提供了统一的抽象描述。于该类的全部对象提供了统一的抽象描述。于该类的全部对象提供了统一的抽象描述。于该类的全部对象提供了统一的抽象描述。具有相同或相似性质的对象的抽象就是类。因此,对象的抽具有相同或相似性质的对象的抽象就是类。因此,对象的抽具有相同或相似性质的对象的抽象就是类。因此,对象的抽具有相同或相似性质的对象的抽象就是类。因此,对象的抽象是类,类的具体化就是对象,也可以说类的实例是对象。象是类,类的具体化就是对象,也可以说类的实例是对象。象是类,类的具体化就是对象,也可以说类的实例是对象。象是类,类的具体化就是对象,也可以说类的实例是对象。1.4.2 1.4.2 类与对象的概念类与对象的概念高高级级语语言言程程序序设设计计与与应应用用教教程程 第第一一章章 概概述述1616 一个面向对象的程序由许多对象组成,这些对象之间需要一个面向对象的程序由许多对象组成,这些对象之间需要一个面向对象的程序由许多对象组成,这些对象之间需要一个面向对象的程序由许多对象组成,这些对象之间需要相互沟通。对象之间通过收发消息相互沟通,类似于人与相互沟通。对象之间通过收发消息相互沟通,类似于人与相互沟通。对象之间通过收发消息相互沟通,类似于人与相互沟通。对象之间通过收发消息相互沟通,类似于人与人之间的信息传递。不同对象之间通过发送消息向对方提人之间的信息传递。不同对象之间通过发送消息向对方提人之间的信息传递。不同对象之间通过发送消息向对方提人之间的信息传递。不同对象之间通过发送消息向对方提出服务,接受消息的对象主动完成所请求的服务,这种通出服务,接受消息的对象主动完成所请求的服务,这种通出服务,接受消息的对象主动完成所请求的服务,这种通出服务,接受消息的对象主动完成所请求的服务,这种通信机制称为消息传递。传递消息的内容包括接收消息的对信机制称为消息传递。传递消息的内容包括接收消息的对信机制称为消息传递。传递消息的内容包括接收消息的对信机制称为消息传递。传递消息的内容包括接收消息的对象的名字,需要调用的函数的名字,以及必要的信息。象的名字,需要调用的函数的名字,以及必要的信息。象的名字,需要调用的函数的名字,以及必要的信息。象的名字,需要调用的函数的名字,以及必要的信息。同一个对象可以接受不同形式的多个消息,产生的消息各同一个对象可以接受不同形式的多个消息,产生的消息各同一个对象可以接受不同形式的多个消息,产生的消息各同一个对象可以接受不同形式的多个消息,产生的消息各不相同;相同形式的消息可以发送给不同的对象,产生的不相同;相同形式的消息可以发送给不同的对象,产生的不相同;相同形式的消息可以发送给不同的对象,产生的不相同;相同形式的消息可以发送给不同的对象,产生的响应可以各不相同;一个对象可以立即响应发送给它的消响应可以各不相同;一个对象可以立即响应发送给它的消响应可以各不相同;一个对象可以立即响应发送给它的消响应可以各不相同;一个对象可以立即响应发送给它的消息,也可以暂不响应消息。程序的执行取决于事件发生的息,也可以暂不响应消息。程序的执行取决于事件发生的息,也可以暂不响应消息。程序的执行取决于事件发生的息,也可以暂不响应消息。程序的执行取决于事件发生的顺序,由所产生的消息来驱动程序的执行,不需要预先确顺序,由所产生的消息来驱动程序的执行,不需要预先确顺序,由所产生的消息来驱动程序的执行,不需要预先确顺序,由所产生的消息来驱动程序的执行,不需要预先确定消息产生的顺序。定消息产生的顺序。定消息产生的顺序。定消息产生的顺序。消息机制为对象间提供了一个动态联系的途径,使它们的消息机制为对象间提供了一个动态联系的途径,使它们的消息机制为对象间提供了一个动态联系的途径,使它们的消息机制为对象间提供了一个动态联系的途径,使它们的行为能互相配合,构成一个有机的运行系统。行为能互相配合,构成一个有机的运行系统。行为能互相配合,构成一个有机的运行系统。行为能互相配合,构成一个有机的运行系统。1.4.3 1.4.3 消息的概念消息的概念高高级级语语言言程程序序设设计计与与应应用用教教程程 第第一一章章 概概述述1717(1)(1)(1)(1)抽象性抽象性抽象性抽象性 在系统开发中,抽象指的是在决定如何实现对象之前的在系统开发中,抽象指的是在决定如何实现对象之前的在系统开发中,抽象指的是在决定如何实现对象之前的在系统开发中,抽象指的是在决定如何实现对象之前的对象的意义和行为。抽象指仅表现核心的特性而不描述背景对象的意义和行为。抽象指仅表现核心的特性而不描述背景对象的意义和行为。抽象指仅表现核心的特性而不描述背景对象的意义和行为。抽象指仅表现核心的特性而不描述背景细节的行为。使用抽象可以尽可能避免过早考虑一些细节。细节的行为。使用抽象可以尽可能避免过早考虑一些细节。细节的行为。使用抽象可以尽可能避免过早考虑一些细节。细节的行为。使用抽象可以尽可能避免过早考虑一些细节。(2)(2)(2)(2)封装性封装性封装性封装性 把数据和函数包装在一个单独的单元(称为类)的行为把数据和函数包装在一个单独的单元(称为类)的行为把数据和函数包装在一个单独的单元(称为类)的行为把数据和函数包装在一个单独的单元(称为类)的行为称为封装。数据封装是类的最典型特点。称为封装。数据封装是类的最典型特点。称为封装。数据封装是类的最典型特点。称为封装。数据封装是类的最典型特点。一个对象就是一个封装了数据和操作这些数据的代码的一个对象就是一个封装了数据和操作这些数据的代码的一个对象就是一个封装了数据和操作这些数据的代码的一个对象就是一个封装了数据和操作这些数据的代码的逻辑实体。逻辑实体。逻辑实体。逻辑实体。封装性构成了面向对象方法的基础,封装性是保证软件封装性构成了面向对象方法的基础,封装性是保证软件封装性构成了面向对象方法的基础,封装性是保证软件封装性构成了面向对象方法的基础,封装性是保证软件部件具有优良的模块性的基础。对象是封装的最基本单位。部件具有优良的模块性的基础。对象是封装的最基本单位。部件具有优良的模块性的基础。对象是封装的最基本单位。部件具有优良的模块性的基础。对象是封装的最基本单位。封装防止了程序相互依赖性而带来的变动影响。面向对象的封装防止了程序相互依赖性而带来的变动影响。面向对象的封装防止了程序相互依赖性而带来的变动影响。面向对象的封装防止了程序相互依赖性而带来的变动影响。面向对象的封装比传统语言的封装更为清晰、更为有力。因而,这种方封装比传统语言的封装更为清晰、更为有力。因而,这种方封装比传统语言的封装更为清晰、更为有力。因而,这种方封装比传统语言的封装更为清晰、更为有力。因而,这种方法的创始人法的创始人法的创始人法的创始人CoddCoddCoddCodd和和和和YOuMnYOuMnYOuMnYOuMn认为,面向对象就是认为,面向对象就是认为,面向对象就是认为,面向对象就是“对象十属性对象十属性对象十属性对象十属性十方法十方法十方法十方法”。1.4.4 1.4.4 面向对象程序设计的特点面向对象程序设计的特点高高级级语语言言程程序序设设计计与与应应用用教教程程 第第一一章章 概概述述1818(3)(3)(3)(3)继承性继承性继承性继承性 继承性是继承性是继承性是继承性是面向对象程序设计面向对象程序设计面向对象程序设计面向对象程序设计语言不同于其它语言的最语言不同于其它语言的最语言不同于其它语言的最语言不同于其它语言的最重要的特点,是其他语言所没有的。重要的特点,是其他语言所没有的。重要的特点,是其他语言所没有的。重要的特点,是其他语言所没有的。继承性是类特有的性质,类可以派生出子类,子类自继承性是类特有的性质,类可以派生出子类,子类自继承性是类特有的性质,类可以派生出子类,子类自继承性是类特有的性质,类可以派生出子类,子类自动继承父类的属性与方法,这是类之间的一种关系。在定动继承父类的属性与方法,这是类之间的一种关系。在定动继承父类的属性与方法,这是类之间的一种关系。在定动继承父类的属性与方法,这是类之间的一种关系。在定义和实现一个类的时候,可以在一个已经存在的类的基础义和实现一个类的时候,可以在一个已经存在的类的基础义和实现一个类的时候,可以在一个已经存在的类的基础义和实现一个类的时候,可以在一个已经存在的类的基础之上来进行,把这个已经存在的类所定义的内容作为自己之上来进行,把这个已经存在的类所定义的内容作为自己之上来进行,把这个已经存在的类所定义的内容作为自己之上来进行,把这个已经存在的类所定义的内容作为自己的内容,并加入若干新的内容。这样可大大提高软件的可的内容,并加入若干新的内容。这样可大大提高软件的可的内容,并加入若干新的内容。这样可大大提高软件的可的内容,并加入若干新的内容。这样可大大提高软件的可重用性。重用性。重用性。重用性。继承性是子类自动共享父类数据结构和方法的机制,继承性是子类自动共享父类数据结构和方法的机制,继承性是子类自动共享父类数据结构和方法的机制,继承性是子类自动共享父类数据结构和方法的机制,在类层次中,子类只继承一个父类的数据结构和方法,则在类层次中,子类只继承一个父类的数据结构和方法,则在类层次中,子类只继承一个父类的数据结构和方法,则在类层次中,子类只继承一个父类的数据结构和方法,则称为单重继承,子类继承了多个父类的数据结构和方法,称为单重继承,子类继承了多个父类的数据结构和方法,称为单重继承,子类继承了多个父类的数据结构和方法,称为单重继承,子类继承了多个父类的数据结构和方法,则称为多重继承。在软件开发中,类的继承性使所建立的则称为多重继承。在软件开发中,类的继承性使所建立的则称为多重继承。在软件开发中,类的继承性使所建立的则称为多重继承。在软件开发中,类的继承性使所建立的软件具有开放性、可扩充性。软件具有开放性、可扩充性。软件具有开放性、可扩充性。软件具有开放性、可扩充性。(4)(4)(4)(4)多态性多态性多态性多态性 多态性是指相同的操作或函数、过程可作用于多种多态性是指相同的操作或函数、过程可作用于多种多态性是指相同的操作或函数、过程可作用于多种多态性是指相同的操作或函数、过程可作用于多种类型类型类型类型的对象上并获得不同的结果。的对象上并获得不同的结果。的对象上并获得不同的结果。的对象上并获得不同的结果。1.4.4 1.4.4 面向对象程序设计的特点面向对象程序设计的特点高高级级语语言言程程序序设设计计与与应应用用教教程程 第第一一章章 概概述述1919目前常用的面向对象程序设计语言有目前常用的面向对象程序设计语言有目前常用的面向对象程序设计语言有目前常用的面向对象程序设计语言有C+C+C+C+、JavaJavaJavaJava、Visual BASICVisual BASICVisual BASICVisual BASIC等。等。等。等。(1)C+(1)C+(1)C+(1)C+C+C+C+C+是美国是美国是美国是美国BellBellBellBell实验室于二十世纪八十年代在实验室于二十世纪八十年代在实验室于二十世纪八十年代在实验室于二十世纪八十年代在C C C C语言的基础上开发出来的,是目前已经语言的基础上开发出来的,是目前已经语言的基础上开发出来的,是目前已经语言的基础上开发出来的,是目前已经得到广泛应用的面向对象程序设计语言。得到广泛应用的面向对象程序设计语言。得到广泛应用的面向对象程序设计语言。得到广泛应用的面向对象程序设计语言。C+C+C+C+