热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

结构化开发方法&面向对象开发方法

结构化开发方法和面向对象开发方法之比较:结构化方法是一种基于如下概念的开发策略,即一个系统应该被划分为两个部分:数据和功能,且数据和加工数据的功能是分离的。而面向对象方法解决问题的思路

结构化开发方法和面向对象开发方法之比较:

结构化方法是一种基于如下概念的开发策略,即一个系统应该被划分为两个部分:数据和功能,且数据和加工数据的功能是分离的。而面向对象方法解决问题的思路是从现实世界中的客观对象(如人或事物)出发,尽量运用人类的思维方式(如抽象和分类)来构造软件系统。面向对象开发方法不是把系统定义为两个分离的部分(数据和功能),而是把它们定义为一组正在交互的对象。对象可以完成一些事情(就是说它们有功能),它们也知道一些事情(就是说它们有数据)。这使得软件开发者能更有效地思考问题,并以其他人也能看懂的方式把自己的认识表达出来。

以一个图书借阅管理系统的设计为例。如果采用结构化方法,我们将设计数据库表结构,以及访问这些数据的程序,如下图所示。数据库中存放有图书管理员、读者和图书的信息,也有读者借阅信息,预约信息等。程序可以操作数据库,让图书管理员登记读者的借阅情况,让读者查看图书的预约信息、自己的借阅信息,等等。

现在以一种面向对象的观点来重新考虑图书借阅管理系统。在现实世界中,有学生、老师、图书管理员、图书,所有这些人和物都将被当成对象来考虑。学生知道一些事情(他们有自己的姓名、学号、班级和电话号码等)也可以完成一些事情(如借阅图书、预约图书、退还图书、浏览图书信息等)。老师也知道一些事情,同样也能完成一些事情。从系统的观点来看,图书也知道一些事情,也能完成一些事情。要实现这样的系统,可以一定一组类。类是相似对象的通用表示,是创建对象的模板。这些类包括功能(程序)和数据,它们将和其他类一起,构成我们的应用。系统运行时,将以这些类为模板创建若干对象,这些对象相互交互,实现系统的功能。
 
面向对象与面向过程程序设计的不同点:
 
 面向过程的程序设计方法将客观事物中本质上密切相关、相互依赖的数据和对数据的操作相互分离,这种实质上的依赖与形式上的分离使得大型程序既难以编写,也难以调试、修改和维护,代码的可重用性和共享性差。
而面向对象程序设计方法是一种以对象为基础,以事件或消息来驱动对象执行相应处理的程序设计方法。它将数据及对数据的操作封装在一起,作为一个相互依存、不可分离的整体——对象;它采用数据抽象和信息隐蔽技术,将这个整体抽象成一种新的数据类型——类。类中的大多数数据,只能通过本类方法进行操作和处理。面向对象程序设计以数据为中心而不是以功能为中心来描述系统,因而非常适合于大型应用程序与系统程序的开发。
在程序结构上,面向对象程序与面向过程程序也有很大的不同。面向过程的程序主要由顺序结构、选择结构和循环结构组成,程序的基本单位是函数,程序的执行顺序也是确定的。而面向对象程序由类的定义和类的使用两部分组成,程序的基本单位是类,在主程序内定义对象,并确定对象之间消息的传递规律,程序中的所有操作都是通过向对象发送消息来实现的,对象接到消息后,通过消息处理函数完成相应的操作。

推荐阅读
  • 本文详细介绍了PHP中的几种超全局变量,包括$GLOBAL、$_SERVER、$_POST、$_GET等,并探讨了AJAX的工作原理及其优缺点。通过具体示例,帮助读者更好地理解和应用这些技术。 ... [详细]
  • 本文介绍了多种Eclipse插件,包括XML Schema Infoset Model (XSD)、Graphical Editing Framework (GEF)、Eclipse Modeling Framework (EMF)等,涵盖了从Web开发到图形界面编辑的多个方面。 ... [详细]
  • 本文由公众号【数智物语】(ID: decision_engine)发布,关注获取更多干货。文章探讨了从数据收集到清洗、建模及可视化的全过程,介绍了41款实用工具,旨在帮助数据科学家和分析师提升工作效率。 ... [详细]
  • 探讨并提供解决方案以应对 'view is not in the window hierarchy' 的错误提示。 ... [详细]
  • 利用50行Python代码打造经典游戏,既是休闲娱乐,也是编程学习的利器
    Free Python Games 是一个适合学生和初学者的项目,它不仅提供了高度的组织性和灵活性,还极大地激发了用户的探索与理解能力。 ... [详细]
  • 优雅地记录API调用时长
    本文旨在探讨如何高效且优雅地记录API接口的调用时长,通过实际案例和代码示例,帮助开发者理解并实施这一技术,提高系统的可观测性和调试效率。 ... [详细]
  • 告别繁琐安装!微软推出Windows软件包管理器winget
    2020年5月20日,在Build 2020全球开发者大会上,微软正式推出了全新的Windows Package Manager(winget),旨在简化Windows应用的安装流程。 ... [详细]
  • Node.js 断点调试指南
    本文详细介绍了利用Google Chrome DevTools和Visual Studio Code两种工具进行Node.js应用的断点调试技巧。 ... [详细]
  • 深度解析:用友云Pontus限流服务提升系统稳定性
    本文深入探讨了用友云Pontus限流服务的技术细节及其在提高系统稳定性方面的作用,特别是在面对突发流量时的保护机制。 ... [详细]
  • iOS 小组件开发指南
    本文详细介绍了iOS小部件(Widget)的开发流程,从环境搭建、证书配置到业务逻辑实现,提供了一系列实用的技术指导与代码示例。 ... [详细]
  • 本文详细介绍如何在华为手机上安装鸿蒙3.0系统及下载兼容鸿蒙系统的新版应用,包括前期准备、升级途径以及应用下载的具体步骤。 ... [详细]
  • Python Selenium WebDriver 浏览器驱动详解与实践
    本文详细介绍了如何使用Python结合Selenium和unittest构建自动化测试框架,重点解析了WebDriver浏览器驱动的配置与使用方法,涵盖Chrome、Firefox、IE/Edge等主流浏览器。 ... [详细]
  • Git版本控制基础解析
    本文探讨了Git作为版本控制工具的基本概念及其重要性,不仅限于代码管理,还包括文件的历史记录与版本切换功能。通过对比Git与SVN,进一步阐述了分布式版本控制系统的独特优势。 ... [详细]
  • 本文介绍如何利用微信提供的JS接口实现关闭当前浏览器页面并自动返回到微信公众号的对话窗口。此功能在实际应用中非常实用,但需要注意在微信开发者工具中可能遇到的兼容性问题。 ... [详细]
  • 如何高效学习鸿蒙操作系统:开发者指南
    本文探讨了开发者如何更有效地学习鸿蒙操作系统,提供了来自行业专家的建议,包括系统化学习方法、职业规划建议以及具体的开发技巧。 ... [详细]
author-avatar
sexy-domey
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有