(一)面向對象

什么是面向過程?什么是面向對象?
  • 面向過程:把問題分解成一個一個步驟,每個步驟用一個或多個函數(shù)來實現(xiàn),是以事件為目標(面向過程最重要的是模塊化的思想方法),比如說我要去超市買水果:先下樓-->坐公交車-->到超市-->買水果。典型的用法就是實現(xiàn)簡單的算法,例如冒泡排序。
  • 面向對象:將問題分解成一個一個步驟,對每個步驟進行相應的抽象,形成對象,通過不同對象之間的調(diào)用,組合解決問題。就是說,在進行面向對象進行編程的時候,要把屬性、行為等封裝成對象,然后基于這些對象及對象的能力進行業(yè)務邏輯的實現(xiàn)。
    還是上面的例子:現(xiàn)在我需要構造一個人的對象,一個水果的對象,人具有購買的行為。
    現(xiàn)在就是人-->購買-->水果。至于怎么購買,就依賴與具體的實現(xiàn)了,實際上內(nèi)部也包含了面向過程的思想。


    圖片.png
面向對象的三大基本特征和五大基本原則?
  • 封裝:所謂封裝,也就是把客觀事物封裝成抽象的類,并且類可以把自己的數(shù)據(jù)和方法只讓可信的類或者對象操作,對不可信的進行信息隱藏。
    我們以人為例子:封裝一個Person類,假設有姓名、年齡、性別、財富四個字段,有一個吃飯的方法,姓名、年齡、性別是開放的,財富是protected的,這就是一個很簡單的封裝的例子。只有Person的子類可以查看財富,其他的類無法訪問
  • 繼承:繼承是子對象可以繼承父對象的屬性和行為,亦即父對象擁有的屬性和行為,其子對象也就擁有了這些屬性和行為。在Java中,所有的繼承都是公有繼承,也就是說基類的public和protected成員是對子類可見的,private是不可見的。
    接著上面的例子說,我們有兩個子類醫(yī)生 和學生都繼承了Person類,那么這兩個類就具有了上面所說屬性和行為。
  • 多態(tài):多態(tài)是同一個行為具有多個不同表現(xiàn)形式或形態(tài)的能力。
    接著說:Person是可以吃飯的,但是我可以讓醫(yī)生在辦公室吃飯,學生在食堂吃飯,這就是同一個行為的不同表現(xiàn)形式。


    圖片.png

關于上面還有一點要說的是對象的三個主要特性:(與面向對象的三個特性區(qū)分開

  • 對象的行為:可以對對象做什么(對象有哪些行為和方法 )
  • 對象的狀態(tài):施加方法時,對象的響應?每個對象都保存著描述當前特征的信息。對象的狀態(tài)改變必須通過方法實現(xiàn),否則就是破壞了封裝性。
  • 對象標識:如何區(qū)別具有相同的方法和狀態(tài)的不同對象 例如怎么區(qū)分兩個人
面向對象的五大特征:
  • 單一職責原則:一個類,最好只做一件事,只有一個引起它的變化。實際上可以認為是高內(nèi)聚、低耦合。
    高內(nèi)聚是啥?一個軟件模塊是由相關性很強的代碼組成,只負責一項任務。你是開發(fā)組的人,那你就專心做開發(fā),你不能偷偷跑去做運維是吧。
    低耦合是啥?一個完整的系統(tǒng),模塊與模塊之間,盡可能的使其獨立存在。你家燈壞了,你隨便買一個就好了,沒必要非要買那個牌子的是吧。
  • 開放封閉原則:軟件實體應該是可擴展的,而不可修改的。也就是,對擴展開放,對修改封閉的。對抽象編程,而不對具體編程,因為抽象相對穩(wěn)定。讓類依賴于固定的抽象,所以修改就是封閉的;而通過面向對象的繼承和多態(tài)機制,又可以實現(xiàn)對抽象類的繼承,通過覆寫其方法來改變固有行為,實現(xiàn)新的拓展方法,所以就是開放的。
  • 里氏替換原則:子類可以替換父類并且出現(xiàn)在父類能夠出現(xiàn)的任何地方,父類應盡可能使用接口或者抽象類來實現(xiàn)。
  • 依賴倒置原則:高層模塊不應該依賴底層模塊,兩者都應該依賴抽象。抽象不應該依賴細節(jié),細節(jié)應該依賴抽象。在依賴之間定義一個抽象的接口使得高層模塊調(diào)用接口,而底層模塊實現(xiàn)接口的定義,以此來有效控制耦合關系,達到依賴于抽象的設計目標。
  • 接口隔離原則:使用多個小的專門的接口,接口應該是內(nèi)聚的,而不要使用一個大的總接口。
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • Java基礎筆記(一) 面向對象 [TOC] 1、定義類 其中的修飾符可以是public、final、abstra...
    小小少年Boy閱讀 491評論 0 1
  • ??面向對象(Object-Oriented,OO)的語言有一個標志,那就是它們都有類的概念,而通過類可以創(chuàng)建任意...
    霜天曉閱讀 2,254評論 0 6
  • 教育消息:近日,天津市委教育工委、市教委、市紀委駐市委教育工委紀檢組聯(lián)合發(fā)布《關于進一步加強師德師風建設嚴禁教師收...
    開宗明義閱讀 242評論 0 1
  • 而立之年,在這個該成家立業(yè)的尷尬年紀,卻想好好談一場平平淡淡、順其自然步入婚姻殿堂的戀愛!因為上帝讓我開竅...
    葉姊閱讀 464評論 0 1
  • 雨夜偶爾雷雨交加。拔了路由器無事可干,翻看照片,便看到了五年前的一張。 暖兒倚在床頭織著圍巾,小白和小頑窩在被子里...
    惜見閱讀 391評論 0 2

友情鏈接更多精彩內(nèi)容