摘要:抽象化 - 物件導向的第一步 (個人觀點)
以前的我不知道什麼是抽象化(Abstraction),現在觀念也不是很深植,
(註:本篇不談論抽象類別跟介面實作問題,而是導入將事物程式化之論點)
或許現在正在看這篇文章的你也是一樣。
不知道你會不會覺得,物件導向裡的專有名詞總是那麼深奧無法親近,以前的我是這麼覺得的,
光看這些專有名詞有的可以一目了然,例如繼承性(Inheritance),
如果一點概念的人或許大約可以知道它的意思什麼,但之前的我,常常看到「抽象化」這個名詞,
但我完完全全不知道它的大意什麼,還常常與知名畫家畢卡索的「抽象畫」作思考,
直到最近我大約知道它的大意是什麼了,或許接下來我談論的只是狗屁什麼的,那你也可以大大聞一聞就算了,呵^_^
抽象化跟你在建立物件時有很大的關係的,你在建立物件或可說是類別(Class)時,一定都會想著一件事,
這個物件會有什麼功能或這個類別裡面有什麼屬性(Property)和方法(Method),
這些這些其實你就是在幫你的物件與類別作抽象化的動作。為什麼呢?
我們都知道物件導向中所說的物件充斥在我們生活週遭,很多關於物件導向的書一定會跟你說,
你身邊每個東西都是物件,包括你自己也是(因為很多理論也喜歡用人類來比擬是個物件)。
看到這邊,如果再看我接下來所說的應該就大約可以知道抽象化了,
當你在分析你身旁某個東西的特性或外觀時,就已經在作抽象化的動作了。
當然了一般都要舉例才會比較容易明白,例如說,今天你要寫一支 "電視類別" ,
必須要有一些功能,像是可以開關電視機、調大小聲、切換頻道等等,
當你知道這樣功能而想把這些功能程式化到你的類別裡時,這個動作就是抽象化了。
看到這裡,你可能知道為什麼標題要下「抽象化 - 物件導向的第一步」
你必須要知道你的物件要什麼功能、外觀是什麼樣子,這樣才可以繼續實作下去不是嗎?