silanos_1

Analytics

ad silanors2

2010年5月28日 星期五

物件導向(Object-Oriented)使用時機?非得用嗎?


問題

使用時機?非得用嗎?



解決方法

Object-Oriented以下簡稱OO


寫程式一段時間,才對OO有一些自己的看法,可以在這分享一下!

物件導向概念
先簡單舉例說一下OO的概念
想像一下到7-11買純喫茶,您會做什麼事?
大概就差不多就是 拿到櫃檯,付錢,拿走純喫茶
那對收銀員來說,就是 收錢,找錢  全部大概就這些動作吧!

那在寫程式的時候,就會分為以上5個動作
拿到櫃檯=>收銀員收錢=>付錢=>收銀員找錢=>拿走純喫茶

而如果一寫個相關的系統,每一個動作可當做一個物件或是FUNCTION來用
如此一來,程式碼的邏輯會更簡潔,更容易理解!

說到這,寫點CODE來嚇嚇人好了!當然,這些CODE只是示意而已!

private void main()
{
    //拿產品到櫃檯
    int getprice= price("純喫茶")
    //收銀員跟您收錢
    Message.show("您好"+ getprice+"圓")
    //付錢
    int youpayprice=100//你掏出100圓
    int getreturnprice=GetReturnPriceBack(getprice, youpayprice)
    //收銀員找錢
    Message.show("找您"+ getreturnprice +"圓")
    //拿走純喫茶
    break;
}

看到這邊,感覺不會很難懂吧!
看一下每一個物件(Function)都做些什麼事!!


//拿產品到櫃檯
private int price(int product)
{
    int price = 0
    //查出產品多少錢
    switch(product)
    {
       case "奶茶": price  =10; break;
       case "純喫茶": price = 15; break;
    }
    //傳回價錢
   return price 
}


//付錢
private int GetReturnPriceBack(string getprice, string youpayprice)
{
    //計算要找多少錢
    int GetReturnPriceBack = youpayprice-getprice

    //傳回價錢
   return GetReturnPriceBack
}

那物件導向(OO)到底有什麼好處?
這樣好了,好處在哪要有比較才知道,所以下面的程式是"非"物件導向的方式顯示,看一下是否您能理解!!


private void main()
{
    //拿產品到櫃檯
    int price = 0
    //查出產品多少錢
    switch(product)
    {
       case "奶茶": price  =10; break;
       case "純喫茶": price = 15; break;
    }

    //收銀員跟您收錢
    Message.show("您好"+ price  +"圓")
    //付錢
    int youpayprice=100//你掏出100圓
    //計算要找多少錢
    int getreturnprice  = youpayprice-price  
    //收銀員找錢
    Message.show("找您"+ getreturnprice  +"圓")
    //拿走純喫茶
    break;
}
當把角色都放在一起以後,是否就很容易昏頭了呢??
所以,物件導向(OO)的程式邏輯可以很清晰
而想像一下,如果在進行大的系統開發,如果程式都沒有任何物件導向(OO)的觀念在裡面
那....幾千,幾萬行的程式....你該怎麼辦?...就悶著頭苦幹吧!!

而如果程式導入物件導向(OO)的觀念,當您要維護的時候,你只要知道"是在哪一個動作"
然後去找該FUNCTION修改就可以了,而不需要把全部的程式都看過後,才知道要改在哪裡

但是說回來了,非得用嗎?
其實,是要看場合的!
因為如果程式不複雜,而功能又不會被別的程式所使用的話,那就不需要使用啦!

怎麼說?
因為雖然物件導向(OO)好處很多,但在開發的時候,要考慮到如何獨立出來?重複性?等等..相關問題,因為物件的"封裝"的好不好,將會影響到該物件(FUNCTION)實用性,進而影響程式的開發時程,因為物件封裝可是要花很多心思的呢!!

先分享到這邊囉~



沒有留言:

as silanors3

熱門文章

bloggerads