理解Java面向对象编程设计

 更新时间:2022年01月18日 10:35:09   作者:码农洞见   
这篇文章主要介绍了理解Java面向对象编程设计,面向对象编程是一种编程思维方式和编码架构。下面详细内容,需要的小伙伴可以参考一下

1 前言

计算机革命的起源来自机器。编程语言就像是那台机器。它不仅是我们思维放大的工具与另一种表达媒介,更像是我们思想的一部分。语言的灵感来自其他形式的表达,如写作,绘画,雕塑,动画和电影制作。编程语言就是创建应用程序的思想结构。

面向对象编程(Object-Oriented Programming OOP)是一种编程思维方式和编码架构。

2 结构化程序设计

结构化程序设计主要强调的是程序的易读性。在该程序设计思想的指导下,编程基本是通过写不同目的的函数/过程来实现,故又称为“面向过程编程(Procedure Oriented Programming,POP)。面向过程开发方式是对计算机底层结构的一层抽象,它把程序的内容分为数据和操纵数据的操纵两个部分。这种编程方式的核心问题是数据结构和算法的开发和优化。

它解决了早期程序设计中大量用共享变量(全局变量)和GOTO语句,从而引发的结构混乱,不易改错和复用的问题。

3 面向对象编程设计

面向对象的思想主要是基于抽象数据类型(Abstract Data Type, ADT),在结构化编程过程中,人们发现把某种数据结构和专用于操纵它的各种操作以某种模块化方式绑定到一起会非常方便,做到“特定数据对应特定处理方法”,使用这种方式进行编程时数据结构的接口是固定的。如果对抽象数据类型进一步抽象,就会发现把这种数据类型的实例当作一个具体的东西、事物、对象,就可以引发人们对编程过程中怎样看待所处理的问题的一次大的改变。

面向对象程序设计的主要精神是将存在于日常生活中的对象(Object)概念应用在软件设计的发展模式(Software Development Model)中,着重于对象的分解与相互作用,重点是强调程序代码的可读性(Readability)、可重复使用性(Reusability)与扩展性(Extension),让程序设计人员在设计程序时能以一种更生活化、可读性更高的设计思路来进行程序的开发和设计。

4 码农洞见

面向对象编程和面向过程编程是现在主流的两种编程模式,它们既有区别也有。

4.1 两种编程范式之间的区别

在面向对象编程出现以前,面向过程颇受程序人员的青睐,因为面向过程编程采用的是“自上而下,步步求精”的编程思想,人们更易于理解这种思想。将程序一步一步的分解,并按照一定的顺序执行。这就是面向过程程序设计,以过程为中心,以算法为驱动。

程序 = 算法 + 数据结构

但是面向过程程序设计的不足之处在于,面向过程的程序上一步和下一步环环相扣,如果需求发生变化那么代码的改动会很大,这样很不利于软件的后期维护和扩展。

而面向对象程序设计的出现就可以很好的解决了这一问题,它的设计思想是“万物皆对象”。

程序 = 对象 + 消息传递

但是“任何事物都有两面性”,面向对象程序设计有其优点,但也带来了“副作用”——执行效率要低于面向过程程序设计。所以进行科学计算和要求高效率的程序中,面向过程设计要好于面向对象设计。而且面向对象程序的复杂度要高于面向过程的程序,如果程序比较小,面向过程要比面向对象更加清晰。

4.2 两种编程范式之间的联系

面向对象是在面向过程的基础上发展而来的,只是添加了它独有的一些特性。面向对象程序中的对象就是由数据和方法构成,所以完整的面向对象概念应该是:

对象=数据+方法

更进一步的可以描述为:

程序=对象+消息传递=(数据+方法)+消息传递

回到Java,我们说在Java中万物皆对象,其实是在说Java是一门面向对象的编程语言,Java程序的功能都是通过对象来完成的,根据业务需求将程序分解为不同的对象,再通过对象之间的相互调用关系来协同实现相应的功能。对编程思想的理解会因为你做的业务和代码的累积发生改变,随着知识的深入以及视野的开阔,一段时间后再回头看目前你所掌握的这些东西,你可能会发现某些地方理解得不够透彻甚至有误,这就是学习的过程。

到此这篇关于理解Java面向对象编程设计的文章就介绍到这了,更多相关Java面向对象编程设计内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 解决Shiro 处理ajax请求拦截登录超时的问题

    解决Shiro 处理ajax请求拦截登录超时的问题

    这篇文章主要介绍了解决Shiro 处理ajax请求拦截登录超时的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-09-09
  • Spring Bean Scope 有状态的Bean与无状态的Bean

    Spring Bean Scope 有状态的Bean与无状态的Bean

    这篇文章主要介绍了Spring Bean Scope 有状态的Bean与无状态的Bean,每个用户有自己特有的一个实例,在用户的生存期内,bean保持了用户的信息,下面来了解有状态和无状态的区别吧
    2022-01-01
  • java使用RSA工具进行信息加解密

    java使用RSA工具进行信息加解密

    我们在开发中需要对用户敏感数据进行加解密,比如密码等信息,这篇文章主要为大家详细介绍了java如何使用RSA工具进行信息加解密,感兴趣的小伙伴可以了解下
    2023-12-12
  • SpringBoot整合Redis实现访问量统计的示例代码

    SpringBoot整合Redis实现访问量统计的示例代码

    本文主要介绍了SpringBoot整合Redis实现访问量统计的示例代码,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • java使用renderer将pdf按页转换为图片

    java使用renderer将pdf按页转换为图片

    这篇文章主要为大家详细介绍了java使用renderer将pdf按页转换为图片,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-12-12
  • Spring Cloud之服务监控turbine的示例

    Spring Cloud之服务监控turbine的示例

    这篇文章主要介绍了Spring Cloud之服务监控turbine的示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-05-05
  • 解决idea2020 maven无法自动导包的问题

    解决idea2020 maven无法自动导包的问题

    这篇文章主要介绍了解决idea2020 maven无法自动导包的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-02-02
  • 如何获取包下所有类中的注解的值(java工具类)

    如何获取包下所有类中的注解的值(java工具类)

    这篇文章主要介绍了如何获取包下所有类中的注解的值 (java工具类),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08
  • 关于SpringBoot整合Canal数据同步的问题

    关于SpringBoot整合Canal数据同步的问题

    大家都知道canal是阿里巴巴旗下的一款开源工具,纯java开发,支持mysql数据库,本文给大家介绍SpringBoot整合Canal数据同步的问题,需要的朋友可以参考下
    2022-03-03
  • Java泛型机制的程序演示详解

    Java泛型机制的程序演示详解

    这篇文章主要为大家详细介绍了Java泛型机制的程序演示,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-08-08

最新评论