基礎觀念導引 - 何謂靜態與動態?

靜態結構 (Static Structure)

  • 表達軟體內部的結構設計。
  • 一般指程式原始碼 (Source Code)。
  • 軟體人員對資訊系統的設計契約 (Design Contract)。

靜態結構的設計契約

public class myclass {
	public void method_1() {
		//do something
	}
 
	public string method_2(string var) {
		//return a string
		return var;
	}
}

誰來解讀設計契約?

  • 一般指軟體資訊系統或應用軟體伺服器 (Application Server)。
  • ie. 可以編譯 C#.NET 程式碼 (設計契約)並能在 .NET 平台上執行應用程式。
  • 可以編譯 Java Spring 程式碼並能在支持 JEE (Java Enterprise Edition)平台執行完成編譯的應用程式。

動態相依 (Dynamic Dependency)

  • 系統在執行某一特定功能時,所啟始不同的程序單元之間呼叫的一種動態相依關係。
  • 一般指程式碼經過編譯後在執行期間 (run-time)的應用程式。
  • 資訊系統履行軟體人員的設計契約,使之可以在其平台上執行。


靜態設計契約 vs. 動態物件間的相依關係

範例-靜態的程式碼設計契約
範例-靜態的程式碼設計契約

範例-動態物件間的相依關係
範例-動態物件間的相依關係

從物件導向角度來看待時

  • 類別 (Class):Developer 對系統的設計契約。
  • 物件 (Object):系統依據 Developer 的設計契約 (類別)在執行期間所產生的個體 (instance)。

推論-靜/動態 與 類別/物件的關係

  • 靜態結構 = 類別設計 (Class Design)。
  • 動態相依 = 物件之間的互動合作 (Object Collaboration)。