计算机革命的起源来自机器。编程语言就像是那台机器。它不仅是我们思维放大的工具与另一种表达媒介,更像是我们思想的一部分。语言的灵感来自其他形式的表达,如写作,绘画,雕塑,动画和电影制作。编程语言就是创建应用程序的思想结构。
面向对象编程(Object-Oriented Programming OOP)是一种编程思维方式和编码架构。
结构化程序设计主要强调的是程序的易读性。在该程序设计思想的指导下,编程基本是通过写不同目的的函数/过程来实现,故又称为“面向过程编程(Procedure Oriented Programming,POP)。面向过程开发方式是对计算机底层结构的一层抽象,它把程序的内容分为数据和操纵数据的操纵两个部分。这种编程方式的核心问题是数据结构和算法的开发和优化。
它解决了早期程序设计中大量用共享变量(全局变量)和GOTO语句,从而引发的结构混乱,不易改错和复用的问题。
面向对象的思想主要是基于抽象数据类型(Abstract Data Type, ADT),在结构化编程过程中,人们发现把某种数据结构和专用于操纵它的各种操作以某种模块化方式绑定到一起会非常方便,做到“特定数据对应特定处理方法”,使用这种方式进行编程时数据结构的接口是固定的。如果对抽象数据类型进一步抽象,就会发现把这种数据类型的实例当作一个具体的东西、事物、对象,就可以引发人们对编程过程中怎样看待所处理的问题的一次大的改变。
面向对象程序设计的主要精神是将存在于日常生活中的对象(Object)概念应用在软件设计的发展模式(Software Development Model)中,着重于对象的分解与相互作用,重点是强调程序代码的可读性(Readability)、可重复使用性(Reusability)与扩展性(Extension),让程序设计人员在设计程序时能以一种更生活化、可读性更高的设计思路来进行程序的开发和设计。
在这里插入图片描述
面向对象编程和面向过程编程是现在主流的两种编程模式,它们既有区别也有。
在面向对象编程出现以前,面向过程颇受程序人员的青睐,因为面向过程编程采用的是“自上而下,步步求精”的编程思想,人们更易于理解这种思想。将程序一步一步的分解,并按照一定的顺序执行。这就是面向过程程序设计,以过程为中心,以算法为驱动。
程序 = 算法 + 数据结构
但是面向过程程序设计的不足之处在于,面向过程的程序上一步和下一步环环相扣,如果需求发生变化那么代码的改动会很大,这样很不利于软件的后期维护和扩展。
而面向对象程序设计的出现就可以很好的解决了这一问题,它的设计思想是“万物皆对象”。
程序 = 对象 + 消息传递
但是“任何事物都有两面性”,面向对象程序设计有其优点,但也带来了“副作用”——执行效率要低于面向过程程序设计。所以进行科学计算和要求高效率的程序中,面向过程设计要好于面向对象设计。而且面向对象程序的复杂度要高于面向过程的程序,如果程序比较小,面向过程要比面向对象更加清晰。
面向对象是在面向过程的基础上发展而来的,只是添加了它独有的一些特性。面向对象程序中的对象就是由数据和方法构成,所以完整的面向对象概念应该是:
对象=数据+方法
更进一步的可以描述为:
程序=对象+消息传递=(数据+方法)+消息传递
回到Java,我们说在Java中万物皆对象,其实是在说Java是一门面向对象的编程语言,Java程序的功能都是通过对象来完成的,根据业务需求将程序分解为不同的对象,再通过对象之间的相互调用关系来协同实现相应的功能。对编程思想的理解会因为你做的业务和代码的累积发生改变,随着知识的深入以及视野的开阔,一段时间后再回头看目前你所掌握的这些东西,你可能会发现某些地方理解得不够透彻甚至有误,这就是学习的过程。
为初学者提供学习指南,为从业者提供参考价值。分享绘画与编程。洞见就在其中~