为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

第2章 程序设计基础

2012-01-11 5页 doc 45KB 23阅读

用户头像

is_692459

暂无简介

举报
第2章 程序设计基础第二章 程序设计基础 程序设计方法与风格 1.源程序文档化 源程序文档化应考虑如下几点: (1)符号名的命名:符号名的命名应具有一定的实际含义,以便于对程序功能的理解。 (2)程序注释:正确的注释能够帮助读者理解程序。 (3)视觉组织:为使程序的结构一目了然,可以在程序中利用空格、空行、缩进等技巧使程序层次 2.数据说明的方法 一般应注意: (1)说明次序规范化 (2) 变量说明有序化:语句说明多个变量时,变量按照字母顺序排序为好。 (3)使用注释来说明复杂数据的结构。 ...
第2章  程序设计基础
第二章 程序设计基础 程序设计方法与风格 1.源程序文档化 源程序文档化应考虑如下几点: (1)符号名的命名:符号名的命名应具有一定的实际含义,以便于对程序功能的理解。 (2)程序注释:正确的注释能够帮助读者理解程序。 (3)视觉组织:为使程序的结构一目了然,可以在程序中利用空格、空行、缩进等技巧使程序层次 2.数据说明的方法 一般应注意: (1)说明次序规范化 (2) 变量说明有序化:语句说明多个变量时,变量按照字母顺序排序为好。 (3)使用注释来说明复杂数据的结构。 3.语句的结构 程序应该简单易懂,语句构造应该简单直接 不应该为提高效率而把语句复杂化。一般应注意如下 (1)在一行内只写一条语句: (2)程序编写应优先考虑清晰性; (3)除非对效率有特殊要求,程序编写要做到清晰第一,效率第二。 (4)首先要保证程序正确,然后才要求提高速度: (5)避免使用临时变量而使程序的可读性下降; (6)避免不必要的转移; 7)尽可能使用库函数; (8)避免采用复杂的条件语句: (9)尽量减少使用“否定”条件的条件语句; (10)数据结构要有利于程序的简化; (11)要模块化,使模块功能尽可能单一化; (12)利用信息隐蔽,确保每一个模块的独立性 (13)从数据出发去构造程序: (14)不要修补不好的程序,要重新编写: 4.输入和输出 在设计和编程时都应该考虑如下原则: (1)对所有的输入数据都要检验数据的合法性; (2)检查输入项的各种重要组合的合理性; (3)输入格式要简单,以使得输入的步骤和操作尽可能简单; (4)输入数据时,应允许使用自由格式: (5)应允许缺省值; (6)输入一批数据时,最好使用输入结束标志: (7)在以交互式输入/输出方式进行输入时,要在屏幕上使用提示符明确提示输入的请求,同时在数据输入过程中和输入结束时,应在屏幕上给出状态信息; (8)当程序设计语言对输入格式有严格要求时,应保持输入格式与输入语句的一致性;给所有的输 出加注释,并设计输出报格式。 2.2 结构化程序设计 2.2.1结构化程序设计的原则 结构化程序设计方法的主要原则可以概括为自顶向下,逐步求精,模块化,限制使用goto语句。 1.自顶向下:程序设计时,应先考虑总体,后考虑细节;先考虑全局目标,后考虑局部目标。不要一开始就过多追求众多的细节,先从最上层总目标开始设计,逐步使问具体化。 2.逐步求精:对复杂问题,应设计一些子目标作过渡,逐步细化。 3.模块化:一个复杂问题,肯定是由若干稍简单的问题构成。模块化是把程序要解决的总目标分解为分目标,再进一步分解为具体的小目标,把每个小目标称为一个模块。 4.限制使用goto语句 使用GOTO语句会使程序执行效率较高;否定的结论是,GOTO语句是有害的,是造成程序混乱的祸根,程序的质量与GOTO语句的数量成反比,应该在所有高级程序设计语言中取消GOTO语句。 (1)滥用GOTO语句确实有害,应尽量避免; (2)完全避免使用GOTO语句也并非是个明智的方法更清楚、效率更高; (3)争论的焦点不应该放在是否取消GOTO语句,而应该放在用什么样的程序结构上。 2.2.2 结构化程序设计基本结构与特点 三种基本控制结构: 1. 顺序结构:是顺序执行结构,所谓顺序执行,就是按照程序语句行的自然顺序,一条语句一条语句地执行程序。 2.选择结构:选择结构又称为分支结构,它包括简单选择和多分支选择结构,这种结构可以根据设定的条件,判断应该选择哪一条分支来执行相应的语句序列。 3.重复结构:重复结构又称为循环结构,它根据给定的条件,判断是否需要重复执行某一相同的或类似的程序段,利用重复结构可简化大量的程序行。 在程序设计语言中,重复结构对应两类循环语句: 1) 对先判断后执行循环体的称为当型循环结构。 2) 对先执行循环体后判断的称为直到型循环结构, 结构化程序设计方法设计出的程序具有明显的优点: 其一,程序易于理解、使用和维护。 其二,提高了编程工作效率,降低软件开发成本。 2.2.3 结构化程序设计原则和方法的应用 结构化程序设计的具体实施中,要注意把握如下要素: 1.使用程序设计语言中的顺序、选择、循环等有限的控制结构表示程序的控制逻辑: 2.选用的控制结构只准许有一个入口和一个出口; 3.程序语句组成容易识别的块,每块只有一个入口和一个出口; 4.复杂结构应该用嵌套的基本控制结构进行组合嵌套来实现; 5.语言中所没有的控制结构,应该采用前后一致的方法来模拟: 6.严格控制GOTO语句的使用。 2.3 面向对象的程序设计方法 面向对象方法已经发展成为主流的软件开发方法。 面向对象方法之以下主要优点。 1. 与人类习惯的思维方法一致 传统的程序设计方法是面向过程的,其核心方法是以算法为核心,把数据和过程作为相互独立的部分,数据代表问题空间中的客体,程序则用于处理这些数据,在计算机内部数据和程序是分开存放的。 面向对象方法和技术以对象为核心。对象是由数据和容许的操作组成的封装体,与客观实体有直接的对应关系。对象之间通过传递消息互相联系,以模拟现实世界中不同事物彼此之间的联; 2.稳定性好 面向对象方法基于构造问题领域的对象模型,以对象为中心构造软件系统。它的基本作法是用对象模拟问题领域中的实体,以对象间的联系刻画实体间的联系。所以,当对系统的功能需求变化时并不会引起软件结构的整体变化,往往仅需要作一些局部性的修改。以对象为中心构造的软件系统也是比较稳定的。 而传统的软件开发方法以算法为核心,开发过程基于功能分析和功能分解。用传统方法所建立起来的软件系统的结构紧密地依赖于系统所要完成的功能,当功能需求发生变化时将引起软件结构的整体修改。因此,这样的软件系统是不稳定的。 3.可重用性好 传统的软件重用技术是利用函数库,实际的库函数往往仅提供最基本、最常用的功能 使用传统方法学开发软件时,人们强调的是功能抽象,认为具有功能内聚性的模块是理想的模块,也就是说,如果一个模块完成一个且只完成一个相对独立的子功能,那么这个模块就是理想的可重用模块,但是,具有功能内聚性的模块并不是自含的和独立的,相反,它必须在数据上运行。如果要重用这样的模块,则相应的数据也必须重用。 在面向对象方法中所使用的对象,其数据和操作是作为平等伙伴出现的。因此,对象具有很强的自含性,此外,对象所固有的封装性,使得对象的内部实现与外界隔离,具有较强的独立性。 面向对象的软件开发技术在利用可重用的软件成分构造新的软件系统时,有很大的灵活性。有两种方法可以重复使用一个对象类: 一种方法是创建该类的实例,从而直接使用它; 另一种方法是从它派生出一个满足当前需要的新类。 继承性机制使得子类不仅可以重用其父类的数据结构和程序代码,而且可以在父类代码的基础上方便地修改和扩充,这种修改并不影响对原有类的使用。 4.易于开发大型软件产品 5.可维护性好 (1)用面向对象的方法开发的软件稳定性比较好。 (2)用面向对象的方法开发的软件比较容易修改。 (3)用面向对象的方法开发的软件比较容易理解。 (4)易于测试和调试。 2.3.2 面向对象的方法基本概念 1.对象 对象可以用来表示客观世界中的任何实体,它既可以是具体的物理实体的抽象 面向对象的程序设计方法中涉及的对象是构成系统的一个基本单位,它由一组表示其静态特征的属性和它可执行的一组操作组成。 不同对象的同一属性可以具有相同或不同的属性值。 属性值应该指的是纯粹的数据值,而不能指对象。 操作描述了对象执行的功能,若通过消息传递,还可以为其他对象使用。 操作的过程对外是封闭的,即用户只能看到这一操作实施后的结果。 只需要调用就可以了,用户不必去关心这一过程是如何编写的。事实上,这个过程已经封装在对象中,用户也看不到。对象的这一特性,即是对象的封装性。 ’ 对象有如下一些基本特点: (1)标识惟一性。指对象是可区分的,并且由对象的内在本质来区分 (2)分类性。指可以将具有相同属性和操作的对象抽象成类。 (3)多态性。指同一个操作可以是不同对象的行为。 (4)封装性。从外面看只能看到对象的外部特性,即只需知道数据的取值范围和可以对该数据施加的操作,根本无需知道数据的具体结构以及实现操作的算法。对象的内部,即处理能力的实行和内部状态,对外是不可见的。从外面不能直接使用对象的处理能力,也不能直接修改其内部状态,对象的内部状态只能由其自身改变。 (5)模块独立性好。对象是面向对象的软件的基本模块,它是由数据及可以对这些数据施加的操作所组成的统一体,而且对象是以数据为中心的,操作围绕对其数据所需做的处理来设置,没有无关的操作。内聚性强。 2.类(Class)和实例(1nstance) 类是具有共同属性、共同方法的对象的集合。所以,类是对象的抽象,它描述了属于该对象类型的所有对象的性质,而一个对象则是其对应类的一个实例。 当使用“实例”这个术语时,必然是指一个具体的对象。 例如:Integer是一个整数类,它描述了所有整数的性质。因此任何整数都是整数类的对象,而一个具体的整数“123”是类Integer的一个实例。 类是关于对象性质的描述,它同对象一样,包括一组数据属性和在数据上的一组合法操作。 3.消息(Message) 消息是一个实例与另一个实例之间传递的信息,它请求对象执行某一处理或回答某一要求的信息,它统一了数据流和控制流。 消息传递过程中,由发送消息的对象(发送对象)的触发操作产生输出结果,作为消息传送至接受消息的对象(接受对象),引发接受消息的对象一系列的操作。 消息中只包含传递者的要求,它告诉接受者需要做哪些处理,但并不指示接受者应该怎样完成这些处理。 消息完全由接受者解释,接受者独立决定采用什么方式完成所需的处理,发送者对接受者不起任何控制作用。 一个对象能够接受不同形式、不同内容的多个消息; 相同形式的消息可以送往不同的对象,不同的对象对于形式相同的消息可以有不同的解释,能够做出不同的反映。 一个消息由下述三部分组成: ①接收消息的对象的名称; ②消息标识符(也称为消息名) ⑧零个或多个参数。 4.继承(1nheritance) 继承是面向对象的方法的一个主要特征。继承是使用已有的类定义作为基础建立新类的定义技术。 已有的类可当作基类来引用,则新类相应地可当作派生类来引用。 继承是指能够直接获得已有的性质和特征,而不必重复定义它们。 一个类的上层可以有父类,下层可以有子类。这种层次结构系统的一个重要性质是继承性,一个类直接继承其父类的描述(数据和操作)或特性,子类自动地共享基类中定义的数据和方法。 继承具有传递性,如果类C继承类B,类B继承类A,则类C继承类A。因此,一个类实际上继承了它上层的全部基类的特性。 属于某类的对象除了具有该类所定义的特性外,还具有该类上层全部基类定义的特性。 继承分为单继承与多重继承。 单继承是指,一个类只允许有一个父类,即类等级为树形结构。 多重继承是指,一个类允许有多个父类。多重继承的类可以组合多个父类的性质构成所需要的性质。 继承性的优点是,相似的对象可以共享程序代码和数据结构,从而大大减少了程序中的冗余信息,提高软件的可重用性,便于软件修改维护。另外,继承性使得用户在开发新的应用系统时不必完全从零开始,可以继承原有的相似系统的功能或者从类库中选取需要的类,再派生出新的类以实现所需要的功能。 5.多态性 同样的消息被不同的对象接受时可导致完全不同的行动,该现象称为多态性。 在面向对象的软件技术中,多态性是指子类对象可以像父类对象那样使用,同样的消息既可以发送给父类对象也可以发送给子类对象。 当扩充系统功能增加新的实体类型时,只需派生出与新实体类相应的新的子类,完全无需修改原有的程序代码,甚至不需要重新编译原有的程序。
/
本文档为【第2章 程序设计基础】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索