寫給SA的UML/MDA實務手冊
----------
第1章-Why系統分析師需要學習UML
1.4-重要的OO及UML概念
1.4.4-封裝
面對真實世界中的多數物品,我們是「不知」亦能用,多數事件,我們也是「不知」亦能行。當然,我們對多數的事物也不是全然無知,只不過通常是有限度的知。因之,在物品或事件所蘊含的細節都被封裝(Encapsulation)起來的情況下,我們還是可以使用物品、參與事件,毫無困難。
所以,當我們打造軟體物件來模擬真實世界裡的事物時,也模擬了這種封裝特性。由於軟體物件的封裝性,物件之間僅透露足以進行互動的低限資訊。對於物件的封裝性,系統分析師要掌握下列要點:
1.已知操作。物件通常僅對其他物件透露自身的操作,彼此之間透過呼叫(Call)已知的操作來互動。
2.封裝屬性。每個物件封裝著屬性值,不透露給其他物件。
3.封裝方法。每個物件封裝著方法,僅對其他物件透露操作,但不透露其方法。
因此,系統分析師要特別注意,在分析規劃物件的方法時,如果需要與其他物件互動,甚至是使用到物件本身的屬性或操作時,切記要嚴守下列三項要件:
1.不得直接提及物件的屬性。
2.也不得假設物件的執行方法。
3.僅能夠使用到物件的操作。
從上述可以發現,我們為了悍衛物件的封裝特性,犧牲掉許多便利性。好比喝冰飲時不能打開杯蓋,直接暢飲,非得戳一個小洞,透過吸管,小口小口吸取,十分不便。使用吸管有一個好處,不小心打翻時,不會濺得四處都是,然後還得花錢再買一罐。
嚴守物件的封裝性,有一個好處,當需求發生變動而需要改寫程式碼時,變動會被侷限在物件的屬性和方法中,不會起漣漪效應,也不會發生牽一髮動全身的連鎖反應。由於軟體內部的組成物件易於汰舊換新,所以軟體的使用壽命延長,後續的維護成本也偏低,企業因此得到高投資報酬率,不過眼前首先要付出的代價是較高的開發成本。
沒有留言:
張貼留言