設計類圖是類圖的一個變體,類圖表示一系列的類以及它們之間的關係。因為分析階段是一個發現需求的過程,所以我們一般很少關心類的屬性和方法的細節。在面向對象設計中,類的屬性有一個特徵叫可見性,它表示其它類是否可以訪問該屬性。類的每個屬性都有一個類型定義,例如字符串或數值類型。在詳細設計階段,我們需要細化這些屬性,並且定義方法的名稱、返回值以及傳入的參數。因此,雖然分析階段和設計階段的類圖很相似,但設計階段的類圖更完善。
下圖顯示了用於設計類圖要使用的符號,這個類圖是一個簡化的版本,它僅僅顯示了屬性和方法標識。
類圖的圖形符號是一個矩形框,矩形框分為三個部分。第一部分是類名,在這裡寫入類的名稱;第二部分是屬性列表,在這裡寫入類的所有屬性,包括屬性的名稱、屬性的可見性和屬性的類型。屬性的可見性用於表示其它類是否能直接訪問這些屬性;第三部分是方法列表,在這裡寫入類的所有方法,包括方法的名稱、返回值以及傳入的參數。
屬性列表包含了在分析階段所發現類的所有屬性。此外,還包括一些其它屬性,這些屬性用來表示和其它類的對象相關聯的對象引用。例如,一個帳號對應一個客戶,客戶帳號類需要一個方法找到正確的客戶。有兩種方法可以做到這一點,一是定義一個域,可以直接引用或連接正確的客戶對象,這個域叫做對象引用或對象指針;另一種方法是在客戶帳號類中為客戶類插入一個外部碼。前面的方法比較適合類之間的引用,後面的方法比較適合關係資料庫表的關聯。
另外補充的一個屬性是狀態值屬性,類中加入這個屬性能夠維護對象所處的狀態的信息。狀態信息從狀態圖中提取並加入到方法邏輯中,這個屬性就是類的狀態變量。例如,用戶類要保存用戶是否登錄系統的狀態。
方法列表包含了在分析階段所發現類的所有方法,分析階段的類圖僅給出了類的中文方法名稱。在設計階段需要用英文確定方法的名稱,並給出方法的返回值和傳入的參數。
圖2是人脈系統名片類分析階段的類圖,圖3是人脈系統名片類設計階段的類圖。
從圖2和圖3可以看出,分析階段的類圖主要是從業務領域獲取信息的,在描述上更多使用了業務領域的語言和詞彙。設計階段的類圖是從編程實現角度來設計類圖的,更多的是考慮類編碼的實現。圖3的設計類圖不僅給出了類的英文名稱、類屬性的可見性、類屬性的英文名稱、類屬性的數據類型,還給出了類方法的返回值、方法的英文名稱和方法的傳入參數。程式設計師可以根據設計類圖直接編寫類代碼,也可以使用代碼自動生成軟體來自動創建類代碼。