用簡單的例子解釋什麼是物件導向

2021-09-30 19:05:24 字數 1383 閱讀 4824

什麼是物件導向oo:可以先看下

提起物件導向,肯定都會先想到三大特性:封裝,繼承,多型。那這三大特性具體怎麼理解呢?可以先在腦子裡過一下。

如題,舉個栗子吧:

假如我們接到乙個需求,需要把大象裝進冰箱裡!

面向過程的做法:開啟冰箱門,把大象裝進去,關上冰箱門。這是乙個過程,我們會把這個過程拆分為三個小步驟並且去想辦法實現他們。

物件導向的做法:冰箱呼叫開門的方法開門,大象呼叫移動位置的方法進入冰箱,冰箱呼叫關門方法把門關上。這種是把這個過程裡的冰箱和大象抽象出來,冰箱是乙個物件,大象是乙個物件。冰箱擁有開門,關門的方法,大象擁有移動位置的方法。他們各自處理各自的事情,我們不用關心冰箱怎麼開門關門,大象怎麼把自己塞進去,我們只用告訴冰箱,嘿,我現在要你把大象裝進去,你裝好了告訴我

看起來好像面向過程更加簡單,確實在一些簡單的邏輯上,確實是面向過程更加簡單一點,但是當你面對是一系列複雜的模組和功能或者在邏輯發生更改的時候。各司其職的物件導向思想變會將很多複雜的邏輯簡單化。

拿上面那個栗子來說,冰箱,大象,分別處理各自的事情,降低了邏輯之間的耦合性。我們在做業務處理時不必關心冰箱是怎麼開門關門,大象怎麼移動位置的,我們只需要只要他們有這兩個動作,通知他們去做這些動作完成我們的業務邏輯就可以了。

那你可能要問了,冰箱怎麼開門關門,大象怎麼移動位置不還要我們去寫嗎?是的,沒錯,物件導向程式設計需要在前期進行大量的準備工作。但是這些準備工作,在後面業務邏輯越來越複雜的時候,就顯得尤為重要,因為在後期業務邏輯極其複雜的時候,如果我要新增功能,你不可能每次做事之前都理一下之前的邏輯,看看是不是會不會影響到後面。

上面說的,冰箱開門關門,大象移動位置其實就是三大特性裡的封裝了,為冰箱和大象封裝了屬於他們的各自的方法。

現在我們需求變了,我們要把大象放進籠子裡,如果用面向過程的做法,我們需要把之前裝冰箱的方法重寫一遍,變成成裝籠子。也太麻煩了。

用oo的思想,我們需要乙個籠子的物件,籠子也同樣有開門和關門兩個動作,跟冰箱很像啊,這個時候三大特性之一的繼承就登場了,我們只需要用籠子繼承冰箱,再用籠子替換掉之前**裡的冰箱就可以了如下圖,籠子也有了開門和關門兩個動作,而製冷屬於冰箱的私有的屬性,籠子無法繼承到。

多型 簡單的理解起來,冰箱可以有很多種不同牌子的冰箱,他們可能是雙門的,多開門的各種。但是他們都屬於冰箱,擁有冰箱的基本功能,同時他們又有各自不同的特色功能。 關於更詳細的多型解釋,可以參考 傳送門

我這裡對於三大特性說的可能不太細,詳情參見:

以上理解如果有問題,歡迎大佬指點!

什麼是面向過程?什麼是物件導向?

論語 述而 舉一隅,不以三隅反,則不復也。簡單來說就是舉一反三,我們知道計算機大神會許多種程式語言,對於一門新的語言他們只要乙個月或者幾個星期就可以精通。而對於我們這種程式設計的初學者學會一門語言都感覺好難,更別說精通了。其實主要還是我們的方法不對會接,我們沒有一種程式設計的思維所以我們學起來比較困...

什麼是物件導向

什麼是物件導向 物件導向,就是,思考問題的方法,以物件為主體,眼睛看什麼都是物件 說 物件 其實還是不好懂,因為這個概念是直接從英文翻譯過來的 對中國人也許說,面向東西,面向物體 抽象的物體 面向事物,之類的翻譯或許更好理解 為什麼說是物件導向呢,是為了和 面向過程 相對以前 物件導向 的程式概念等...

什麼是物件導向?

物件導向程式設計 基本定義 物件 object 一切客觀實體的抽象,即將現實世界中的事物抽象成物件 類 class 定義了一件事物的抽象特點。如 狗 是乙個類,它包含狗的一切特徵和行為,是乙個模板 物件 object 是類的例項。如 名叫pyton的臘腸狗 物件導向的起源 1.以c為例他是結構化的語...