POP

即面向过程编程,他是以功能为中心来进行思考和组织的一种编程方式,强调的是系统的数据被加工和处理的过程。直白一点就是注重功能性的实现。

OOP

即面向对象编程,其是以对象模型为基础进行的抽象过程,并在应用过程中形成了描述自己的抽象概念定义,包括对象、类、封装、继承以及多态等。

POP与OOP的关系

引用别人的房子和家具的比喻,我觉得很贴切。程序设计好比一间房子的布置,各项功能方法就好比各个家具。

POP就是只关注家具的功能,是否能满足需求,就算把所有家具放在一块,在POP的语法中也是允许的,只要功能能够实现。但这不符合实际,要是一间房子里,床、马桶、餐桌放一起,那后果可想而知。

而在OOP中,就需要你把床放卧室,马桶放卫生间,餐桌放厨房。而这一个个房间就称之为类。整个房间也就变得结构清晰。

AOP

即面向切面编程,他是通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。

OOP与AOP的关系

AOP是OOP的延续。随着软件规模的增大,应用的逐渐升级,慢慢地,OOP也开始暴露出一些问题。比如A、B、C三个不同的类中存在这一种相同的方法。这不仅造成了代码的冗余,而且万一需要修改一下这个类,那么我们就需要修改三个地方。而这仅仅只是三个类,如果这个方法存在于多数类中,那么就会出现一处修改,万处挖坑的情况。

所以AOP就是将这些相同的方法单独拿出来封装,即解决了代码的冗余,而且也方便了代码的维护。

如何理解POP、OOP和AOP之间的关系相关推荐

  1. 如何理解POP、OOP、AOP之间的关系

    POP--面向过程编程   概念:POP为Process Oriented Programming的缩写,意为面向过程的,以过程为中心的编程思想.强调的是系统数据被分析处理和加工的过程.   分析出解 ...

  2. 如何理解POP,OOP,AOP之间的关系

    如何理解POP,OOP,AOP之间的关系 1)POP–面向过程编程(Process-oriented programming): 面向过程编程是以功能为中心来进行思考和组织的一种编程方法,它强调的是系 ...

  3. 编程思想(POP,OOP,COP,AOP,SOP) 整理

    面向过程(procedure oriented programming) POP      一种以过程为中心的编程思想,分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个 ...

  4. 编程_三大编程思想:POP、OOP、AOP

    文章目录 三大编程思想 POP:面向过程编程 优点: 缺点: OOP:面向对象编程 1.抽象性: 2.封装性: 3.继承性: 4.多态性: 优点: 缺点: AOP:面向切面编程 优点: 缺点: 总结 ...

  5. 深入理解Spring IOC和AOP

    文章目录 1. 什么是 Spring 框架? 1.1Spring简介 1.2Spring的好处 1.3Spring体系结构 2.理解Spring IoC 2.1IoC简介 2.2IoC的好处 2.3依 ...

  6. 泛型编程、STL的概念、STL模板思想及其六大组件的关系,以及泛型编程(GP)、STL、面向对象编程(OOP)、C++之间的关系

    介绍STL模板的书,有两本比较经典: 一本是<Generic Programming and the STL>,中文翻译为<泛型编程与STL>,这本书由STL开发者 Matth ...

  7. 抛弃隐晦,明了的理解Spring IOC与AOP

    IOC(反转控制) 一个java应用程序是有很多类组成的,这些类相互协作.相互作用来提供应用程序的表现行为.那些被其它类组合提供某些行为的类,称之为其它类的依赖(dependencies).利用软件工 ...

  8. 我所理解的OOP——UML六种关系

    最近由于经常给公司的小伙伴儿们讲一些OOP的基本东西,每次草纸都被我弄的很尴尬,画来画去自己都乱了,有时候也会尝试使用UML表示类之间的关系,但UML从毕业后就再也没接触过了,经常会被小伙伴儿们指出继 ...

  9. 深入理解WMS(三):剖析Activity,View,Window之间的关系

    这篇课程开头就说在"接触 Android 开发时,我始终认为它就是负责将 layout 布局中的控件渲染绘制出来的".的确,对于layout布局怎么跟Activity关联起来的,都 ...

最新文章

  1. Nginx入门笔记之————配置文件结构
  2. 实体识别+entity resolution
  3. SAP MM UB类型的退货STO流程简述
  4. python自动测试p-使用python+requests实现接口自动化测试
  5. 多款 Linux 发行版悄然放弃支持 PowerPC
  6. Discuz!NT控件剖析 之 Button [原创: 附源码]
  7. job sql 定时执行exe_SQL Server定时作业job的设置方法(转)
  8. 正则控制可以输两位小数、负数,整数
  9. c语言程序设计移动字母,C语言程序设计模拟试题二(含答案)
  10. Struts2 + MySQL 实现分页
  11. 广电总局拟规定设立未成年人频道
  12. 数百万人都在使用的9款无线路由器易受226个缺陷影响
  13. 将一个十进制转换为二进制,八进制,十六进制
  14. 【bzoj1976】[BeiJing2010组队]能量魔方 Cube 网络流最小割
  15. 【数学信号处理】基于matlab数字信号频谱分析【含Matlab源码 1544期】
  16. 虚机使用技巧几则(经验交流)
  17. 推荐几本 Go 语言电子书
  18. 捷联惯导算法(一)程序简单实现
  19. 10天手敲一个SpringBoot网上商城项目(五)——收货地址列表展示功能及设置默认收货地址功能的实现
  20. java 问题 无法解析类型 java.lang.CharSequence。从必需的 .class 文件间接引用了它

热门文章

  1. 设计模式-代理模式 C++
  2. 语言计算:信息科学技术中长期发展的战略制高点
  3. linux达人养成计划 ppt,Linux达人养成计划 I
  4. SQLServer数据类型(一)
  5. [Error]Swift开发调试时使用LLDB的po和print命令无法输出变量
  6. Python网络爬虫项目实战(二)数据解析
  7. 前端小知识点:IP地址的FQDN查询
  8. 详解ssh/https远程连接Git服务器
  9. 卷积、互相关、自相关
  10. 从中粮到克明,五谷道场还有逆袭机会吗?