星期二, 3月 06, 2007

Data Abstraction

在《The C++ Programming Language 2/e》中看到一段話:

We could implement this Stack in several ways. It is important that a user doesn't need to know how we do it. As long as we keep the interface unchanged, a user will not be affected if we decide to re-implement Stack.

這一小段話已大略闡述 Abstraction 的精隨,就 class 的層面來說,使用者只需要知道此 class 的用途、有哪些 public member function 可用、及這些 function的使用方式和功能。對於此 class 有哪些 private data member,甚至 member function 如何寫成一概不知,也可說完全沒必要知道。

若牽扯到維護層面,只要 class 的撰寫者不改變任何公開的介面(interface 只是個空殼,實體隨撰寫的考量而變,但功用需維持一致),使用者也就不用做任何變更。這也是 object-oriented programming 的分層維護,撰寫者只需針對自己的 code maintain。

以上只是 Data Abstraction 的一些要點,若進一步鑽研,可以請教向上學長 XD

沒有留言: