專案背景
本專案為一個基於 UML 設計、Java 實現的加密聊天室系統。需求與設計文檔已整理發布於 Blog 專欄(共 11 篇),涵蓋系統描述、用例圖、類別圖(8 個核心類)等完整工程文檔。核心要求:除 GUI 兩個類(ClientGUI、ControlCentre)可自由設計介面外,其餘 6 個核心類的操作(方法)嚴禁增刪,必須嚴格遵循設計契約。
專案結構概覽
| 編號 | 內容 | 說明 |
| 1 | 系統描述與需求 | 功能性/非功能性需求、技術棧限定 |
| 2 | Use Cases 用例圖 | 參與者、用例、關係,奠定功能邊界 |
| 3 | Class Diagram 類別圖 | 8 個類、屬性、操作、關聯/繼承/依賴關係 |
| 4-11 | 各類詳細規範 | 序列圖、狀態圖、具體方法契約、資料結構定義 |
核心設計亮點
- 模型驅動開發 (MDD):UML 模型為單一真實來源,代碼為模型的投影,強制架構一致性。
- 契約式開發:核心類介面鎖定,團隊可並行開發(GUI 與核心邏輯分離),降低耦合風險。
- 加密通訊:訊息傳輸層面加密,保障隱私,涉及對稱/非對稱加密演算法應用。
- 事件驅動架構:客戶端/伺服端均採用事件循環處理網路 I/O 與 UI 互動。
實戰價值與挑戰
作者分享此專案旨在:
- 理論落地:將 UML、設計模式、網路程式設計、加密學等知識整合於一個完整專案中。
- 團隊協作練習:模擬真實專案中「設計定型、編碼實現」的分工模式。
- 代碼級討論:打破論壇「問書、問資料、問片段代碼」的碎片化現狀,推動完整專案代碼的共同審閱與重構。
挑戰:嚴格遵循類別圖契約實現邏輯、處理非同步網路通訊與 UI 執行緒同步、正確實現加密協議、優化訊息廣播效能。
參與方式與時程
- 專案地址:CSDN Blog 專欄
- 預計工期:兩週
- 交流方式:每日 Blog 留言討論,鼓勵資深開發者指導、新手實踐。
- 後續規劃:完成編碼階段後,啟動「面向設計」進階專案,需自行完成 UML 建模與系統定義。
給參與者的建議
「看再多的書,說再多的廢話,不如這麼一個實踐操作。」—— 專案發起人 Wayne
- 先完整閱讀所有設計文檔,理清類別職責與交互序列。
- 搭建 Maven/Gradle 專案骨架,導入 JUnit 測試框架。
- 優先實現核心非 GUI 類,編寫單元測試驗證契約合規性。
- GUI 部分採用 JavaFX/Swing,專注使用者體驗與事件綁定。
- 遇到設計疑義,回歸 UML 模型與序列圖,而非憑空臆造邏輯。