Skip to content

OOP & DS 介紹

物件導向程式設計 (Object Oriented Programming): 以 物件 為主要操作對象的架構,構造合適的物件與劃分清楚的權限是好設計的重點。

資料結構 (Data Structure): 大批量儲存類似物件不只有陣列一種解法,透過合適的設計,可以讓讀取、寫入、移除變得更快捷。

雖然說是 OOP 和 DS,但很多時候會在這個部分先介紹 元編程 (Metaprogramming) 的概念,因此篇也會簡單的介紹這個概念,目錄部分簡稱為 MP。

為何需要這些概念

OOP 是現代許多大型程式運作的基礎,OOP 的本身是提供一種 抽象 (abstraction) 讓程式撰寫更加直覺且更加易於維護,但付出的就是複雜的建設成本與實現成本。

DS 則是現代儲存的基礎,許多資料庫的儲存方式都是由基礎的 Data Structure 演變而來,理解 DS 對於理解許多其他程式的底層運作及進行優化很有幫助。

Metaprogramming 則是更為困難的一組概念,這個設計的本意就是讓一組程式解決很多不同的情況,或是進行編譯期優化,對於理解更加複雜的程式與簡化程式法很有幫助。

使用語言

通常在學完 C 語言後緊接著就是 OOP 的課程,因此本章教學會以 C++ 為主,跟其他語言相比 C++ 的優勢在於它的語法從 C 演變,且 OOP 的實現也是比較基礎,適合剛學完 C 語言的人。

本章架構

本章主要分成三大部分,建議順序為 C++ -> OOP -> DS -> Metaprogramming,本章與先前相同,並不會非常聚焦在實作,而會更加關注一般學習時會忽略的盲點 (尤其是元編程)與銜接現代 OOP 概念,跟別的教學相互映證。

環境配置

雖然這是沿用之前的編譯器,但有一些部份跟之前不太一樣

  • gcc -> g++
  • file.c -> file.cpp

針對 C++ 我額外推薦另一個 IDE (Microsoft Visual Studio),這很適合配置大型專案,如果你的專案可能要使用不少現成的 library,大部分的 library 對這個環境會有使用教學。