📝📝:物件筆記|監視器
全世界的監視器安裝的位置出奇的一致,皆是裝在電線杆上或是大樓建築物的外牆上,而監視器安裝的位置也是常人的視線難以觸擊的高度。

什麼是OO?物件導向與多型
這次我們要討論的是多型 (Polymorphism)。多型可能是最難以一些簡單言語加以解釋的概念,請各位在看下文時,多加思考在什麼的情境下,我們適合使用多型?按照慣例,先上維基百科,讓我們來看看物件導向中的多型是指什麼 ?多型指為不同資料類型的實體提供統一的介面。

物件導向中的介面與抽象類別是什麼 ?
介面 (Interface) 與 抽象類別 (Abstract Class) 可以說是在運用多型時必需要知道的程式設計概念。另外在面向介面程式設計與各種設計模式中也會常常被使用到。介面可以被理解為「接口」,讓外部可以透過這個接口與內部作溝通。

什麼是OO?物件導向與繼承
續上次聊完的物件導向與封裝,這次我們要討論的是繼承 (Inheritance)。繼承是物件導向的第二元素,也是 OO 中的一把雙面刃,設計的好壞其實直接影響了程式之後是否更易於維護。按照慣例,我先了找了個維基百科,讓我們來看看物件導向中的繼承又是指什麼 ?

什麼是OO?物件導向與封裝
Google 物件得出的結果,果然大部分都是跟程式有關的內容呢。說來慚愧,寫了兩年的物件導向語言,真的意識這是一個「物件導向」語言,這件事情也是最近的事情。當然是要回去惡補一下何為物件導向,同時也想記錄一下自已的心得,讓以後的自已檢視一下。

《K的技術學習筆記》——解耦合的設計概念:<Inversion of Control>
控制反轉(Inversion of Control)是一種解除class與class之間耦合的概念。在傳統的程式寫法中,當物件A需要物件B時,物件A需要自己制造物件B。若果套用了控制反轉(Inversion of Control)的概念,就會變成物件A不需要自己制做物件B,而是由第三方提供物件B給物件A。

《K的技術學習筆記》——良好OOP的設計原則:<SOLID Principles>(六)
Dependency Inversion Principle SOLID Principles的D就是依賴轉換(Dependency Inversion Principle)依賴轉換(Dependency Inversion Principle)用抽象觀念替代具體物件的關係。

《K的技術學習筆記》——良好OOP的設計原則:<SOLID Principles>(五)
SOLID Principles的I就是接口隔離(Interface segregation principle)接口隔離(Interface Segregation Principle)Client只依賴它所需要使用的方法。因此,以功能性去劃分及創建不同的Interface,再以組合形式創造class。

《K的技術學習筆記》——良好OOP的設計原則:<SOLID Principles>(四)
SOLID Principles的L就是里氏替換原則(Liskov Substitution Principle)里氏替換原則(Liskov Substitution Principle)sub-class必須能夠替換其super-class,並且不會出現問題。

《K的技術學習筆記》——良好OOP的設計原則:<SOLID Principles>(三)
SOLID Principles的O就是開閉原則(Open–closed principle)開閉原則(Open–closed principle)開放去被繼承,封閉去被改動。詳細說明就是這些已完成的class或function可以自由被使用或是擴展用途,但不可以直接修改,增加或減少當中的結構或是邏輯。
《K的技術學習筆記》——良好OOP的設計原則:<SOLID Principles>(二)
Single Responsibility PrincipleSOLID Principles的S就是單一功能(Single Responsibility Principle)單一功能(Single responsibility principle)只因一個職責而去作改變。
《K的技術學習筆記》——良好OOP的設計原則:<SOLID Principles>(一)
SOLID Principles剛作為Programmer時, 我自己只在意一件事, 就是完成老闆要求的工作。在沒有良好的導師教導和只求快速完成feature下, 結果就是只為能做到而去做, 並沒有考慮程式的結構和可讀性等要素。這樣會在往後的擴展, 維護和別人合作時出現大問題。