物件 (電腦科學)

出自維基百科,自由嘅百科全書

物件導向編程上,一件物件英文object)係指一個類別(class)下嘅一個實例,具有某柞特定嘅變數特性)同子程序方法)。

概論[編輯]

內文:物件導向編程類別 (電腦科學)

物件導向編程(OOP)係一種編程範式,根基概念係類別(class)同物件。喺最基本嘅 OOP 當中,個程式裏面啲物件多數都係有返啲範本嚟參照造出嘅,呢啲範本就係所謂嘅類別-一個類別會講明屬於呢個類別嘅物件每一件會掕住嘅

而一件物件就係佢所屬嗰個類別嘅一個實例(instance),即係按個類別嘅模嚟造出嘅[1]。用以下嘅 MATLAB 做例子[2][3]

classdef BasicClass % 定義 BasicClass 呢個 class...
   properties % 呢個 class 有以下呢啲特性...
      Value {mustBeNumeric} % Value 係唯一一個特性,一定要係一個數...
   end
   methods % 呢個 class 有以下呢啲方法...
      function r = roundOff(obj) % 每個 function 都係一個方法...
         r = round([obj.Value],2);
      end
      function r = multiplyBy(obj,n)
         r = [obj.Value] * n;
      end
   end
end

...

a = BasicClass; % 創造一件叫 a 嘅物件,件物件屬 BasicClass 呢個 class。
a.Value = pi/3; % a 嘅 Value 設做 pi/3(圓周率除 3)咁多。

OOP 嘅諗頭源自 1960 年代[4],到咗 1990 年代經已成為咗其中一種最重要嘅程式編寫範式。噉係因為事實表明喺好多應用上,類別同物件嘅做法都幫到手令個程式更加容易打理:舉例說明,想像有位遊戲製作師喺度編寫佢隻新遊戲程式,佢想創造一個虛擬世界玩家喺裏面郁動;佢想個虛擬世界設計成好似一個現實嘅城市噉,度緊個城市其中一條街要點設計,佢想條街有幾架泊咗喺度做佈景,佢可以設定一個「車」嘅類別,個類別每個實例都有「色水」同「位置」等嘅變數,然後叫個程式將「建構一個車嘅實例」呢樣嘢做三次-就唔使吓吓都重新打過「建構一個車嘅實例」嘅碼。有研究者指,依種程式寫法能夠令個程式嘅運作更加貼近現實世界嘅思維,而且彼此相關嘅資料同行為,都會歸一喺一件物件之內,會比較易管理[5][6]

物件同類別可以比喻成整餅;攞嚟造物件嘅類別就好似一個餅模可以造出好多同款唔同味嘅餅噉,個程式可以將嗰四件物體當成喺「顏色」呢個變數上唔同、但屬同一個類別嘅物件。

註釋[編輯]

  1. 技術性啲噉講,個類別有嗰啲變數就係所謂嘅類別變數,而是但搵個類別變數 X,個類別嘅每個實例都會有一個對應嘅實例變數 Instance.X

睇埋[編輯]

參攷[編輯]

  1. Booch, Grady (1986). Software Engineering with Ada. Addison Wesley. p. 220.
  2. Kindler, E.; Krivy, I. (2011). "Object-Oriented Simulation of systems with sophisticated control". International Journal of General Systems: 313–343.
  3. 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".
  4. McCarthy, John; Abrahams, Paul W.; Edwards, Daniel J.; Hart, swapnil d.; Levin, Michael I. (1962). LISP 1.5 Programmer's Manual. MIT Press. p. 105. ISBN 978-0-262-13011-0. Object - a synonym for atomic symbol.
  5. Quick Tip: Intro to Object-Oriented Programming for Game Development.
  6. Jacobson, Ivar (1992). Object-Oriented Software Engineering: A Use Case-Driven Approach. Addison-Wesley.