2022年3月26日星期六

物件導向

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

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

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

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

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

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

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

沒有留言:

發佈留言

千言萬語

 電腦這個詞語,給我們的感覺是一件像我們人類腦袋的東西,擁有記憶,懂得思考,但是在英文原字Computer,其實只指是一部懂得運算的設備而已,能令一部只懂得運算的設備變成一部像我們人類般思考,懂得完成無數的工作,是隨著電腦發展而被研發出來的程式語言。到了今天,已經有數以千計的程式...