編程語言,由最初第一代的機械語言發展至今,經歷了多次「革命」,眾多的編程語言之間互相參長補短,到今天,絕大部份的編程語言都加入了物件導向(Object oriented)的元素。物件導向編程語言,相比之前的非物件導向編程語言,能令程式員更容易建立複雜、更高質素的軟件,而物件導向這個概念,亦能給我們反省現今的主流思想是什麼。

物件導向的核心概念,是在電腦內以軟件模擬現實世界裡的一些事物,跟著程式員便把事物的關係和互動,以程式表達和執行出來,進而執行了我們期望的運作,和得出我們期望的解答。電腦內軟件化的物件之間,互不相干,便以訊息互相要求另一物件執行某運作。就這個概念來看,便好像現代的主流思想,每個人都是不同的個體,有著不同的思想和價值觀,如果你想别人去為你做些什麼,便要跟他發出要求,之後被要求的便會執行你的要求,最後將結果交給你,期間便不要過問被要求者怎樣去做。由此可見,物件導向的概念,和現今的個人主意一致,不謀而合。

如果某一編程語言可以稱為物件導向,便要具備三項特質:繼承性(Inheritance)、封裝性(Encapsulation)以及多型性(Polymorphism)。

物件導向所提出的繼承性,是一個新類别可以基於一現有類别而發展出來,概念便和父子相傳相似,例如父親有某些特性或做法,其子便亳無疑問繼承了所有特性和做法,有需要時更可以進一步改變或自行修改。某些編程語言支援多重繼承,而某些則只支援單一繼承,如果是多重繼承的,便好像一個孩子同時由父母繼承其特點和做法。

至於封裝性,在編程來說便是某一個運作的內部運作,不應讓外界得知,旨在令內部運作不會被外界影響,令軟件出現問題。而封裝性給我們的反省是,我們做某些事時,我們都不希望我們的做法讓其他人知道,就算我們是被其他人要求去做某件事,我們做好了便是,除非必要,我們都不想把細節告訴别人,也許這便是現代人的個性吧。

而多型性更是有趣,其意思是當軟件運作時,某一軟件化的物件被要求執行某個運作,該物件是可以根據自己預設的做法去執行,要求者未必知道該物件實際上是怎樣做的。這件好像當一部門主管要求不同同事去做同一件事情,每位同事都可能用不同的方法去做,例如某些的做法是在某時某地方所學的,某些則可能是自學,每一位同事的做法從何而來不是重點,主管只須知道每個人都可以把事情做好便是,試想如果每位同事的做法都要由主管監督,整個部門能做到的事情也有限了。

明白物件導向的概念,可令我們反省我們現代人的思想,檢討一群人合作時的情況,而如果學生要明白為何物件導向為何如此定義,先想想真實世界的情況,便可以有更深入的了解。

逢星期五上載

圖片來源:互聯網

此文章之主持/專欄作家介紹:Herbert
資訊科技界資深工作者,學生時代受蘋果二代所啟蒙,沉迷電腦科技,尤其是軟件編程,大學時代主修計算機科學,最後以獲得哲學博士作完美終結。從事資訊科技行業超過二十年,對資訊科技界充滿憧憬和好奇,至今仍在追趕各項電腦新知,盼望能以資訊科技知識,令這個世界更美好。

版權所有©2013 創動力媒體 Dynamix