# [筆記]物件導向語言 ## (一)特色 ### 1. 封裝性 * 利用類別Class來實作抽象化的資料型態 * 汽車藍圖(Class)來實作汽車實體 (Instance) * 汽車藍圖可能包括:外觀、車色、方向盤等等 ```c= class car{ color } car1=car() car2=car() car1.color="red" car2.color="white" ``` * 抽象化的定義 * 使用者僅能定義方法(Method)來操作介面,而不能直接使用資料,符合<資料隱藏(Information Hiding)> ### 2.繼承 * 減少程式碼重複性 * 假設汽車與飛機都有共同的Drive方法,為了減少重複而使用父子繼承方法(父:Drive,子:繼承Drive). ### 3.多形 * 一樣東西有多種不同的形態 * 同樣是Drive父類別,但子類別的Drive可使用同方法名稱但不一樣的實作 * 交通工具都是開,但是飛機是用飛的開而汽車是行走的開 ## (二)與物件導向相對的是函式語言(functional programming) ## (三)[SOLID基本原則](https://skyyen999.gitbooks.io/-study-design-pattern-in-java/content/oodPrinciple.html) 學好SOLID可幫助程式設計師寫出好維護、易擴充的程式架構。不必因為牽一髮而動全身 [七天學會設計模式:設計模式也可以這樣學](https://www.books.com.tw/products/0010750585) * S : Single Responsibility Principle (單一職責原則) * 一個類別只負責一件事情 * O : Open Closed Principle (開放封閉原則) * 可以擴充新功能,但不可影響舊功能 * L : Liskov Substitution Principle (里氏替換原則) * 在一個系統中,子類別應該可以替換掉父類別而不會影響程式架構。 * 子類別應可以執行父類別的事件 * I : Interface Segregation Principle (介面隔離原則) * 把不同功能的功能從介面中分離出來 * D : Dependency Inversion Principle (依賴反轉原則) * 高階模組不應依賴低階模組,兩個都應該依賴在抽象概念上  ## (四)程式=物件+互動 * 物件是具體存在的事物,而互動則是事物之間的相互作用及互動。 * 具有擴充性(系統因應需求變化時,比較容易擴充) * 應用在經常變化之處 ## (五)甚麼是類別? * 相似事物的統稱(動物、植物、微生物) * 只要相似物就是同一類! * 人、豬,都是哺乳類 * 人、樹,都是生物
×
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