面向對象思想是什麼?

華麗的轉身138303170


這是一個非常好的問題,建立面向對象編程思想是學習面向對象編程的關鍵,下面就把面向對象思想做一個總結。

什麼是面向對象思想呢?簡單的說就是考慮問題以對象為出發點而不是以流程為出發點,通過對象之間的交互完成一系列功能的實現,這就是面向對象思想。

對象又是什麼呢?簡單的說就是一切都是對象,對象能夠涵蓋所有我們已經認知的事物和未認知的事物,只要是存在的東西都可以認為是對象,比如“黑洞”、“暗物質”等等,所以對象的範圍非常廣泛。

面向對象思想如何落地呢?面向對象編程思想包括四個概念、三個特徵、一個過程,下面分別解釋一下(以Java語言為例):

四個概念分別是類、對象、屬性和方法,其中類表示定義,對象表示類的實例,屬性表示對象的狀態,方法表示對象的功能。舉個例子,比如我們要通過面向對象的思維方式來描述學生,那麼就需要為學生構建一個類:

類中定義了學生的學號和姓名,同時定義了一個打印學生信息的方法,這就是類,但是類只是一個定義,要想完成具體的應用,需要通過類來創建出一個實例,這個實例就是對象,看一個例子:

例子中通過構造方法創建初始化了一個實例,這個時候,這個實例就是一個實實在在存在的對象了,此時這個對象就可以調用方法來實現功能了。

通過這個例子,我們可以瞭解類、對象、屬性、方法之間的關係,同時也闡述了面向對象的編程過程,這個過程分為三個步驟,分別是類的定義、對象的創建、方法的調用。

三個特徵分別是封裝、繼承和多態,其中封裝提高類的內聚性,封裝包括三個步驟,分別是私有化成員屬性、定義設置器、定義獲取器,看一個例子:

繼承是在一個類的基礎之上再派生出一個新類的過程,通過繼承,子類能夠完成對父類方法的繼承,看一個例子:

繼承體現的是一種發展的概念,是面向對象編程過程中的一個重要概念。

多態的理解是一個稍微麻煩的事情,但是簡單的總結一下,多態可以用兩個方法和三個定義來描述多態。兩個方法分別是方法重載和方法重寫,三個定義分別是父類定義子類構建、抽象類定義實體類構建、接口定義實體類構建。

先看一下方法重載,方法重載簡單的說就是同一個類中定義了多個方法,具有相同的名字,不同的參數列表,看一個例子:

方法重寫簡單的說就是一個前提、三個相同、兩個規定,一個前提是在繼承體系結構下,子類定義了某個方法與父類的方法具有相同的名字、參數列表、返回值類型,兩個規定分別是子類方法的範圍限定不能小於父類方法,子類方法不能拋出更多的異常,看一個例子:

下面再看一下三個定義,三個定義是理解多態的重點,也是一個小難點。第一個定義是父類定義子類構建,看一個例子:

第二個定義是接口定義實體類構建,看一個例子:

第三個定義是抽象類定義實體類構建,看一個例子:

以上內容就是對面向對象編程思想的一個簡單描述,面向對象思想現在已經有了很大的擴展,Spring就是面向對象編程和麵向方面編程結合的例子,Spring目前在Java開發領域也有廣泛的應用。

我做軟件開發工作多年,目前的研究方向是大數據和人工智能,也在帶大數據方向的研究生,我會陸續在頭條寫一些關於軟件開發方面的文章,感興趣的朋友可以關注我的頭條號,相信一定會有所收穫。

如果有軟件開發方面的問題,也可以諮詢我。

謝謝!


IT人劉俊明


面向對象的思想主要是把構成問題的各個事務分解成各個對象,在解決問題的過程中圍繞著“找對象”,“搞對象”來處理問題。


一切皆對象。


把很多的處理步驟都交給所創建的對象去處理,通俗簡單的來說就是“你辦事,我放心”。詳細的可以看下配圖,描述的還是比較形象的。


玩著學編程


面向對象是程序設計的方法之一,也是目前最為流行的設計方法。作為面試問題,考官無非是想知道你會不會實裝,懂不懂類,繼承,多態,封裝這些知識。或者是想知道你會不會設計,懂不懂用例圖,配置圖,類圖,時序圖這些知識。相信回答中一定有非常精彩的說明。下面我分享幾個代表性的軟件設計方法拓展一下知識面吧。

面向過程

這是最早的結構化的編程思想。它把一個系統分成若干功能模塊,然後用輸入輸出將模塊聯繫起來。C語言,Basic,Fotran等早期編程語言都是以這種思想為基礎的。面向過程的設計手法主要是流程圖和狀態圖。特別是狀態機,可分為摩爾機和米莉機都是面向過程中非常重要的理論。C語言中的回調函數,VB的事件(event),Oracle存儲過程中的Trigger等都是基於狀態機理論設計的。面向過程的設計接近於計算機的運算過程,適合於流程控制要求嚴格的場合,在一些硬件控制的程序設計上仍被廣泛採用。不過,功能模塊還有狀態這些概念跟硬件配置太接近了,在管理系統應用領域運用起來很牽強,導致系統複雜難懂,設計的可靠性能極低。於是,人們開始思考接近管理模型的設計方法。

面向數據流

這是一種非常接近管理組織結構的設計方法。它把管理體制中的職能作為模塊,模塊通過數據連成整體,這樣就定義了業務模型。按照一定的規則,邏輯模型可以被轉化成包含輸入輸出數據存儲和程序模塊的物理模型。這被稱為結構化的設計思想。面向數據流中邏輯模型和物理模型相結合的思想,大大提高了設計的可靠性,這一思想曾經是現在仍是信息系統設計的標準思路。SQL,ER等語言和設計方法都是從這一思想關係密切。值得一提的是ER模型,它就是面向對象思想的鼻祖。

面向對象

儘管有了邏輯和物理相結合的結構化思想,程序代碼上的耦合性依舊嚴重影響系統的可靠性。比如,相同的處理被重複地被複制到不同的畫面,經多次調試之後出現差異,導致錯誤。或者,本來不同的處理被強制做成共同函數,使用時不得不用大量分枝導致複雜度激增。為了解決這個問題,引入了對象的概念。最初人們從業務數據中抽出能保持業務特徵的最小數據組合作為實體,實體之間用一對一,一對多和多對多來表現關係。這種做法在數據庫表結構設計上取得了成功。抽出業務元素的思想被擴展為對象。對象之間的關係定義為繼承,多態和封裝。雖然不象ER模型那樣嚴密,但對象的概念很實用。被廣泛接受。面向對象繼承了結構化設計思想,用例圖>配置圖>邏輯時序圖>邏輯類圖>物理類圖的設計過程更好地實現了準確設計邏輯模型精確設計實裝程序的目的。

面向服務架構

嚴格地說這個思想已經超越了程序設計的範疇,它的目標是將物理實現集中封裝到服務器上,客戶端只要關注邏輯運用就可以了。這個思路現在也很普及,SOAP,RPC之類就是這一思想的應用場景。封裝物理實現一直都是程序設計的改善目標之一,跟這個思想類似的還有AGENT的思路,就是把功能封裝到AGENT上,分佈式的電腦網絡可以通過調用AGENT實現邏輯功能。這個思路因安全問題被擱置了。現在隨著區塊鏈技術的發展,或許AGENT的思想會重現江湖吧。


分享到:


相關文章: