全国计算机等级考试二级公共基础知识周末班主讲老师:陈丽琼第二章程序设计基础大纲要求(l)程序设计方法与风格。(2)结构化程序设计。(3)面向对象的程序设计方法,对象,方法,属性及继承与多态性。第二章程序设计基础2.1程序设计方法与风格2.1.1程序设计经历的阶段程序设计是指设计、编制、调试程序的方法和过程程序设计主要经历了结构化设计和面向对象的程序设计阶段第二章程序设计基础2.1.2良好的编程风格应注意的因素要形成良好的程序设计风格,主要应注意和考虑下述一些因素。(I)源程序的文档化源程序文档化是指在源程序中可包含一些内部文档,以帮助阅读和理解源程序。①符号名的命名规则:符号名的命名应具有一定的实际含义,以便理解程序功能。②程序注释:在源程序中添加正确的注释可帮助人们理解程序。程序注释可分为序言性注释和功能性注释,以给出程序的整体说明和程序的主要功能。③视觉组织:可以在程序中利用空格、空行、缩进等技巧使程序层次清晰。第二章程序设计基础(2)数据说明的方法为使程序中的数据说明易于理解和维护,可采用下列数据说明的风格,见表2-1。第二章程序设计基础数据说明风格详细说明次序应规范化使数据说明次序固定,使数据的属性容易查找,也有利于测试、排错和和维护变量安排有序化当多个变量出现在同一个说明语句中时,变量名应按字母顺序排序,以便于查找使用注释在定义一个复杂的数据结构时,应通过注释来说明该数据结构的特点。表2-1数据说明风格第二章程序设计基础(3)语句的结构为使程序更简单易懂,语句构造应该简单直接,应注意如下原则:①在一行内只写一条话句;②程序编写应优先考虑清晰性;③程序编写要做到清晰第一,效率第二;④在保证程序正确的基础上再要求提高效率;⑤避免使用临时变量而使程序的可读性下降;⑥避免不必要的转移;⑦尽量使用库函数;第二章程序设计基础⑧避免采用复杂的条件语句;⑨尽量减少使用“否定”条件语句;⑩数据结构要有利于程序的简化;⑩要模块化,使模块功能尽可能单一化;⑥利用信息隐蔽,确保每一个模块的独立性;⑩从数据出发去构造程序;⑩不要修补不好的程序,要重新编写。第二章程序设计基础(4)输入/输出输入/输出方式和风格应尽可能方便用户的使用,应考虑如下原则:1对所有输入的数据都要检验数据的合法性;2检查输入项的各种重要组合的合理性;3输入格式要简单,使得输入的步骤和操作尽可能简单;4入数据时,应允许使用自由格式;⑤应允许默认值;⑥输入一批数据时,最好使用输入结束标志;⑦在以交互式输入/输出方式进行输入时,要在屏幕上使用提示符明确提示输入的请求,同时在数据输入过程中和输入结束时,应在屏幕上给出状态信息;⑧当程序设计语言对输人格式有严格要求时,应保持输入格式与输入语句的一致性。第二章程序设计基础2.2结构化程序设计2.2.1结构化程序设计的原则结构化程序设计方法的重要原则是自顶向下、逐步求精、模块化及限制使用goto语句。(1)自顶向下,程序设计时,先考虑总体,后考虑细节;先考虑全局目标,后考虑局部目标。(2)逐步求精对复杂问题,应设计一些子目标做过渡,逐步细化。(3)模块化模块化是把程序要解决的总目标分解为分目标,再进一步分解为具体的小目标,把每个小国标称为一个模块。(4)限制使用goto语句第二章程序设计基础2.2.2结构化程序的基本结构与特点程序设计语言使用顺序结构、选择(分支)结构和重复(循环)结构三种基本控制结构就足以表达出各种其他形式结构的程序设计方法。它们的共同特征是:严格地只有一个人口和一个出口。第二章程序设计基础遵循结构化程序设计原则,按结构化程序设计方法设计出的程序具有明显的优点:程序易于理解、使用和维护;提高了编程工作的效率,降低了软件开发成本。第二章程序设计基础2.2.3结构化程序设计原则和方法的应用基于对结构化程序设计原则、方法以及结构化程序基本构成结构的掌握和了解,在结构化程序设计的具体实施中,要注意把握如下要素:①使用程序设计语言中的顺序、选择、循环等有限的控制结构表示程序的控制逻辑;②选用的控制结构只准许有一个入口和一个出口;③程序语句组成容易识别的块,每块只有一个人口和一个出口;④复杂结构应该用嵌套的基本控制结构进行组合嵌套来实现;⑤语言中所没有的控制结构,应该采用前后一致的方法来模拟;⑥尽量避免goto语句的使用。第二章程序设计基础2.3面向对象的程序设计2.3.1面向对象的方法面向对象方法的本质就是主张从客观世界固有的事物出发来构造系统,提倡用人类在现实生活中常用的思维方法来认识、理解和描述客观事物,强调最终建立的系统能够映射问题域,也就是说,系统中的对象以及对象之间的关系能够如实地反映问题域中固有事物及其关系。第二章程序设计基础一个对象应该包括两个要素:一是数据;二是需要进行的操作。对象就是一个包含数据以及与这些数据有关的操作的集合。面向对象就是运用对象、类、继承、封装、消息、结构与连接等面向对象的概念对问题进行分析、求解的系统开发技术。第二章程序设计基础面向对象的主要优点:①与人类习惯的思维方法一致;②稳定性好;③可重用性好;④易于开发大型软件产品;⑤可维护性好。第二章程序设计基础1.对象对象可以用来表示客观世界中的任何实体,也就是说,应用领域中有意义的、与所要解决的问题有关系的任何事物都可以作为对象。总之,对象是对问题域中某个实体的抽象。面向对象的程序设计方法中涉及的对象是系统中用来描述客观事物的一个实体,是构成系统的一个基本单位,它由一组表示其静态特征的属性和它可执行的一组操作组成。客观世界中的实体通常既具有静态的属性,又具有动态的行为,因此,面向对象方法学中的对象是由描述该对象属性的数据以及可以对这些数据施加的操作封装在一起构成的统一体。对象可以执行的操作表示它的动态行为。属性即对象所包含的信息,它在设计对象时确定,一般只能通过执行对象的操作来改变。第二章程序设计基础操作描述了对象执行的功能,若通过信息的传递,还可以为其他对象使用。对象具有如下特点。①标识唯一性:指对象是可区分的,并且由对象的内在本质来区分,而不是通过描述来区分;②分类性:指可以将具有相同属性和操作的财象抽象成类;③多态性:指同一个操作可以是不同对象的行为;④封装性:从外面看只能看到对象的外部特征,而不知道也无须知道数据的具体结构以及实现操作的算法;⑤模块独立性好:对象是面向对象的软件的基本模块,对象内部各种元素彼此结合得很紧密,内聚性强。第二章程序设计基础2.类和实例类是具有共同属性、共同方法的对象的集合,是关于对象的抽象描述,反映属于该对象类型的所有对象的性质。一个具体对象则是其对应类的一个实例。要注意的是:“实例”这个术语,必然是指一个具体的对象。“对象”这个术语,则既可以指一个具体的对象,也可以泛指一般的对象。因此,在使用“实例”这个术语的地方,都可以用“对象”来代替,而使用“对象”这个术语的地方,则不一定能用“实例”来代替。类是关于对象性质的描述,它同对象一样,包括一组数据属性和在数据上的一组合法操作。第二章程序设计基础3.消息消息传递是对象间通信的手段,一个对象通过向另一对象发送消息来请求其服务。消息机制统一了数据流和控制流。消息的使用类似于函数调用。一个消息由下述3部分组成:(1)接收消息的对象名称;(2)消息选择符(也称为消息名);(3)零个或多个参数。第二章程序设计基础消息只告诉接收对象需要完成什么操作,但并不指示怎样完成操作。消息完全由接收者解释,独立决定采用什么方法来完成所需的操作。一个对象能够接收不同形式、不同内容的多个消息;相同形式的消息可以送往不同的对象,不同的对象对于形式相同的消息可以有不同的解释,能够做出不同的反应。一个对象可以同时往多个对象传递消息,两个对象也可以同时向某一个对象传递消息。第二章程序设计基础4.继承继承是指能够直接获得已有的性质和特征,而不必重复定义它们。继承具有传递性。一个类实际上继承了它上层的全部基类的特性,也就是说,属于某类的对象除了具有该类定义的特性外,还具有该类上层全部基类定义的特性。第二章程序设计基础继承分为单继承与多重继承。单继承是指一个类只允许有一个父类,即类等价为树形结构。多重继承是指一个类允许有多个父类。多重继承的类可以组合多个父类的性质构成所需要的性质。继承的优点是:相似的对象可以共享程序代码和数据结构,从而大大减少了程序中的冗余信息,提高软件的可重用性,便于软件修改维护。另外,继承使得用户在开发新的应用系统时不必完全从零开始,可以继承原有的相似系统的功能或者从类库中选取需要的类,再派生出新的类以实现所需的功能。第二章程序设计基础继承是面向对象方法的一个重要特征。广义地说,继承是指能够直接获得已有的性质和特征,不必重复定义它们。在面向对象的软件技术中,继承是指子类自动地共享基类中定义的数据和方法的机制。第二章程序设计基础5.多态性对象根据所接收的消息而做出动作,同样的消息被不同的对象接收时可导致完全不同的行为,该现象称为多态性。在面向对象的软件技术中,多态性是指子类对象可以像父类对象那样使用,同样的消息既可以发送给父类对象也可以发送给子类对象。多态性机制不仅增强了面向对象软件系统的灵活性,进一步减少了信息冗余,而且显著提高了软件的可重用性和可扩充性。第二章程序设计基础面向对象设计方法的三个基本特征是:封装、继承、多态在面向对象方法中,实现信息隐蔽是依靠对象的封装