雖然 C 語言沒有直接支援物件導向程式的語法,但我們可以在一些真實世界的專案看到具有物件導向思維的 C 程式碼。本文介紹以 C 語言撰寫具有物件導向思維的程式碼。 繼續閱讀
真正的物件,要有狀態和行為間的連動。狀態以資料的形式儲存在物件的屬性上,行為則是透過函式來實作。C 語言並沒有真正的物件,只能撰寫在精神上貼近物件的函式。在本文中,我們會以平面座標中的點為例,展示兩種物件的寫法。 繼續閱讀
若物件有進行封裝,除了透過公開介面外,我們無法更動該物件內部的狀態。C 語言不強調封裝的概念,所以我們要重新思考封裝在程式碼中的意義。封裝的目的是資訊隱藏,也就是說,只提供最少量的必要資訊,其他的部分則不開放給外部程式。 繼續閱讀
C 語言無法從語法上直接獲得繼承這項特性,所以我們要將繼承從表面上的意義抽離,思考繼承在程式碼的本質。基本上,繼承是一種共用程式碼及實踐子類型的方式。雖然 C 沒有繼承的語法,但我們可以用物件組合來達到程式碼重用以及模擬繼承的目的。 繼續閱讀
基本上,C 缺乏對多型的直接支援,要用一些方法去模擬。在本文中,我們使用函式指標的方式去模擬多型。 繼續閱讀
近年來,物件導向程式設計 (object-oriented programming) 是程式設計主流的模式 (paradigm)。本文將介紹如何在 Go 撰寫物件導向程式。 繼續閱讀
由於 C 不直接支援多型,我們要用一些手法來模擬。在上一篇文章中,我們使用函式指標,在本文中,我們使用聯合 (union) 來模擬多型。 繼續閱讀
Go 缺乏繼承的機制,我們無法透過繼承來達到多型的效果。為了處理這個議題,Go 引入介面的機制,也就是本文的主題。 繼續閱讀