首页 > 编程语言 >JAVA(十四)类和对象之面向对象编程

JAVA(十四)类和对象之面向对象编程

时间:2024-09-08 10:52:36浏览次数:9  
标签:JAVA 对象 编程 接口 面向 面向对象编程 水龙头 十四

编程的分类

按编程风格分类面向过程编程和面向对象编程和面向接口编程

1.1 面向过程编程

过程式编程,也称为命令式编程,是一种编程范式,它依赖于过程调用来实现逻辑。代码按照一定的顺序执行,从而实现功能。在过程式编程中,程序被组织成一系列的过程或函数调用,每个过程都负责执行特定的任务。

面向过程,就需要先把吸收这个事件分步骤:

  • 打开水龙头,
  • 水龙头流水,
  • 洗手动作开始,
  • 关闭水龙头。

通过以上四步,完成洗手这个事件。

通过上边的例子知道,面向过程编程的思想在处理事件时,将整个事件拆分成一个个步骤,每个步骤封装成对应的函数,然后按照某个顺序去执行,来完成事件。

再比如泡面

再比如,把大象放入冰箱这件事

js代码

# 第一步:打开冰箱门
def open_door():
    print("打开冰箱门")

# 第二步:把大象放进去
def put_elephant():
    print("把大象放进去")

# 第三步:关闭冰箱门
def close_door():
    print("关闭冰箱门")

# 完成三个步骤
def put_elephant_in_fridge():
    open_door()
    put_elephant()
    close_door()

# 测试程序
put_elephant_in_fridge()

1.2面向对象编程

面向对象编程(Object-Oriented Programming,简称OOP)则是一种以对象为中心的编程范式。在面向对象编程中,程序被组织成一组对象,每个对象都有自己的状态(属性)和行为(方法)。对象是类的实例,类是定义对象的模板。这种编程风格强调将问题分解为对象,并通过对象之间的交互来解决问题。对象可以封装数据和相关的操作,具有良好的模块化和重用性。

就拿日常洗手这个流程吧,简单点,水冲一下就好。

其中涉及的对象有:手、水龙头、水、毛巾。

  • 针对“手”这个对象,有 5+5=10 根手指等属性,以及“开水龙头”“关水龙头”“洗”等动作,对应的就是方法。
  • 针对“水龙头”这个对象,有开关、出水口等属性,以及“流出水”等动作。

然后就是执行:

  • 手对象进行开水龙头动作,
  • 水龙头对象进行流出水动作,
  • 手对象进行洗动作,
  • 手对象进行关水龙头动作,洗手过完成。

通过上边的例子知道,面向对象编程的方式,就是先将事件中的实体抽象成具体的对象,然后再将属性和方法封装到对象中,最后通过不同的对象执行相应的方法完成事件。

面向对象编程就是煮面的老板是个对象,方便面是个对象,我们也是个对象,叫老板煮面是个方法

再比如把对象放入冰箱这件事

在这个例子中: 我们可以把大象看作一个对象,冰箱看作一个对象。 冰箱的一些功能:开门装物体关门

在面向对象中,每个对象是独立的,有属于它自己的功能,只需要专心实现自己的功能就好。所以在建立对象模型阶段,仅仅关注对象有什么的功能,但不考虑如何实现这些功能。

面向对象对象的特点:有很好的延展性,比如我给大象赋予了一个吃的功能,它通过调用就可以在冰箱里去吃东西。面向对象就是把现实问题抽象为对象,通过调用每个对象的属性或功能去解决问题。

面向对象编程 安排/命令别人做事情,把做事情的东西抽像成对象。先整体再局部再细化     比如洗衣服,启动洗衣机,放洗的东西,按开关。

1.3 面向接口编程

面向接口编程(Interface Oriented Programming:OIP)是一种编程思想。接口作为实体抽象出来的一种表现形式,用于分离内部实现和外部沟通,最终达到内部变动而不影响外部与其他实现交互的目的。可以理解成,按照这种思想来设计编程的方式称为面向接口编程。

面向接口编程归属于面向对象编程。它是属于面向对象思想体系中的一部分,或者说它是面向对象编程体系中的思想精髓之一。

还是关于洗手的例子:

  • 对于手这个对象,可以规范出一个接口,每个人的手都可以实现这个接口。这个接口都包含基本的属性,如肤色、手指等;都包含基本的方法,如洗手、开启水龙头等。
  • 对于水龙头这个对象,可以规范出接口,每个不同的水龙头都可以实现这个接口。包含基本的属性,如材质、开关的方向等;包含基本的方法,如出水等

有了这两个接口,不管是谁、那个地方、那个国家的手或者水龙头,都可以实现上边两个接口,然后轻松完成洗手这个事件。

1.4适用场景

虽然给出的例子更倾向于面向对象编程的方式,但这确实展示了面向对象编程与面向过程编程之间的一些区别。面向对象编程强调将数据和操作封装在对象中,通过定义类和创建对象来实现。这种方式更适合于具有多个角色、复杂交互和状态管理的场景。

然而,面向过程编程也有适用的场景,特别是在简单的、线性的任务中,面向过程的方式可能更为直接和高效。面向过程编程关注的是算法和步骤的顺序执行,适合于不需要多个对象协作、状态管理较简单的任务。

适用于用户需求经常变化,性能要求不算最高的系统开发。

  • 易理解:采用面向对象思想设计开发,更符合人的思考方式,可读性高。
  • 易维护:面向对象有封装、继承、多态性的特性,即使需求有变动,需要维护的更多是局部模块,维护起来更加方便和更低成本。
  • 易扩展:面向对象有封装、继承、多态性的特性,在设计系统阶段可以设计出高内聚、低耦合的系统结构,使得系统更灵活、更容易扩展。
  • 易复用:也是同理,因为面向对象的三大特性,使得通用代码可以更简单的复用,提高开发效率。
  • 性能会比面向过程低,编程复杂度较高

在一些小规模、独立的问题中,面向过程编程可以提供简单、直观的解决方案。而在涉及复杂的系统、大规模的开发项目或需要更高的可维护性和扩展性时,面向对象编程的特性更加适用。

适用于性能要求较高的系统开发。

  • 简化了事件处理的过程,一步一步执行更加易于理解。
  • 性能比面向对象编程高,面向对象编程中类调用过程需要加载、实例化,资源消耗更大。对性能要求高的产品,比如单片机、嵌入式开发、 Linux/Unix 等,一般采用面向过程开发。
  • 没有面向对象编程易维护、易复用、易扩展

综合来看,面向过程和面向对象编程各有其适用的场景。在具体的开发过程中,需要根据问题的复杂性、可维护性要求、团队合作等因素来选择合适的编程范式。有时也可以结合两者的优势,采用面向对象编程的思想来组织代码结构,但在具体的实现细节上使用面向过程的方式来处理简单的任务。

标签:JAVA,对象,编程,接口,面向,面向对象编程,水龙头,十四
From: https://blog.csdn.net/sadfasdfsafadsa/article/details/141998563

相关文章

  • Javaweb-数据库设计案例
    1.createtablemusic( idintPRIMARYkey, titlevarchar(32), aliasvarchar(32), imagevarchar(64), stylevarchar(8), typevarchar(4), mediumvarchar(4), publish_timedate, publishervarchar(16), numbertinyint, barcodebigint, summaryvarcha......
  • Javaweb-数据库设计-多表关系实现
    createtabletb_order( idintPRIMARYkeyauto_increment, paymentdouble(10,2), payment_typetinyint, statusTinyint);createtabletb_goods( idintPRIMARYkeyauto_increment, titlevarchar(100), pricedouble(10,2));createtabletb_order_goods(......
  • java计算机毕业设计门诊电子处方管理系统(开题+程序+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景:随着医疗技术的飞速发展与信息化建设的深入推进,传统的手写门诊处方已难以满足现代医疗服务的高效、准确与安全性需求。门诊电子处方管理系统的研发应......
  • java计算机毕业设计课程教学平台设计与实现(开题+程序+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景在信息化时代,教育模式的变革日益显著,传统教学模式逐渐向数字化、网络化转型。随着在线教育的兴起,构建一个高效、便捷的课程教学平台成为提升教学质量......
  • java计算机毕业设计家乡印象网站(开题+程序+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景在快速城市化的今天,人们对家乡的眷恋与记忆愈发珍贵。随着互联网的普及,线上平台成为连接过去与现在、个人与家乡情感的重要桥梁。然而,市场上缺乏一个......
  • javase复习day18API
    游戏打包exeMathabs方法的小bug:以int类型为例,取值范围:-2147483648~2147483647如果没有正数与之对应,那么传递负数结果有误-2147483648没有正数对应则结果还是 -2147483648可以使用JDK15后的新方法absExact如果结果有误则会报错packageMathDemo1;publiccla......
  • 2025年25届最新:如何打造Java SpringBoot个人健康档案管理系统,集成Vue,实现高效信息管理
    ✍✍计算机毕业编程指导师**⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流!⚡⚡Java、Python、微信小程序、大数据实战项目集⚡⚡......
  • Java-数据结构-栈和队列-Stack和Queue (o゚▽゚)o
    文本目录:❄️一、栈(Stack):  ▶1、栈的概念: ▶ 2、栈的使用和自实现:   ☑1)、Stack():   ☑2)、push(Ee):   ☑3)、empty():     ☑4)、peek(Ee):     ☑5)、pop(Ee):    ☑6)、size(Ee): ▶3、栈自实现的总代码:......
  • Java 中的数组是如何声明和初始化的?
    在Java中,数组是一组相同类型的元素的集合,可以通过索引来访问这些元素。数组的长度是固定的,一旦创建就不能改变其大小。下面详细介绍如何在Java中声明和初始化数组,并给出一些实际开发中的使用建议和注意事项。声明数组在Java中,声明数组的基本语法如下:dataType[]arrayN......
  • 大连市第二十四中学模拟飞行社团章程(草案)
    亲爱的飞行员:你好!欢迎来到大连市第二十四中学模拟飞行社团!我们致力于为每一位喜爱蓝天的同志提供不一样的模拟飞行体验。同时,为了是您更好的了解本社团并在加入后有更好的体验,我们特在此制作本社团章程,旨在维护社团有序、和谐的运行。一.社团简介本社团全名大连市第二十四中学......