《瘋狂Java講義》 2-理解面向對象
總結
1、結構化程序設計
按功能來分析系統需求:自頂向下,逐步求精,模塊化等
結構化分析(Structured Analysis)->結構化設計(SD)->結構化編程(SP)
面向功能,面向數據流,最小單元是函數
三種基本結構:順序結構(順序執行所有操作,直到出口),選擇結構(按條件選擇分支執行),循環型結構
Java保留了goto,但拒絕使用
2、面向對象程序設計
把握事物的本質特點,抽象成類(共同屬性、共同方法的一類事物),作為系統的基本構成單元
OOA->OOD->OOP
成員變量(狀態函數)+方法(行為)=類定義 粒度比面向過程大,函數相當於方法
基本特征:
封裝(Encapsulation),將對象實現細節隱藏起來,用共用方法來暴露對象的功能
繼承(Inheritance),實現軟件復用
多態(Polymorphism),同一方法實現多種行為特征,如不同子類間
類是對象的抽象,對象是類的實例(instance)。消息是實例之間通信的機制。
面向對象與基於對象不同(JavaScript),註意繼承和多態
Java中一切都是對象,有一個唯一標識來引用它。
3、UML 同一建模語言
OOA和OOD需要統一的符號來記錄,UML2.0
3.1 用例圖
用例代表系統的功能模塊,不說明如何實現,僅僅是對系統功能的描述。
橢圓代表用例,小人代表角色,以簡單的線段表示之間關系。常用來表達系統,一個簡單的BBS系統用例圖:
3.2 類圖
表示系統包含哪些實體,實體之間如何關聯。
類用包含三個部分的矩形來表示:名稱,屬性,方法
類之間的三種基本關系:關聯(聚合,組合),泛化(繼承),依賴
- 實線代表雙向關聯,兩個類間可以互相訪問
- 帶箭頭的實線表示單向關聯
- 關聯和屬性很像,類中某一屬性引用到另一實體即成了關聯
- 聚合:某實體可以是多種實體的組成部分,用帶空心棱形框的實線表示
- 組合:某實體只能是該實體的組成部分,用帶實心棱形框的實線表示
- 泛化表示子類是一種特殊的父類,用帶空心三角形的實線表示
- 一個類的改動會導致另一個類的改動,即依賴,用帶箭頭的虛線表示,箭頭指向被依賴的實體
3.3 組件圖
大型應用程序由多個可部署的組件組成。JAR,WAR,DDL(C)
顯示組件的依賴關系。包含組件、接口和port等圖元。圓代表接口,Y依賴該接口。
3.4 部署圖
用於描述軟件系統如何部署到硬件環境中,以及如何通信。
在組件圖上加了節點(處理器&設備)的概念,用三維立方體來表示。
3.5 順序圖
顯示用例的詳細流程
垂直緯度:以時間順序顯示消息/調用的序列;水平緯度:顯示消息被發送到的對象實例。
3.6 演化圖:活動圖 狀態機圖
活動圖用圓角矩陣代表活動,帶箭頭的實線代表事件。支持並發。只有一個開始,可以多個結束途徑。
問題
1、UML還不熟悉,別當成負擔,要當作工具,怎麽合理利用是個問題。
《瘋狂Java講義》 2-理解面向對象