面向过程、面向对象 的模型和方法
概念与思想
“面向过程”(Procedure Oriented)是一种以“过程”为中心的编程思想,所谓“面向过程”的编程就是以“什么事情发生”或“什么流程进行”为目标或单元进行编程,而面向对象的则是以“谁在受影响”或“谁作出什么反映”为指导进行编程。
面向对象中的“谁”就是某对象,对象作出的影响或反映会触动“一系列的过程“发生或“一系列的流程“进行,也就是说对象在物理层面表现为“过程”的集合。
一个系统中会有很多的过程要执行,如果采用面向过程的方法编程,则需要仔细分析过程的执行顺序,使用的时候一个一个地调用就可以了,相互间的逻辑关系和运行影响,随着系统复杂性的提高,过程会越来越多,无数的过程出现在系统中,就很难理清楚它们之间存在的关系,一个一个地调用会变得非常繁琐和谨慎,那么系统的质量属性就很难保证,这些质量属性包括:
性能、可用性、可修改性、安全性、可测试性、易用性。
“面向过程”是一种以过程为中心的编程思想,也可称之为“面向记录”编程思想,他们不支持丰富的“面向对象”特性(比如封装、继承、多态等),这通常需要编写不同的过程,不易于复用和修改。
这里可以明显地感觉到:面向过程中的过程是分散的、过于细节的、无特征的,而对象则可以看作是“过程”的有机结合体,对象将逻辑上相关的过程以及他们会使用的数据整合到一起,对外体现为一个自管理的有机构件,对象通常具有特定的职责,这就更有利于高层设计工作的开展和实施,因为高层设计面向了具体职责的对象后则不用再关系底层复杂的过程执行,不会被“细节”所羁绊。
面向过程其实是最为实际的一种思考方式,就算是面向对象的方法也是含有面向过程的思想.可以说面向过程是一种基础的方法.它考虑的是实际地实现.一般的面向过程是从上往下步步求精.所以面向过程最重要的是模块化的思想方法.模块就是过程的组合体,但依然缺乏对象的有机性,对象更贴近人文自然。对比面向过程,面向对象的方法主要是把事物给对象化,对象包括属性与行为(这里的行为就对应面向过程中的过程或这模块).当程序规模不是很大时,面向过程的方法还会体现出一种优势,因为程序的流程很清楚,按着模块与函数的方法可以很好的组织,比如拿学生早上起来的事情来说说这种面向过程吧.粗略的可以将过程拟为:
而这4步就是一步一步地完成,它的顺序很重要,你只须一个一个地实现就行了.而如果是用面向对象的方法的话,可能就只抽象出一个学生的类,它包括这四个方法,但是具体的顺序就不一定按照原来的顺序,对象会抽象出一个“起床做事情”的行为,具体行为中过程的顺序是完全自治的,无需外界干预。
模型与方法
软件开发领域主流的开发方法:结构化方法、面向对象方法、原型法、敏捷开发方法。早期的C,Pascal和Basic等都是结构化的编程语言,而像C++,Java,C#和Ruby则属于面向对象范畴的语言。
1.结构化方法
结构化方法采用自顶向下逐步求精的设计开发方法,在设计阶段需要考虑每个模块应该分解成哪些子模块,每个子模块又该分解成哪些更小的子子模块。。。以此内推,直到模块被细化为一个个函数。
结构化程序设计方法主张把软件系统按功能进行逐步的细分,因此也被称为面向功能的程序设计方法。这种设计方法的每个功能都负责都数据进行一次处理,即每个功能都接受一些输入数据,处理完后输出一些数据,这种处理数据的方式也被称为面向数据流的处理方式。
结构化的设计方法的局限性:
1.设计不够直观,与人类的思维方式不一致。因为开发者需要将客观世界的模型分解成一个个功能,每个功能用于完成一定的数据处理。
2.适应性差,可扩展性不强。由于采用自顶向下的设计方法,当用户需求改变时,需要自顶向下的修改模块结构,高层模块的变动对下层分解的子模块有非常大的影响,维护的成本相当大。
2.面向对象设计方法
面向对象程序设计方法的基本思想是使用类、对象、继承、封装和消息等概念进行程序设计,他强调以人类的思维方式对客观世界的事物进行抽象和建模,从现实世界客观存在的事物(对象)出发来构造软件系统。强调尽可能用人类自然的思维方式思考问题,认识问题,从而将现实世界中的事物抽象成系统中的类,作为系统的基本构成单元。这样构建的系统能直接映射客观世界,更符合现实世界的本来面貌。面向对象的基本哲学是世界是由各种各样具有自己的运动规律和内部状态的对象所组成的;不同对象之间的相互作用和通信构成了完整的现实世界。系统中一切都是对象,对象是属性及其操作的封装体,他们是平等的关系,只是职责不同。
由于面向对象的设计理念使得它具有易于理解、易于维护、易于扩展、稳定等优秀特质。
相对于面向过程的“自顶向下”的层次耦合结构,面向对象则是横向松散结果,因而更易于理解和修改。
面向过程、面向对象 的模型和方法相关推荐
- Java面向对象(OOP)--面向过程 面向对象 OOP详解
1. 面向过程 & 面向对象 语言的进化发展跟生物的进化发展其实是一回事,都是"物以类聚".相近的感光细胞聚到一起变成了我们的眼睛,相近的嗅觉细胞聚到一起变成了我们的鼻子. ...
- 什么是面向对象 什么是面向过程 面向对象和面向过程的区别
转自http://blog.163.com/wenxianliang08@126/blog/static/83583263201131611916893/ 面向过程就是分析出解决问题所需要的步骤,然后 ...
- JS面向过程+面向对象编程区别,原型的应用
1.1面向过程编程 思路:面向过程就是分析出解决问题所需要的步骤,再用函数把这些步骤一步一步实现,使用的时候一个一个的依次调用即可. 1.2面向对象过程 思路:把事务分解成一个一个对象,然后由对象之间 ...
- Java学习笔记:模拟实现微信零钱通(面向过程和OOP两种方法)
写在前面:本次一个小测验技术范围非常浅,非常适用于像我这样小白的人练习,并深刻体会面向过程和面向对象最直观的区别. 1.面向过程代码实现: package com.codetest.smallchan ...
- php面向对象链接mysql_php连接数据库的两种方式- 面向过程 面向对象
一.面向对象 1. 链接数据库 $conn = @new mysqli("127.0.0.1","root","","mydb&q ...
- 【C/C++面试必备】面向对象与面向过程的区别
这篇文章来说下面向对象编程! 那什么是面向对象编程呢? 介绍面向对象之前,那必须先说一下面向过程. 什么是面向过程呢? 面向过程(Procedure-Oriented Programming,简称PO ...
- python面向对象和面向过程的区别_Python11-01_面向对象----面向对象和面向过程的区别...
面向对象编程 面向对象(OPP)编程思想主要针对大型软件设计而来的.面向对象编程使程序的扩展性更加强,可读性更好.使得编程可以像搭积木一样简单. 面向对象编程将数据和操作数据的方法封装到对象中,组织代 ...
- java面向对象与面向过程的区别
面向对象与面向过程的区别 面向过程与面向对象,只是一种思维方式的划分 面向过程 面向对象 区别 以分步骤的方式解决问题. 用方法组织代码. 以分类的方式解决问题. 用类组织代码. 共同点 细节上用 ...
- 面向对象与面向过程编程
从语言角度来讲: C是面向过程编程: C++一半是面向过程编程,一半是面向对象编程: Java是面向对象编程. 一.什么是面向对象编程与面向过程编程? 面向过程(Procedure Oriented ...
最新文章
- Fundebug计费标准解释:事件数是如何定义的?
- mysql添加用户查重的方法_mysql 开发技巧之JOIN 更新和数据查重/去重
- java安全沙箱(一)之ClassLoader双亲委派机制
- Mysql安装 定期弹出黑框作用及关闭
- web前端-回调函数sort详解
- SQL中CONVERT函数全部用法对日期操作
- Visio应用视频教程(下)-游峰-专题视频课程
- 科普:智能电话机器人语音识别技术
- 东软始业教育结业考试
- win7计算机ip地址怎么查,win7电脑的IP地址怎样查看
- 传统相声台词-太平歌词大实话
- 哥哥教你学嵌入式 之 智芯科技 开发板 Z20K11x系列 教程(一)
- 2022.10.9 英语背诵
- 云计算+区块链,企业数字化转型的混合强劲动力
- 微软服务器2016认证的考试方式,微软认证考试的几种形式
- java-sec-code学习
- 银行卡号判断api php,PHP实现根据银行卡号判断银行
- L24.linux命令每日一练 -- 第三章 文件过滤及内容编辑处理命令 -- diff和vimdiff命令
- 【CTO辩论会】移动开发者忠于技术or 背离技术
- 被国人误传了数千年的名句