目? 錄
一、實驗目的
二、實驗環境
三、學時分配
四、實驗內容與步驟
1. 百度搜索1-2張類圖,請重新繪制它們,并回答以下問題:
2. 根據以下描述,提取這個問題涉及的類,定義各個類之間的關系,并畫出類圖。
3. 某報社采用面向對象技術實現報刊征訂的計算機管理系統,該系統基本需求如下:報社發行多種刊物,每種刊物通過訂單來征訂,訂單中有代碼、名稱訂期、單價、份數等項目,訂戶通過填寫訂單來訂閱報刊。報社下設多個發行站,每個站負責收集登錄訂單、打印收款憑證等事務。報社負責分類并統計各個發行站送來的報刊訂閱信息。
4. 請查閱相關資料,描述自己所了解的航天飛船等相關內容,并繪制出對應的類圖。
5. 【思考題】:試分析類與類之間的關聯、泛化、依賴和細化四種關系,以及類圖的作用。
五、實驗問題及解決方法
六、實驗心得
一、實驗目的
????????1. 掌握面向對象分析中的建模工具——類圖,理解面向對象的對象模型,模擬應用程序的靜態視圖,為其他圖(如順序圖、交互圖)奠定基礎;會熟練使用建模工具,分析并建立相應的模型。
????????2. 掌握應用Visio等業界常用的建模工具的基本使用方法和基本繪圖操作,選擇一種并熟練使用,會使用該工具針對具體問題建立分析模型。
二、實驗環境
????????1. 操作系統:Windows?操作系統。
????????2. 操作軟件:WPS 文檔編輯器、建模工具 boardmix。
????????3. 硬件設備:筆記本電腦一臺。
三、學時分配
????????學時分配: 2 學時。
四、實驗內容與步驟
1. 百度搜索1-2張類圖,請重新繪制它們,并回答以下問題:
1)有哪些類;
2)有哪些關系;
3)簡要描述該圖的作用;
要求:所繪制的圖不得與本文中其它習題一樣。
? ? ? ? (1)在百度上搜索一張學籍管理系統的類圖,重新繪制后的學籍管理系統類圖如圖5-1所示:
圖5-1 學籍管理系統類圖
? ? ? ? 1)有哪些類;
????????答:學籍管理系統中總共有學生、教師、系統管理員、學生信息庫、教師信息庫、系統管理員信息庫、學籍管理系統七大類。
? ? ? ? 2)有哪些關系;
????????答:學生和學生信息庫之間、教師和教師信息庫之間以及系統管理員和系統管理員信息庫之間都是聚合關系;學生和教師之間以及教師和系統管理員之間都是雙向關聯關系;學生信息庫、教師信息庫以及系統管理員信息庫和學籍管理系統之間都是聚合關系。
? ? ? ? 3)簡要描述該圖的作用;
????????答:學籍管理系統包含了多個學生信息庫、教師信息庫以及系統管理員信息庫,同時學生信息庫中包含多名學生、教師信息庫中包含多名教師、系統管理員信息庫中包含多名系統管理員。學生具有姓名和學號,并且可以進行注冊、選課和查詢個人考試信息;教師具有姓名和工資號,并且可以進行注冊、授課和安排學生考試;系統管理員具有姓名和工資號,并且可以進行注冊、管理學生信息、管理教師信息和管理選課系統。通過此類圖可以清晰地展示學籍管理系統中各個類之間的關系,有助于開發者理解系統的整體結構和功能,幫助測試者更好地理解系統的結構和功能,從而更有效地進行測試和輔助教學。
? ? ? ? (2)在百度上搜索一張學生選課系統的類圖,重新繪制后的學生選課系統類圖如圖5-2所示:
圖5-2?學生選課系統類圖
? ? ? ? 1)有哪些類;
????????答:學生選課系統中總共有用戶、學生、選課情況、課程信息、課程表五大類。
? ? ? ? 2)有哪些關系;
????????答:學生和用戶之間是泛化關系;學生和選課情況之間、學生和課程表之間、學生和課程信息之間都是關聯關系;課程信息和課程表之間是組合關系。
? ? ? ? 3)簡要描述該圖的作用;
????????答:學生選課系統中所有的學生都是用戶,但是并非所有的用戶都是學生。課程信息是課程表的一部分,學生可以查看自己的選課情況以及自己的課程表和對應的課程信息。用戶具有賬號、密碼和姓名,可以進行登錄和修改密碼的操作;學生可以進行選課、查詢選課情況和查詢成績;選課情況中具有學號和課程號,可以進行查詢、增加課程和刪除課程;課程信息具有課程名稱、課程號、任課教師、學分、上課時間、上課地點、總學時、周學時、限選人數和現選人數,可以增加選擇和取消選擇;課程表具有專業、課程號、課程名稱、任課教師、上課地點、上課時間,可以增加課程、刪除課程、查詢課程并進行發布。通過此類圖可以清晰地表達學生、課程和選課等元素之間的關系,包括學生與課程之間的關聯關系、學生與選課之間的關聯關系等。這有助于開發者理解系統的整體結構,并能夠更好地進行設計和開發,從而更快地掌握系統的開發方法。
2. 根據以下描述,提取這個問題涉及的類,定義各個類之間的關系,并畫出類圖。
????????汽車和自行車都是交通工具 。一輛自行車只能歸一個人擁有,但一輛汽車可歸一個人或者兩個?擁有。一個人可能沒有自行車或者汽車,也可能擁有多輛自行車或者汽車。每個人都具有年齡和名字。每輛汽車都有自己的顏色和商標。
????????根據題意可知總共有交通工具、汽車、自行車和人四大類,汽車和交通工具之間以及自行車和交通工具之間都是泛化關系,而汽車和人之間以及自行車和人之間都是關聯關系。其中汽車具有color和brand兩個屬性,人具有name和age兩個屬性,對應的交通工具類圖如圖5-3所示:
圖5-3?交通工具類圖
3. 某報社采用面向對象技術實現報刊征訂的計算機管理系統,該系統基本需求如下:報社發行多種刊物,每種刊物通過訂單來征訂,訂單中有代碼、名稱訂期、單價、份數等項目,訂戶通過填寫訂單來訂閱報刊。報社下設多個發行站,每個站負責收集登錄訂單、打印收款憑證等事務。報社負責分類并統計各個發行站送來的報刊訂閱信息。
????????請就此需求建立這個報刊征訂的計算機管理系統的對象模型。
????????根據題意可知總共有報社、刊物、發行站、訂單和訂戶五大類,報社與刊物之間、刊物與訂單之間、發行站與訂單之間以及訂單與訂戶之間都是關聯關系,報社與發行站之間是聚合關系。其中報社可以進行分類和統計報刊訂閱信息;發行站可以收集登錄訂單和打印收款憑證;訂單具有code、name、regular、price、copies五個屬性;訂戶可以填寫訂單,對應的報刊征訂的計算機管理系統類圖如圖5-4所示:
圖5-4?報刊征訂的計算機管理系統類圖
4. 請查閱相關資料,描述自己所了解的航天飛船等相關內容,并繪制出對應的類圖。
????????例如:神舟六號飛船是神舟飛船系列的一種,它由軌道艙、返回艙和逃逸救生塔組成。航天員可以在返回艙內駕駛飛船,軌道艙則是航天員工作和休息的場所。在緊急情況下,可以利用逃逸救生塔逃生。在飛船兩側有多個太陽能電池翼,可以為飛船提供電能。
????????(說明:可直接根據上述例子中的描述繪制“飛船系統”的類圖,也可自己描述進行繪圖)
????????根據題意可知總共具有神舟飛船系列、神舟六號飛船、太陽能電池翼、軌道艙、返回艙、逃逸救生塔以及航天員七大類,神舟飛船系列和神舟六號飛船之間是泛化關系,神舟六號飛船和太陽能電池翼之間、航天員和軌道艙之間、航天員和返回艙之間、航天員和逃逸救生塔之間都是依賴關系,神舟六號飛船和軌道艙、返回艙以及逃逸救生塔之間都是聚合關系。其中軌道艙可以工作和休息;返回艙可以進行飛船駕駛;逃逸救生塔可以逃生,對應的神舟飛船系列類圖如圖5-5所示:
圖5-5?神舟飛船系列類圖
5. 【思考題】:試分析類與類之間的關聯、泛化、依賴和細化四種關系,以及類圖的作用。
????????(1)關聯關系也是依賴關系的一種特例,表示類與類之間的關系,如果一個類,類中有成員變量,且成員變量是一個類,則它們就構成關聯關系。在類圖中,關聯關系通常用一條線表示,可以在線上添加箭頭表示方向或多重性,對應的關聯關系圖如圖5-6所示:
圖5-6?關聯關系圖
????????(2)泛化關系是一種特殊的依賴關系,實際上也就是繼承關系。A類是B類和C類的父類,B、C有共用父類A,說明 A 類是B、C類的泛化,假如B、C繼承了A類,A就和B、C存在泛化關系。在類圖中,泛化關系用一條帶有箭頭的線表示,箭頭指向父類,對應的泛化關系圖如圖5-7所示:
圖5-7?泛化關系圖
????????(3)依賴關系是最常見的一種關系,是一種使用關系,即一個類的實現(或部分方法的實現)需要另外一個類的協助,所以應盡量避免雙向的互相依賴關系。對象A持有對象B的引用,對象A需要借助對象B的協助,假如A是一個類,那么B可以是局部變量,也可以是類中方法參數,或者對靜態方法的調用;(對象A可以依賴B,也可以不依賴B,用到了有B的部分方法就依賴了B)。在類圖中,依賴關系通常用一條帶有箭頭的虛線表示,箭頭指向被依賴的類,對應的依賴關系圖如圖5-8所示:
圖5-8?依賴關系圖
????????(4)細化關系是一種特殊形式的泛化關系,它表示一個更具體的類(子類)繼承了一個更通用的類(父類)的屬性和行為。在類圖中,細化關系可以用一條帶有箭頭的實線表示,箭頭指向被細化的類,對應的細化關系圖如圖5-9所示:
圖5-9?細化關系圖
????????(5)類圖是一種用于描述軟件系統的靜態結構的圖形表示方法,它包含了系統的類、接口、屬性、方法以及它們之間的關系。第一,類圖可以清晰地展示系統的各個組成部分以及它們之間的關系。第二,通過繪制類圖,開發人員可以更好地理解系統的結構和功能,從而更好地設計和實現系統。第三,類圖可以幫助開發人員了解系統的詳細信息,包括類的屬性和方法以及它們之間的關系,有助于開發人員在編程時更好地理解系統的需求和設計。第四,通過觀察類圖測試人員可以更好地理解系統的結構和功能,從而更有效地進行測試。同時類圖也可以幫助開發人員在系統維護時更好地理解和修改系統的結構。第五,類圖可以作為文檔記錄系統的結構和組織方式,供開發人員和其他相關人員查閱和理解。同時通過繪制類圖可以將系統的結構和設計思路傳遞給其他開發人員或新成員。
五、實驗問題及解決方法
????????(1)實驗問題:類圖過于復雜,難以理解和維護。
解決方法:將類圖劃分為多個子圖或模塊,并使用包圖或其他工具來組織它們之間的關系。
????????(2)實驗問題:無法準確地表達類之間的關系。
解決方法:仔細分析類之間的關系,并使用正確的線條和標注來表示它們,如果關聯關系復雜,可以考慮使用其他圖來表示。
????????(3)實驗問題:類的屬性和操作沒有正確展示。
解決方法:在類圖中列出所有屬性和操作,并使用恰當的表示方法,屬性應該顯示其類型和名稱,操作應該顯示其參數和返回類型。
????????(4)實驗問題:類的命名不準確。
解決方法:使用準確的命名來描述類的功能和屬性,避免使用模糊或易混淆的名稱,以使讀者更容易理解類的作用。
????????(5)實驗問題:忽略類之間的交互。
解決方法:在類圖中顯示類之間的所有交互,包括消息傳遞和數據共享等,有助于讀者更好地理解類之間的協作關系。
????????(6)實驗問題:類的繼承關系無法準確表達。
解決方法:在類圖中明確表示類的繼承關系,使用箭頭和標注來表示繼承關系。
????????(7)實驗問題:類圖缺乏必要的包和子系統劃分。
解決方法:使用包圖來組織類圖中的類和接口,以保持類的清晰和易于管理,可以根據需要將類圖劃分為多個子系統或模塊,并使用包圖來表示它們之間的關系。
????????(8)實驗問題:類的定義不清晰。
解決方法:如果類的定義不清晰,將導致整個類圖的不準確,明確類的職責和屬性,確保類的定義完整且易于理解。
????????(9)實驗問題:類的命名不統一。
解決方法:遵循統一的命名規范,確保類的命名準確、清晰且易于理解。
六、實驗心得
????????1、在繪制類圖之前,我認識到深入理解業務邏輯和需求是非常重要的。只有了解系統的功能需求和業務流程,才能準確地確定類之間的關系和屬性。這有助于確保類圖的一致性和準確性,因此在開始繪制類圖之前,我會盡力與業務人員交流,了解業務需求和流程,以便更好地理解業務邏輯。
????????2、在繪制類圖的過程中,我深刻體會到合理使用UML規范的重要性,UML是一種通用的建模語言,提供了豐富的符號和標記方法,可以幫助我們準確地表達復雜的系統和模型。但是如果使用不當,反而會影響圖的可讀性和理解性。因此在繪制類圖時要遵循UML規范,使用正確的符號和標記方法,以提高圖的可讀性和可理解性。
????????3、在繪制類圖時,我意識到適當簡化類圖是非常重要的,類圖是一種靜態建模方法,用于描述系統的結構和組織方式。但是如果類圖過于復雜,就會影響讀者的理解和分析。因此在繪制類圖時,要適當簡化圖的內容,突出重要的類和關系,避免過多的細節和復雜性。
????????4、在繪制類圖時,我深刻體會到注重細節和質量的重要性,一個高質量的類圖可以清晰地表達系統的結構和組織方式,而一個質量差的類圖則會給讀者帶來困惑和誤解。因此在繪制類圖時,要注重細節和質量,確保每個類和關系的描述都是準確和清晰的。
????????5、在繪制類圖的過程中,我認識到不斷迭代和優化是非常重要的,類圖是一種建模工具,可以幫助我們分析和設計系統。但是由于我們對系統的理解和需求的變化,類圖也需要不斷地迭代和優化。因此在繪制類圖的過程中,要不斷地檢查和修正圖的準確性和完整性,以確保類圖能夠滿足系統的需求和變化。