首先给出我自己的简单理解
编程的目的就是为了实现一项功能,而一项功能的实现少不了一些彼此关联的步骤。这些关联的步骤广义上说就是一种过程,所以说无论是面向对象,还是面向过程,终归到最后都是实现一个功能,实现一个过程。只不过当用面向过程实现这个过程时,过程被分解为一个一个的功能,这些过程最终通过一些功能间的相互合作完成此过程。而当使用面向对象来实现这个过程时,过程被分解为一个个对象,这个过程最终通过对象简的相互合作完成。
两种编程方式至此看区别不大,无非一个使用功能,一个使用对象。
例如 发邮件 ,面向过程可能会划分为 1,填邮件头 2,填充内容 3,发送。
面向对象却不这么划分,但是它同样需要完成上述功能,要不最终过程(发送邮件)将无法完成。
面向对象划分方法为:一个邮件对象 提供如下功能:发送邮件 获取邮件头 获取邮件内容..甚至,面向对象提供的发送邮件的功能的实现 依然是 1,填邮件头 2,填充内容 3,发送。
重复了面向过程的方法,而且面向对象的实现更加复杂。
而且面向过程也能提供面向对象所提供的服务,只不过需要多写一些功能函数。
但是,问题在于,当过程(业务)发生变化时,例如发送邮件的过程,有些邮件我需要扫面敏感词,有些邮件我不扫面敏感词,对于这种要求,面向过程的处理方法就是写一个扫面敏感词的功能,重新组合最终的实现过程。而对于面向对象,也是建立一个扫描敏感词的方法,然后重新装配过程。
两者看上去没有什么区别,但是对于大的过程,比较复杂的过程,面向对象的优势才能突显。所以说在比较小的应用上,面向过程的优势更加明显。
从本质上来说 ,面向对象就是将面向过程中用到的函数封装起来,把一定得某些功能封装给能代表这些功能的对象。
这一封装的好处,就是当实现的业务逻辑相当复杂时,面向过程可能得 管理千万个函数,而面向对象可能只有上千个对象,而且这些对象是明白定义的。这样当新的需求变化时,面向过程需要同时与上千万个函数打交道,而面向对象只需与上千个对象打交道。
同时通过类似spring的技术,对象间的管理和配置变得更加容易。
对于类似javascript这样的技术,编程时的感觉更像是面向过程,但是从广义上来看,却又不是,因为javascript对功能进行了封装。
所以说 面向对象与过程的本质区别在于是否封装。
一旦程序使用了封装特性,由此所带来的一些好处也日益突显:继承,多态。。。
面向对象的类如何去找?怎么定义?
这也就是一个对封装的把握,怎么去把握封装,怎么把握每个封装个体之间的关系?是依赖,泛化,继承?
依赖又分为是组合,聚合,还是就是简单的依赖。。
对这些关系的把握,恰恰就是确定一些系统的临界点,完成更大封装的前提。由 小封装与小封装之间的交互,组成大的封装,大的封装与大封装之间的交互,最终组成整个系统。
要实现系统的健壮,可持续就应该在定义这些封装上面下一番苦功夫。通过一些外部的配置可以将某些封装弱化 ,例如依赖,通过spring的注入,可以弱化依赖,从而在依赖上达到更加健壮的目的。
对象与对象之间的各种关系,譬如依赖,泛化,继承,从另外一个角度来说也是一种面向过程,因为当一个对象依赖另外一个对象才能提供自己的服务时,实际上已经说明他提供的服务需要 一定的过程,这个过程就是指具体在什么地方调用依赖的类的功能来帮助自己提供服务。简单的说是广义上的面向对象。
分享到:
相关推荐
根据给定文件的信息,本文将深入探讨面向对象与面向过程这两种程序设计方法,并对比分析两者的特点及适用场景。 ### 面向过程的程序设计 面向过程的程序设计方法是传统编程模式的基础,它强调按照一定的顺序来组织...
【结论】UML为面向对象与面向过程的分析和设计提供了统一的表达方式,无论是面向对象还是面向过程,都可以通过UML进行有效的建模和可视化,从而更好地理解和实现复杂系统的开发需求。理解和掌握UML,对于提升软件...
面向对象与面向过程01.面向过程编程02. 面向对象基本概念千 锋 Python人 工 智 能 学 院面向对象编程的关注点在于谁来做相比较函数,面向对象是更大的
### 面向对象与面向过程编程:对比与分析 #### 一、引言 在计算机科学领域,程序设计范式是定义如何构建和组织软件系统的基础。两种主要的编程范式包括面向对象编程(Object-Oriented Programming,简称OOP)与...
### 面向对象与面向过程的区别 #### 一、概念理解 - **面向过程**:这是一种编程思想,强调按照程序执行的过程来组织代码。它更注重于算法和步骤的实现,通过一系列有序的指令来完成任务。面向过程的思想在早期...
### 从PHP视角探讨面向对象与面向过程编程的优缺点 #### 一、引言 在软件开发领域,编程范式的选择对项目的成功至关重要。PHP作为一种广泛应用的脚本语言,在Web开发领域尤其受到青睐。本文将从PHP的角度出发,...
7. **面向对象与面向过程对比**:面向对象编程与传统的面向过程编程相比,更注重数据和操作数据的方式,而非步骤的执行顺序。面向对象强调模块化和组件化,更适合处理复杂系统的构建。 8. **案例分析**:在实际开发...
面向过程、面向对象、面向组件、面向服务软件架构的分析与比较 软件开发历程与架构演进 软件开发从汇编语言、过程式语言、面向对象、面向组件发展到面向服务,这一进程不仅反映了编程技术的不断进步,更是软件工程...
面向过程与面向对象区别 面向过程和面向对象是两种不同的软件设计方法,它们之间的区别是非常重要的。在设计软件时,选择合适的方法对于软件的质量和可维护性有着重要影响。 面向过程是一种-old school-的设计方法...
- **面向对象与面向过程**:虽然C++支持面向过程和面向对象两种编程范式,但面向对象程序设计是为了应对大规模软件开发的挑战而提出的。面向对象程序设计的目标在于提高软件开发的效率和质量。在实际开发中,面向...
本文将深入探讨面向对象程序设计的核心概念、特点以及它与面向过程编程的主要区别。 ### 一、面向对象程序设计的概念 面向对象的程序设计方法强调的是自底向上的功能综合,其核心思想是通过识别和建模现实世界中的...
面向对象与面向过程编程的主要区别在于,面向过程编程以过程和步骤为中心,而面向对象编程则以对象为中心。在面向过程编程中,我们使用函数来处理问题,而在面向对象编程中,我们创建类并实例化对象,通过对象之间的...
#### 一、面向对象与面向过程的区别 面向对象与面向过程是两种不同的编程思想。在面向过程的编程中,程序的基本组成单元是函数,程序员主要关注的是如何通过一系列函数实现特定的功能。而在面向对象编程中,程序的...
【描述】:“投票系统(面向过程与面向对象)PHP,PHP系统的初学者”意味着这个项目特别适合那些正在学习PHP并希望了解如何创建投票系统的初学者。通过实践这样的项目,学习者可以深入理解PHP的基础知识,同时掌握...
面向过程和面向对象是两种不同的编程范式,它们在解决问题的方式和代码结构上有显著的差异。面向过程编程(Procedure-Oriented Programming)是一种基于步骤的编程思维,它侧重于将一个问题分解为一系列有序的函数或...
面向对象软件开发过程是当前主要应用的一种技术,它和面向过程形成了鲜明的对比。面向对象的软件开发就是将面向对象的思想应用于软件开发过程中的各个阶段,其主要过程为:首先从实际问题触发,用面向对象的方法分析...