我所理解的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)是种具有对象概念的程序编程典范,同时也是一种程序开发的抽象方针。它可能包含数据、属性、代码与方法。对象则指的是类的实例。它将对象作为程序的基本单元,将程序和数据封装其中,以提高软件的重用性、灵活性和扩展性,对象里的程序可以访问及经常修改对象相关连的数据。在面向对象程序编程里,计算机程序会被设计成彼此相关的对象

 

是不是就容易理解了呢,当然,这只是面向对象其中的一个特性,以后会在文章中慢慢展开讲解

 

posted @ 2018-01-17 22:39  粘锅咸鱼Eric  阅读(105)  评论(0)    收藏  举报