1. 程式人生 > >面向物件的三大基本特性,五大基本原則

面向物件的三大基本特性,五大基本原則

透切理解面向物件三大基本特性是理解面向物件五大基本原則的基礎.

三大特性是:封裝,繼承,多型

特徵圖
封裝

封裝最好理解了。封裝是面向物件的特徵之一,是物件和類概念的主要特性。
封裝,也就是把客觀事物封裝成抽象的類,並且類可以把自己的資料和方法只讓可信的類或者物件操作,對不可信的進行資訊隱藏。

繼承

面向物件程式設計 (OOP) 語言的一個主要功能就是“繼承”。繼承是指這樣一種能力:它可以使用現有類的所有功能,並在無需重新編寫原來的類的情況下對這些功能進行擴充套件。
通過繼承建立的新類稱為“子類”或“派生類”。
被繼承的類稱為“基類”、“父類”或“超類”。
繼承的過程,就是從一般到特殊的過程。
要實現繼承,可以通過“繼承”(Inheritance)和“組合”(Composition)來實現。
在某些 OOP 語言中,一個子類可以繼承多個基類。但是一般情況下,一個子類只能有一個基類,要實現多重繼承,可以通過多級繼承來實現。

繼承概念的實現方式有三類:實現繼承、介面繼承和可視繼承。

  1.     實現繼承是指使用基類的屬性和方法而無需額外編碼的能力;
    
  2.     介面繼承是指僅使用屬性和方法的名稱、但是子類必須提供實現的能力;
    

![Uploading 面向物件的三大基本特性圖.png_922595.gif . . .] 可視繼承是指子窗體(類)使用基窗體(類)的外觀和實現程式碼的能力。
在考慮使用繼承時,有一點需要注意,那就是兩個類之間的關係應該是“屬於”關係。例如,Employee 是一個人,Manager 也是一個人,因此這兩個類都可以繼承 Person 類。但是 Leg 類卻不能繼承 Person 類,因為腿並不是一個人。
抽象類僅定義將由子類建立的一般屬性和方法,建立抽象類時,請使用關鍵字 Interface 而不是 Class。
OO開發正規化大致為:劃分物件→抽象類→將類組織成為層次化結構(繼承和合成) →用類與例項進行設計和實現幾個階段。

多型

多型性(polymorphisn)是允許你將父物件設定成為和一個或更多的他的子物件相等的技術,賦值之後,父物件就可以根據當前賦值給它的子物件的特性以不同的方式運作。簡單的說,就是一句話:允許將子類型別的指標賦值給父類型別的指標。
實現多型,有二種方式,覆蓋,過載。
覆蓋,是指子類重新定義父類的虛擬函式的做法。
過載,是指允許存在多個同名函式,而這些函式的引數表不同(或許引數個數不同,或許引數型別不同,或許兩者都不同)。
其實,過載的概念並不屬於“面向物件程式設計”,過載的實現是:編譯器根據函式不同的引數表,對同名函式的名稱做修飾,然後這些同名函式就成了不同的函式(至少對於編譯器來說是這樣的)。如,有兩個同名函式:function func(p:integer):integer;和function func(p:string):integer;。那麼編譯器做過修飾後的函式名稱可能是這樣的:int_func、str_func。對於這兩個函式的呼叫,在編譯器間就已經確定了,是靜態的(記住:是靜態)。也就是說,它們的地址在編譯期就綁定了(早繫結),因此,過載和多型無關!真正和多型相關的是“覆蓋”。當子類重新定義了父類的虛擬函式後,父類指標根據賦給它的不同的子類指標,動態(記住:是動態!)的呼叫屬於子類的該函式,這樣的函式呼叫在編譯期間是無法確定的(呼叫的子類的虛擬函式的地址無法給出)。因此,這樣的函式地址是在執行期繫結的(晚邦定)。結論就是:過載只是一種語言特性,與多型無關,與面向物件也無關!引用一句Bruce Eckel的話:“不要犯傻,如果它不是晚邦定,它就不是多型。”
那麼,多型的作用是什麼呢?我們知道,封裝可以隱藏實現細節,使得程式碼模組化;繼承可以擴充套件已存在的程式碼模組(類);它們的目的都是為了——程式碼重用。而多型則是為了實現另一個目的——介面重用!多型的作用,就是為了類在繼承和派生的時候,保證使用“家譜”中任一類的例項的某一屬性時的正確呼叫。

五大基本原則

單一職責原則SRP(Single Responsibility Principle)
是指一個類的功能要單一,不能包羅永珍。如同一個人一樣,分配的工作不能太多,否則一天到晚雖然忙忙碌碌的,但效率卻高不起來。

開放封閉原則OCP(Open-Close Principle)
一個模組在擴充套件性方面應該是開放的而在更改性方面應該是封閉的。比如:一個網路模組,原來只服務端功能,而現在要加入客戶端功能,
那麼應當在不用修改服務端功能程式碼的前提下,就能夠增加客戶端功能的實現程式碼,這要求在設計之初,就應當將服務端和客戶端分開,公共部分抽象出來。

替換原則(the Liskov Substitution Principle LSP)
子類應當可以替換父類並出現在父類能夠出現的任何地方。比如:公司搞年度晚會,所有員工可以參加抽獎,那麼不管是老員工還是新員工,
也不管是總部員工還是外派員工,都應當可以參加抽獎,否則這公司就不和諧了。

依賴原則(the Dependency Inversion Principle DIP) 具體依賴抽象,上層依賴下層。假設B是較A低的模組,但B需要使用到A的功能,
這個時候,B不應當直接使用A中的具體類: 而應當由B定義一抽象介面,並由A來實現這個抽象介面,B只使用這個抽象介面:這樣就達到
了依賴倒置的目的,B也解除了對A的依賴,反過來是A依賴於B定義的抽象介面。通過上層模組難以避免依賴下層模組,假如B也直接依賴A的實現,那麼就可能造成迴圈依賴。一個常見的問題就是編譯A模組時需要直接包含到B模組的cpp檔案,而編譯B時同樣要直接包含到A的cpp檔案。

介面分離原則(the Interface Segregation Principle ISP)
模組間要通過抽象介面隔離開,而不是通過具體的類強耦合起來

相關推薦

面向物件三大基本特性五大基本原則

透切理解面向物件三大基本特性是理解面向物件五大基本原則的基礎.三大特性是:封裝,繼承,多型特徵圖封裝封裝最好理解了。封裝是面向物件的特徵之一,是物件和類概念的主要特性。封裝,也就是把客觀事物封裝成抽象的類,並且類可以把自己的資料和方法只讓可信的類或者物件操作,對不可信的進行資訊隱藏。繼承面向物件程式設計 (O

20181005 面向對象三大基本特性五大基本原則

data 相同 屬性 級別 表現 職責 進行 分離 包含 透切理解面向對象三大基本特性是理解面向對象五大基本原則的基礎. 三大特性是:封裝,繼承,多態 所謂封裝,也就是把客觀事物封裝成抽象的類,並且類可以把自己的數據和方法只讓可信的類或者對象操作,對不可信的進行信息隱藏

面向對象三大基本特性五大基本原則

基本 原來 原則 分開 基本原則 現在 應該 isp 編寫 三大特性是: 封裝 繼承 多態 五大基本原則: 單一職責原則SRP(Single Responsibility Principle) 開放封閉原則OCP(Open-Close Principle) 替換原則

面向物件三大基本特性五大基本原則

透切理解面向物件三大基本特性是理解面向物件五大基本原則的基礎. 三大特性是:封裝,繼承,多型   所謂封裝,也就是把客觀事物封裝成抽象的類,並且類可以把自己的資料和方法只讓可信的類或者物件操作,對不可信的進行資訊隱藏。封裝是面向物件的特徵之一,是物件和類概念的主要特

PHP面向物件——三大基本特性五大基本原則

三大特性是:封裝、繼承、多型所謂封裝,也就是把客觀事物封裝成抽象的類,並且類可以把自己的資料和方法只讓可信的類或者物件操作,對不可信的進行資訊隱藏。封裝是面向物件的特徵之一,是物件和類概念的主要特性。 簡單的說,一個類就是一個封裝了資料以及操作這些資料的程式碼的邏輯實體。在一

物件三大基本特性五大基本原則

透切理解面向物件三大基本特性是理解面向物件五大基本原則的基礎. 三大特性是:封裝,繼承,多型   所謂封裝,也就是把客觀事物封裝成抽象的類,並且類可以把自己的資料和方法只讓可信的類或者物件操作,對不可信的進行資訊隱藏。封裝是面向物件的特徵之一,是物件和類概念

面向物件三大特徵及程式碼優化七大原則

  面向物件(Object Oriented,OO)是軟體開發方法。面向物件的概念和應用已超越了程式設計和軟體開發,擴充套件到如資料庫系統、互動式介面、應用結構、應用平臺、分散式系統、網路管理結構、CAD技術、人工智慧等領域。面向物件是一種對現實世界理解和抽象的方法,是計算機程式設計技術發展到一

面向物件三大特性五大基本原則

 三大特性是:封裝,繼承,多型   所謂封裝,也就是把客觀事物封裝成抽象的類,並且類可以把自己的資料和方法只讓可信的類或者物件操作,對不可信的進行資訊隱藏。封裝是面向物件的特徵之一,是物件和類概念的主要特性。 簡單的說,一個類就是一個封裝了資料以及操作這些資料的程式碼的邏輯實體。在一個物件內部,某些程式碼或

java面向物件三大特徵五大基本原則

三大特性:封裝,繼承,多型。 1)封裝       將物件的屬性和實現細節隱藏起來,只提供公共的訪問方式。       好處:a。將外界的變化隔離開,使程式具備獨立,安全和穩定性。                  b。便於設計者使用,提高了程式碼的複用性       方式

面向對象的三大特性五大基本原則

同時 屬性 open for idt emma 這樣的 interface bili 體系 三大特性:封裝,繼承,多態 封裝:就是把客觀事物封裝成抽象的類,並且類可以把自己的數據和方法只讓可信的類或者對象操作,對不可信的進行信息隱藏。封裝是面向對象的特征之一,是對象和類概念

面向物件的思想、面向物件三大特性五大原則

面向物件的思想、面向物件的三大特性,五大原則 面向物件就是:比如說,我想買一個電腦,我會告訴另一個人去給我買一個電腦,他就會坐車去電子商城去給我買電腦,買完電腦又給我坐車帶回來交給我手中。這買電腦的期間的事情,電腦的牌子、價格、效能、跑去買、再帶回來,我都不用管不用去自己做。我只坐在這裡

面向物件三大特性五大原則

透切理解面向物件三大基本特性是理解面向物件五大基本原則的基礎 三大基本特性:封裝,繼承,多型 封裝,就是把客觀事物封裝成抽象的類,並且類可以把自己的資料和方法只讓可信的類或者物件操作,對不可信的進行資訊隱藏。一個類就是一個封裝了資料以及操作這些資料的程式碼的邏輯實體。在一個物件內部,某些程式碼或某些資

面向對象的三大特征和五大基本原則

人物 images 裏氏替換原則 如果 而不是 src 接口分離 實現 -1 http://blog.csdn.net/zhang2531/article/details/52052453 面向對象的編程方法是為了解決系統的可維護性、可擴展性、可重用性。系統的需求是變化的,

面向物件——三大基本特徵

面向物件的三大基本特徵:封裝、繼承和多型  一、封裝         利用抽象資料型別將資料和基於資料的操作封裝在一起,使其構成一個不可分割的獨立實體。資料被保護在抽象資料型別的內部,儘可能地隱藏內部的細節,只保留一些對外介面使之與外部發生

面向物件三大特性五大原則 + 低耦合高內聚

面向物件的三大特性是"封裝、"多型"、"繼承",五大原則是"單一職責原則"、"開放封閉原則"、"里氏替換原則"、"依賴倒置原則"、"介面分離原則"。 什麼是面向物件 面向物件(Object Oriented,OO)是軟體開發方法。面向物件的概念和應用已超越了程式

面向物件——三大特性六大原則

什麼是面向物件 面向物件是軟體開發方法。面向物件的概念和應用已經超越了程式設計和軟體開發,擴充套件到如資料庫系統,互動式介面,應用結構,應用平臺,分散式系統,網路管理結構,CAD技術,人工只能等領域。面向物件是一種對現實世界理解和抽象的方法,是計算機程式設計技術發展到一定階

面向物件不是計算機程式設計的基本原子不要用OOP來迷惑程式設計師新手

在過去的25年裡,程式設計世界發生了巨大的變化,如今,我們有大量的有用的、靈活的資料型別可以使用,但在25年前,你需要花大量的額外時間自己去構造這些型別。 C和Pascal語言——當時的標準語言——提供了少量的面向機器的資料型別:數字,指標,陣列,形式上的字串,以及把多種資料組合到一起的結構 體或

反思任務:面向物件的核心思想三大特性以及面向過程的區別

一:面向物件的核心思想: 將物件作為程式的基本單元,將程式和資料封裝在其中,以提高軟體的複用性,靈活性以及可擴充套件性 二:三大特性: 繼承,封裝,多型 三:面向物件的簡介:人們應該按照這個世界的本來面貌去理解世界 簡言之就是以現實世界中

Java面向物件三大特性-封裝、繼承、多型

在講Java面向三大特性之前,我們先了解一下訪問修飾符的訪問範圍: (1):private:同類中具有訪問許可權。 (2):protected:本類 和同包以及不同包的子類才具有訪問許可權。 (3):public:統一工程中都具有訪問許可權。 (4):預設 本類和同包範圍內具有訪問許可權。 一、Ja

Java面向物件-- String 類 常用方法及基本使用

首先來學習基本使用Jdk api chm文件: 點選 左上角-顯示:     1, char chartAt(int index) 返回指定索引處的char值 這裡的index 是從0開始的; package com.xuyigang1234.chp02.strin