面对真实世界中的多数物品,我们是“不知”亦能用,多数事件,我们也是“不知”亦能行。当然,我们对多数的事物也不是全然无知,只不过通常是有限度的知。因之,在物品或事件所蕴含的细节都被封装(Encapsulation)起来的情况下,我们还是可以使用物品、参与事件,毫无困难。
所以,当我们打造软件物件来模拟真实世界里的事物时,也模拟了这种封装特性。由于软件物件的封装性,物件之间仅透露足以进行互动的低限资讯。对于物件的封装性,系统分析师要掌握下列要点:
1.已知操作。物件通常仅对其他物件透露自身的操作,彼此之间透过呼叫(Call)已知的操作来互动。
2.封装属性。每个物件封装着属性值,不透露给其他物件。
3.封装方法。每个物件封装着方法,仅对其他物件透露操作,但不透露其方法。
因此,系统分析师要特别注意,在分析规划物件的方法时,如果需要与其他物件互动,甚至是使用到物件本身的属性或操作时,切记要严守下列三项要件:
从上述可以发现,我们为了悍卫物件的封装特性,牺牲掉许多便利性。好比喝冰饮时不能打开杯盖,直接畅饮,非得戳一个小洞,透过吸管,小口小口吸取,十分不便。使用吸管有一个好处,不小心打翻时,不会溅得四处都是,然后还得花钱再买一罐。
严守物件的封装性,有一个好处,当需求发生变动而需要改写程式码时,变动会被局限在物件的属性和方法中,不会起涟漪效应,也不会发生牵一发动全身的连锁反应。由于软件内部的组成物件易于汰旧换新,所以软件的使用寿命延长,后续的维护成本也偏低,企业因此得到高投资报酬率,不过眼前首先要付出的代价是较高的开发成本。