# DS_Data Abstraction {%hackmd theme-dark %} ## OOP * OO語言可建立類別的實例 * 類別包含: * 屬性(單一型態) * 數據 * data member * 行為(操作) * 操作數據 * methods or member functions * 四特性 * 抽象(Abstraction) * 屬性+行為 * 封裝(Encapsulation) * 隱藏內部細節(不用管怎麼實作) * 繼承(Inheritance) * 可從其他類別繼承特性,並進行擴充、修改、重複使用 * 多型(Polymorphism) * 在執行階段決定適合的方法 ## C++ namespace 把identifiers(宣告、定義)包成邏輯群 如果A寫了一個X類別,B也寫了一個X類別,解決整合會衝突的問題 常用於專案合作 ```cpp namespace A{ class X{...}; } namespace B{ class X{...}; } ... A::X x_a; B::X x_b; ``` ## C++ exceptions * 處理例外 * try, catch ```cpp try{ } catch(const std::exception &e){ // 抓std:: exception } ``` ```cpp try{ } catch (...){ // 什麼都抓 } ``` ```cpp try{ throw 123; } catch (int x){ } ``` ### Custom Exception ```cpp class MyException : public std::exception{ // inherit public: char *what(){ // override return "MyException"; } }; ```