首页 > 代码库 > 结构化方法与面向对象
结构化方法与面向对象
结构化方法与面向对象
结构化方法:
结构化方法是一种常用的软件开发方法。它的要点是是把一个复杂问题的求解过程分阶段进行,这种分解是自顶向下的,将一个复杂的大问题分成许多不那么复杂的小问题,然后再逐个解决。使用三种基本控制结构构造程序,任何程序都可由顺序、选择、循环三种基本控制结构构造。
结构化方法的基本思想主要体现在三个方面。
一、自顶向下:
把一个系统与程序划分为不同的层次。从问题的总体开始,抽象底层的细节,先构建高层的结构,再一层一层分解细化。从而使复杂的设计变得简单,避免一开始就陷入复杂的细节中,过程的结果也容易做到简单可靠。
二、模块化:
将系统的功能划分为不同的独立模块,模块跟模块之间通过接口传递信息,模块之间只有很少的相互联系,模块可以当做程序中的插件,所有模块的功能通过相应的子程序(函数或过程)的代码来实现。程序的主体是子程序层次库,它与功能模块的抽象层次相对应,编码原则使得程序流程简洁、清晰,增强可读性。
三、语句结构化:
程序流程遵循简单的层次化模型,由顺序结构、分支结构、循环结构组成。
面向对象方法(Object-Oriented Method)
面向对象方法是一种把面向对象的思想应用于软件开发过程中,指导开发活动的系统方法,简称OO (Object-Oriented)方法,是建立在“对象”概念基础上的方法学。对象是由数据和容许的操作组成的封装体,与客观实体有直接对应关系,一个对象类定义了具有相似性质的一组对象。而每继承性是对具有层次关系的类的属性和操作进行共享的一种方式。所谓面向对象就是基于对象概念,以对象为中心,以类和继承为构造机制,来认识、理解、刻画客观世界和设计、构建相应的软件系统。
面向对象方法的基本思想体现在以下方面:
一、客观世界中的事物都是对象,对象之间存在一定的关系,并且复杂对象由简单对象构成。
二、具有相同属性和操作的对象属于一个类,对象是类的一个实例。
三、继承性,一个类直接继职其它类的全部描述,同时可修改和扩充。
四、封装性,用户只能见到对象的对外特征,能够接受那些信息,有何种处理能力,而对象的内部特征是隐藏的。使用者不必知晓行为实现的细节,只须用设计者提供的消息来访问该对象。
五、多态性,同一消息为不同的对象接受时可产生完全不同的行动。用户可发送一个通用的信息,而将所有的实现细节都留给接受消息的对象自行决定。
六、强调充分运用人在日常逻辑思维中经常采用的思想方法与原则。例如:抽象,分类,继承,聚合,封装,关联等。
主要特点的比较
结构化方法的特点:
(1)逻辑设计与物理设计分开;
(2)强调开发工作中的阶段性评估;
(3)开发过程中形成一套规范化的文档,便于后期的修改和维护;
(4)采用了层次分解的系统思想;
(5)用系统开发每个阶段的成果来进行控制,不能适应事物变化的要求;
(6)系统的开发周期长;
面向对象方法的特点:
(1)对象和传递消息分别表现事物及事物间相互联系的概念
(2)方法是允许作用于该类对象上的各种操作
(3)通过封装将对象的定义和对象的实现分开
(4)通过继承体现类与类之间的关系
优缺点的比较
结构化方法的优点和缺点
结构化方法的优点:
1) 从系统整体出发,强调在整体优化的条件下“自上而下”地分析和设计,保证了系统的整体性和目标的一致性;
2) 结构化方法强调功能抽象和模块化。由于它采取了分块处理问题的方法,可以把一个比较复杂的问题分解为若干个容易处理解决的部分,从而降低了问题处理的难度。
3) 强调开发过程各阶段的完整性和顺序性,强调严格地区分开发阶段,严格地进行系统分析和设计,及时总结,及时问题反馈和纠正,从而避免了开发过程的混乱状态。
4) 文档规范化,按工程标准建立标准化的文档资料,便于软件在以后的维护。而且由于结构化方法思路清晰,条理清楚,又有效地分解了繁复的问题,使得编写程序时清晰明了,也大大简化了编程人员繁杂的工作。
结构化方法的不足:
1) 重用性差:结构化分析与设计清楚的定义了系统的接口, 当系统对外界接口发生变动时,可能会造成系统结构产生较大变动, 难以扩充新的功能接口;
2) 软件可维护性差:由于软件的可修改性差,导致维护困难,造成维护时费用和成本高,可维护性变差;
3) 它要求系统开发者在早期调查中就要充分的掌握用户需求、管理状况以及预见能发生的变化,这是不太符合人们循序渐进地认识事务的客观规律性。
面向对象方法的优缺点
面向对象方法的优点:
1) 面向对象更接近于现实,可以从现实的东西出发,进行适当的抽象。,所有的对象被赋予属性和方法,结果编程就更加富有人性化。
2) 面向对象方法的可重用好,减小外部对内部的影响。封装将对象有关的数据和行为封装成整体来处理,使得对象以外的部分不能随意存取对象的内部属性,从而有效地避免了外部错误对它的影响,大大减小了查错和排错的难度。
3) 容易扩展,代码重用率高。容易扩展,在大框架不变的情况下很容易就开发出适合自己的功能,实现简单,可有效地减少程序的维护工作量,软件开发效率高。
面向对象方法的缺点。
1) 性能低。由于面向更高的逻辑抽象层,使得面向对象在实现的时候,不得不做出性能上面的牺牲,计算时间和空间存储大小的都开销很大。
2) 如果一味地强调封装,当进行修改对象内部时,对象的任何属性都不允许外部直接存取,则要增加许多没有其他意义、只负责读或写的行为。这会为编程工作增加负担,增加运行开销,并且使程序显得臃肿。
总结
结构化方法与面向对象方法各有长处与缺点。
结构化方法条理清晰,目标明确,适合于需求明确的软件开发,比如编译器,操作系统,可以在明确的开发过程中得到所需的程序,并有不错的运行性能,但修改时容易牵一发而动全身,不利于维护及修改。
面向对象方法相对结构化方法更加灵活,开发周期更短,使用者与维护者都更容易理解程序,软件的可维护性与可重用性较好,有利于不同团队的合作,以及根据变化快速对软件进行修改。
在具体的应用中,应该根据项目的特点选择合适的方法。
结构化方法与面向对象