java 什么是面对对象编程
发布网友
发布时间:2022-04-20 23:47
我来回答
共5个回答
热心网友
时间:2023-06-21 11:37
Struggle说得对。根本不是一个层次的东西。“面向对象思想”和“面向过程思想”相对,而“针对接口(抽象)编程”和“针对实现编程相对”。首先纠正楼主一个认识误区,任何编程思想都是在试图建立现实世界和计算机世界的“映射”。无论是面向过程还是面向对象或者是其它的什么思想,根本目的都是在计算机中建立现实世界的模型,通过模型的“沙盘推演”,达到解决现实问题的目的。宏观上说,无论是面向对象还是面向过程,都是一种世界观,是一种对世界的认知和划分。只不过面向过程的思想把世界划分为数据结构和函数,而面向对象的思想把世界划分为对象和方法。相对于面向过程的思想而言,面向对象思想和现实世界的“映射”更容易建立,所以现在面向过程的思想已经逐渐被面向对象的思想所取代(但是这绝不是说面向对象思想可以完全取代面向过程的思想)。c语言是面向过程思想的典范,而面向对象的思想的代表编程语言有Java和C++等(切忌语言和语法规则服务于编程思想)。任何的编程语言只是编程思想得以实现的载体。
面向接口编程本身是面向对象编程思想所提倡的一种编程规范。因为它能够最大限度的解耦,所谓解耦既是解耦合的意思,它和耦合相对。耦合就是联系,耦合越强,联系越紧密。在程序中紧密的联系并不是一件好的事情,因为两种事物之间联系越紧密,你更换其中之一的难度就越大,扩展功能和debug的难度也就越大。举个硬件例子,道理和软件相同
软盘你知道吧,骨灰级的存储工具,最初是3.5英寸的,后来变成了2.5英寸,无论哪一种,都采用软驱中的磁头读取软盘上的数据,而且存储能力都小得可怜,现在你已经很难再见到它们了。后来出现了光盘,工作原理和软盘相似,但是传输速度和存储容量都大大超过软盘。遗憾的是软驱是无法读取光盘的,硬件制造商不得不提供光驱来替代软驱。今天既是一个不懂电脑的人,也不会利用软驱读取光盘?为什么呢?起码软盘和光盘的直径就不一样,塞不进去,然而你不这么做根本原因不是因为它太过匪夷所思,而是软驱和软盘的紧密“耦合”使得软驱只能用来读取软盘。但是USB接口则不同,Intel睿智的设计者们提出了这种传输接口,它几乎能够接驳几乎所有你想得到的输入输出设备,现在无论你接驳的是外置的USB光驱,还是USB软驱,甚至是最新的比USB产生还要晚的面部识别系统他都恩那个够正常工作,硬件制造商们不需要再去费脑筋提出更新的“X驱”了。什么原因呢?因为USB接口是针对抽象“接口”设计的松耦合设备,USB接口的提供端并不知道也不需要知道接口的另一端是鼠标、键盘、摄像头还是其它的什么设备,它对任何传输进来的数据都采用相同的处理规则,管你是什么,你符合USB的传输方式我就支持你。这样你可以任意更换USB的另一端设备,而且你惊奇的发现他们都能够正常工作!软件编程也是一样,Java类库中这样的例子太多。比如Arrays.sort()方法,该方法是一个排序方法,需要利用Compareble接口的compareTo()方法,但是compareTo()方法没有任何实现,它需要你自己去编写,这是合理的因为计算机并不知道如何比较你定义的数据(是字典排序字符,还是大小排序阿拉伯数字或者其它的什么方式)。那就只好交给你自己来编写,sort方法是一个针对抽象接口Compareble编程的方法。,该方法只是专注于采用哪种排序方式,是冒泡排序还是快速排序,而不考虑具体两个对象的比较方式。具体的你最好看看api。总结一下针对接口编程给编写程序最大限度的解耦合,提供了最大的扩展性。它使得整个程序,不会因为局部的更改(无论是因为修正错误还是提供功能的扩展),而“牵一发而动全身”,造成整个软件必须重新编写。
热心网友
时间:2023-06-21 11:37
这个是相对于面向过程而说的,举个例子,以前我们写一个取钱程序大概是这样的过程:
1、输入100,int money=100;2、调用取款函数boolean cwd(int money),把100传入;3、取款函数返回OK,表示取款成功,否则取款失败;4、程序结束。
面向对象的编程,步骤如下:
1、定义一个取款机对象class ATM,具备取款能力(也就是有取款这个方法,boolean cwd()),同时具备金额这个属性(int money)
2、这时候,如果你要取钱,做以下步骤:1)输入100;2)创建对象ATM;3)把100赋值给ATM的属性money;4)执行ATM的方法cwd;5)后续判断和前面一样。
面向对象的编程,最根本的是要把一个程序分解成多个对象,对象有能力和属性,靠这些对象的能力和属性来实现程序的目的,虽然有点抽象,但是如果你的面向过程的程序写的很好的话,学习面向对象的编程是没什么问题的,适应一下就好了。
热心网友
时间:2023-06-21 11:38
把所有东西都看成是对象,每个对象都有自己的属性和方法。
面向对象是相对于面向过程来说的。
我之前看的一个视屏中的老师举了一个例子,在盖房子的时候面向过程就是把土和石头直接活在一起,然后堆成一个房子,而面向对象是,现用土做成砖头,石头做成水泥,然后再做房子。
C语言是面向过程的,就是你解决问题的思路是按照定义数据,对数据一步步处理的过程,数据和方法(数据处理函数)是分开的。
C++ JAVA等是面向对象的,对象(Object)是问题域或实现域中某些事物的一个抽象,它反映此事物在系统中需要保存的信息和发挥的作用;它是一组属性和有权对这些属性进行操作的一组服务的封装体。
面向对象编程将数据和方法封装在一个整体(类)里面,通过定义一个类,将一系列具有相同抽象概念的事物的共同特性概括起来,并在类中定义对数据的处理方法。
热心网友
时间:2023-06-21 11:38
C语言是面向过程的,就是你解决问题的思路是按照定义数据,对数据一步步处理的过程,数据和方法(数据处理函数)是分开的。
JAVA是面向对象的,对象(Object)是问题域或实现域中某些事物的一个抽象,它反映此事物在系统中需要保存的信息和发挥的作用;它是一组属性和有权对这些属性进行操作的一组服务的封装体。
面向对象编程将数据和方法封装在一个整体(类)里面,通过定义一个类,将一系列具有相同抽象概念的事物的共同特性概括起来,并在类中定义对数据的处理方法。
其实你现在不必刻意知道什么叫面向对象,你只要随着学习的深入会慢慢理解的。
这个可以举例说,比如你们班有20个学生,那么学生就是一个类,而你们班的具体每一个学生就是一个对象。
java就目前而言,跨平台是比较广的。
热心网友
时间:2023-06-21 11:39
要解释面向对象,首先你要理解面向过程的弊端,面向过程关注与问题的某一点,而不具备通用性,当同样问题出现时,只能再重复做一遍。
而面向对象,则是把问题集中在某一类事物上,即当解决某一问题时,同类的问题也一并解决掉。
不知道这样够通俗不。。