第二章.理解面向對象
面向對象語言的三個基本特征:封裝(Encapsulation)、繼承(Inheritance)、多態(Polymorphism)
封裝:將對象的實現細節隱藏起來,然後通過一些公用方法來暴露該對象的功能
繼承:實現軟件復用的手段,當子類繼承父類後,子類作為一種特殊的父類,將直接獲得父類的屬性和方法
多態:子類對象可以直接賦給父類變量,但運行時依然表現出子類的行為特征,意味著同一個類型的對象在執行同一個方法時,可能表現出多種行為特征。
抽象:忽略一個主題中與當前目標無關的那些方面,抽象並不打算了解全部問題,而只是考慮部分問題。
Java程序最小程序單位是類。
面向對象的方式是由OOA(面向對象分析)、OOD(面向對象設計)和OOP(面向對象編程)三部分組成
OOA對目標系統進行分析,建立分析模型,將之文檔化
OOD用面向對象的思想對OOA的結果進行細化,得出設計模型
采用UML(統一建模語言)來描述記錄OOA和OOD的結果
UML:OOA和OOD的分析、設計結果需要統一的符號來描述、交流並記錄,於是產生了UML
UML包括13中類型的圖形,常用的UML圖形有用例圖、類圖、組件圖、部署圖、順序圖、活動圖和狀態機圖。
用例圖:用於描述系統提供的系列功能,而每個用例則代表系統的一個功能模塊。
類圖:表示系統中應該包含哪些實體,各實體之間如何關聯。
類圖可以表示實體的靜態內部關系,還可以表示實體之間的相互關系:
關聯:兩個實體間存在關系,關聯使用一條實線表示,帶箭頭的實線表示單向關聯。
類中某個屬性引用到了另外一個實體時,則變成了關聯。
關聯關系包括兩個特例:聚合和組合,組合比聚合更加嚴格。
聚合:學生可以是籃球俱樂部成員,也可以是書法俱樂部成員。使用帶空心菱形框的實線表示。
組合:你的耳朵是你的一部分,不可能是其他人的一部分。使用帶實心菱形框的實線表示。
泛化:與繼承是同一個概念,都是指子類是一種特殊的父類,繼承使用帶空心三角形的實線表示。
類實現接口是一種特殊的繼承,使用帶空心三角形的虛線表示。
依賴:若一個類的改動會導致另一個類的改動,則稱兩個類之間存在依賴。依賴關系使用帶箭頭的虛線表示,其中箭頭指向被依賴的實體。
組件圖:大型應用程序通常會有一個或多個可部署的組件組成。對Java而言,可復用的組件通常打包成一個JAR、WAR等文件
部署圖:用於描述軟件系統如何部署到硬件環境中,它的用途是顯示軟件系統不同的組件將在何處物理運行,以及它們將如何彼此通信。
順序圖:描述了對象之間的交互(順序圖和通信圖都被稱為交互圖),重點在於描述消息及其時間順序。
活動圖:用於描述用例內部的活動或方法的流程。
狀態機圖:描述某一對象生命周期中需要關註的不同狀態,並會詳細描述刺激對象狀態改變的事件,以及對象狀態改變時所采取的動作。
面向對象語言可以更好的提供可重用性、可擴展性和可維護性。
Java語言中,除了8中基本數據類型外,一切都是對象。
類:具有相同或相似性質的一組對象的抽象就是類。
對象:是實際存在的該類事物的個體,因而也稱為實例(instance)。
對象抽象化是類,類的具體化是對象。
類之間的結構關系:
一般到特殊:“is a”典型的繼承關系,子類是特殊的父類
整體到部分:“has a”典型的組合關系,在一個類中保存另一個對象的引用來實現組合關系。
第二章.理解面向對象