结构化编程

面向对象不仅能够让程序的组织结构更清晰,对于程序员而言,面向对象也有助于编程任务的结构化。

随着软件所具有的功能越来越强大,程序也随之变得越来越复杂,整个编程过程的管理也越来越困难。越来越多的组件需要协调,越来越多的程序员需要协同工作。面向对象编程具有处理这种复杂关系的优势,这不仅表现在代码的设计上也表现在对整个工作的组织方面。
本部分包含如下内容:

协作

面向对象的项目的组织结构


协作

一个复杂的软件需要一个出色的合作团队,每个成员不仅必须要具有个人创造力,而且能够与其它团队成员完美配合。

同一项目同一时间同一地点,努力的程度,人员的多寡,都会影响团队能否达到预期的目标。此外,团队的协作能力还受到时间,空间以及组织结构等方面的约束。
代码完成后,很长时间内都会被使用,维护以及改进。程序员在项目上工作的时间可能有先后,不一定都是同一时间工作的,所以他们很难互相讨论或者知道所有的实现细节。
即使在该项目中所有的程序员都是同时工作的,他们也可能分处不同的地点,这也限制了他们合作的密切程度。
不同团队的程序员各有各的工作侧重点,时间上有各自的安排,却经常要在项目上彼此合作。类似这种跨团队的交流不是一件很容易的事情。

解决问题的办法就是改进设计和编写程序的方式。这种改进不是以层次化的管理,严格的授权为基础,这只会阻碍人们的创造力,而是将协作融入编程本身。

这就是面向对象编程的优势所在。例如,面向对象的代码的良好的复用性,使得即使程序员身处不同的项目,不同的时间,甚至不同的团队都可以高效的合作,他们所需要做的只是在类库种共享他们的代码。这种合作具有广阔的应用前景,因为它不仅能够减轻任务的困难程度,同时也能使那些看上去不可能完成的项目得以完成。


面向对象的工程的组织结构

面向对象降低了在底层的实现细节上协作的需要,并从结构上提高了上层的协作能力,从而使得编程任务可以按照有利于协作的方式重新组织。面向对象的每个特性,从大规模设计的能力到更好的代码复用性,都有助于协作的进行。
本节包含如下内容:

高抽象层级的设计
接口和实现分离
任务模块化
接口简单化
运行时决定
继承通用的代码
重用已经测试过的代码

高抽象层级的设计

当对问题的抽象层次比较高的时候,分工也变得比较容易。项目可以直接按照程序的设计逻辑来组织和管理。

面向对象可以保证实现不会偏离设计目标,团队的成员也对自己工作的部分在整个项目的位置有一个比较清晰的认识,从而有助于目标的实现。
接口和实现分离

在面向对象的程序中,各组件之间的联系细节在设计过程的早期,开始实现之前,就已经得到了很好的定义。

在开发过程中,只有这些组件间的接口而不是实现细节需要考虑协作的问题,因为每个类都封装了类的实现并且处于独立的名字空间。需要协作的部分越少,事情就会越简单。
工作模块化

面向对象编程中的模块化意味着一个大型程序的各个逻辑组件可以被单独地实现,不同的人完成不同的类。各自的编程任务都是独立的。

这样做不仅是为了组织和管理开发工作,也是为了更好的修正代码中错误。因为实现都是被封装在类中,所以代码出了问题可以很容易的定位。

这种按类来划分责任范围意味着类的实现可以独立的更新,例如性能的优化,采用新的技术等。只要类的接口没有变化,程序员可以随时改进类的实现。
接口简单化

类的多态性使得程序的接口更加简单,因为类之间可以重用同样的方法名字。这样导致的结果是整个程序的工作机制更易于被学习,被理解,并且更容易在开发过程中分工协作。
运行时决定

面向对象的程序更多的是在运行时做出决定,因此在编译期(源代码中)只需要做很少的工作就可以让两部分的代码很好的一块工作。相应地,分工合作变得更加容易,出错的可能性也更小。
代码继承

继承是代码复用的一种方式。如果您仅需要继承并特化一些公有类,您的设计和编程过程无疑变得非常简单,因为不同层次的实现之间的关系可以由类的继承体系确定,并且非常容易理解。

继承同样增加了代码的可复用性和可靠性。父类中的代码在子类中也会被测试到,所以类库中那些通用类将会在它们的子类中经过多次测试,这些子类可能是由不同的程序员所写,甚至是在不同的应用程序中。
重用测试过代码

如果您重用别的程序中的部分越多,您自身的工作也越简单。在面向对象中,重用的过程更为容易一些,因为代码本身的可复用性更高。如果项目的任务不重,程序员之间的协作也更容易。

面向对象的类库中的类和框架能够帮助减轻您的编程任务。例如,如果您使用了苹果公司提供的软件框架,您就可以和苹果公司的程序员合作。这些框架通常构成了您的程序中比较基础的部分,而您可以把精力放在您最擅长的方面,其它的事情让类库的开发人员去做。因此,您的项目可以更快的做出原型系统,更快的完成,协作方面的问题也更少。

面向对象中代码良好的可复用性也提高了其自身的可靠性。类库中的类可能被广泛的用于各种应用程序和应用情景。类被使用得越多,潜在的问题就越可能被发现和修正。在您的程序中看起来很奇怪或者很难发现的问题很可能已经被别的程序员发现并排除了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
结构化程序设计简介   •结构化程序设计方法主张按功能来分析系统需求,其主要原则可概括为自顶向下,逐步求精,模块化等。结构化 程序设计首先采用结构化分析(Structrued Analysis,即SA)方法对系统进行需求分析,然后使用结构化设计 (Structrued Design,即SD)方法对系统进行概要设计、详细设计,最后采用结构化编程(Structrued Program,即SP)方式来实现系统。使用这种SA、SD和SP的方式可以较好的保证软件系统的开发进度和质量。   •因为结构化程序设计方法主张按功能把软件系统逐步细分,因此这种方法也被成为面向功能的程序设计方法;结 构化程序设计的每个功能都负责对数据进行一次处理,每个功能都接受一些数据,处理完后输出一些数据,这种处理方 式也被称为面向数据流的处理方式。 结构化程序设计的局限性    •设计不够直观,与人类习惯思维不一致。采用结构化程序分析、设计时,开发者需要将客观世界模型分解成一个 一个功能,每个功能用以完成一定的数据处理。   •适应性差,可扩展性不强。由于结构化设计采用自顶而下的设计方式,所以当用户的需求发生改变,或需要修改 现有的实现方式时都需要自顶而下地修改模块结构,这种方式的维护成本相当大。 程序的三种结构      •结构化程序设计非常强调实现某个功能的算法,而算法的实现过程是由一系列操作组成的,这些操作之间的执行 次序就是程序的控制结构。1996年,计算机科学家Bohm和Jacopini证明了这样的事实:任何简单或复杂的算法都可 以由三种结构组成     –顺序结构     –选择结构     –循环结构这   •这三种结构就被称为程序设计的三种基本结构,也是结构化程序设计必须采用的结构 顺序结构 。。。。。。。。。。。。。。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值