第六章程序设计与软件工程基础 本章介绍程序设计语言及其分类,结构化程序设计的概念和面向对象程序设计的概念, 算法和程序的基本结构,软件工程概述及软件开发活动, Visual basic6.0程序设计语言 等内容 6.1程序设计语言 6.1.1程序设计语言分类 语言是人类用来表达意思,交流想法的工具。人类社会使用自然语言进行交流,如汉 语、英语、法语等,但计算机是不能直接执行人类自然语言的。程序设计语言是人与计算 机之间交换信息的工具,人是通过它来指挥计算机工作的。程序设计语言是一套表达计算 过程的符号系统,其表达形式能够同时被计算机和人所理解。 根据程序设计语言与计算机硬件的联系程度可将程序设计语言分为三类,即机器语言 汇编语言和高级语言。前两类依赖于计算机硬件,又统称为低级语言。高级语言与计算机 硬件关系较小。因此,可以说程序设计语言经历了由低级向高级的发展过程。 1.机器语言 机器语言是用二进制数表示的、计算机唯一能理解和直接执行的程序语言。机器语言 中的每一条语句(称为指令)都是二进制形式的指令代码,如101100000000指令代 码一般由操作码和参与操作的操作数两部分组成,如机器指令10110000000中, l0l10000为操作码(指令的功能),00001000为操作数(指令的对象),功能是将操作数8 送累加器AL。机器语言通常随着计算机型号的不冋同而不同,每一种型号的计算机所能执行 的全部指令的集合就是该型号计算机的指令系统。机器语言程序不直观,编写难度大,易 于出错,调试、修改繁琐,可移植性差,但执行速度最快。机器语言是最低级的程序设计 语言,目前除了在某些单板机上使用机器语言外,大部分计算机程序都不直接使用机器语 言编写 2.汇编语言 汇编语言是将机器语言“符号化”的程序设计语言。在汇编语言中,用助记符代替机 器指令,如可用汇编指令 MOV AL,8来代替上面的机器指令10110000001000显然,这 比一串二进制代码容易书写和容易记忆 汇编语言程序比机器语言程序易于编写、检査和修改,也保持了机器语言编程质量高、 运行速度快、占用存储空间少等优点。但汇编语言也是面向机器的语言,故通用性和可移 植性差,即:能在某一类计算机上运行的程序,却不能在另一类计算机上运行。汇编语言 也属于低级语言,它常用来编写实时系统以及高性能软件。 3.高级语言 高级语言是50年代后期发展起来的、面向问题求解过程的程序设计语言。与汇编语言 相比,高级语言更接近于人类的自然语言和数学语言,一般采用英语单词表达语句,便于 理解、记忆和掌握,如高级语言语句c=a+b的功能是将变量a、b的和存放在变量c中。高 级语言的一个语句通常对应多条机器指令,因而用高级语言编写的程序短小精悍,不仅便
1 第六章 程序设计与软件工程基础 本章介绍程序设计语言及其分类,结构化程序设计的概念和面向对象程序设计的概念, 算法和程序的基本结构,软件工程概述及软件开发活动,Visual Basic6.0 程序设计语言 等内容。 6.1 程序设计语言 6.1.1 程序设计语言分类 语言是人类用来表达意思,交流想法的工具。人类社会使用自然语言进行交流,如汉 语、英语、法语等,但计算机是不能直接执行人类自然语言的。程序设计语言是人与计算 机之间交换信息的工具,人是通过它来指挥计算机工作的。程序设计语言是一套表达计算 过程的符号系统,其表达形式能够同时被计算机和人所理解。 根据程序设计语言与计算机硬件的联系程度可将程序设计语言分为三类,即机器语言、 汇编语言和高级语言。前两类依赖于计算机硬件,又统称为低级语言。高级语言与计算机 硬件关系较小。因此,可以说程序设计语言经历了由低级向高级的发展过程。 1.机器语言 机器语言是用二进制数表示的、计算机唯一能理解和直接执行的程序语言。机器语言 中的每一条语句(称为指令)都是二进制形式的指令代码,如 1011000000001000。指令代 码一般由操作码和参与操作的操作数两部分组成,如机器指令 1011000000001000 中, 10110000 为操作码(指令的功能),00001000 为操作数(指令的对象),功能是将操作数 8 送累加器 AL。机器语言通常随着计算机型号的不同而不同,每一种型号的计算机所能执行 的全部指令的集合就是该型号计算机的指令系统。机器语言程序不直观,编写难度大,易 于出错,调试、修改繁琐,可移植性差,但执行速度最快。机器语言是最低级的程序设计 语言,目前除了在某些单板机上使用机器语言外,大部分计算机程序都不直接使用机器语 言编写。 2.汇编语言 汇编语言是将机器语言“符号化”的程序设计语言。在汇编语言中,用助记符代替机 器指令,如可用汇编指令 MOV AL,8 来代替上面的机器指令 1011000000001000。显然,这 比一串二进制代码容易书写和容易记忆。 汇编语言程序比机器语言程序易于编写、检查和修改,也保持了机器语言编程质量高、 运行速度快、占用存储空间少等优点。但汇编语言也是面向机器的语言,故通用性和可移 植性差,即:能在某一类计算机上运行的程序,却不能在另一类计算机上运行。汇编语言 也属于低级语言,它常用来编写实时系统以及高性能软件。 3.高级语言 高级语言是 50 年代后期发展起来的、面向问题求解过程的程序设计语言。与汇编语言 相比,高级语言更接近于人类的自然语言和数学语言,一般采用英语单词表达语句,便于 理解、记忆和掌握,如高级语言语句 c=a+b 的功能是将变量 a、b 的和存放在变量 c 中。高 级语言的一个语句通常对应多条机器指令,因而用高级语言编写的程序短小精悍,不仅便
于编写,而且易于查找错误和修改。高级语言通用性强,程序员不必了解具体机器的指令 就能编制程序,而且所编写的程序稍加修改或不用修改就能在不同的机器上运行,可移植 性好。目前常用的高级语言有: BASIC( Visual basic)、 FORTRAN、 Pascal(Delphi)、C、 C++、 COBOL、 PROLOG、Java等。 计算机语言与计算机科学的其他许多分支一样,有其科学的理论根据和严格的使用方 法,并且是在不断发展和完善的。计算机语言的发展过程如下: 第一代机器语言 第二代汇编语言 第三代面向过程的高级语言。 第四代面向对象的高级语言。 第五代智能化语言(正在研制中)。 6.1.2语言处理程序 台计算机只懂得本台机器的机器语言,它不能直接执行汇编语言或高级语言编写的 源程序。为了使计算机能够执行这些源程序,人们设计了一种特定的“翻译”程序,它能 将源程序翻译成目标程序,即机器语言程序来执行。这种翻译程序就是语言处理程序,常 用的语言处理程序有汇編编程序、解释程序和编译程序。汇编程序用来翻译用汇编程序编写 的源程序,解释程序和编译程序用来翻译用高级语言编写的源程序 1.汇编程序 把用汇编语言编写的源程序翻译成目标程序的程序称为汇编程序,翻译的过程称为汇 编”,执行的是目标程序。 2.编译程序 编译程序将高级语言源程序整个地翻译为机器指令表示的目标程序,使目标程序和源 程序在功能上完全等价,然后执行目标程序,得出运算结果。翻译的过程称为“编译”。典 型的编译型语言是 FORTRAN、 Pascal、C、C++等 3.解释程序 解释程序将高级语言源程序一句一句地翻译为机器指令,每译完一句就执行一句,当 源程序翻译完后,目标程序也执行完毕。典型的解释型语言是 Basic、Java,但现在也都 有了编译功能 6.1.3高级语言源程序的运行步骤 程序不是计算机程序设计中独有的概念,在日常生活中我们也常见到这个词,例如一 个会议日程、一场演出的节目单等,这些程序都是由人的一项一项活动组成,有序地完成 每一项活动也就实现了程序的目标 计算机程序是人们让计算机完成特定任务的一系列命令的集合。要把一个用高级语言 编好的源程序在计算机上进行运行并得到结果,需要多种软件的支持,如操作系统、编辑 软件、翻译程序、连接程序等。当翻译程序为编译程序时,一个源程序的运行步骤如图6-1 从图中可以看出一个程序的运行必须经过四个阶段:编辑→编译→连接→运行,即通 过编辑程序编辑和修改源程序,由编译程序将源程序编译为目标程序,再经过连接程序将
2 于编写,而且易于查找错误和修改。高级语言通用性强,程序员不必了解具体机器的指令 就能编制程序,而且所编写的程序稍加修改或不用修改就能在不同的机器上运行,可移植 性好。目前常用的高级语言有:BASIC(Visual Basic)、FORTRAN、Pascal(Delphi)、C、 C++、COBOL、PROLOG、Java 等。 计算机语言与计算机科学的其他许多分支一样,有其科学的理论根据和严格的使用方 法,并且是在不断发展和完善的。计算机语言的发展过程如下: 第一代 机器语言。 第二代 汇编语言。 第三代 面向过程的高级语言。 第四代 面向对象的高级语言。 第五代 智能化语言(正在研制中)。 6.1.2 语言处理程序 一台计算机只懂得本台机器的机器语言,它不能直接执行汇编语言或高级语言编写的 源程序。为了使计算机能够执行这些源程序,人们设计了一种特定的“翻译”程序,它能 将源程序翻译成目标程序,即机器语言程序来执行。这种翻译程序就是语言处理程序,常 用的语言处理程序有汇编程序、解释程序和编译程序。汇编程序用来翻译用汇编程序编写 的源程序,解释程序和编译程序用来翻译用高级语言编写的源程序。 1.汇编程序 把用汇编语言编写的源程序翻译成目标程序的程序称为汇编程序,翻译的过程称为“汇 编”,执行的是目标程序。 2.编译程序 编译程序将高级语言源程序整个地翻译为机器指令表示的目标程序,使目标程序和源 程序在功能上完全等价,然后执行目标程序,得出运算结果。翻译的过程称为“编译”。典 型的编译型语言是 FORTRAN、Pascal、C、C++等。 3.解释程序 解释程序将高级语言源程序一句一句地翻译为机器指令,每译完一句就执行一句,当 源程序翻译完后,目标程序也执行完毕。典型的解释型语言是 Basic、Java,但现在也都 有了编译功能。 6.1.3 高级语言源程序的运行步骤 程序不是计算机程序设计中独有的概念,在日常生活中我们也常见到这个词,例如一 个会议日程、一场演出的节目单等,这些程序都是由人的一项一项活动组成,有序地完成 每一项活动也就实现了程序的目标。 计算机程序是人们让计算机完成特定任务的一系列命令的集合。要把一个用高级语言 编好的源程序在计算机上进行运行并得到结果 ,需要多种软件的支持,如操作系统、编辑 软件、翻译程序、连接程序等。当翻译程序为编译程序时,一个源程序的运行步骤如图 6-1 所示。 从图中可以看出一个程序的运行必须经过四个阶段:编辑→编译→连接→运行,即通 过编辑程序编辑和修改源程序,由编译程序将源程序编译为目标程序,再经过连接程序将
目标程序连接成可执行程序,最后运行可执行程序得到结果。当某个阶段中出现了错误 则必须进行错误修改,直到没有错误为止。 编辑程序 编译程序 连接程序 程序 目标程序 可执行程序 结果 编辑 编译 连接 错 有错 不正确 图6-1高级语言源程序的运行步骤 6.1.4程序语言的选择 通常情况下,一项任务可以用多种编程语言来实现。为一项工程选择语言时,应该考 虑这种编程语言是否适合于手中的任务,这种语言在其他的应用程序中是否也经常使用, 开发小组成员是否都精通这门语言等一些问题。如果对这些问题的回答都是肯定的,那么 这门语言对这项工程是一个很好的选择 下面简单介绍几种当今流行的语言的特性,可帮助我们正确选择编程语言。 1.8086汇编语言 8086汇编语言是一种低级语言,由一些容易记忆的短语组成。8086汇编语言指令集只 适用于 Intel80x86系列微处理器,用它编写的程序只能在装有80x86系列微处理器的计 算机上运行。现在8086汇编语言主要用在那些程序尽可能短的或速度要求很高的场合。专 业程序员把8086汇编语言嵌入其他语言中(仅有部分高级语言支持嵌入功能)使程序执行 速度快,汇编语言也常用来编写系统软件以控制计算机硬件。 2. FORTRAN ORTRAN是 FORmula translating的缩写,意思是“公式翻译程序”,是1954年至1957 年间由 John Backus领导下的IBM的一个开发小组研制出的第一个高级程序语言。目前常 用的版本是 FORTRAN77和 FORTRAN90,是仍在使用的最早的高级语言,其他的高级语言 几乎都是直接或间接地从 FORTRAN发展而来。 FORTRAN90是按当代软件工程要求提出的若 干新观点、新理论设计的,对于数值型和计算功能支持较强,一般被科学家用来在大型机 或小型机上编制科学计算程序 3. BASIC和 Visual basic BASIC语言是为初级编程者设计的,它具有简单易学、小型通用的特点和人机会话交 互计算功能。自从1964年问世以来,已经出现了几种流行版本,如GW- BASIC、 QUICK- BASIC 等,目前仍在流行的是 Microsoft公司的 Visual basic。大部分版本是解释型的,但有些 支持编译。 Visual basic的集成开发环境支持调试时解释执行和对最终版本的编译,是当 前开发商业软件的理想工具之一,它所带的控件使开发可视化的图形用户界面和访问数据 库信息等变得非常简单和高效率。 4.C和C+ C语言的前身是 ALGOL68和B语言,是为了改写UNIX操作系统而诞生的,设计的初 衷就是为了编写系统软件和增加可移植性,它在多个UNIX平台和微机操作系统平台上有编
3 目标程序连接成可执行程序,最后运行可执行程序得到结果。当某个阶段中出现了错误, 则必须进行错误修改,直到没有错误为止。 图 6-1 高级语言源程序的运行步骤 6.1.4 程序语言的选择 通常情况下,一项任务可以用多种编程语言来实现。为一项工程选择语言时,应该考 虑这种编程语言是否适合于手中的任务,这种语言在其他的应用程序中是否也经常使用, 开发小组成员是否都精通这门语言等一些问题。如果对这些问题的回答都是肯定的,那么 这门语言对这项工程是一个很好的选择。 下面简单介绍几种当今流行的语言的特性,可帮助我们正确选择编程语言。 1.8086 汇编语言 8086 汇编语言是一种低级语言,由一些容易记忆的短语组成。8086 汇编语言指令集只 适用于 Intel 80x86 系列微处理器,用它编写的程序只能在装有 80x86 系列微处理器的计 算机上运行。现在 8086 汇编语言主要用在那些程序尽可能短的或速度要求很高的场合。专 业程序员把 8086 汇编语言嵌入其他语言中(仅有部分高级语言支持嵌入功能)使程序执行 速度快,汇编语言也常用来编写系统软件以控制计算机硬件。 2.FORTRAN FORTRAN 是 FORmula TRANslating 的缩写,意思是“公式翻译程序”,是 1954 年至 1957 年间由 John Backus 领导下的 IBM 的一个开发小组研制出的第一个高级程序语言。目前常 用的版本是 FORTRAN 77 和 FORTRAN 90,是仍在使用的最早的高级语言,其他的高级语言 几乎都是直接或间接地从 FORTRAN 发展而来。FORTRAN 90 是按当代软件工程要求提出的若 干新观点、新理论设计的,对于数值型和计算功能支持较强,一般被科学家用来在大型机 或小型机上编制科学计算程序。 3.BASIC 和 Visual Basic BASIC 语言是为初级编程者设计的,它具有简单易学、小型通用的特点和人机会话交 互计算功能。自从 1964 年问世以来,已经出现了几种流行版本,如 GW-BASIC、QUICK-BASIC 等,目前仍在流行的是 Microsoft 公司的 Visual Basic。大部分版本是解释型的,但有些 支持编译。Visual Basic 的集成开发环境支持调试时解释执行和对最终版本的编译,是当 前开发商业软件的理想工具之一,它所带的控件使开发可视化的图形用户界面和访问数据 库信息等变得非常简单和高效率。 4.C 和 C++ C 语言的前身是 ALGOL 68 和 B 语言,是为了改写 UNIX 操作系统而诞生的,设计的初 衷就是为了编写系统软件和增加可移植性,它在多个 UNIX 平台和微机操作系统平台上有编 编辑程序 编译程序 连接程序 源程序 目标程序 可执行程序 结果 编辑 编译 连接 运行 有错 有错 不正确
译系统,曾经是可移植性最好的语言。C语言是面向过程的程序设计语言,它带有汇编语 言的接口,可使有经验的程序员做到编程速度快、效率高。 C+语言是由C语言发展而来的,是C语言的超集,产生于20世纪80年代。它保留了 C语言的几乎全部特性,并增加了对象的支持,因此既可以进行过程化的程序设计,也可 以进行面向对象的程序设计。现在较流行的版本是 Microsoft的 isual o++和 Borland的 C++ Builder。C艹语言实现了类的封装、数据隐藏、继承及多态,使得其代码容易维护且 具有高可复用性 PROL0G是逻辑程序设计语言,出现于1971年。它以谓词逻辑为理论基础,最主要的 特征是能像人脑那样自动进行逻辑推理。PROL0G可用于程序正确性证明、自然语言理解 化学结构式分析以及法律、心理学、关系数据库、专家系统等许多领域的程序设计工作, Java是美国 SUN Microsystems公司于1995年3月推出的一种新型面向对象的编程语 言。Java语言具有面向对象性、简单性、动态性、可移植性、分布式、多进程、与平台无 关等特点。Java带来了一个崭新的编程环境,它可通过 Internet,实现计算机编程人员长 期以来一直追求的梦想:“编写一次,到处运行”。 另外,在互联网的应用中,还有大量的基于解释器的脚本语言,如HTML、 VBScript、 JavaScript等。脚本语言是一类专用语言,它将实用工具,库组件和操作系统命令整合为 个完整程序。脚本语言可以用来向计算机发送指令,但它们的语法和规则没有可编译的 编程语言那样严格和复杂。脚本语言主要用于格式化文本和使用以编程语言编写的已编译 好的组件 脚本语言以脚本的形式定义一项任务。脚本需要一个主机应用系统依附来运行,不能 单机运行。例如,用HML为显示网页编写一个脚本,这个脚本由网络浏览器解释,这里网 络浏览器就是主机应用系统,没有它,ⅢML脚本就不能运行 6.2计算机程序设计 程序是为了解决某一特定问题而用某一种计算机语言编写的指令序列,程序设计是用 某种计算机语言编写程序的过程,所以程序是程序设计的结果 计算机的工作方式有两种,一种是交互式,即人给计算机一个指令,计算机就完成 个操作;另一种是程序控制式,即先把计算机要完成的操作用一条条指令按序排好,然后 让计算机一步一步地执行这些指令序列,从而完成我们让计算机实现的功能,且整个指令 序列的执行过程不需要人工干预 在用高级语言进行程序设计时要注意以下3个概念 语法。每种计算机语言都有自己的语法规则,这些规则是非常严格的。在进行编译 时,系统会按语法规则严格检查程序,如有不符合语法规则的地方,计算机就会显示出语 法有错信息 2.语义。即某一语法成分的含义。例如, Visual basic语言中用“Dim”语句来显式 声明变量,用“ Print”方法来显示文本字符串和表达式的值,用“*”表示乘法,用“<” 表示不等于运算等。在使用时必须了解每一种语法成分的正确含义 3.语用。即正确使用语言。要善于利用语法规则中的有关规定和语法成分的含义有效
4 译系统,曾经是可移植性最好的语言。C 语言是面向过程的程序设计语言,它带有汇编语 言的接口,可使有经验的程序员做到编程速度快、效率高。 C++语言是由 C 语言发展而来的,是 C 语言的超集,产生于 20 世纪 80 年代。它保留了 C 语言的几乎全部特性,并增加了对象的支持,因此既可以进行过程化的程序设计,也可 以进行面向对象的程序设计。现在较流行的版本是 Microsoft 的 Visual C++和 Borland 的 C++ Builder。C++语言实现了类的封装、数据隐藏、继承及多态,使得其代码容易维护且 具有高可复用性。 5.PROLOG PROLOG 是逻辑程序设计语言,出现于 1971 年。它以谓词逻辑为理论基础,最主要的 特征是能像人脑那样自动进行逻辑推理。PROLOG 可用于程序正确性证明、自然语言理解、 化学结构式分析以及法律、心理学、关系数据库、专家系统等许多领域的程序设计工作。 6.Java Java 是美国 SUN Microsystems 公司于 1995 年 3 月推出的一种新型面向对象的编程语 言。Java 语言具有面向对象性、简单性、动态性、可移植性、分布式、多进程、与平台无 关等特点。Java 带来了一个崭新的编程环境,它可通过 Internet,实现计算机编程人员长 期以来一直追求的梦想:“编写一次,到处运行”。 另外,在互联网的应用中,还有大量的基于解释器的脚本语言,如 HTML、VBScript、 JavaScript 等。脚本语言是一类专用语言,它将实用工具,库组件和操作系统命令整合为 一个完整程序。脚本语言可以用来向计算机发送指令,但它们的语法和规则没有可编译的 编程语言那样严格和复杂。脚本语言主要用于格式化文本和使用以编程语言编写的已编译 好的组件。 脚本语言以脚本的形式定义一项任务。脚本需要一个主机应用系统依附来运行,不能 单机运行。例如,用 HTML 为显示网页编写一个脚本,这个脚本由网络浏览器解释,这里网 络浏览器就是主机应用系统,没有它,HTML 脚本就不能运行。 6.2 计算机程序设计 程序是为了解决某一特定问题而用某一种计算机语言编写的指令序列,程序设计是用 某种计算机语言编写程序的过程,所以程序是程序设计的结果。 计算机的工作方式有两种,一种是交互式,即人给计算机一个指令,计算机就完成一 个操作;另一种是程序控制式,即先把计算机要完成的操作用一条条指令按序排好,然后 让计算机一步一步地执行这些指令序列,从而完成我们让计算机实现的功能,且整个指令 序列的执行过程不需要人工干预。 在用高级语言进行程序设计时要注意以下 3 个概念。 1.语法。每种计算机语言都有自己的语法规则,这些规则是非常严格的。在进行编译 时,系统会按语法规则严格检查程序,如有不符合语法规则的地方,计算机就会显示出语 法有错信息。 2.语义。即某一语法成分的含义。例如,Visual Basic 语言中用“Dim”语句来显式 声明变量,用“Print”方法来显示文本字符串和表达式的值,用“*”表示乘法,用“<>” 表示不等于运算等。在使用时必须了解每一种语法成分的正确含义。 3.语用。即正确使用语言。要善于利用语法规则中的有关规定和语法成分的含义有效
地组成程序,以达到特定的目的。 6.2.1结构化程序设计 1969年,荷兰学者戴克斯特拉(E.W. Di jkstra)等提出了结构化程序设计( Structured Programming)的概念。结构化程序设计是“按照一组能够提高程序易读性与易维护性的规 则而进行程序设计的方法”,是面向过程的程序设计( Process- Oriented programming, PP),它从程序的结构和实施方法上讨论如何产生可读性好、可靠性高,且易于维护的程 结构化程序设计方法的基本思路是:把一个复杂问题的求解过程分阶段进行,每个阶 段处理的问题都控制在人们容易理解和处理的范围内。它主要包括以下几方面内容 1.衡量程序质量的标准是“清晰第一、效率第二”。 2.要求程序设计者按一定规范书写程序,而不能随心所欲地设计程序。 3.程序由一些具有良好特性的基本结构组成,如顺序结构、选择结构和循环结构。由 这些基本结构顺序地构成一个结构化的程序。避免使用可能造成程序结构混乱的G0T0转向 语句 4.大型程序应分割成一些功能模块,并把这些模块按层次关系进行组织。 5.在程序设计时应采用“自顶向下、逐步细化”的实施方法。即将一个大任务先分成 若干个子任务,每一个子任务就是一个模块。如果某一个子任务还太复杂,还可以再分解 成若干个子任务,如此逐层分解。对一个模块的设计也是采取这种“自顶向下、逐步细化” 的方法,直到将它分解为上述基本结构为止。 按结构化程序设计方法设计出的程序,结构良好,各模块间的关系简单,每一个模块 都由基本结构组成。这样的程序清晰易读,可理解性好,容易设计,容易验证其正确性 也容易维护。同时,由于采用了“自顶向下、逐步细化”的实施方法,能有效地组织人们 的智力,有利于软件的工程化开发 6.2.2面向对象程序设计 面向对象的程序设计( Ob ject- Oriented Programming,OOP)于20世纪80年代初提出, 它起源于 Smalltalk语言。用面向对象的方法解决问题,不再将问题分解为过程,而是将 问题分解为对象。对象是现实世界中可以独立存在、可以被区分的一些实体,也可以是- 些概念上的实体,世界是由众多对象组成的。 对象有三个要素:属性、方法和事件。属性是对象的性质,是用于描述和反映对象特 征的参数。方法是对象的行为,即将一些通用的过程编写好并封装起来,作为方法供用户 直接调用。事件是响应对象的动作,它发生在用户与应用程序交互时,如单击控件按钮、 鼠标移动、键盘按下等。对象之间的相互作用通过消息传送来实现。消息是面向对象系统 中对象之间通信和请求任务的操作。消息传递是程序运行的基本处理活动。 面向对象的程序设计是一种系统化的程序设计方法,它不抛弃结构化程序设计方法, 而是站在比结构化程序设计更高、更抽象的层次上去解决问题。当它被分解为低级代码模 块时,仍需要结构化编程的方法和技巧,只是他分解一个大问题为小问题时采取的思路与 结构化方法不同。结构化的分解突出过程,强调的是如何做,代码的功能如何完成;面向 对象的分解突出现实世界和抽象的对象,强调的是做什么,它将大量的工作由相应的对象
5 地组成程序,以达到特定的目的。 6.2.1 结构化程序设计 1969 年,荷兰学者戴克斯特拉(E . W. Dijkstra)等提出了结构化程序设计(Structured Programming)的概念。结构化程序设计是“按照一组能够提高程序易读性与易维护性的规 则而进行程序设计的方法”,是面向过程的程序设计(Process-Oriented Programming, POP),它从程序的结构和实施方法上讨论如何产生可读性好、可靠性高,且易于维护的程 序。 结构化程序设计方法的基本思路是:把一个复杂问题的求解过程分阶段进行,每个阶 段处理的问题都控制在人们容易理解和处理的范围内。它主要包括以下几方面内容: 1.衡量程序质量的标准是“清晰第一、效率第二”。 2.要求程序设计者按一定规范书写程序,而不能随心所欲地设计程序。 3.程序由一些具有良好特性的基本结构组成,如顺序结构、选择结构和循环结构。由 这些基本结构顺序地构成一个结构化的程序。避免使用可能造成程序结构混乱的 GOTO 转向 语句。 4.大型程序应分割成一些功能模块,并把这些模块按层次关系进行组织。 5.在程序设计时应采用“自顶向下、逐步细化”的实施方法。即将一个大任务先分成 若干个子任务,每一个子任务就是一个模块。如果某一个子任务还太复杂,还可以再分解 成若干个子任务,如此逐层分解。对一个模块的设计也是采取这种“自顶向下、逐步细化” 的方法,直到将它分解为上述基本结构为止。 按结构化程序设计方法设计出的程序,结构良好,各模块间的关系简单,每一个模块 都由基本结构组成。这样的程序清晰易读,可理解性好,容易设计,容易验证其正确性, 也容易维护。同时,由于采用了“自顶向下、逐步细化”的实施方法,能有效地组织人们 的智力,有利于软件的工程化开发。 6.2.2 面向对象程序设计 面向对象的程序设计(Object-Oriented Programming,OOP)于 20 世纪 80 年代初提出, 它起源于 Smalltalk 语言。用面向对象的方法解决问题,不再将问题分解为过程,而是将 问题分解为对象。对象是现实世界中可以独立存在、可以被区分的一些实体,也可以是一 些概念上的实体,世界是由众多对象组成的。 对象有三个要素:属性、方法和事件。属性是对象的性质,是用于描述和反映对象特 征的参数。方法是对象的行为,即将一些通用的过程编写好并封装起来,作为方法供用户 直接调用。事件是响应对象的动作,它发生在用户与应用程序交互时,如单击控件按钮、 鼠标移动、键盘按下等。对象之间的相互作用通过消息传送来实现。消息是面向对象系统 中对象之间通信和请求任务的操作。消息传递是程序运行的基本处理活动。 面向对象的程序设计是一种系统化的程序设计方法,它不抛弃结构化程序设计方法, 而是站在比结构化程序设计更高、更抽象的层次上去解决问题。当它被分解为低级代码模 块时,仍需要结构化编程的方法和技巧,只是他分解一个大问题为小问题时采取的思路与 结构化方法不同。结构化的分解突出过程,强调的是如何做,代码的功能如何完成;面向 对象的分解突出现实世界和抽象的对象,强调的是做什么,它将大量的工作由相应的对象