1、第二章 程序设计基础2.1 程序设计方法与风格n程序设计两个阶段:结构化程序设计和面向对象的程序设计阶段。n设计风格:“清晰第一、效率第二”良好的设计风格注重的因素n1、源程序的文档化1)符号名的命名;2)程序注释;3)视觉组织。n2、数据说明的方法1)数据说明的次序规范化;2)说明语句中变量安排有序化;3)使用注释来说明复杂数据结构。n3、语句的结构1)在一行只写一条语句;2)程序编写优先考虑清晰性;3)除非对效率有特殊要求,程序编写要“清晰第一、效率第二”。4)首先要保证程序的正确,然后才要求提高速度;5)避免使用临时变量而是程序可读性下降;6)避免不必要的转移;7)尽量能使用库函数;8)
2、避免采用复杂的条件语句;9)尽量减少使用“否定”条件的条件语句;10)数据结构要有利于程序的简化;11)要模块化,使模块功能尽可能单一;12)利于信息隐蔽,确保每一模块的独立性;13)丛数据出发去构造程序;14)不要修补不好的程序,要重新编写;n4、输入和输出1)对所有的输入数据都要检验数据的合法性;2)检查输入项的各项重要组合的合理性;3)输入格式要简单。以使得输入的步骤和操作景可能简单;4)输入数据时,应允许使用自由格式;5)应允许缺省值;6)输入一批数据时,最好使用输入结束标志;7)在以交互式输入/输出方式时,要有相关提示;8)保持输入格式和输入语句的一致性。2.2 结构化程序设计n2.
3、2.1 结构化程序设计原则1.自顶向下:总体-细节;全局-局部2.逐步求精:对复杂程序设计子目标过渡;逐步细化3.模块化:总目标分成分目标再分小目标(模块)4.限制使用goto语句n结构化程序设计是把模块分割方法作为对大型系统进行分析的手段,使其最终转化为三种基本结构,其目的是为了解决由许多人共同开发大型软件时,如何高效率地完成可靠系统的问题。n程序的可读性好、可维护性好成为评价程序质量的首要条件。n缺点:程序和数据结构松散地耦合在一起。解决此问题的方法就是采用面向对象的程序设计方法。2.2.2 结构化程序的基本结构与特点n1、顺序结构:ABn2、选择结构:AB真假n3、重复(循环)结构:真假
4、(1)当型循环结构真假(2)直到型循环结构2.2.3 结构化程序设计原则和方法的应用1.使用程序设计语言中的顺序、选择、循环等有限的控制结构表示程序的控制逻辑;2.选用的控制结构只准许有一个入口和一个出口;3.程序语句组成容易识别的块,每块只有一个入口和一个出口;4.复杂结构应该用嵌套的基本控制结构进行组合嵌套来实现。5.语言中所没有的控制结构,应该采用前后一致的方法来实现;6.严格控制goto语句的使用2.3 面向对象的程序设计n关于面向对象的方法n面向对象的基本概念2.3.1 关于面向对象的方法n对系统的复杂性进行概括、抽象和分类,使软件的设计与现实形成一个由抽象到具体、由简单到复杂这样一
5、个循序渐进的过程,从而解决大型软件研制中存在的效率低、质量难以保证、调试复杂、维护困难等问题。n结构化的分解突出过程,即如何做?它强调代码的功能是如何实现的;面向对象的分解突出现实世界和抽象的对象,即做什么?2.3.1 关于面向对象的方法n对象:事物n从计算机的角度:具有两个要素:数据+对数据的操作数 据操作代码对象1.与人类习惯的思维方法一致2.稳定性好3.可重用性好4.易于开发大型软件产品5.可维护性好(P54)优点面向对象方法的优点2.3.2 面向对象的基本概念1、对象:具有属性(数据)和方法(行为方式)的实体。有形的(如桌子)对象无形的(计划)动态的静态的n对象的特征 标识唯一性:指对
6、象是可区分的,并且由对象的内在本质来区分,而不是通过描述来区分。分类性:指可以将具有相同属性和操作的对象抽象成类。多态性:指同一个操作可以是不同对象的行为 封装性:只能看到对象的外部特征。n将数据和操作数据的函数衔接在一起,构成一个具有类类型的对象的描述。n对象的内部实现受保护,外界不能访问n封装简化了程序员对对象的使用 模块独立性好:有数据及可以对这些数据施加的操作所组成的统一体,以数据为中心,没有无关的操作,从模块对立性考虑,对象内部各种元素彼此结合紧密,内聚性强。2、面向对象 从该问题所涉及的对象入手来研究问题。3、类和实例n定义:类是具有共同属性、共同方法的对象的集合。n一个类定义了一
7、组大体上相似的对象。n类是对象的 抽象,它描述了属于该对象类型的所有对象的性质,而一个对象则是其对应类的一个实例。n实例必然是指一个具体的对象。n对象是类的具体化,是类的实例4、消息(Message)n一个实例和另一个实例之间传递的 信息。n消息的组成:接受消息的对象的名称 消息标识符(也称为消息名)零个或多个参数5、继承(Inheritance)n继承是父类和子类之间共享数据的方法的机制n一个子类可以继承它的父类(或祖先类)的属性和操作(具有传递性)n子类中可以定义自己的属性和操作n分类 单重继承:一个类只容许有一个父类 多重继承:一个类可容许有多个父类6、多态性(Polymorphism)
8、n不同的对象收到同一消息可以产生完全不同的结构,这一现象叫做多态性n多态的实现受到继承的支持例n结构化程序设计的3种结构是 。A)顺序结构、选择结构、转移结构 B)分支结构、等价结构、循环结构 C)多分支结构、赋值结构、等价结构 D)顺序结构、选择结构、循环结构n在设计程序时,应采纳的原则之一是 。A)不限制goto语句的使用 B)减少或取消注解行 C)程序越短越好 D)程序结构应有助于读者理解n结构化程序设计主要强调的是 。A)程序的规模B)程序的效率 C)程序设计语言的先进性 D)程序易读性n 以下不属于对象的基本特点的是 A)分类性 B)多态性 C)继承性D)封装性 n 对建立良好的程序
9、设计风格,下面描述正确的是 A)程序应简单、清晰、可读性好 B)符号名的命名只要符合语法 C)充分考虑程序的执行效率 D)程序的注释可有可无n程序的3种基本控制结构是 A)过程、子过程和分程序 B)顺序、选择和重复 C)递归、堆栈和队列 D)调用、返回和转移n下列叙述中,不属于结构化程序设计方法的主要原则的是 A)自顶向下 B)由底向上 C)模块化D)限制使用goto语句n 对象实现了数据和操作的结合,是指对数据和数据的操作进行 A)结合 )隐藏 C)封装 D)抽象n在面向对象的程序设计中,类描述的是具有相似性质的一组 。n在面向对象方法中,类之间共享属性和操作的机制称为 。n面向对象的模型中,最基本的概念是对象和 。n类是一个支持集成的抽象数据类型,而对象是类的_。