我对面向过程,对象,接口,切面的理解

--模范青蛙

1.面向过程

面向过程是最为实际的一种思考方式,就算是面向对象的方法也是含有面向过程的思想.可以说面向过程是一种基础的方法.它考虑的是实际地实现.一般的面向过程是从上往下步步求精.所以面向过程最重要的是模块化的思想方法.

随着时代的进步,软件的规模越来越大越来越复杂,需求变化也越来越快,面向过程就显得力不从心了,如果我们根据需求变化修改了某个结构体,那么就不得不修改与之相关的所有过程函数,而一个过程函数的修改,往往又会涉及到其他数据结构,

如果仅仅是在系统规模较小的项目中,面向过程还勉强可以应付,当系统规模越来越大的时候,多人共同开发的时候,就变得十分困难了。

《面向过程思想》举个例子:把大象装冰箱要分几步?

1.把冰箱门打开

2.计算大象的体积

3.查看冰箱容量

。。。。。。

4.把大象装进去

5.把冰箱门关上

如果我不想把大象放冰箱里了,我想把烧鸡装冰箱里,这时候,计算烧鸡的体积,冰箱的容量。。。。都需要修改。

面对这种软件危机,软件行业的精英必须为以后的发展,开辟新的空间,面向对象就在这个时候诞生了。

2.面向对象

面向对象的方法主要是把事物给对象化,对象包括属性与行为。面向对象的三个特征是封装,继承和多态,封装可以把问题中的数据和对数据进行处理的函数结合在一起,形成了一个整体的对象的概念。继承用来对系统的扩展,在原有系统的基础上,只要简单的继承关系,就可以完成系统的扩展。用多态来应对需求的变化,统一的接口,可以有不同的实现(好多人把面向对象和面向接口分开来讲,其实面向接口主要讲的就是多态,为了调理清晰,我也把面向接口分开单独说一下)。

《面向对象思想》举个例子:把大象装冰箱要分几步?

只需要一步,就是你把你女朋友叫过来,让她把大象赶到冰箱里。女朋友就是你的对象,至于你女朋友怎么做,就是对象的事儿啦。以后要好好善待女朋友,如果没了女朋友,以后再有大象就没法办了。呵呵,这就是面向对象。

3.面向接口

面向接口编程,就是面向抽象编程。

意思是指在面向对象的系统中所有的类或者模块之间的交互是由接口完成的。

一个对象实例只能赋值给与它类型相同的引用、或者父类(包括接口)的引用。

接口就好比是一个公司的领导,某天领导A下了一条命令,让员工B把大象装冰箱里,员工B干活慢,领导就发火了,还想不想干了,公司不是没有你就不行了,不想干随时有人来接替你,于是领导就让员工C按照领导的指示把大象装冰箱里了。这就是面向接口编程。

举个例子:A a=new B();

在内存堆中创建一个B对象,在内存栈中创建一个引用A,A指向B。用A中的a.put()方法去调用B中的同名方法,这当然是正确的,因为B类实现了A接口。B是A的实现类所以B的实例可以赋值给A的引用。

这个耦合度是指:一个类(或者对象)对另一个类(或者对象)的依赖。a这个对象具有A接口规定的一切方法(B类里强制必须实现的)。

如果用类的继承,要求所有的具有某一个方法的一类对象都必须是指定类的子类对象,总是存在依赖,应用灵活度非常差!

如果使用接口,我们可以把B这个类换成别的类来实现这个接口,同样可以实现接口中的方法,这样就降低了程序之间的耦合度,因为我们在具体的调用处都是接口进行的,并不依赖于具体类,B类可以换成是任意的类,只要实现了A这个接口就可以调用他的方法,完成相应的功能。

4.面向切面:

面向切面的编程 主要实现的目的是针对业务处理过程中的切面进行提取,它所面对的是处理过程中的某个步骤或阶段,以获得逻辑过程中各部分之间低耦合性的隔离效果。面向对象编程将程序分解成各个层次的对象,而面向切面编程将程序运行过程分解成各个切面。

面向对象编程是从静态角度考虑程序结构,而面向切面编程则是从动态角度考虑程序运行过程。

面向对象编程是以对象为核心,整个项目都是由一系列相互依赖的对象组成的,而这些对象将被抽象成一个类,并允许使用类继承来管理类与类之间一般到特殊的关系。

面向对象可以通过分析抽象出一系列具有一定属性和行为的类,并通过这些类之间的协作来形成一个完整的软件功能。由于类可以继承,因此可以把具有相同功能或相同特性的属性抽象到一个层次分明的类结构体系中。随着软件规范的不断扩大,专业划分工越来越细致,以及OOP应用实践的不断增多,随之也暴露了一些OOP无法很好解决的问题。

说了这么多,还是来举个例子吧,要把大象装冰箱总共分几步。。。

这个大家都知道,如果这时候我改了需求呢?要求大象必须是洗过澡的,不能臭烘烘的放冰箱里,还要求大象在冰箱里不能被冻感冒了。。。。(有点奇葩了。。。)

但是又跟对象说好了,他只负责把大象装冰箱,于是自己偷偷找人在对象把大象装冰箱之前,给大象洗了个澡,换了身衣服,又吩咐手下,在对象把大象装冰箱之后,把电源拔掉,不能让大象感冒了。然后就叫对象过来把大象装冰箱里,但是给大象洗澡,换衣服,拔电源这是事儿对象并不知道。这就是面向切面(找一个切入点,把要办的事儿给办了)。AOP专门用于处理系统中分布于各个模块中(不同方法)的交叉关注点的问题,在java EE应用中,经常通过AOP来处理一些具有横切性质的系统服务,如事务管理,安全检查,缓存,对象池管理等。

对面向过程,对象,接口,切面的理解相关推荐

  1. 面向过程和面向对象的本质理解

    http://kiritor.blog.51cto.com/7400479/1226762/ 面向过程和面向对象的本质理解 面向过程就是分析出解决问题所需的步骤,面向对象则是把构成问题的事物分解成对象 ...

  2. 对面向对象和面向过程的理解

    面向过程的程序设计 比如说,要去做一件事情,那么我就需要知道这件事情要怎么做,第一步应该做什么,第二步应该做什么,我们都会不自觉的按部就班的罗列出我们要做的事情.而当我们按着我们罗列的步骤去解决问题时 ...

  3. 什么是面向过程与面向对象

    什么是面向过程与面向对象 许多人在学习语言的时候都会被告知,C语言是面向过程的编程语言,JAVA语言是面向对象的编程语言等等. 这时当你是刚学习一门语言的时候,根本就不用管这个概念是什么意思,因为你是 ...

  4. 面向对象与面向过程区别

    面向对象:用线性的思维.与面向过程相辅相成.在软件开发过程中,宏观上,用面向对象来把握事物间复杂的关系,分析系统.微观上,仍然使用面向过程. "面向过程"是一种是事件为中心的编程思 ...

  5. js_高级_表格排序案例---分别用面向过程和面向对象实现

    点击表单每列的title可以实现排序功能(从大到小,从小到大) 1.面向过程方式   2.面向对象实现 以命令者的角度去考虑自己要这个类有什么功能,封装在类里面后自己可以直接调用 然后再去写功能的具体 ...

  6. 编程思想:面向对象和面向过程

    何谓面向对象?何谓面向过程?对于这编程界的两大思想,一直贯穿在我们学习和工作当中.我们知道面向过程和面向对象,但要让我们讲出来个所以然,又感觉是不知从何说起,最后可能也只会说出一句就是那样啦,你知道啦 ...

  7. 面向对象与面向过程的区别与联系

    面向对象与面向过程的区别与联系 一.区别 面向过程强调的是功能行为,以函数为最小单位,考虑怎么做. 面向对象,将功能封装进对象,强调具备了功能的对象,以类/对象为最小单位,考虑谁来做. 面向过程的分析 ...

  8. 面向过程(POP)、面向对象(OOP)、面向接口(IOP)、面向切面(AOP)

    面向过程POP 是一种以过程为中心的编程思想.这些都是以什么正在发生为主要目标进行编程,不同于面向对象的是谁在受影响. 就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个 ...

  9. 天正建筑lisp编程接口_编程思想|面向过程的结构化、面向对象的抽象化、泛型编程...

    程序总是因而解决问题而生,如何组合描述数据.算法的模块,就形成了各种编程思路的分类. 1 控制结构语句产生之前 20世纪60年代初,在提倡通过规则让读写程序更轻松的时代潮流中,结构化程序设计应运而生. ...

最新文章

  1. 2021年春季学期-信号与系统-第四次作业参考答案-第十一小题
  2. hue迁移数据库到mysql
  3. 使用Python实现简易的数据标注工具
  4. c语言从html控件sscanf,sscanf与sprintf在C语言中的用法
  5. Spring| BeanCurrentlyInCreationException: Error creating bean with name ‘‘xxx“
  6. Android的EditText文字动态监听
  7. python 每月每周_R-Python:获取每月,每周的索引点
  8. Stm32串口通信基础实验
  9. 如何用python做软件导出cad_使用python将cad批量导出至pdf
  10. Windows图片查看器不见了注册表可以帮你修复
  11. 最新国民人均年薪出炉,你有没有拉国家的后腿?
  12. 15块rmb做一个语音识别控制的0.3W白光LED便利USB灯
  13. Ubuntu关机重启卡死在关机动画界面
  14. 2021年3月最新的山东大学网络认证的网址
  15. 地球信息科学与技术类毕业论文文献有哪些?
  16. 如何替换json对象中的key
  17. A. Banana 2017 ACM-ICPC 亚洲区(乌鲁木齐赛区)网络赛
  18. 一张学习规划图学透自动化测试
  19. 大一python基础编程试卷_2020年大学慕课Python编程基础试题及答案
  20. android工程换背景图片,Android初学者:用知乎Matisse开源项目制作更换应用背景图片功能...

热门文章

  1. 使用JQuery删除html页面中的元素
  2. 删除list列表中的某一个元素的多种方法
  3. C语言实现动态数组大小
  4. js中关于时间的转化——将秒/毫秒转化成xx小时xx分钟xx秒
  5. 一起来聊一聊MySQL:从B树到B+树到索引再到存储引擎
  6. UltraISO制作U盘启动盘安装Windows系统攻略
  7. 用装饰器缓存某个函数的结果
  8. 第8章第17节:制作企业宣传册的公司团队第四页面 [PowerPoint精美幻灯片实战教程]
  9. kubeadm join 添加节点 报错
  10. SAP SHDB 录制BDC并程序调用BDC教程