
分析类图应聚焦问题域核心概念(如教师、学生),而非实现细节;菜单和界面类属于设计阶段,通常不纳入纯分析模型,但可根据建模目标选择性引入并用ebc等构造型加以区分。
分析类图应聚焦问题域核心概念(如教师、学生),而非实现细节;菜单和界面类属于设计阶段,通常不纳入纯分析模型,但可根据建模目标选择性引入并用ebc等构造型加以区分。
在面向对象分析与设计实践中,明确区分“分析”与“设计”两个阶段至关重要。分析类图(Analysis Class Diagram)的核心使命是捕捉问题域的本质结构与关系,而非描述软件如何被实现。以教师-学生管理系统为例,Student、Teacher、Course、Enrollment 等实体及其关联(如“一个学生可拥有多个教师”)才是分析图的主角——它们独立于技术栈、用户界面甚至编程语言,即使将来系统从Web迁移到语音助手,这些概念依然有效。
因此,标准的分析类图通常不包含 MainMenu、TeachersPage 或 SettingsDialog 这类UI组件。原因在于:
Shop7z网上购物系统支持电脑版+手机版+支付宝及微信支付,支持QQ和微信一键登陆,系统集众家之所长,大气超美观页面+手机版+商品组合套餐+限时抢购秒杀+图片批量上传+淘宝数据包导入+弹出式分类菜单+不同规格不同价格+新订单邮件通知+销售报表打印与Excel输出+物流跟踪打印查询+会员积分及优惠券+邮件群发+图片在线管理+销售统计报表+五种价格体系+礼品礼券+微信公众号支付+扫码支付等等等。
- 菜单是交互控制逻辑的体现,属于解决方案空间(solution space),而非问题空间(problem space);
- “教师列表页显示所有教师档案”属于功能需求的呈现方式,应在用例图或用户界面原型中表达,而非污染领域语义;
- 过早引入界面类易导致模型耦合,削弱可复用性与平台无关性。
当然,若教学任务明确要求展现系统整体架构雏形,或需向评审者说明“如何组织用户交互”,则可采用分层建模策略:
✅ 推荐做法:使用多图分离 + EBC构造型(Entity-Boundary-Control)
这是《统一过程》(UP)等主流方法论推荐的方式,既保持分析严谨性,又支持渐进式设计演进:
<<Entity>>
+----------------+
| Student |
+----------------+
| - id: String |
| - name: String |
+----------------+
▲
| 1..*
|
<<Boundary>> <<Control>>
+----------------+ +------------------+
| TeachersPage | | EnrollmentManager|
+----------------+ +------------------+
| - showList() | | + assignTeacher()|
| - navigateTo() | | + validate() |
+----------------+ +------------------+- > 类(如 Student)代表问题域中的核心概念,持久化且业务意义明确;
- > 类(如 TeachersPage)封装人机交互边界,负责输入/输出,但不包含具体UI控件细节(如按钮、CSS样式),仅抽象其职责;
- > 类(如 EnrollmentManager)协调实体间行为,实现用例逻辑。
⚠️ 注意事项:
- 若强行将 MainMenu 作为普通类加入分析图,并让它“聚合”TeachersPage 和 SettingsPage,会模糊分析与设计的界限,且无法体现其控制流本质;
- 链接方式应基于职责而非视觉布局:TeachersPage 与 Student 之间宜用依赖(«use»)表示“展示学生数据”,而非关联或组合;
- 所有UI相关类应明确标注构造型(如 >),并在图例中说明,确保读者理解其技术定位。
总结而言:分析图重“是什么”,设计图重“怎么做”。 对于课程作业,建议优先构建纯净的领域模型(仅含 Student、Teacher 及其关联),再另起一张EBC风格的设计类图补充交互结构——两图并行,逻辑清晰,既符合UML工程实践,也更能体现你对软件建模层次的深刻理解。









