浅谈对java编程思想的理解

刚从学校毕业的时候,对于这种概念的理解少之又少 ,只是单纯的从事编码工作,理解也只是停留在对java基本概念的使用上,很局限!随后工作了快三年的时间里,自己不断的理解这种所谓的思想在工作中到底怎么体现的,怎么就称为面向对象编程?所以在这简单谈谈这种思想的看法与思想的演变!

记得学c语言的时候,讲师反复提及c它是面向过程编程(POP)的语言,需要对过程行为进行算法分析,这样就对编程人员的算法能力等方面的要求要高很多,比如人可以砍树,这就是一种服务功能,有输入也有输出;它可以提供给外部,而行走,则是自我功能,没有输入也没有输出),外部环境和内部组织,以及环境数据和原料性数据之间的区别。从思维上来讲,面向过程更强调细节,忽视了整体性和边界性,但这与现实世界有很大的出入,因为现实世界中,这种过程都不是孤立存在的,而是从属于某个对象,因此,面向过程虽然反映了现实世界的而一个方面(功能),但无法更加形象的模拟或者表示现实世界。随后c++的过度,最后到java语言的出现,这一系列演变的过程,都是为了方便,简化编程任务,转变编程的思考角度,这就提出了一个重要的概念,面向对象编程。就是我们思考的角度转变,

相信大家都听过一句:”万物皆对象”,没错,这就是面向对象编程(OOP)的意向体现;比如,你要吃饭这个动作,在c语言看来,你要先去买锅,煮水,买菜,洗菜等等一系列过程动作你才可以完成,而java这类提倡面向对象的思想,就是你要吃饭,那就让快递送过来。不关心你是怎么做的,我只要吃饭这个动作完成就可以;面向对象以对象为中心,将对象的内部组织与外部环境区分开来,将对象的内部属性数据与外部隔离开来;就是封装对象特征,对外提供入口,其行为与属性构成一个整体,而系统功能则表现为一系列对象之间的相互作用的执行流。在编程组织中,对象的属性与方法不再像面向过程那样分开存放,而是视为一个整体(程序的最终实现其实还是分离的,但这仅仅是物理实现上的,不影响将对象的这两个部分视为一个整体),因此具有更好的封装性和安全性(表征内部的属性数据需要通过对象的提供的方法来访问)。面向对象强调的是整体性,因此面向对象与面向过程在很多方面是可以互补的。同时由于对象继承和多态技术的引入,使得面向对象具有更强、更简洁的对现实世界的表达能力。从而增强了编程的组织性,重用性,灵活性。

随着工作任务的高度封装,对于编程进行了服务化设计,这就是面向服务编程(SOA),我们只需要对外提供服务接口,无状态单一实例就可以,面向服务主要以服务为出发点,组织和协调相关的对象来提供目标服务,对外提供必要的参数输入接口,将服务的结果作为输出,而“服务”本身的计算过程和组织则被封装在一起,对用户透明。其实面向服务也是以功能(服务)为中心,但其强调的是功能的整体性,封装性、自包性,而不是过程性和协作性,整体性指的是服务对外是作为一整体来体现的;封装性指的是服务完成的计算和处理过程、自有属性都不直接暴露给外部,除了通过公共的服务接口进行交互外,用户无法也不用知道内部的具体组织和协调的;自包性指的是服务的完成不依赖于服务的调用方,服务系统的本身就可以完成服务所需的功能;因此面向服务在程序组织上处于更高的层次,是一种粗粒度的组织方法。面向服务与面向过程、面向对象本质上没有什么不同,区别就在于考虑问题的层面不同。面向对象和面向过程多用于系统内部的组织和管理,而面向服务主要用于系统间的组织和管理。这方面体现也是主要在架构方面体现的更加明显!

面向方面(AOP)应该属于面向对象的另一体现吧,最有体会就是spring 的核心思想;从对象组织角度来讲,我们传统思想都是沿着对象或事务发现的发现方向编程思考;这样对事物的控制性就比较差,也可以成为纵向编程;但事实上,对象之间除了这种纵向发展之外,我们同样可以从横向的角度去观察这些对象,这就是面向方面(切面)编程的基本出发点。原来要解决这类问题,我们一般是采用接口来完成,但这有两个问题,一是对象设计的时候一般都是纵向思维,如果这个时候需要就需要考虑这些不同类的对象的这些共性,不仅会增加设计的难度和复杂性,还会造成类的接口过多而难以维护,二是需要对现有的对象动态增加这种行为或者责任的时候非常困难。现在很多程序的都是以中间语言存在,执行的时候是解释执行或者即时编译执行,这也为增加这种切面行为或者责任提供了比较好的切入口;增强了对 对象或者事务的控制,比如事务控制,日志。安全等操作!

浅谈对java编程思想的理解相关推荐

  1. 浅谈面向对象的编程思想:如何优雅地把大象装进冰箱?

      许多人刚学编程时,想必都听到过这样的话:"*语言是面向对象的,而***语言是面向过程的".那时的新人还懵懵懂懂,就被大牛或者书上的大牛骗去学了一种听起来很厉害的语言,然而学了半 ...

  2. 《Java编程思想》学习笔记(一)——再度理解OOP

    实践是认识的来源和基础.是认识的动力.是检验其真理性的标准.工作一年后再回过头来看看,还是学生的时候对编程语言产生的各种疑问,突然间,好像有了那么点儿豁然开朗的感觉.但,真正的豁然开朗还是在品读了&l ...

  3. Java编程思想学习(一)----对象导论中多态的理解

    1.1抽象过程 1)万物皆对象. 2)程序是对象的集合,他们通过发送消息来告知彼此所要求做的. 3)每个对象都有自己的由其他对象所构成的存储. 4)每个对象都拥有其类型. 5)某一特定类型的所有对象都 ...

  4. 编程不适合12小时工作制,“我有灵感才工作” | 专访《Java编程思想》作者Bruce Eckel...

    整理 | 蔡芳芳 采访 | 王一鹏.蔡芳芳 本文转载自公众号infoQ 编者按: 如果你是一个 Java 开发者,那你想必读过或至少听过<Java 编程思想>(Thinking in Ja ...

  5. Java编程思想(第4版)(评注版)

    传世经典书丛  Java编程思想(第4版)(评注版)  (美)埃克尔(Eckel, B.)著 刘中兵评注 ISBN 978-7-121-13521-7 2011年6月出版 定    价:108.00元 ...

  6. 《Java编程思想》读书笔记(二)

    三年之前就买了<Java编程思想>这本书,但是到现在为止都还没有好好看过这本书,这次希望能够坚持通读完整本书并整理好自己的读书笔记,上一篇文章是记录的第一章到第十章的内容,这一次记录的是第 ...

  7. 类的包访问权限:《Java编程思想》中一段话的困惑

    类的包访问权限:<Java编程思想>中一段话的困惑 在<java编程思想第三版>(陈昊鹏 饶若楠等译)的第五章隐藏具体实现中,5.4节的最后一段话是: "正如前面所提 ...

  8. 译者招募 | 《Java编程思想》作者Bruce Eckel新作On Java 8

    硅谷创业之父Paul Graham曾在<黑客与画家>中写道,"判断一种语言是否流行的条件是,一种免费的实现,一本相关书籍,以及语言所依附的计算机系统." 当然,Java ...

  9. 《Java编程思想》学习笔记(三)——初始化与清理

    一.初始化 初始化其实就是为变量分配内存空间,并确定其初始值的过程.想了解Java中初始化的各种情况,首先要了解Java中变量的类型.根据自己的理解,将Java中的变量类型分成以下几种,虽然可能不太准 ...

最新文章

  1. 自定义searchview包括修改图标样式
  2. 计算机网络本地连接被禁用说明什么,win10系统网络被禁用重新启用本地连接的设置技巧...
  3. python的安装教程-python安装教程 Pycharm安装详细教程
  4. 相机矩阵(Camera Matrix)
  5. 架构师必须搞懂DNS,一篇文章就够了。
  6. pmml_再访PMML
  7. C++将01数组转换为二进制对应的数值
  8. vue2之对象属性的监听
  9. 基于JAVA+SpringMVC+Mybatis+MYSQL的药店门店管理系统
  10. 基于springMVC的汉字与数学计算的图片验证码
  11. ubuntu18.04新体验
  12. iocomp iPlot使用说明6 轴属性设置
  13. C语言编程乐高,ROBOLAB 2.9 编程指南第五章乐高机器人-基础小实验
  14. 一、Windows系统下安装Tensorflow2.x(2.6)
  15. mysql 1264_关于MySQL的1264错误处理及sql_mode设置
  16. 什么是系统集成资质?对于企业的重要性具体是什么?
  17. 【转】人生如梦游戏间,RPG游戏开源开发讲座(JAVA篇)[4]——一步莲华
  18. Appium-Refresh(刷新)
  19. [BZOJ4627][BeiJing2016]回转寿司 cdq分治
  20. 技术是一种加速器 但重要的不是技术

热门文章

  1. [推荐] 韩国精品LOGO设计欣赏
  2. 软件工程应用与实践(8)——视频清晰度切换
  3. git remote add origin错误
  4. 锚喷竖井在污水管道流量计井中的应用
  5. EventBus回调不执行原因
  6. 安科瑞电力监控系统临沭人民医院的应用
  7. JT格式介绍(转换)
  8. 解决No handles with labels found to put in legend
  9. motionbuilder安装未完成,某些产品无法安装的解决方法
  10. 树莓派串口与外部设备通信