UML概述——系统学习UML篇一

UML建模语言详解
本文介绍了UML作为建模语言的起源、发展和主要视图,包括用户视图、结构视图、行为视图、实现视图和环境视图,并详细阐述了各种视图中的图形元素和使用频率。
前言

现阶段的课程正好在学习软件体系结构,也就是软件架构的内容,内容主要包括UML建模和以Java为语言示范的设计模式。

课程非常不错,刘伟老师的授课能力很强,学习非常有收获,就想着一边复习整理备考,一边发一个系列博客。

UML概述
  • UML是一种语言,它有自己的标准表达规则。它是一种分析设计语言,也就是一门建模语言
  • UML是由图形符号表达的建模语言
  • UML是一种用于描绘软件蓝图的的标准语言

上述第三条里面说到的“软件蓝图”指的就是我们所做的架构设计。虽然架构设计不只有UML,但UML的使用绝对是最广泛的,它又是为此而生的。

程序流程图、软件测试中的控制流图、数据库建模的ER模型图等都不属于UML。

UML的诞生
  • 从1994年起,Grady Booch和James RumBaugh在Rational软件公司开始了UML的创建工作
  • 1995年,OOSE方法和Objectory方法的创建者Ivar Jacobson也加入其中

Grady、James、Ivar是当时领域内建模的三大巨头,有三套非常流行的建模方法,Rational公司为了统一三人必然是付出了巨大的努力。

  • 自此之后UML的三位创始人联手,共同为创建一种标准的的建模语言而工作,他们将开发出来的产品名称定为UML(Uniform Modeling Language 统一建模语言)
  • 1997年11月,在三人及Rational公司的努力下,UML1.1版本提交给OMG(Object Management Group 对象管理组织),并获得通过,UML1.1从此成为业界标准的建模语言

Rational公司为了让

### 使用 UML 进行在线选课系统的建模 #### 1. 在线选课系统概述 在线选课系统种典型的软件应用场景,其核心目标是实现学生、教师以及管理员之间的交互操作。为了更好地理解该系统的结构和行为,可以利用 **UML (Unified Modeling Language)** 来构建模型[^1]。 --- #### 2. 构造块的应用 UML 的三种基本构造块——**事物**、**关系** 和 **** 可以用来描述在线选课系统的各个方面: - **事物**: 表示系统中的主要组件,例如类(Class)、对象(Object)、用例(Use Case) 等。 - **关系**: 定义这些事物之间如何相互作用,常见的有依赖(Dependency)、关联(Association)、泛化(Generalization) 等。 - ****: 将上述元素组合成可视化的表形式,用于表达特定视角下的系统特性。 对于在线选课系统而言,可以通过以下几种常见类型的 UML 来展示不同层次的信息: --- #### 3. 主要使用的 UML 及其用途 ##### (1)用例 (Use Case Diagram) 用例展示了系统外部参与者(Actor)与系统功能之间的交互情况。以下是在线选课系统可能涉及的主要角色及对应的功能: - 学生(Student): 登录、查看课程列表、选择课程、取消已选课程等; - 教师(Teacher): 发布课程信息、管理学生成绩等; - 管理员(Administrator): 维护用户账户、审核课程申请等。 ```plaintext +-------------------+ | Student | +-------------------+ | login() v +-------------------+ | View Course List | +-------------------+ | selectCourse() v +-------------------+ | Confirm Selection | +-------------------+ ... and so on. ``` 此部分可以用形工具绘制完整的 Use Case Diagram. --- ##### (2)类 (Class Diagram) 类表示了系统内部的数据结构和逻辑关系。下面是个简化版的类定义示例: ```java // 类定义示例 public class User { private String id; private String name; public void setId(String id){ this.id = id; } public String getId(){ return id; } public void setName(String name){ this.name = name;} public String getName() {return name;} } public class Student extends User{ private Set<Course> selectedCourses; public boolean addCourse(Course course){ if(selectedCourses.contains(course)){ System.out.println("Already Selected!"); return false; }else{ selectedCourses.add(course); return true; } } } ``` 在实际开发中,还需要考虑其他细节如异常处理机制等. --- ##### (3)序列 (Sequence Diagram) 序列描绘的是多个对象间的时间顺序上的消息传递过程。比如当名学生尝试注册门新课程时,可能会经历以下几个阶段的操作流程[^2]: 1. 用户界面(UI Component) 向控制器(Controller Object) 请求提交表单数据; 2. 控制器验证输入合法性并调用服务层(Service Layer Method),查询数据库确认是否有剩余名额可供分配; 3. 如果成功,则更新状态并将结果反馈给前端显示;否则返回错误提示信息通知失败原因。 --- ##### (4)活动 (Activity Diagram) 活动能够清晰地展现整个业务流执行路径。针对“学生选课”的典型场景可设计如下分支判断条件节点: - 判断当前学期是否开放报名权限? - 验证所选项是否存在冲突时间安排? - 记录最终决策动作至持久存储介质当中保存历史记录以便后续追踪审计之需等等[^3]. --- #### 4. 总结说明 综上所述,借助于多种视角度相结合的方式可以帮助我们更全面深入地理解和规划复杂信息系统建设工作。每UML 都有各自擅长表现的内容领域,在具体实践中应灵活选用适合当下需求的最佳方案加以运用实施[^1]. ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值