物件導向的設計實際上是由物件導向分析(object-oriented analysis)、物件導向設計(object-oriented design)、物件導向程式設計(object-oriented programming)三部分有機的組成在一起。物件導向程式分析和物件導向設計需要用一種方式來描述和記錄。目前業界統一用uml(統一建模語言)來描述和記錄物件導向分析和物件導向設計的結果。
目前uml最新版本為2.0,一共包含13種型別的圖形。常用的有其中七種。例圖、類圖、元件圖、部署圖、順序圖、活**和狀態機圖。
1.用例圖:
幫助開發團隊以一種視覺化的方式理解系統的需求功能,用例圖對系統的實現不做任何的說明,僅僅對系統的功能進行描述。
2.類圖:
顯示類(三部分最上面的顯示的類的名稱,中間部分包含類的屬性,最下面的包含類的方法)和它們的相互關係(關聯、泛化,依賴)。
一、關聯:關聯中有單項關聯和多項關聯,關聯的兩個特殊特例:聚合和組合,他們是部分和整體的關係。組合比聚合更加嚴格。當某個實體聚合成另乙個實體時,該實體還可以同時是另一實體的部分。例如圖中從arm到student是組合關係(
用實體菱形
),從俱樂部到student是聚合關係(
用虛心菱形
)。二、泛化:泛化和繼承是同乙個概念繼承關係用
帶空心箭頭的實線表示
。三、依賴:乙個類的改變會導致另乙個類的改變。
3。物件圖:
只顯示物件及它們的相互關係。
4。活**:
用於描述用例內部的活動或方法的流程,去除活動中對活動的描述他就變成了流程圖。
5。狀態機圖:
顯示 生命週期比較有趣或複雜的物件的各種狀態。
6。通訊圖:
顯示在某種情形下物件之間傳送的訊息。
7。順序圖:
顯示與通訊圖類以的資訊,但強調的是順序,而不是連線。
8。包圖:
顯示相關的類如何組合,對開發人員有用。
9。部署圖:
用於描述軟體系統如何部署到硬體環境中,顯示軟體系統不同元件將在何處物理地執行,以及他們怎麼通訊。
10。元件圖:
提供系統的物理檢視,用途是顯示系統中的軟體對其他軟體元件的依賴關係。組建圖可以在乙個非常高的層次上顯示。從而顯示粗粒度的元件。
11。互動總圖:
使用順序圖喧赤活動的務個步驟。
12。時間圖:
顯示訊息和物件狀態的準確時間限制。
13。復合結構圖:
顯示物件在聚合或復合中的相互關係,顯示介面和協作的物件
uml靜態圖主要包括用例圖,類圖,元件圖,物件圖,部署圖,而uml動態圖包括活**,狀態圖,時序圖,協作圖。
uml靜態結構圖與動態行為圖的定義與作用
uml靜態圖包括:
用例圖,類圖,元件圖,物件圖,部署圖
uml動態圖包括:
活**,狀態圖,時序圖,協作圖
uml靜態結構圖
用例圖:用例圖描述了系統的乙個功能單元,用例圖的主要目的是幫助開發團隊以一種視覺化的方式理解系統的功能需求,包括基於基本流程的"角色"(actors,也就是與系統互動的其他實體)關係,以及系統內用例之間的關係
類圖:類圖表示不同的實體(人、事物和資料)如何彼此相關;換句話說,它顯示了系統的靜態結構。
序列圖:
序列圖顯示具體用例(或者是用例的一部分)的詳細流程。它幾乎是自描述的,並且顯示了流程中中不同物件之間的呼叫關係,同時還可以很詳細地顯示對不同物件的不同呼叫
狀態圖:
uml靜態結構圖中狀態圖表示某個類所處的不同狀態和該類的狀態轉換資訊
活**:
活**表示在處理某個活動時,兩個或者更多類物件之間的過程控制流
uml動態行為圖
元件圖:
元件圖提供系統的物理檢視。它的用途是顯示系統中的軟體對其他軟體元件(例如,庫函式)的依賴關係
部署圖:
部署圖表示該軟體系統如何部署到硬體環境中。它的用途是顯示該系統不同的元件將在何處物理地執行,以及它們將如何彼此通訊。因為部署圖是對物理運**況進行建模,系統的生產人員就可以很好地利用這種圖
物件導向程式設計(2)
面向過程的時候,所寫的程式需要思考好每乙個步驟,設定好電梯以及請求的各個變數,然後用不同的函式一步步依次呼叫去執行,更多的感覺是依照執行的步驟去設計執行這個程式。而利用物件導向去設計的時候,設計出的電梯類,產生的電梯物件,每乙個方法都是乙個特定的功能,乙個型別的變數整合在乙個類中,方法和函式類似,方...
物件導向程式設計2
在使用c語言編寫電梯作業時,大致的結構是先建立乙個結構體,用來儲存所有的請求,內部含有請求層數,請求時間,目的層數,當前層數等變數,然後在main函式中進行一些預處理,再構建上行下行等一些外部函式,並在函式中進行一系列請求的處理。在物件導向程式設計的第一次作業中,初次接觸類的概念,有種迷迷糊糊把作業...
Python 物件導向程式設計2
start object 類是所有類的父類,它定義了好多方法,重寫這些方法我們可以定製自己的類。我們可以比較兩個數字的大小,那我們自定義的類可不可以呢?其實很簡單,我們只需要重寫 object 類中定義的比較方法即可。class mynumber 初始化屬性 def init self,num se...