1.结构化方法

1.1概述

结构化方法(SD方法)是一种传统的软件开发方法,它是由结构化分析、结构化设计和结构化程序设计三部分有机组合而成的。它的基本思想:把一个复杂问题的求解过程分阶段进行,而且这种分解是自顶向下,逐层分解,使得每个阶段处理的问题都控制在人们容易理解和处理的范围内。

1.2基本要点

结构化方法的基本要点是:自顶向下、逐步求精、模块化设计、结构化编码。

结构化分析方法是以自顶向下,逐步求精为基点,以一系列经过实践的考验被认为是正确的原理和技术为支撑,以数据流图,数据字典,结构化语言,判定表,判定树等图形表达为主要手段,强调开发方法的结构合理性和系统的结构合理性的软件分析方法。

结构化设计方法是以自顶向下,逐步求精,模块化为基点,以模块化,抽象,逐层分解求精,信息隐蔽化局部化和保持模块独立为准则的设计软件的数据架构和模块架构的方法学。

结构化方法按软件生命周期划分,有结构化分析(SA),结构化设计(SD),结构化实现(SP)。 其中要强调的是,结构化方法学是一个思想准则的体系,虽然有明确的阶段和步骤,但是也集成了很多原则性的东西,所以学会结构化方法,不是能够单从理论知识上去了解就足够的,要的更多的还是实践中慢慢的理解个个准则,慢慢将其变成自己的方法学。

1.3基本原则

使每个模块尽量只执行一个功能(坚持功能性内聚);

每个模块用过程语句(或函数方式等)调用其他模块;

模块间传送的参数作数据用;

模块间共用的信息(如参数等)尽量少。

2.面向对象方法

2.1概述

面向对象(Object Oriented,OO)是软件开发方法。面向对象的概念和应用已超越了程序设计和软件开发,扩展到如数据库系统、交互式界面、应用结构、应用平台、分布式系统、网络管理结构、CAD技术、人工智能等领域。面向对象是一种对现实世界理解和抽象的方法,是计算机编程技术发展到一定阶段后的产物。

2.2要素

⑴抽象。

抽象是指强调实体的本质、内在的属性。在系统开发中,抽象指的是在决定如何实现对象之前的对象的意义和行为。使用抽象可以尽可能避免过早考虑一些细节。

类实现了对象的数据(即状态)和行为的抽象。

⑵封装性(信息隐藏)。

封装性是保证软件部件具有优良的模块性的基础。

面向对象的类是封装良好的模块,类定义将其说明(用户可见的外部接口)与实现(用户不可见的内部实现)显式地分开,其内部实现按其具体定义的作用域提供保护。

对象是封装的最基本单位。封装防止了程序相互依赖性而带来的变动影响。面向对象的封装比传统语言的封装更为清晰、更为有力。

⑶共享性

面向对象技术在不同级别上促进了共享

同一类中的共享。同一类中的对象有着相同数据结构。这些对象之间是结构、行为特征的共享关系。

在同一应用中共享。在同一应用的类层次结构中,存在继承关系的各相似子类中,存在数据结构和行为的继承,使各相似子类共享共同的结构和行为。使用继承来实现代码的共享,这也是面向对象的主要优点之一。

在不同应用中共享。面向对象不仅允许在同一应用中共享信息,而且为未来目标的可重用设计准备了条件。通过类库这种机制和结构来实现不同应用中的信息共享。

2.3特征

⑴对象唯一性。

每个对象都有自身唯一的标识,通过这种标识,可找到相应的对象。在对象的整个生命期中,它的标识都不改变,不同的对象不能有相同的标识。

⑵抽象性。

抽象性是指将具有一致的数据结构(属性)和行为(操作)的对象抽象成类。一个类就是这样一种抽象,它反映了与应用有关的重要性质,而忽略其他一些无关内容。任何类的划分都是主观的,但必须与具体的应用有关。

⑶继承性。

继承性是子类自动共享父类数据结构和方法的机制,这是类之间的一种关系。在定义和实现一个类的时候,可以在一个已经存在的类的基础之上来进行,把这个已经存在的类所定义的内容作为自己的内容,并加入若干新的内容。

继承性是面向对象程序设计语言不同于其它语言的最重要的特点,是其他语言所没有的。

在类层次中,子类只继承一个父类的数据结构和方法,则称为单重继承。

在类层次中,子类继承了多个父类的数据结构和方法,则称为多重继承。

多重继承,JAVA、VB、NET、Objective-C均仅支持单继承,注意在C++多重继承时,需小心二义性。

在软件开发中,类的继承性使所建立的软件具有开放性、可扩充性,这是信息组织与分类的行之有效的方法,它简化了对象、类的创建工作量,增加了代码的可重用性。

采用继承性,提供了类的规范的等级结构。通过类的继承关系,使公共的特性能够共享,提高了软件的重用性。

⑷多态性(多形性)

多态性是指相同的操作或函数、过程可作用于多种类型的对象上并获得不同的结果。不同的对象,收到同一消息可以产生不同的结果,这种现象称为多态性。

多态性允许每个对象以适合自身的方式去响应共同的消息。

多态性增强了软件的灵活性和重用性。

3.比较

结构化方法首先关心的是功能,强调以模块(即过程)为中心,采用模块化、自顶向下、逐步求精设计过程,系统是实现模块功能的函数和过程的集合,结构清晰、可读性好,的确是提高软件开发质量的一种有效手段。每个模块有可能保持较强的独立性,但它往往与数据库结构相独立,功能模块与数据库逻辑模式间没有映射关系,程序与数据结构很难封装在一起。如果问题世界的功能比数据更复杂或者更重要,那么结构化方法仍然应是首选的方法。如果数据结构复杂,模块独立性很难保证。

面向对象方法抽象的系统结构往往并不比结构化方法产生的系统结构简单,但它能映射到数据库结构中,很容易实现程序与数据结构的封装。

结构化方法思路清晰,条理清楚,又有效地分解了繁复的问题,使得编写程序时清晰明了,简化了编程人员繁杂的工作,而在阅读时也能够一气呵成,给人以明朗的感觉。  面向对象方法与人类习惯的思维方法一致,使得使用者和维护人员都容易理解,在用户使用时不会理解困难,在软件维护中可维护性也较高,并且易于测试和调试。它的稳定性好,对软件的局部进行修改时,不会引起整体的变化,而且对局部修改容易实现。它的可重用性好,并且由于它是把大的问题分解成相互独立的小问题处理,降低了开发的技术难度,开发工作的管理也变的容易了,开发大型软件变的容易,成本也降低了。

转载于:https://www.cnblogs.com/hardboiled/p/6216239.html

结构化方法与面向对象方法应用比较相关推荐

  1. 结构化方法与面向对象方法之比较

    结构化方法与面向对象方法之比较 随着计算机软硬件各方面的飞速发展,计算机领域的观念和方法日新月异.面向对象方法始于20世纪60年代挪威奥斯陆大学和挪威计算机中心共同研究的SMULA语言.70 年代,人 ...

  2. 结构化方法与面向对象方法的比较

    本博客旨在通过基本概念.主要特征以及针对需求变更的项目所选用的开发模型等方面进行结构化方法与面向对象方法的比较. 软件开发方法指在项目投资规模和时间限制内,设计.实现符合用户需求的高质量软件,根据软件 ...

  3. 结构化方法和面向对象方法详解

    一.结构化方法和面向对象方法的地位 在系统建模中占主导地位. 二.结构化方法(Structure Analysis,SA) 软件工程中, 结构化方法是较为经典的设计与开发方式之一, 侧重于对系统进行功 ...

  4. 软件工程:结构化方法 VS 面向对象方法

    一.基本概念 1.结构化方法 结构化方法是一种传统的软件开发方法,它是由结构化分析.结构化设计和结构化程序设计三部分有机组合而成的. 基本思想:把一个复杂问题的求解过程分阶段进行,而且这种分解是自顶向 ...

  5. 结构化方法与面向对象方法

    结构化方法与面向对象方法 一.结构化方法 1.1结构化方法概述 结构化方法起源于结构化程序设计,具有面向功能.结构清晰.支持逐步求精等特点,使软件易于维护.在运用结构化开发方法时,设计人员首先需要运用 ...

  6. 结构化方法和面向对象方法的比较

    结构化方法和面向对象方法的比较 翁松秀 北京航空航天大学 摘要:编程之精髓在于编程思想,而不同的编程方法有不同的编程思想.结构化程序设计方法一直以来都是编程人员基本的编程方法,而近年来流行的面向对象方 ...

  7. 结构化方法、面向对象方法的区别

    结构化方法.面向对象方法的区别 1.结构化方法遵循的基本原则 结构化方法的基本思想就是将待解决的问题看作一个系统从而用系统科学的思想方法来分析和解决问题结构化方法遵循以下基本原则 (1)抽象原则 抽象 ...

  8. 结构化方法和面向对象方法

    结构化方法 1.结构化方法:面向过程的方法 结构化分析(SA,  Structured Analysis) 结构化设计(SD,  Structured Design) 结构化编程(SP,  Struc ...

  9. 简述以上结构化方法和面向对象方法的特点和优缺点

    特点: (1)结构化方法的思想是一种分层的思想,模块化思想,它语句结构化,不再使用GOTO语句. 结构化方法还遵循分解原则,自顶向下进行分层解决. (2)面向对象方法显然是面向对象思想,将系统中要处理 ...

最新文章

  1. python自学教材-python零基础自学教材
  2. android 双向滑动 seekbar
  3. 解析ajax数据显示到from表单中,jQuery Ajax从另一页上的Form请求中提取数据?
  4. 一段可自动点击运行代码(只偷偷的点一次)
  5. infor wms 中英文对照_为什么要wms?_wms吧
  6. java.servlet js,调用servlet方法
  7. unity 获得当前物体_unity 获取物体尺寸
  8. C语言 第六章 多重循环练习
  9. 基于微信小程序校内论坛系统设计与实现(毕业设计论文+数据库脚本+源码+答辩ppt)
  10. ubuntu Empathy msn验证出错
  11. 如何免费制作微信小程序?详细步骤
  12. 如何去掉图片上的文字?
  13. 树莓派+USB免驱摄像头远程监控
  14. 使用Ruby搭建Redis 集群
  15. PV,VG,LV的关系和操作
  16. 手机连接电脑后,电脑上显示不出来手机的文件夹
  17. 2023年华为认证H12-821、H12-831考试指南(包括学习视频和题库)
  18. Ubuntu22.04虚拟机配置及使用代理工具
  19. utorrent 连接到用户_用utorrent进行BT下载时如何屏蔽吸血用户的连接
  20. MSP430串口波特率寄存器的配置

热门文章

  1. 用Apache James搭建本地邮件服务器
  2. 【EXLIBRIS】纸版书目整理 -- 小书架 下/床头柜/书箱 【100 种】【108 册】
  3. 这款Linux 恶意软件正在劫持全球的超级计算机
  4. singleton pattern的推荐实现
  5. [转]VS清除打开项目时的TFS版本控制提示
  6. Fixed the bug:while running alert/confirm in javascript the chrome freezes
  7. textarea还剩余字数统计
  8. 一个广为人知但鲜有人用的技巧:对象池
  9. 在Linux平台使用Firefox 登陆EBS r12环境
  10. 设置crontab用vi打开编辑