我所理解的JAVA面向对象
买奶茶问题:
提出问题:
Q:我今天要喝奶茶(专门百度了一下奶茶怎么做)
方法1-自己做:
我——用钱去——买——红茶、牛奶、水、乳糖、椰果、香精
我——用厨具——煮——红茶
我——把各种调料——混合在一起
我——得到——奶茶
这种方式用代码来表现就是:
Person me = new Person(); Tea tea = new Tea(); Milk milk = new Milk(); ... Water water = new Water(); tea = me.buyTea(money); milk = me.buyMilk(money); ... water =me.buyWater(money); HotTea hotTea = me.boilTea(tea); TeaMilk teaMilk = me.completeTeaMilk(hotTea,milk...water);
me.setTeaMilk(teaMilk);
虽然思想是按照面向过程的思想来写,但代码的写法还是面向对象的写法。从面向对象的角度来讲,这是一分写的非常烂的代码
可以看到的是,最后能合到奶茶,我们需要经过很多步骤,而且每一步都必不可少。
1.如果原材料不齐,做出来的就不叫奶茶;
2.如果没有加热,做出来也没有奶茶的味道;
3.没有最后混合在一起的步骤,也做不出成品来。
每一道工序,又可分为很多内容,比如买材料要先带上钱,出门去超市,选购,付钱等等,这些在我们看到是非常简单的事情,可是放到计算机的语言来看,往往会边的很复杂,所以真正要自己实现这个过程需要的步骤特别多
也就是作出一份非常简单的奶茶,我们要经过很多复杂的工具,而且每一个步骤都缺一不可,这就是之前的面向过程编程的思想。
按照现在正常人的思维,我们手里有钱,为什么要自己一步一步去做奶茶,于是,就有了奶茶店
方法2-去奶茶店买:
我——用钱——去奶茶店买
我要实现的功能用代码表示为
Person me = new Person(); TeaMilkShop teaMilkShop = new TeaMilkShop(); TeaMilk teamilk = teaMilkShop.buyTeaMilk(money,taste); me.setTeaMilk(teamilk);
可以看到,现在我得到奶茶的步骤特别简单,用钱从奶茶店买就行了
真正做奶茶的功能被封装在TeaMilkShop类里面了,我们只需要用把钱money和口味taste作为参数传进去就能得到我们想要的奶茶了
用代码表示奶茶店的功能为:
public class TeaMilkShop(){ private Person worker; private Money money; private Machine machine; private Ingredient ingredient; private TeaMilk teaMilk; public TeaMilkShop(Money money){//构造函数表示开店 this.worker = Company.employWorker(money); this.machine = Market.buyMachine(money); this.ingredient = Shop.buyIngredient(money); } private teaMilk doTeaMilk(Taste taste){ ... ... ... } public buyTeaMilk(Money money,Taste taste){ this.money += money; return doTeaMilk(taste); } }
把做奶茶所有的功能都让奶茶店去完成,我们关心的只有两点:
1.找到奶茶店
2.用钱买自己喜欢口味的奶茶
作为人这个个体,我们不在关心奶茶到底怎么做的,这样,当有一千个一万个我需要奶茶的时候,都可以调用奶茶店的方法得到,而不是需要每次都取自己买食材,自己煮红茶,自己做
简而言之:
奶茶店——做奶茶
我——去奶茶店买奶茶
我们据此再来理解一下面向对象
面向对象程序设计(英语:Object-oriented programming,缩写:OOP)是种具有对象概念的程序编程典范,同时也是一种程序开发的抽象方针。它可能包含数据、属性、代码与方法。对象则指的是类的实例。它将对象作为程序的基本单元,将程序和数据封装其中,以提高软件的重用性、灵活性和扩展性,对象里的程序可以访问及经常修改对象相关连的数据。在面向对象程序编程里,计算机程序会被设计成彼此相关的对象
是不是就容易理解了呢,当然,这只是面向对象其中的一个特性,以后会在文章中慢慢展开讲解

浙公网安备 33010602011771号