一、程序设计方法与风格.doc_第1页
一、程序设计方法与风格.doc_第2页
一、程序设计方法与风格.doc_第3页
一、程序设计方法与风格.doc_第4页
一、程序设计方法与风格.doc_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

一、程序设计方法与风格一、程序设计方法与风格(1)程序设计与编码风格1、计算机程序设计语言计算机程序设计语言通常分为低级语言和高级语言。低级语言包括机器语言和汇编语言;高级语言则是一种更接近人类自然的用来编写处理问题的程序的代码语言。如C、C+、BASIC、Fortran等语言都是高级语言。机器语言是计算机能够直接识别和执行的二进制代码指令集。它具有灵活性高、执行速度快等特点。但使用机器语言很麻烦,它既难写有难读,因此,除了计算机生产厂家的专业人员,绝大多数程序员都不用机器语言编写程序。为了便于人们使用而采用汇编语言来编写程序。汇编语言是一种符号语言,它是用助记符来表示操作码的也是面向机器的计算机语言。汇编语言由于采用了助记符号来编写程序,因此比用机器语言的二进制代码编程序要方便得多,在一定程度上简化了编写程序的过程。汇编语言的特点是用助记符代替了机器的指令代码,而且助记符与机器指令是一一对应的。由于机器语言和汇编语言都是面向硬件的,语言过分依赖机器,不便于计算机专业人员以外的人使用。为此,人们就设计出一种接近人类自然语言用来编写处理问题的程序的代码语言,这种代码语言就称为高级程序设计语言,简称高级语言。但计算机不能直接理解高级语言,用高级语言编写的程序需要经过编译或解释程序,才能在计算机上运行。2、程序与程序设计程序是把计算机语言代码按一定的语法规则,对所要处理的数据以及处理的方法和步骤所作的完整而准确的描述;而程序设计则是完成一项程序设计的过程。著名的计算机科学家Niklaus Wirth对程序的定义:程序=算法+数据结构要编写一个程序,首先要掌握一种程序设计语言和它的开发环境,同时也要熟悉问题世界的知识和掌握把问题世界转化为程序世界的方法(即程序设计方法)。程序设计方法是指用什么观点来研究问题并对问题进行求解,以及怎样进行系统构造的软件方法学。常用的程序设计方法包括结构化程序设计方法、软件工程方法和面向对象方法等。3、编码风格编码风格是指在不影响程序正确性和效率的前提下,有效编排和组织程序的基本原则。一个具有良好编码风格的程序主要表现为可读性好,易测试、易维护。良好的编码风格可以减少编码的错误,减少读程序的时间,从而提高软件的开发效率。编码风格主要体现在以下几个方面。源程序文档化a.符号名的命名(如模块名、变量名、常量名等)能够反应它所代表的实际东西,应具一定的实际含义,以便理解程序功能。b程序注释通常使用自然语言书写,给程序的整体说明以及相关语句或程序段的功能说明,增加程序的可读性。注释一般为序言性注释和功能性注释。序言性注释常为于程序的开头部分,它包括程序标题、程序功能说明、主要算法、接口说明、程序位置、开发简历、程序设计者、副审者、复审日期及修改日期等。功能性注释一般嵌在源程序体之中,用于描述其后的语句或程序的主要功能。c程序的视觉组织:在程序中利用空格、空行和缩进等技巧,是程序的逻辑结构更加清晰,层次更加分明。数据说明的方法数据说明是对程序中数据结构的组织和描述。数据说明应注意以下几点:a数据说明的次序规范化b说明语句中变量安排有序化c使用注释来说明复杂数据的结构语句结构语句是构成程序的基本单位,语句的构造方式和书写格式对程序的可读性具有非常重要的决定作用。语句结构不能为了片面追求效率而使语句复杂化,而应力求简单、直接,以便程序更易于阅读和理解,构造语句时应注意以下几个问题:a语句应简单直接b对复杂的表达式应加上必要地括号是表达式清晰c不要书写太复杂的条件,嵌套的重数不宜过多d为了不破坏结构化程序设计中结构的清晰性,在程序中应尽量使用强制类型转移语句goto e对于程序中需要重复出现的代码段,应将其用独立模块(函数或过程)实现为了便于对程序的阅读,书写格式的规范是不不可少的。书写程序时应注意以下几个主要问题:a虽然很多语言都允许在一行内书写多条语句,但最好在一行内只写一条语句,使程序看起来更清晰b书写语句时,应当使用递缩格式来使程序的层次更加清晰c在模块之间通过加入空行进行分隔输入、输出对用户来说,输入、输出(操作界面)就是应用系统本身,直接与用户使用相关。因此,输入输出方式和风格应当尽可能地方便用户的操作和使用。输入、输出方式和风格需考虑以下几点:a输入方式应力求简单、尽量避免给用户带来不必要的麻烦b在以交互式输入/输出方式进行输入时,应有必要的提示信息,同时在数据输入过程中和输入结束时,应在屏幕上给出状态信息。c程序应对输入数据的合法性进行检查d如用户输入某些数据后可能产生严重后果,应给用户输出必要的提示并要求用户确认。e应根据系统的特点和用户的习惯设计出令用户满意的输出方式f输出数据的格式应清晰简洁g输出数据时要加上必要的提示信息二、结构化程序设计1、结构化程序设计的基本结构和特点;结构化程序的基本结构程序设计语言仅通过顺序、选择和循环3种基本控制结构就能够表示出其他各种形式结构的程序设计方法。a顺序结构:是一种简单的程序设计结构,顺序结构自始至终严格按照程序中语句的先后顺序逐条执行,是最基本、最普遍的结构形式b选择结构:又称选取结构,分支结构,包括简单选择和多分枝选择结构。选择结构中,根据给定的条件P是否成立而选择执行A或执行B。c循环结构:又称重复结构,即反复执行某一部分的操作。在程序设计语言中循环结构有两类循环语句:当型(While)循环结构:对循环体先判断再执行直到型(Until)循环结构:先执行循环体后判断结构化程序的特点顺序、选择和循环这3种基本结构,有以下共同特点:a只有一个入口b只有一个出口c结构内的每一部分都有机会被执行到d结构内不存在死循环程序结构仅由顺序、选择和循环3种基本结构复合而成。可以自底而上逐步抽象,最终抽象成一个函数型节点。由顺序、选择和循环3种基本结构顺序组成的算法结构,可解决任何复杂的问题。由基本结构所构成的算法属于结构化的算法,它不存在无规律的转向,只在该基本结构内才允许存在分支和向前或向后的跳转2、结构化程序设计原则和方法过去,程序被看成是处理数据的一系列过程,过程或函数则被定义为一个接一个顺序执行的一组指令,而且数据与程序被分开存储。由于软件危机的出现,人们便开始研究程序设计方法、结构化程序设计方法也应运而生。一个结构化程序就是用高级语言表示的结构化算法,这种程序便于编写、阅读、修改和维护。这就减少了程序出错的机会,提高了程序的可靠性,保证了程序的质量。结构化程序设计强调程序设计风格和程序结构的规范化,提高清晰的结构。结构化程序设计方法的主要思想是把复杂的问题分解成若干简单的子问题并逐步求精。具体的说,结构化程序设计就是采取以下方法:自顶而下:就是先考虑总体,再考虑细节;先考虑全局目标,后考虑局部目标。这种程序结构按功能划分为若干个基本模块,这些模块形成一个树状结构。逐步求精:对复杂问题,设计一些子目标做过渡,逐步细化。也就是把复杂问题分解成一系列简单的子问题,直到这些小问题小到易于理解和实现的程度。模块化设计:就是把程序要解决的总目标分解为目标,再进一步分解为具体的小目标,把每一个目标成为一个模块。结构化编码:即用高级语言语句正确实现3种基本结构。结构化程序设计是面向过程的程序设计方法,它具有很多优点,其核心是结构化算法。它把数据和处理数据的过程分离为相互独立的实体,当数据结构改变时,所用相关的处理过程都要进行相应的修改,每一种相对于老问题的新方法都要带来额外的开销,程序的可用性差。而且当数据增大时,数据与处理这些数据的方法之间的分离会使程序越来越难以理解。三、面向对象的程序设计方法1、面向对象的方法面向对象方法的基本思想面向对象的程序设计(Object-Oriented Programming,OOP)是一种把面向对象的思想应用于软件开发过程中,指导开发活动的系统方法,简称OOP方法。面向对象方法的本质就是主张从客观世界固有的事务出发来构造系统,提倡用人类在现实生活中常用的思维方法来认识、理解和描述客观事物,强调最终建立的系统能够映射问题域,即系统中的对象以及对象之间的关系能够如实地反映问题域中的固有事务及其关系。面向对象方法的基本思想描述如下:a客观世界的任何事物都是对象,它们都有一些与数据结构相应的静态属性和与程序模块相应的相关操作。作为一个整体,从外面看只能看到对象的外部特征,而这些对象的属性和操作不用对外公开,并尽可能地隐藏对象内部的信息b对象之间有抽象和具体、群体和个人、整体和部分等几种关系。对象概念间的网络结构由这些关系构成。c较大的、抽象的对象所具有的性质包括静态属性和动态操作,自然地成为其子类的性质,而不是重复说明或规定。d对象之间可以相互传送信息,消息传递是对象间通信的手段。一个对象通过向另一个对象发送消息来请求服务。消息通常包括接收对象、调用的操作名以及适当的参数。面向对象程序设计的优点a面向对象的方法符合人们认识客观世界的规律面向对象方法以客观世界中系统的实体为基础,将客观实体的属性及其操作封装成对象。人们把描述事物静态属性的数据结构和表示事物的动态行为的操作放在一起构成一个整体,用来表示客观世界中的实体。而传统的程序设计方法是面向过程的,它忽略了数据与操作之间的内在联系,用该方法设计出来的软件系统的空间和问题空间不一致,会令人难以理解。面向对象的基本原理是:以现实世界的概念抽象地思考问题,从而自然地解决问题。面向对象方法的核心是对象,用面向对象方法开发的系统相对比较稳定。b稳定性好面向对象的软件系统的结构不是基于系统完成的功能的分解,而是根据问题域的模型建立起来的,因此,当系统的功能需求变化时并不会引起软件结构的整体变化,往往只需要做一些局部型修改。而传统的软件开发方法的核心是算法,其开发过程基于功能分析和功能分解。当功能需求发生变化时将会引起软件结构的整体修改。c可重用性好在同一个应用领域的不同应用系统中,往往会涉及到很多相同或相似的实体,这些实体在不同的应用系统存在很多相同的属性和操作木业存在一些不同的应用系统所特有的属性和操作。软件重用是指在不同的软件开发过程中重复使用相同或相似软件元素的过程,是提高软件生产效率的最主要方法。面向对象的软件开发技术在利用可重用的软件成分构成新的软件系统时,具有很大的灵活性。重复使用一个对象类有两种方法:一种是创建该类的实例,从而直接使用它;另一种是从它派生出一个满足当前需要的新子类。d面向对象方法开发的软件易于维护,其体型结构易于理解、扩充和修改。用面向对象开发的软件易于维护,而且易于测试和调试。面向对象开发的软件稳定性比较好,比较容易修改,易于理解,而且易于测试和调试。面向对象方法开发的软件系统由对象类构成,对象的封装很好的体现了抽象和信息隐蔽的特征。对象用属性和操作作为接口,用户只能通过接口访问对象,对象的具体实现对外是不公布的。对象的接口确定之后,实现细节的修改不会对其他对象产生影响,便于维护。2、面向对象的基本概念对象:在现实世界中,每个实体都是对象,它可以是有形的(如汽车、电视机等),也可以是无形的(如工作计划、教学计划等)。对象时指具有属性(数据)和操作(行为方式)的实体。它具有自身的静态特征和动态特征。在面向对象方法学中,对象时由描述该对象属性的数据和可以对这些数据进行的操作封装在一起的一个统一体。对象包含以下特征:a标示的唯一性:指对象时可以区分的b分类性:是指可以把具体相同属性和操作的对象抽象为类c封装性:指从外面仅能看到对象的外部特征,而不了解数据是如何实现这些操作的。d多态性:指同一个操作可以作用于不同的对象。e模块独立性好:指对象(模块)内部各元素彼此结合的很密,内聚性强。属性属性是指对象所包含的信息,它在设计对象时就确定,一般只能通过执行对象的操作来改变。属性通常是一些数据,有时也可以是另外一个对象。例如,书是一个对象,它的属性有书名、作者、出版社、出版日期、定价等属性,其中书名、出版日期、定价是数据,作者和出版社可以是对象,它们也可以有自己的属性。每个对象都有它自身的属性值,用以表示该对象的状态。方法方法也称为操作或服务,它规定了对象的行为,表示对象所能提供的服务。对象中的属性只能通过该对象所提供的操作来存取或修改,操作的过程对外是封闭的。封装作为一种隐蔽技术,用户只能看见对象封装界面上的信息,而对象内部的具体实现是隐蔽的,用户看不见。封装的目的是使对象的使用者和生产者分离,使对象的定义和实现分开。一个对象通常可以由对象名、属性和操作组成。类把属性、操作相似的对象归为类,也就是说,类是一组具有相同属性和相同操作的对象的集合,是已经定义了关于对象的特征、外观和行为的模板。一个类的对象对应于类的一个实例。例如树是一个类,树类的实例柳树、白杨树都是对象。即对象是客观世界中的实体,而类是同一类实体的抽象描述。类具有属性,属性是状态的抽象;类也具有操作,它是对象行为的抽象。构造函数和析构函数是两类特殊的成员函数。构造函数与类名完全相同,系统在创建对象时自动调用,通常在来的构造函数中进行初始化工作。析构函数是在类名之前加上字符,在对象消亡时系统自动调用,通常在析构函数中进行一些清理工作,例如释放不再需要的空间等。访问对象的一般成员用.访问,访问对象的指针成员用-访问。继承继承也称为派生,它是使用已有的类定义为建立新类的定义的基础的技术。已有的类可当做基类来实现,则新类相应地可作

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论