面向對象知識點總結

第一章復雜性
1.軟件復雜性的原因:
?問題域的復雜的性;
?管理費用開發(fā)過程的困難性
?軟件中隨處可能出現的靈活性
?描述離散系統行為困難。
2.控制系統復雜性的方法:
分解方法(算法分析和面向對象分解)、抽象的方法
3.復雜系統一般具有如下屬性:
?層次結構:復雜系統的架構是它所有的組件以及這些組件之間的層次結構的函數。
?相對本原(primitives):組成系統的基礎組件決定于觀察者
?分離關注:組件內與組件間的聯系分離開來。
?共同模式:復雜系統具有共同的模式,復用。
穩(wěn)定的中間形式:隨著時間的推移,系統變得穩(wěn)定,同時為構建更為復雜系統而作為穩(wěn)定的中間形式,復雜系統變得更加復雜。

第二章面向對象基礎
1.面向對象技術的三個特征:(或基本機制)
?封裝,隱藏內部實現
?繼承,復用現有代碼
?多態(tài),改寫對象行為
2.面向對象技術的四個特征:(或基本機制)
?抽象,分離變與不變
?封裝,隱藏內部實現
?繼承,復用現有代碼
?多態(tài),改寫對象行為
3.Java中抽象類與接口的聯系與區(qū)別
?相同點:1)都有未實現的方法;2)都不能用于創(chuàng)建對象(實例);3)一個具體的類繼承或實現它們時,需要對未實現的方法提供具體實現。
?不同點:1)接口中的方法都是未實現的,而抽象類中可以有實現的方法;2)接口中沒有構造函數和屬性,但抽象類中有;3)一個類只能繼承一個抽象類,但可以實現多個接口。
4.什么是多態(tài)
?多態(tài)是指父對象中的同一個行為能在其多個子對象中有不同的表現。也就是說子對象可以使用重寫父對象中的行為,使其擁有不同于父對象和其它子對象的表現,這就是overriding(重寫)
5.多態(tài)使用的規(guī)則(條件):
?類和類(接口)之間必須要有繼承關系
?要有對方法的重寫(否則多態(tài)無意義)
?(核心):父類的引用指向子類的對象空間
6. 系統的設計目標: 可擴展性,靈活性,可插入性。
?可擴展性: 新的功能很容易集成到現有的系統中去,而不影響到系統的其他模塊。
?靈活性: 允許代碼修改平穩(wěn)的發(fā)生。當修改一處時不至于影響到另一處,這樣可以縮小維護的代價。
?可插入性: 容易用一個類替換已經存在的類。只要接口一致,更改實現類不影響類的使用者。
7. 面向對象設計原則有什么意義?
?是指導面向對象設計的基本指導思想
?是評價面向對象設計的價值觀體系
?是設計模式的出發(fā)點和歸宿
8. 面向對象設計的主要原則:(5個)
?單一職責原則(SRP Single Responsibility Principle):一個類應該僅有一個引起它變化的原因。
?開放閉合原則(OCP Open Closed Princile):類模塊應該是可擴展的,但是不可修改(對擴展開放、對更改封閉)
?Liskov替換原則(LSP Liskov Substitution Principle):子類必須能夠替換它們的基類
?依賴倒置原則(DIP Dependency Inversion Principle):高層模塊不應該依賴于底層模塊,二者都應該依賴于抽象,抽象不應該依賴于實現細節(jié),實現細節(jié)應該依賴于抽象
?接口隔離原則(ISP Interface Segregation Principle):不應該強迫客戶程序依賴它們不用的方法。

給大家免費分享一套資料,這套資料包含面試題,視頻,簡歷模>板,成長路徑,核心總結文檔,需要這份資料的小伙伴,點擊這里即可免費領取,備注暗號 簡書

9. 簡述“開—閉”原則的基本思想。請舉出一個使用了軟件“開—閉”原則的軟件設計模式,其中何處體現了“開—閉”原則。
“開—閉”原則:軟件實體應當對擴展開放,而對修改關閉,“開-閉”原則要求軟件系統能夠在不需要修改原有類的基礎上,通過增加類,達到擴展功能的目的。
工廠(Factory)模式中體現了這個原則,如果想增加一類新的product,只需在product類體系中增加一個新的具體product,然后在factory類體系結構中增加一個concrete factory就可以了,而不需要對現有類做任何修改,在不改動過模塊源代碼的情況下擴展模塊的行為。

  1. 簡述“依賴倒置”原則內容,并說明其與“開-閉原則”及“里氏替換原則”的關系。?
    答:“依賴倒置”DIP原則是指:代碼要依賴于抽象的類,而不要依賴于具體的類;要針對接口或抽象編程,而不是針對具體編程。
    實現開-閉原則的關鍵是抽象化,并且從抽象化導出具體化實現。所以,“開-閉”原則相當于面向對象設計的目標,而依賴倒置就是實現該目標的一種主要手段或保障。而里氏替換原則就是實現它們的具體方法。

  2. 什么是設計模式?設計模式目標是什么?
    答:設計模式是一套被反復使用、多數人知曉的、經過分類編目的、代碼設計經驗的總結。使用設計模式是為了可重用代碼、代碼更容易被擴展、讓代碼更容易被他人理解。

  3. 面向對象系統中功能復用的兩種最常用技術是什么?
    答:類繼承和對象組合,類繼承允許你根據其他類的實現來定義一個類的實現。父類的內部細節(jié)對子類可見。類繼承是在編譯時刻靜態(tài)定義的,且可直接使用,類繼承可以較方便地改變被復用的實現。對象組合是類繼承之外的另一種復用選擇。新的更復雜的功能可以通過組裝或組合對象來獲得。對象組合要求被組合的對象具有良好定義的接口。

第三章UML統一建模語言

1.UML的作用或UML模型的重要性:
?可以更好地理解問題。
?可以加強人員之間的溝通。
?可以更早地發(fā)現錯誤或疏漏的地方。
?可以獲得設計結果。
?為最后的代碼生成提供依據。

2.UML主要繼承了哪些模型方法:Booch方法、OMT(對象建模技術)方法、OOSE面向對象的軟件工程。

3.UML定義:統一建模語言UML是(Booch與Ivar Jacobson、James Rumbaugh共同創(chuàng)建的)一種可視化地說明、建造軟件系統的工業(yè)標準語言。UML在1997年被對象管理組織OMG正式確定為國際標準。

  1. UML模型的5類圖分別是什么?,并簡要說明各類圖的組成與作用。
    ?用例圖。從用戶角度描述系統功能,并指出各功能的操作者。
    ?靜態(tài)圖(類圖、對象圖、包圖):類圖描述系統中類的靜態(tài)結構,包括類,類之間聯系,類的內部結構(屬性和操作)。對象圖是類圖的實例,顯示類的多個對象實例。包圖描述系統的分層結構。
    ?行為圖(狀態(tài)圖、活動圖):狀態(tài)圖描述類的對象所有可能的狀態(tài)以及事件發(fā)生時狀態(tài)的轉移條件?;顒訄D描述滿足用例要求所要進行的活動以及活動間的約束關系。
    ?交互圖(時序圖、協作圖):時序圖(順序圖)描述對象之間的動態(tài)合作關系,強調對象之間消息發(fā)送的順序。協作圖描述對象間的協作關系
    ?實現圖(組件圖、配置圖):組件圖描述代碼部件的物理結構及各組件之間的依賴關系。配置圖描述系統中軟硬件的物理體系結構。
    5.對于一個類圖,比如
    類名是:
    屬性有幾個,是私有還是公有?
    方法有幾個,是公有還是私有?

6.什么是順序圖,順序圖是由那些部分組成?
順序圖是強調消息時間順序的交互圖。是描述系統中類和類之間的交互,它將這些交互建模成消息交換,也就是說,順序圖描述了類相互協作的完成預期行為的動態(tài)過程。順序圖是由:類角色或對象、生命線、激活期和消息組成。

7.用例(use case)是從用戶的觀點對系統行為的一個描述。
第四章面向對象分析建模

1.用例之間的包含(include)關系: 在包含關系中,一個用例(基本用例)的行為包含了另一個用例(包含用例)的行為。使用帶箭頭的虛線表示包含關系,從基本用例指向包含用例。比如圖書管理系統中,“查詢借閱信息”用例,與“登錄”用例關系;“刪除學生信息”與“查看學生信息”之間;“還書”與“查詢借閱信息”之間等。
2.用例間的擴展(extend)關系:擴展關系為處理異?;驑嫿`活系統框架提供一種有效方法。使用帶箭頭的虛線表示擴展關系,從擴展用例指向基本用例。比如“還書”與“罰款”之間;“借書”與“預定書目”之間;“取消息房間預訂”和“扣除訂金”之間。

4.常用的類之間關系:關聯(其中包含特殊的關聯關系:聚合和組合),依賴,泛化。

5.分析類圖:產生于分析階段,由系統分析師繪制,主要作用是描述業(yè)務實體的靜態(tài)結構,
包括業(yè)務實體、各個業(yè)務實體所具有的業(yè)務屬性及業(yè)務操作、業(yè)務實體之間具有的關系。
實現類圖:產生于設計階段,由系統設計師繪制,其作用是描述系統的架構結構、指導程序員編碼。它包括系統中所有有必要指明的實體類、控制類、界面類。

6.一個系統的功能需求如下:學生登錄網站后,可以瀏覽課件、查找課件、下載課件、觀看教學視頻。學生需要登錄“遠程網絡教學系統”后才能正常使用該系統的所有功能。如果忘記密碼,可與通過“找回密碼”功能恢復密碼。請畫出學生參與者的用例圖。

6.順序圖的主要作用:
順序圖是按照消息的時間順序描述系統中類和類之間的交互、類相互協作地完成預期行為的動態(tài)過程。
1)細化用例圖
2)有效地描述類職責的分配方式;
豐富系統的使用語境的邏輯表達,系統的使用語境就是系統可能的使用方式和使用環(huán)境。
第五章 面向對象的設計建模

1.多層體系結構的動機是什么?
1)客戶對數據的訪問通過中間層進行了隔離,數據庫的安全性提高了;
2)業(yè)務邏輯處于不同的中間服務器,當業(yè)務規(guī)則變化后,客戶端程序基本不做改動,而且某一層的改動不會影響其他層,這也意味著更好的重用和可維護性;
3)將不同層的開發(fā)任務在開發(fā)者之間適當地分配,有效地利用開發(fā)人員的專長和開發(fā)技巧,并且能夠提高并行開發(fā)能力。

2.簡述順序圖、用例圖及類圖在設計中的聯系。
順序圖是描述系統中類和類之間的交互,通過對象間的消息交換完成預期行為的動態(tài)過程。用例圖描述了從系統用戶(參與者)角度看系統提供的功能(用例),它是需求分析階段建立的模型,其中每個用例描述系統對外提供的一種功能;而類圖是描述了系統中的對象(類)的靜態(tài)結構及其相應職責;一般一個順序圖對應一個用例,是對一個用例的細化建模;順序圖中涉及的對象對應類圖中的類,順序圖中的消息對應類的操作或方法。設計過程中設計用例-->設計順序圖-->設計類圖-->再細化順序圖-->再細化類圖...反復迭代的過程。

3.簡述類圖具有的不同抽象層次。
在軟件開發(fā)的不同階段使用的類圖具有不同的抽象層次:
1)概念層(Conceptual)類圖描述應用領域中的概念,一般地,這些概念和類有很自然的聯系,概念層的類圖每個類只有一個類名,沒有列出屬性名和方法名,概念層類圖在分析階段畫出。
2)說明層(Specification)類圖描述軟件的接口部分,而不是軟件的實現部分。說明層的類圖,每個類有類名、屬性名和方法名。但對屬性沒有類型的說明,對方法的參數和返回類型也沒有指明,說明層類圖在分析階段畫出,幫助軟件開發(fā)者之間進行溝通。
3)實現層(Implementation)類圖才真正考慮類的實現問題,揭示實現細節(jié),實現層的類圖中對每個類的屬性和方法都有詳細的說明,如:屬性的類型,以及方法的參數和返回類型。實現層類圖在設計階段畫出,幫助軟件開發(fā)者之間進行溝通。
4.闡述建立類圖的步驟
1)研究分析問題領域,確定系統的需求。
2)發(fā)現對象與類,明確它們的含義和責任,確定屬性和操作。
3)發(fā)現類之間的關系。把類之間的關系用關聯、泛化、聚集、組合、依賴等關系表達出來。
4)設計類之間的關系。調整和細化已得到的類和類之間的關系,解決諸如命名沖突、功能重復等問題。
5)繪制類圖并編制相應的說明。
5.尋找類的幾種方法?
1)根據用例描述中的名詞確定類的候選者。
2)使用CRC分析法尋找類。CRC是類(Class)、責任(Responsibility)和協作(Collaboration)的簡稱,CRC分析法根據類所要扮演的職責來確定類。
3)根據邊界類、控制類和實體類的劃分來幫助發(fā)現系統中的類。
6.順序圖的理解
以ppt中的幾個詳細的順序圖為例,敘述各個消息的含義。
7.闡述模型視圖控制器架構(MVC)
1)模型:即相關的數據,它是對象的內在屬性
2)視圖:是模型的外在表現形式,一個模型可以對應一個或者多個視圖,視圖還具有與外界交互的功能
3)控制器:是模型與視圖的聯系紐帶,控制器提取通過視圖傳輸進來的外部信息轉化成相應事件,然后由對應的控制器對模型進行更新; 相應的,模型的更新與修改將通過控制器通知視圖,保持視圖與模型的一致性。
8.軟件類分包的兩種原則
1)共同封閉原則(Common Closure Principle)。一個包中的各個類應該是由于相似的原則而改變,即將一組職責相似、但以不同方式實現的類歸為一個包中。比如按照層來進行分包就是這種類型。
共同復用原則(Common Reuse Principle)。一個包中的各個類應該一起被復用,復用其中一個可能需要同時考慮同一個包中的其他協作類。通常和業(yè)務功能相關。

第六章 設計模式

  1. 面向對象設計原則與設計模式間的關系:
    原則是從宏觀上指導設計,模式是從微觀與具體事例上指導設計。都是以系統可維護性可擴展性及高效復用為目的的。

  2. 設計模式的主題圍繞兩個:
    ?系統復用
    ?系統擴展
    3.有三類設計模式:創(chuàng)建型、結構型和行為型。分別有哪些具體的設計模式:

  3. 單例模式
    保證一個類僅有一個實例,并提供一個訪問它的全局訪問點。
    單例類擁有一個私有構造函數,確保用戶無法通過new關鍵字直接實例化它。
    除此之外,該模式中包含一個靜態(tài)私有成員變量與靜態(tài)公有的工廠方法,該工廠方法負責檢驗實例的存在性并實例化自己,然后存儲在靜態(tài)成員變量中,以確保只有一個實例被創(chuàng)建。

  4. 熟練掌握單例模式(賴漢模式和餓漢模式)以及它們的代碼,理解如何保證唯一實例的方法,以及如何獲得單一實例。
    單例模式的類圖如下圖所示,請寫出相對應的Java代碼實現。

餓漢式的單例類實現 :
其類圖與上面是一樣的,類名可以自己定義

Public class Singleton
{
uniqueInstance=new Singleton();
private Singleton(){}
public static Singleton getInstance(){
return uniqueInstance;
}
}

7.建造者模式:將對象的構造過程封裝在具體生成器中,用戶使用不同的具體生成器就可以得到該對象的不同表示。

  1. 熟練掌握適配器模式各種角色的作用,及相應類的實現代碼.
    設原客戶端使用GetPower()來獲到電源服務,現在提供方使用GetPower220v()來提供電源服務,試用適配器模式完成該轉換。要求畫出適配器模式實現的類圖。
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容