物件導向編程

物件導向程式編寫object-oriented programming),程式編寫範式嘅一種。喺用物件導向程式編寫編寫電腦程式嗰陣,以「物件」(object)做基本單元,亦即樣樣以物件來設計。物件嘅行為,稱之為方法。物件嘅資料結構,稱之為欄位,或者特性等。有啲程式語言,專門協助人以物件編寫,就叫物件導向程式語言,但唔用都一樣寫到,只係無咁方便。

大多數依類程式設計當中啲物件都有返啲範本嚟參照造出,即類別(class)。類別即意指啲造出物件都會係同一類而冇咁立亂(之但係類別唔一定就係攞嚟造物件嘅,見「抽象類」)。攞嚟造物件嘅類別就好似一個餅模可以造出好多同款唔同味嘅餅噉,造得出啲同款唔同數嘅物件。某個類別造出來嘅嗰啲物件,亦稱為呢個類別嘅實例;對應「造出」呢個過程就係「實例化」。啲實例入便,都各自帶埋自己嘅資料或者數據。至於有邊幾欄資料,就經已由類別寫定。每欄資料稱之為變數。同一個類別生出來嘅物件佢哋有嘅變數都一樣,之但係啲變數所載內容可以唔同[1][2]。前述係對大多數物件導向程式嚟講,之不過,物件導向程式語言有好多隻,未必一定要噉。例如動態程式語言可以設計到中途加減得欄位。

依種程式寫法,會更貼近現實世界思維。有關嘅資料同行為,都會歸一喺物件之內。行為都係物件同自己,或者物件同物件之間,咁較易管理。

查實咁寫法可以追到一九六七年時,Simula程式語言改動到配合物件導向,物件、類別、承繼依啲概念,都係嗰時出來。

物件導向程式編寫,繙自英文object-oriented programming

繙譯而言,臺灣叫嘅物件導向,中國大陸叫嘅面向對象,都繙自英文object-oritented。然而兩者繙譯都有不善之處。依處object比擬世界上嘅物件,叫對象差實有偏差。而依處oriented並非導向之意,亦非面向之意,而係以嗰樣嘢為中心,以嗰樣嘢為方針,object-oriented意思為「物件為本」咁去編寫程式,亦即編寫程式以物件來設計。

例如以下呢段 C++ 噉:

class Car { // 「Car」係一個類別。
  public: // Car 嘅每一個實例(每件屬於 Car 嘅物件)都會有以下呢啲變數...
    string brand; // 牌子
    string model; // 型號
    int year; // 年份
};

呢種做法喺好多應用上都好幫到手令個程式更加容易打理,例:一位遊戲製作師喺度編寫佢隻新遊戲遊戲程式,佢想創造一個遊戲世界俾玩家喺裏面移動;佢想個虛擬世界設計成好似一個現實嘅城市噉,度緊個城市其中一條街要點設計,佢想條街有幾架車泊咗喺度做背景,佢可以設定一個「車」嘅類別,個類別每個實例都有「色水」同「位置」等嘅變數,然後叫個程式將「建構一個車嘅實例」呢樣嘢做三次-就唔使吓吓都重新打過「建構一個車嘅實例」嘅碼[3][4]。因為 OOP 咁好使好用,有好多常見嘅程式語言都支援 OOP,包括咗 C++JavaScriptC#Python... 等等。

睇埋

參考文獻

  • Armstrong, Deborah J. (February 2006). "The Quarks of Object-Oriented Development". Communications of the ACM. 49 (2): 123–128. doi:10.1145/1113034.1113040.
  • Pecinovsky, Rudolf (2013). OOP – Learn Object Oriented Thinking & Programming. Bruckner Publishing. ISBN 978-80-904661-8-0.
  • Schach, Stephen (2006). Object-Oriented and Classical Software Engineering, 7th Edition. McGraw-Hill. ISBN 978-0-07-319126-3.
  • Weisfeld, Matt (2009). The Object-Oriented Thought Process, 3rd Edition. Addison-Wesley. ISBN 978-0-672-33016-2.
  • West, David (2004). Object Thinking (Developer Reference). Microsoft Press. ISBN 978-0735619654.

  1. Kindler, E.; Krivy, I. (2011). "Object-Oriented Simulation of systems with sophisticated control". International Journal of General Systems: 313–343.
  2. Lewis, John; Loftus, William (2008). Java Software Solutions Foundations of Programming Design (6th ed). Pearson Education Inc. ISBN 978-0-321-53205-3., section 1.6 "Object-Oriented Programming".
  3. Quick Tip: Intro to Object-Oriented Programming for Game Development.
  4. Jacobson, Ivar (1992). Object-Oriented Software Engineering: A Use Case-Driven Approach. Addison-Wesley.