/*
以下是 C++/OOP 課程的主題與時數。雖細分為 C++ 和 OOP 兩個子題,
但上課時彼此有所融合,很難涇渭分明。

一般而言,題目如下所列。因應學員的程度不同及需求不同,則有不同的
上課方式與進度,時數也將因此有所調整。因此,可能調整開出 6 小時、
12 小時、18 小時、或 24 小時的課程。一個課程的成功,教學雙方的
課前溝通佔重要因素。通常我喜歡為要課單位量身打造課程,這很難在
主題上看出端倪,因為主題基本不變。所謂「量身打造」主要是在
上課時根據學員的反應,逐漸修正上課的方向、進度、焦點。


課程一:C++ 語言精要
時數:12 小時
適合對象:C++/OOP 的完全初學者,或是曾經概略接觸過 C++ 語言,
          概念模模糊糊,尚未有實務經驗者。
教材:通常我會選一本書為主要行進依據,再輔以講義。
課程主題:
◎tools, resource, recommended books...
◎classes and objects
◎C++ object model : object size, this pointer.
◎initialization, construction(ctor), destruction(dtor), assignment(operator=).
◎functions overloading, name mangling, extern "C".
◎operator overloading:operator++, operator*, operator(), operator->
◎implicit type conversion (single-argument ctor, type conversion function)
◎pointer and reference. by value vs. by reference.
◎constness, inline functions
◎C++ standard library (included STL)
◎inheritance and composition
◎class templates and function templates


課程二:C++/OOP 物件導向程式設計思維與技術
時數:12 小時
適合對象:對 C++ 語法以及語言的全貌已有概念,曾經在專案上使用過 C++.
          希望對 OOP 有更精進掌握者.
教材:通常我會選一本書為主要行進依據,再輔以講義。
課程主題:
◎Inheritance and Virtual Functions
◎Polymorphism in C++
◎C++ Object Model for Inheritance
◎RTTI, Cast Operators
◎Exception Handling
◎Effective C++ Programming (based on Scott Meyers's two books)
◎Interface Inheritance vs. Implementation Inheritance.
◎Memory Management (new operator, operator new,
                     delete operator, operator delete, auto_ptr...)
◎Framework Infrastruction
◎Patterns:Proxy classes, Double Dispatching,
            Reference Counting, Smart Pointers

-- the end
*/