1. 程式人生 > >《瘋狂Java講義》 2-理解面向對象

《瘋狂Java講義》 2-理解面向對象

組合 序列 暴露 應用 特殊 程序設計 ron 自頂向下 定義

總結

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-理解面向對象