数据抽象和封装提供了两个重要优点:
【1】避免类内部出现无意的、可能破坏对象状态的用户级错误。
【2】随时间推移,可以根据需求改变和缺陷(BUG)报告来完善类实现,而无需改变用户级代码。
详细说明:
仅在类的私有部分定义数据成员,类的设计者就可以自由地修改数据。如果实现改变了,那么只需检查类代码来了解此变化可能造成的影响。如果数据为公有的,则任何直接访问原有数据成员的函数都可能遭到破坏。在程序可重新使用之前,有必要定位和重写依赖原有表示的那部分代码。
同样地,如果累的内部状态是私有的,则数据成员的改变只可能发生在有限的地方。避免数据中出现用户可能引入的错误。如果有缺陷会破坏对象的状态,就在局部位置搜寻缺陷;如果数据是私有的,那么只有成员函数可能对该错误负责。对错误的搜寻是有限度的,从而大大方便了程序的维护和修正。
如果数据是私有的,并且没有改变成员的接口,则操纵类对象的用户函数无序改变。