发布网友
共9个回答
懂视网
结构化程序设计缺点有:
1、难以适应大型软件的设计:在大型多文件软件系统中,随着数据量的增大,由于数据与数据处理相对,程序变得越来越难以理解,文件之间的数据沟通也变得困难,还容易产生意想不到“副作用”。
2、程序可重用性差:结构化程序设计方法不具备建立“软件部件”的工具,即使是面对老问题,数据类型的变化或处理方法的改变都必将导致重新设计。这种额外开销与可重用性相左,称为“重复投入”。
这些由结构化程序设计的特点所导致的缺陷,其本身无法克服!而越来越多的大型程序设计又要求必须克服它们,这最终导致了“面向对象”设计方法的产生。
结构化程序设计由迪克斯特拉(E.W.dijkstra)在1969年提出,是以模块化设计为中心,将待开发的软件系统划分为若干个相互的模块,这样使完成每一个模块的工作变单纯而明确,为设计一些较大的软件打下了良好的基础。由于模块相互,因此在设计其中一个模块时,不会受到其它模块的牵连,因而可将原来较为复杂的问题化简为一系列简单模块的设计。模块的性还为扩充已有的系统、建立新系统带来了不少的方便,因为我们可以充分利用现有的模块作积木式的扩展。
热心网友
弊端是,没有人还记得面向对象原本要解决的问题是什么。
1、面向对象原本要解决什么(或者说有什么优良特性)
似乎很简单,但实际又很不简单:面向对象三要素封装、继承、多态
(警告:事实上,从业界如此总结出这面向对象三要素的一刹那开始,就已经开始犯错了!)。
封装:封装的意义,在于明确标识出允许外部使用的所有成员函数和数据项,或者叫接口。
有了封装,就可以明确区分内外,使得类实现者可以修改封装内的东西而不影响外部调用者;而外部调用者也可以知道自己不可以碰哪里。这就提供一个良好的合作基础——或者说,只要接口这个基础约定不变,则代码改变不足为虑。
继承+多态:继承和多态必须一起说。一旦割裂,就说明理解上已经误入歧途了。
先说继承:继承同时具有两种含义:其一是继承基类的方法,并做出自己的改变和/或扩展——号称解决了代码重用问题;其二是声明某个子类兼容于某基类(或者说,接口上完全兼容于基类),外部调用者可无需关注其差别(内部机制会自动把请求派发[dispatch]到合适的逻辑)。
再说多态:基于对象所属类的不同,外部对同一个方法的调用,实际执行的逻辑不同。
很显然,多态实际上是依附于继承的两种含义的:“改变”和“扩展”本身就意味着必须有机制去自动选用你改变/扩展过的版本,故无多态,则两种含义就不可能实现。
所以,多态实质上是继承的实现细节;那么让多态与封装、继承这两个概念并列,显然是不符合逻辑的。不假思索的就把它们当作可并列概念使用的人,显然是从一开始就被误导了——正是这种误导,使得大多数人把注意力过多集中在多态这个战术层面的问题上,甚至达到近乎恶意利用的程度;同时却忽略了战略层面的问题,这就致使软件很容易被他们设计成一滩稀屎(后面会详细谈论这个)。
实践中,继承的第一种含义(实现继承)意义并不很大,甚至常常是有害的。因为它使得子类与基类出现强耦合。
继承的第二种含义非常重要。它又叫“接口继承”。
接口继承实质上是要求“做出一个良好的抽象,这个抽象规定了一个兼容接口,使得外部调用者无需关心具体细节,可一视同仁的处理实现了特定接口的所有对象”——这在程序设计上,叫做归一化。
归一化使得高层的外部使用者可以不加区分的处理所有接口兼容的对象集合——就好象linux的泛文件概念一样
热心网友
(1) 以过程为中心和对象为中心的比较 结构化编程方法是以过程为中心的,当面对一个问题时,该方法侧重于问题解决过程的层 次结构。面向对象的分析和设计方法侧重于对象。对象具有特定的行为和属性,行为和属性决 定了对象与其他对象的交互作用方式,以及对象本身的行为方式。2/ 一次性使用和可重用的比较 根据不同的实现,结构化过程可能无法重用。而面向对象的方法,对象是一个模块单元。 具有完备的实体,因此可以具有高度的可重用性。(3有序算法和无序算法的比较 结构化编程方法所开发的程序,其结构往往是线性的(或者说是自顶向下的)。而面向对 象的应用程序是一种基于消息或者事件驱动的程序类型。每个对象都可以向其他对象发送消 息。Windows 操作系统就是这样的程序。
热心网友
1960年结构化程序设计思想诞生。C和Pascal等语言都大力提倡这种程序设计的方法发明面向对象程序设计方法的主要出发点是弥补面向过程程序设计方法中的一些缺点
1960年结构化程序设计思想诞生。C和Pascal等语言都大力提倡这种程序设计的方法发明面向对象程序设计方法的主要出发点是弥补面向过程程序设计方法中的一些缺点
1960年结构化程序设计思想诞生。C和Pascal等语言都大力提倡这种程序设计的方法发明面向对象程序设计方法的主要出发点是弥补面向过程程序设计方法中的一些缺点
热心网友
1960年结构化程序设计思想诞生。C和Pascal等语言都大力提倡这种程序设计的方法发明面向对象程序设计方法的主要出发点是弥补面向过程程序设计方法中的一些缺点
热心网友
公开数据和隐藏数据的比较 结构化编程方法对数据和过程仅仅进行简单的包装,这些数据和过程是公开的,或者说程 序中的其他代码可以访问这些数据和过程。面向对象的实现隐藏了特定的数据,并且只把对象 的特定行为公开给用户。实现这些特定行为的代码对用户来说是不可见的,用户只能访问这些 公开的行
热心网友
1. 以过程为中心和对象为中心的比较 结构化编程方法是以过程为中心的,当面对一个问题时,该方法侧重于问题解决过程的层 次结构。面向对象的分析和设计方法侧重于对象。对象具有特定的行为和属性,行为和属性决 定了对象与其他对象的交互作用方式,以及对象本身的行为方式。
2.公开数据和隐藏数据的比较 结构化编程方法对数据和过程仅仅进行简单的包装,这些数据和过程是公开的,或者说程 序中的其他代码可以访问这些数据和过程。面向对象的实现隐藏了特定的数据,并且只把对象 的特定行为公开给用户。实现这些特定行为的代码对用户来说是不可见的,用户只能访问这些 公开的行为。
3 .一次性使用和可重用的比较 根据不同的实现,结构化过程可能无法重用。而面向对象的方法,对象是一个模块单元。 具有完备的实体,因此可以具有高度的可重用性。
热心网友
(1) 以过程为中心和对象为中心的比较 结构化编程方法是以过程为中心的,当面对一个问题时,该方法侧重于问题解决过程的层 次结构。面向对象的分析和设计方法侧重于对象。对象具有特定的行为和属性,行为和属性决 定了对象与其他对象的交互作用方式,以及对象本身的行为方式。
(2) 公开数据和隐藏数据的比较 结构化编程方法对数据和过程仅仅进行简单的包装,这些数据和过程是公开的,或者说程 序中的其他代码可以访问这些数据和过程。面向对象的实现隐藏了特定的数据,并且只把对象 的特定行为公开给用户。实现这些特定行为的代码对用户来说是不可见的,用户只能访问这些 公开的行为。
(3) 单一单元和标准单元的比较 结构化编程方法是基于单一代码单元的。面向对象的编程方法允许对象是的。
(4) 一次性使用和可重用的比较 根据不同的实现,结构化过程可能无法重用。而面向对象的方法,对象是一个模块单元。 具有完备的实体,因此可以具有高度的可重用性。
(5) 有序算法和无序算法的比较 结构化编程方法所开发的程序,其结构往往是线性的(或者说是自顶向下的)。而面向对 象的应用程序是一种基于消息或者事件驱动的程序类型。每个对象都可以向其他对象发送消 息。Windows 操作系统就是这样的程序。
热心网友
Recycling old textbooks