面向對象的特徵和原則

2020-12-16 永願書迷

面向對象中的三個基本特徵:封裝、繼承和多態

1、封裝,將現實中事物抽象成計算機領域中的對象,對象同時具有屬性和行為,這就是封裝。在封裝中,數據隱藏,對象只對外提供與其他對象交互的接口,把自身的一些屬性和實現細節對外是隱藏的。這樣對象內部數據就有不同級別的保護,防止了程序中某些部分被意外改變或者錯誤引用了對象的私有屬性。

2、繼承,實現對象復用性的一個方法,可以在不重複編寫以實現某個功能的前提下,對功能進行復用或者拓展。

繼承的實現有兩種:實現繼承和接口繼承

實現繼承就是直接使用基於類的屬性和方法,無需額外的編碼

接口繼承是僅僅使用屬性和方法的名稱,但是子類必須提供實現的能力

3、多態(可替代性),當前在繼承關係時,允許把父類對象看成和它一個或者多個子類對象同等。因此可以根據當前賦給父對象的子對象中具體特性以不同的方式運行。

多態的前提條件:

1)要有繼承關係

2)要有方法重寫

3)要有父類引用指向子類對象

多態的優勢:

1)提高了代碼的維護性

2)提升了代碼的擴展性

但是多態中不能使用子類的特有屬性和方法

面向對象的原則

單一功能原則:一個類的功能要單一,不要包羅萬象;

開放封閉原則:一個類在擴展性方面應是開放的,而在更改方面應是封閉的。

例如在一個類中,原本只是實現服務端的功能,現在需要添加客戶端功能。則應該在不修改服務端功能的前提下增添實現客戶端功能的代碼。那麼在最初功能設計時應該把所有功能分開,公共部分抽離出來。

替換原則:子類可以替換父類並出現在父類能夠出現的地方

依賴原則:具體依賴抽象,上層依賴下層。

比如:在A手機和B手機中,B手機無卡,但是B手機要用A手機中的網絡,這時候B手機就不能直接使用A手機的網絡(具體類);B手機應當設置打開WiFi,連接A手機的網絡(B定義抽象接口,由A來實現,B僅僅是使用該抽象接口)

接口分離原則:模塊間要通過抽象接口隔離開,而不是通過具體的類強耦合起來

對象之間的關係

1、聚合關係,

2、組合關係,

3、繼承關係。

4、依賴關係。

相關焦點

  • 再談面向對象的設計原則
    談到面向對象,們毫不猶豫的說出面向對象的三大特徵:封裝、繼承、多態,面向對象這在軟體的構架設計中是非常重要的,最能直接體現出來的優點就是軟體的擴展性和重用性。要理解面向對象編程,只停留在開發層面上,是無法深入理解的。只有在設計層面上展開才能逐步的領會面向對象。但在實際的開發中,並不是每一個人都能夠接觸到核心的設計工作。
  • 學會面向對象要知道的五大原則
    面向對象設計原則是OOPS編程的核心,但大多數Java程式設計師熱心於像Singleton (單例) 、 Decorator(裝飾器)、Observer(觀察者) 等設計模式,而沒有把足夠多的注意力放在學習面向對象的分析和設計上面。
  • 聊聊面向對象編程的幾個基本原則
    進行面向對象編程,有下面幾個原則:一. 面向抽象原則二. 開閉原則三. 多用組合少用繼承原則四. 高內聚-低耦合原則下面首先先介紹抽象類和接口,然後介紹面向抽象編程。通常無法讓設計的每個部分都遵守」開-閉原則」,甚至不應當這樣去做,應當把主要精力集中在應對設計中最有可能因需求變化而需要改變的地方,然後想辦法應用」開-閉原則」。
  • Java面向對象中的封裝和訪問控制符詳解
    封裝面向對象編程有三大概念:封裝、繼承、多態,今天我們就先從封裝開始講起。封裝(Encapsulation)是面向對象方法的重要原則,就是把對象的屬性和操作(或服務)結合為一個獨立的整體,並儘可能隱藏對象的內部實現細節。封裝是把過程和數據包圍起來,對數據的訪問只能通過已定義的接口。
  • Java程式設計師應該了解的10個面向對象設計原則
    面向對象設計原則是OOPS(Object-Oriented Programming System,面向對象的程序設計系統)編程的核心,但大多數Java程式設計師追逐像Singleton、Decorator、Observer這樣的設計模式,而不重視面向對象的分析和設計。
  • 面向對象的六原則一法則,而現實中只需要一個原則:老婆,我錯了
    所謂的高內聚就是一個代碼模塊只完成一項功能,在面向對象中,如果只讓一個類完成它該做的事,而不涉及與它無關的領域就是踐行了高內聚的原則,這個類就只有單一職責。我們都知道一句話叫」因為專注,所以專業」,一個對象如果承擔太多的職責,那麼註定它什麼都做不好。
  • Python RPG遊戲實例演示面向對象軟體設計原則
    概述基本現在的程式語言都是支持甚至是鼓勵人們使用面向對象編程(OOP)。雖然近兩年編程界對"一切皆OO"的思想有一些微妙的轉變,隨之也出現了一些不是唯OOP的語言(比如Go,Rust,Elixir,Elm,Scala),雖然他們大多數也還支持對象。注意我們本文敘述設計原則也適用於非OOP語言。要寫出一手清晰,高質量,可維護和可擴展的代碼,一個碼農需要了解和利用幾十年內業界積累下的經驗和通過實踐證明有效的設計原則。
  • PHPer必學的進階教程:PHP面向對象設計的五個基準原則
    那麼作為基礎中的基礎,PHP面向對象你又掌握了多少呢?今天這篇文章,就來給大家講一講關於面向對象的一些事,希望能對大家有所幫助。什麼是面向對象?面向對象就是把生活中要解決的問題都用對象的方式進行存儲–把所有的數據用屬性、方法表現出來。
  • Java面向對象程序設計的基本概念
    圖:計算機語言的發展過程何謂面向對象是什麼意思呢?面向對象程序設計是將人們認識世界過程中普遍採用的思維方法應用到程序設計中。對象是現實世界中存在的事物,它們是有形的,如某個人、某種物品;也可以是無形的,如某項計劃、某次商業交易。
  • 如何寫一手漂亮的模型:面向對象編程的設計原則綜述
    而採用類的方法來構建模型會令代碼非常具有可讀性和條理性,本文介紹了算法實現中使用類和方法來構建模型所需要注意的設計原則,它們可以讓我們的機器學習代碼更加美麗迷人。大多數現代程式語言都支持並且鼓勵面向對象編程(OOP)。
  • python面向對象三大特徵
    大概所有變成初學者初學者最頭疼的第一道坎就是面向對象的理解封裝從封裝本身去理解 就是把小貓小狗用袋子裝起來,然後把袋子的小口封上私有化方法:方法的私有化可以保護好一些核心的代碼,可以添加條件,是別人不能不滿足條件的更改,進行代碼的保護,python
  • Java基礎入門篇之面向對象和類的定義
    Java基礎入門篇之面向對象和類的定義 本文主要介紹了面向對象概念,面向對象的三個特點封裝性、繼承性、多態性。類的定義和創建對象與使用。詳細的介紹了怎麼去定義一個類,通過案例來理解怎麼去定義的。對象的創建與使用介紹了使用的格式,通過創建對象後,可以通過對象的引用來訪問對象的成員。
  • JavaScript-面向對象中有哪些屬性和方法?
    對象則指的是類的實例。它將對象作為程序的基本單元,將程序和數據封裝其中,以提高軟體的重用性、靈活性和擴展性,對象裡的程序可以訪問及經常修改對象相關連的數據。舉個最簡單點的例子來區分 面向過程和面向對象有一天你想吃魚香肉絲了,怎麼辦呢?
  • 《深入淺出面向對象分析與設計》讀後感|王鵬
    當然本書也有一些缺點,比如陳述內容過於細緻冗餘,有些翻譯的文字也比較晦澀,理論性的東西比較多,實例代碼相對來說比較少,但瑕不掩瑜,這並不妨礙它成為一本面向對象分析與設計的經典入門書籍。書中結合幾個具體的例子(吉他庫存管理系統、狗門、遊戲系統開發框架)循序漸進地講解了OOA&D即面向對象設計與分析涉及的關鍵概念、設計原則以及分析流程。
  • TIA Portal面向對象編程入門
    儘管時至今日依然有少數人質疑面向對象的編程思想,但我們看到的是面向對象技術發展的越來越好,無論是後端語言(JAVA、C#)或者前端語言(JavaScript、TypeScript),無一不是完全的支持面向對象技術。現在高校的PLC教材基本上採用的還是五六十年前的編程理念,將PLC定位為傳統繼電器控制的替代,以軟元件、寄存器這種古老落後的概念來講授這一門日新月異的現代工業控制編程技術。
  • RT-Thread面向對象編程思路淺析
    在寫這篇文章前,我們需要理解面向對象與面向過程的思想。面向過程就是遇到一個問題,將這個問題解決辦法一步一步的列出來,就想下棋一樣,一步一步走,根據具體情況調整思路。而面向過程就是將邏輯抽象化,就是抽象成一個物體或者對象。
  • 你真的知道面向過程和面向對象的區別嗎?
    本文轉載自【微信公眾號:五角錢的程式設計師,ID:xianglin965】,經微信公眾號授權轉載,如需轉載與原文作者聯繫作者丨BossXiang 圖丨pexels在面試時經常會被問到面向過程和面向對象有什麼區別,雖然都是編程的一種思想,但是他們的側重點不同
  • 雲計算開發學習筆記:Python3 面向對象技術簡介
    來源:TechWeb.com.cnPython從設計之初就已經是一門面向對象的語言,正因為如此,在Python中創建一個類和對象是很容易的。本章節我們將詳細介紹Python的面向對象編程。如果你以前沒有接觸過面向對象的程式語言,那你可能需要先了解一些面向對象語言的一些基本特徵,在頭腦裡頭形成一個基本的面向對象的概念,這樣有助於你更容易的學習Python的面向對象編程。接下來我們先來簡單的了解下面向對象的一些基本特徵。
  • Java面向對象程序設計教與學
    ,主要內容包括抽象的技術,類與對象,面向對象編程的基本特徵,包括封裝性、繼承性和多態性。學完該課程,學生能使用面向對象程式語言和採用面向對象思維方法開發大中型應用程式。課程學分:4學分二、課程性質面向對象程序設計是計算機科學與技術專業、軟體工程專業以及物聯網工程專業的專業基礎課。該課程主要講授面向對象的程序設計方法和思想。該課程藉助Java作為教學語言,講授面向對象編程的基礎理論和基本思想,培養學生的面向對象思維。
  • 如何以面向對象的思想設計有限狀態機
    這個時候就需要以面向對象的思想來設計有限狀態機。即將所要介紹的面向對象編程(OOP)是利用類和對象作為基本構建塊,因此分解系統時,可以從算法開始,也可以從對象開始,然後利用所得到的結構作為框架構建系統。