结构化方法与面向对象方法
一、 结构化方法
(1) 结构化方法的提出
在结构化编程提出之前,编程语言大多杂乱无章法,程序员写出的程序为了实现功能在编程中大量的采用goto语句,导致程序的可读性极其差。科拉多·伯姆及朱塞佩·贾可皮尼伯姆于1966年5月在《Communications of the ACM》期刊发表论文,说明任何一个有goto指令的程式,可以改为完全不使用goto指令的程式,后来艾兹赫尔·戴克斯特拉在1968年也提出著名的论文《GOTO陈述有害论》,从此编程开始走向了结构化的道路。
(2) 结构化方法的特点
结构化方法的特点可以总结为以下几个字:
自顶向下,逐步细化;清晰第一,效率第二;书写规范,缩进格式;基本结构,组合而成。
结构化的方法大多是从最终的实现着手,按照先后顺序将最终的需求分解为一个个小的问题,分解解决;结构化方法对比其以前的编程方法,最大的特点就是追求一种整洁性,有规定的缩进格式,使得代码整洁有度,追求可读性,结构化的程序相较于其之前的程序明显易读,易维护;结构化的方法拥有固定的基本结构,每一个程序都能够使用其基本的结构组合出来。
(3) 结构化方法的基本结构。
结构化方法的基本结构包括:顺序结构,选择结构以及循环结构。
顺序结构就是程序的正常执行方式,执行完一条语句之后才会执行后面的语句。
图一 顺序结构示意图
选择结构就是当出现分支无法顺序执行时,按照判断进行选择程序继续执行的方向。
图二 选择结构示意图
选择结构分为单选择,双选择,多选择等几种不同的亚种,上图展示的是双选择。
循环结构故名思意就是一直循环某一段程序直到某个条件为真,循环结构分为当循环和直到循环,二者的区别基本就是在于判断语句在前或是在后。
图三 当循环示意图
(4) 结构化的优点
结构化编程的代表语言就是C语言。
结构化的优点主要包括以下几点:
- 由于是自顶向下的设计,所以思路比较清楚,目标明确。
- 有利于系统整体的开发,管理和控制。
- 程序易读,易理解。
- 方便纠错。
(5) 结构化的缺点
尽管存在的诸多的优点,但是结构化方法也存在不少的缺点。
- 结构化由于是先设计再实现,需求的变化会导致系统整体的重构。
- 是面向过程的设计,所以不能适应需求的变化。
二、 面向对象方法
(1) 面向对象方法产生的契机
面向对象程序设计方法起源于六十年代末期的simnia语言.Smalltalk语言的出现,进一步发展和完善了面向对象的程序设计语言,从此面向对象与开发方法开始结合,出现 了面向对象的开发方法.
(2) 面向对象方法的特点
面向对象的方法主要特点总结起来为三大基本特性,五大基本原则。
三大特性是:封装,继承,多态。
封装就是将客观事物封装成抽象的类。类通过自己的数据以及方法将自己抽象的客观事物表述出来。每一个类就是一个封装了数据以及操作这些数据的方法的逻辑实体。类中还可以通过设置属性将类私有部分在其他类面前隐藏。
继承就是让一个对象获得领一个对象属性的方法。继承的过程,就是从一般到特殊的过程。继承概念的实现方式有二类:实现继承与接口继承。实现继承是指直接使用基类的属性和方法而无需额外编码的能力;接口继承是指仅使用属性和方法的名称、但是子类必须提供实现的能力。
多态就是一个类的方法在不同的情况下有不同形式。
五大基本原则 如下:
单一职责原则SRP(Single Responsibility Principle)是指一个类的功能要单一,不能包罗万象。
开放封闭原则OCP(Open-Close Principle) 一个模块在扩展性方面应该是开放的而在更改性方面应该是封闭的。也就是说新增的拓展功能不会影响已有的功能。
替换原则(the Liskov Substitution Principle LSP) 子类应当可以替换父类并出现在父类能够出现的任何地方。
依赖原则(the Dependency Inversion Principle DIP) 具体依赖抽象,下层依赖上层。
接口分离原则(the Interface Segregation Principle ISP) 模块间要通过抽象接口隔离开,而不是通过具体的类强耦合起来。
(3) 面向对象方法的优点
- 由于面向对象方法具有OCP原则,所以面向对象方法具有易维护性。
- 代码的重用率高,对于新的需求只需在原本程序上进行部分的修改,就能将新的功能实现。
- 开发周期短,能够快速的开发出产品。
- 结构易于理解,可读性好。
(4) 面向对象方法的缺点
- 面向对象方法不易于纠正错误。
- 面向对象的方法类之间信息交流频繁,因此实现的程序运行效率较低。
三、 总结
结构化方法与面向对象方法在现在的程序设计中各占有不可替代的一席之地。我们无法简单的去断言是面向对象方法较优,还是结构化方法较优。无论是结构化的方法还是面向对象的方法,都有其优点与缺点,都有其适用的环境。作为程序设计者,我们要做的是根据客户的需求设计出最适合用户的程序,无论是结构化的方法还是面向对象的方法,我们都应该熟练掌握。写出准确高效的程序需要二者的配合。
四、 引用文档
1.“结构化方法”、“面向对象方法” *
2. 《面向对象三大基本特性,五大基本原则》 Leo Chin
3. 《软件工程中结构化方法与面向对象方法之比较》 霍迎旦