面向对象是什么意思?

面向过程大概明白了,虽然看过很多介绍,但是不懂什么是面向对象。总觉得面向对象和面向过程不是相对的,面向对象里包括了面向过程。但究竟什么是面向对象,能否用通俗易懂的语言描述,最好举例

早期的编程语言如FORTRAN、C基本上都是面向过程的语言,其编程的主要思路专注于算法的实现。例如下面是一个面向过程的求正整数最大值的程序:

int maxSoFar=0,price=1; //最大值maxSoFar的初始值为0,price是输入的值
while(price>0){ //循环输入price的值
if (price>maxSoFar) //输入的值price大于最大值maxSoFar
maxSoFar=price; //则maxSoFar的值为price的值
String input=JoptionPane.showInputDialog("Enter the next price"); //继续输入price
price=Double.parseDouble(input); //把字符串input转换成整数price
}
System.out.println("The maximum is "+maxSoFar); //打印最大值maxSoFar
}

该程序段主要实现了求最大值的算法,但是,如果考虑用面向对象的编程,可以是另外一种方式:
Max max=new Max( ); //max是类Max的一个对象
while(price>0){
max.updateMax(price); //对象max调用updateMax方法,更新最大值
price=max.getPrice( ); //对象max调用getPrice获得下一个price的值
}
System.out.println("The maximum is "+max.getMax( ));//对象max调用getMax方法获得最大值,并打印出来

面向对象

纯粹的面向对象程序设计方法是这样的:
1. 所有的东西都是对象。可以将对象想象成为一种新型变量,它保存着数据,而且还可以对自身数据进行操作。例如类Max中保留着数据的最大值,同时还有方法updateMax根据新加入的price值产生最新的最大值,还有getMax方法返回数据的最大值。

2. 程序是一大堆对象的组合。通过消息传递,各对象知道自己应该做些什么。如果需要让对象做些事情,则须向该对象"发送一条消息"。具体来说,可以将消息想象成为一个调用请求,它调用的是从属于目标对象的一个方法。例如上面面向对象的程序段应该是属于某个类的,比如说是属于类Shopping,则Shopping中就包含了类Max的对象max,调用方法updateMax就相当于Shopping对象对max对象发出一条指令"updateMax",要求对象max重新计算最大值。

3. 每个对象都有自己的存储空间。可容纳其它对象,或者说通过封装现有的对象,可以产生新型对象。因此,尽管对象的概念非常简单,但是经过封装以后却可以在程序中达到任意高的复杂程度。

4. 每个对象都属于某个类。根据语法,每个对象都是某个"类"的一个"实例"。一个类的最重要的的特征就是"能将什么消息发给它?",也就是类本身有哪些操作。例如max是类Max的实例。
请采纳答案,支持我一下。
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-10-01
人类解决问题的方法就是分而治之。所以,不管是面向对象还是面向过程,本质上都是对问题进行分解。 区别是面向过程把问题分解为一系列的步骤,这些步骤再分解,直到你能很容易实现为止,相当于算法分解。而面向对象则把问题分解为一系列相互协作的对象,这些对象再分解。系统中的每个对象都代表与问题相关或者与实现相关的实体,那些与问题相关的对象是问题的组成部分,而与实现相关的对象是具体实现所使用的辅助实体,与问题本身无直接联系。系统中所有对象的相互协作和配合实现了整个系统的功能。系统中所有的对象和他们之间的关系构成了系统的组成部分结构。通常所说的抽象、封装、模块化、层次结构则是对对象进行描述和分类。通过结合抽象、封装、继承、多态等等要素可以得到类层次结构。类层次结构和组成层次结构称为面向对象系统的架构。所以面向对象主要是建立对象结构和类层次结构,而面向过程则是建立“算法”(过程)的层次结构。面向对象的底层需要面向过程来实现,但是对于高层次的地方,面向过程就不能使用,所以面向对象在抽象的层次上处于比面向过程更高的层次。

举个例子,汽车的制造我们可以从两个方面来考虑:1.我们可以认为汽车的制造是一系列过程的产物,而每个过程有包含子过程,给定适当的材料,经过一系列步骤的加工,最终生产出一辆汽车。2.我们也可以认为汽车的制造是由不同的工厂相互协作完成的,每个工厂有自己的工人和机器,每个工人、每台机器、每家工厂各司其职,最终完成一辆辆汽车的制造。通过观察,我们会发现有一些工人他们有很大的相似性(如他们都穿同样的工作服,生产同样的零件),这时我们会建立一个类来描述他们之间的相似性(抽象)以及定义一个接口规定他们的职责(封装);同样经过观察我们也发现即使是不同的类(如生产不同零件的工人),他们之间也具有某些相似性(比如都在同一家工厂生产零件),但是在相似的地方又有区别(不同种类的工人生产不同的零件),这时我们使用基类(继承)来描述相似性,使用虚函数(多态)来描述相似中的差异。通过上面的分析,我们建立了组成和类层次结构,用面向对象的方法描述了汽车的制造。追答

实际上的,好的面向对象架构的设计是非常困难而且需要丰富的经验和敏锐的洞察力,所以是非常具有挑战性的方面!

本回答被提问者和网友采纳
第2个回答  2020-10-09

先声明,我转载的,源自:网页链接

世界上有loli控,御姐控,女王控,所以有句话就叫万物皆可控

面向对象也是一样,万物皆对象

对象这个词你可以理解为一个总称,比如男人女人都叫人,蜡烛皮鞭高跟鞋都是道具,所以面向对象原本的意思是“都叫对象”,翻译过来不是原汁原味了而已因此,房子是对象、飞机是对象、猫是对象、树是对象、女朋友也是对象,并且对象具有唯一性:你家的房子是你家的,不是我家的,你在国外看到的美女不是我在国内看到的美女,你的身份证号和我的身份证号不一样

那么一个房子里都有啥呢,有电脑,还有动作片光盘、战争片录像带、人体艺术杂志……现在这些“包含”在房子里的东西就不是东西了,而是叫做“属性”……

对象、属性都有了,剩下就是方法了方法也很好理解啊,意思就是你想要得到某种结果,就需要用特定的方法比如你女朋友生气了要哄吧,不高兴了要逗她开心吧,“哄”和“逗”这些就是让女朋友死心塌地的方法……诸如此类,发现一个美眉要用“追”这个方法,和女朋友逛街上碰到美女要用“窥”这个方法,恋爱都要用“谈”这个方法……

——对象就是一个概念,把所有的事物都称作为“对象”(没有不是对象的东西)——属性就是该事物的组成部分,所有可以被包含的部分都称为“属性”(没有不含属性的对象)——方法就是达成目标的途径,所有可行性的行为都成为方法(没有不存在方法的对象和属性,但是可以选择使用哪些方法)

所以在设计时要建立正确的对象:咱要找的是MM,不是恐龙,你建立芙蓉姐姐这个“对象”就很明显不是正常人了决定正确的对象了之后,要搞清她的脾性爱好——该对象的属性是:身高165cm,体重45kg,三围84cm、66cm、86cm,单身然后你要用正确的方法来追求,聊天(参数是时尚、美容等等……),看电影(爱情片、恐怖片、韩国泡菜),送花(3朵、11朵、999朵)

现在该明确对象、属性、方法的定义了吧

然后就是封装、继承、多态

封装就是要保护好女朋友,不能被别人勾引过去,因为要让她“只能”听信你得花言巧语,没追到手前不要介绍给别人的帅哥,所以自己的老婆是自己的,不能给别人,这就是“私有性封装”再比如,你的账户——这个对象,有钱——这个属性你中彩票1个亿,亲朋好友都找你们借钱,你们觉得亲戚里道的,借就借呗,这钱就是“局部性封装”要是中彩票100个亿,满大街撒钱,这就是“全局性封装”——封装就是决定该对象的使用范围,当然,你要让我帮你花我也不介意效劳的

继承,你的家产如果不捐献的话,那么你的儿子是自然继承人,这叫单重继承,你7、8个子女分家产,这叫多重继承……并且,如果不把意外伤害受益人写成别人的,别人是不能继承的……——继承就是决定该对象的属性、方法可以被哪个对象使用

多态,比如说你擅长做中餐,你儿子擅长做西餐,你女儿擅长做点心,现在你有一个铁哥们上你家串门吃饭,他使用吃饭这个方法——你家.吃饭(中餐),就能尝到猪肉炖粉条,使用——你家.吃饭(西餐)就能吃到牛排,使——用你家.吃饭(点心)就能尝到面点,这就是“吃饭”这个方法的多态性,因为不能限制吃饭只能吃一种东西啊,如同开门可以用钥匙,也可以划卡,还可以遥控等等——多态就是同一种方法的不同运作方式。

相似回答