# 物件導向設計分解過程 頭腦風暴Brainstroming: 列出問題的可能Class清單。 篩選Filtering: 確認核心Class。 場景Scenarios: 分配責任。 責任演算法Responsibility Algorithms: 為每個Class的責任寫出演算法。 # 程式執行 * **編譯器Compiler** 一次轉成機器碼。通常比直譯器快,因為只需翻譯一次。 * **直譯器Interpreter(解釋器)** 逐行翻譯並直接執行(不產生機器碼)。 * **組譯器Assembler(彙譯器)** 逐行翻譯成機械碼,相較於高階語言**移植性更低** * **JAVA** 先**編譯**成 Bytecode,再由 JVM (Interpreter) 執行 * **Bytecode** 一種中間代碼,需要直譯才能變成機械語言。 編譯器 # 範式Paradigm * **指令式範式Imperative Paradigms** 注重於解決問題的過程(要怎麼做)。 - 程序範式Procedural Paradigms 將程式的語句分組成子程序,每個子程序執行解決整個程序所需的特定任務。 例如C、Python、JAVA。 - 物件面向範式Object-Oriented Paradigm 資料物件是主動的。物件及其被操作的程式碼被捆綁在一起 使每個物件都負責其自身的操作 - responsibility 例如JAVA(偏向於物件面向)、Python。 * **宣告式範式Declarative Paradigms** 注重於想要達到的結果(要做什麼)。 - 函式: 基於數學函數的概念,問題的解決以函數呼叫的形式表達 沒有變量,也沒有賦值語句。例如,兩個值的加法可以這樣表示:(+ 30 40) - 邏輯: 從規則推斷出答案。 ``` owns(mary, bo). owns(ann, kitty). owns(bob, riley). ``` owns是關係名稱,對象位於括號內, 表示mary擁有bo或bo擁有mary取決於設計師,但須保持一致 # Functionality of Object-Oriented Languages * **Encapsulation 封裝** 封裝的實現機制是**Class**。 將數據和操作捆綁在一起,以使數據的邏輯特性和操作與**實現細節分離**。 這樣一來,封裝強制實現了**信息隱藏**。 * **Inheritance 繼承** 層次結構中的Class位於越下層,就會繼承其父Superclass的所有行為和數據(資料越複雜) 。 ``` Person class Superclass:無 Derived class:Student Student Class Superclass:Person Derived class:無 ``` * **Polymorphism 多型、多態性** **具有相同的名稱但不同的實現方法,根據調用對象的不同而執行不同的版本** 使得代碼更容易維護且更具擴展性 ``` 考慮一個稱為 Animal 的基類別,派生出 Dog 和 Cat 這兩個子類別。 假設這些類別都有一個名為 MakeSound 的方法, 但每個類別的 MakeSound 方法實作都不同。 當你調用某個 Animal 類別的實例的 MakeSound 方法時, 系統會動態選擇執行該實例實際所屬類別的 MakeSound 方法 ``` # Boolean Expression | Symbol | Meaning | | -------- | --------| | **!=** or **<>** or **/=** | Not Equal | | **=** or **==** | Equal | # 物件導向設計OOD 將數據和操作封裝在class中,**封裝性**、**重用性**、**維護性**、**擴展性**。
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up