《軟件工程導論》實驗報告五 設計建模工具的使用(一)類圖

目? 錄

一、實驗目的

二、實驗環境

三、學時分配

四、實驗內容與步驟

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、在繪制類圖的過程中,我認識到不斷迭代和優化是非常重要的,類圖是一種建模工具,可以幫助我們分析和設計系統。但是由于我們對系統的理解和需求的變化,類圖也需要不斷地迭代和優化。因此在繪制類圖的過程中,要不斷地檢查和修正圖的準確性和完整性,以確保類圖能夠滿足系統的需求和變化。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/93523.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/93523.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/93523.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

智慧景區導覽系統:基于WebGL的手繪地圖導覽設計與應用,DeepSeek大模型賦能精準游客引導服務

本文面向 景區信息化負責人、后端開發者、全棧工程師,旨在解決傳統景區導覽系統靜態地圖信息有限、人工導游成本高、景區服務人員咨詢壓力大 的核心痛點,提供從技術選型到落地部署的全鏈路解決方案。如需獲取智慧景區導覽系統解決方案請前往文章最下方獲…

使用uniapp自定義組件雙重支付密碼

自定義組件雙重支付密碼父組件<template><view class"container"><view class"top"></view><navbar navTitle"修改支付密碼"></navbar><!-- 雙重支付密碼 --><view class"box">//核心…

C語言+安全函數+非安全函數

在C語言中&#xff0c;許多標準庫函數&#xff08;如 strcpy、scanf、gets 等&#xff09;由于缺乏邊界檢查&#xff0c;容易導致 ?緩沖區溢出&#xff08;Buffer Overflow&#xff09;?、內存越界訪問? 等安全問題。為了解決這些問題&#xff0c;C11標準引入了 ?安全函數&…

android build.gradle中的namespace和applicationId的區別

namespace 和 applicationId 確實容作用&#xff1a;1. namespace引入版本&#xff1a;Android Gradle Plugin (AGP) 7.0 開始引入&#xff0c;替代 AndroidManifest.xml 里的 package 屬性。作用&#xff1a; 用于 代碼中的 R 文件、BuildConfig 生成的 Java/Kotlin 包名。決定…

數據結構初階(15)排序算法—交換排序(快速排序)(動圖演示)

2.3 交換排序 2.3.0 基本思想交換排序的基本思想&#xff1a;基本思想根據序列中兩個記錄鍵值的比較結果來對換這兩個記錄在序列中的位置。&#xff08;比較結果→交換位置&#xff09;特點將鍵值較大的記錄向序列的尾部移動&#xff0c;鍵值較小的記錄向序列的前部移動。比 換…

Apache Hudi:數據湖的實時革命

Apache Hudi是一個開源的數據湖存儲格式和框架&#xff0c;它通過引入類似數據庫的事務機制&#xff0c;解決了傳統數據湖在實時更新、低延遲查詢和增量消費方面的痛點。Hudi最初由Uber于2016年開發并應用于生產環境&#xff0c;2017年開源&#xff0c;2019年成為Apache孵化項目…

深度解析和鯨社區熱門項目:電商雙 11 美妝數據分析的細節與價值

在數據驅動決策的時代&#xff0c;電商大促期間的行業數據分析總能為從業者和學習者提供寶貴參考。今天&#xff0c;我們來詳細拆解和鯨社區&#xff08;heywhale&#xff09;上一個備受關注的實戰項目 ——《電商雙 11 美妝數據分析》&#xff0c;看看它能給我們帶來哪些啟發。…

uniapp 開發微信小程序,獲取經緯度并且轉化詳細地址(單獨封裝版本)

目錄1、單獨抽離封裝2、使用示例3、前置條件和配置4、效果彈框1、單獨抽離封裝 // 騰訊地圖SDK引入&#xff08;需提前下載qqmap-wx-jssdk.min.js文件&#xff09; // 注意&#xff1a;使用前需在微信公眾平臺配置request合法域名https://apis.map.qq.com var QQMapWX requir…

深入理解 Python 元類中的 __prepare__ 方法:掌控類屬性定義順序的藝術

關鍵詞&#xff1a;元類、type、prepare、OrderedDict、屬性順序、數據建模在 Python 的高級編程中&#xff0c;元類&#xff08;metaclass&#xff09; 是一種強大而神秘的機制。它允許我們在類創建之前進行干預&#xff0c;從而實現諸如自動屬性驗證、字段序列化、ORM 映射等…

MATLAB基礎訓練實驗

MATLAB基礎訓練實驗 1. 標題 MATLAB 基礎訓練 2. 內容概括 本實驗旨在通過MATLAB基礎操作訓練,掌握數組創建與運算、矩陣操作、M文件編寫、流程控制、二維/三維繪圖等核心技能。實驗內容包括復數運算、矩陣變換、函數繪圖、結構體創建、電路方程求解、電流波形繪制、三維曲…

implement libwhich for Windows

因為windows沒有類似unix的which命令 現在實現盡量跨平臺&#xff0c;且stb 風格的libwhich // which.h #ifndef LIBWHICH_H #define LIBWHICH_H#ifdef __cplusplus extern "C" { #endif/** 查找可執行文件在系統中的路徑* 參數:* filename - 要查找的可執行文件名…

記與客戶端的一次“無謂之爭”

一、沖突今天&#xff0c;流程收尾時&#xff0c;客戶端為了統計時延&#xff0c;連發兩個接口&#xff1a;一個報開始時間&#xff0c;一個報結束時間。我因性能考慮&#xff0c;說&#xff1a;“明明一個接口能搞定&#xff01;”客戶端負責人說&#xff1a;“發送兩次更合理…

Java Condition 對象 wait 方法使用與修復方案

在 Java 中&#xff0c;java.util.concurrent.locks.Condition 接口提供了類似監視器的方法&#xff08;await(), signal(), signalAll()&#xff09;來實現線程間的協調。正確使用 Condition 對象需要遵循特定模式以避免常見問題。常見問題及修復方案1. 虛假喚醒問題問題&…

??金倉數據庫KingbaseES V9R1C10安裝教程 - Windows版詳細指南?

文章目錄一、前言二、軟件下載2.1 下載安裝包2.2 下載授權文件三. 安裝KingbaseES數據庫3.1 解壓安裝包3.2 運行安裝程序3.3 安裝步驟詳解步驟1&#xff1a;歡迎界面步驟2&#xff1a;許可協議步驟3&#xff1a;添加授權文件步驟4&#xff1a;選擇安裝路徑步驟5&#xff1a;選擇…

論文推薦|遷移學習+多模態特征融合

來gongzhonghao【圖靈學術計算機論文輔導】&#xff0c;快速拿捏更多計算機SCI/CCF發文資訊&#xff5e;在Cvpr、NeurIPS、AAAI等頂會中&#xff0c;遷移學習多模態特征融合正以“降成本、提性能、省標注”的絕對優勢成為最熱賽道。面對超大模型全量微調天價算力、異構模態對齊…

接口芯片斷電高阻態特性研究與應用分析

摘要&#xff1a; 本文以國科安芯推出的ASM1042 系列通訊接口芯片為例&#xff0c;深入探討接口芯片斷電高阻態特性&#xff0c;涵蓋其定義、原理、應用及設計注意事項。通過對相關技術資料的梳理與分析&#xff0c;結合具體芯片實例&#xff0c;闡述高阻態在電路穩定性、設備兼…

數據結構初階(17)排序算法——非比較排序(計數排序·動圖演示)、排序算法總結

2.0 十大排序算法2.5 非比較排序 之前學習的排序算法都是比較排序——借助比較大小&#xff0c;來實現排序。非比較就是不借助比較大小&#xff0c;來實現排序。——小眾的、局限的非比較排序大致有這些&#xff1a;計數排序、桶排序、基數排序。桶排序、基數排序在實踐中意義不…

VisualStudio2022調試Unity C#代碼步驟

一.VS安裝Unity開發組件按下圖所示安裝Unity開發組件二.附加Unity調試程序2.1 先將Unity進入Play模式2.2 VS選擇附加Unity調試程序菜單2.3 選擇附加的實例三.加入斷點測試Update方法中成功進入斷點

Zabbix【部署 01】Zabbix企業級分布式監控系統部署配置使用實例(在線安裝及問題處理)程序安裝+數據庫初始+前端配置+服務啟動+Web登錄

Zabbix使用 1.下載 2.安裝 2.1 程序安裝 2.2 數據庫初始化 2.3 前端配置 2.4 服務啟動 3.Web登錄 4.總結 安裝說明: 本次安裝為在線安裝,使用數據庫為PostgreSQL。 1.下載 由于是在線安裝,這次不涉及離線安裝包的下載,僅做參考用,點擊跳轉【下載頁面】,下載說明: 版本…

爬機 驗證服務器是否拒絕請求

當訪問XX網站時返回 418 狀態碼時&#xff0c;說明服務器識別到了爬蟲行為并拒絕了請求。這是網站的反爬機制在起作用&#xff0c;我們可以通過模擬瀏覽器行為來繞過基礎反爬。import requestsurl https://cn.bing.com/# 模擬瀏覽器的完整請求頭&#xff0c;包含更多瀏覽器標識…