UML 系统建模
1 概述
1.1 课程概述
汇集 UML 及其相关的一些话题
回顾 UML 相关的符号与概念
以电商订单相关业务为例,借助 UML 完成系统建模
将 UML 变成提升建模效率,表达架构思想的工具
1.2 什么是 UML
Unified Modeling Language 统一建模语言,又称标准建模语言。是用来对软件密集系统进行可视化建模的一种语言。语言,也就是一个表达思想的符号约定。
1.3 UML 的发展与版本
建模语言出现在二十世纪 70 年代,80 年代末开始迅速发展,建模语言达到了 50 多种,百家争鸣
后来,Rumbaugh 于 1994 年加入 Booch 所在的 Rational 公司,他们一起研究一种统一的方法
一年后,Unified Method 0.8 诞生
经过他们三年的共同努力,UML0.9 和 UML0.91 于 1996 年相继面世。
此后 UML 创始人 Booch 等人,邀请计算机界的知名人士与企业 IBM,HP,Microsoft,Oracle 等对 UML 进行评论,听取意见。
1997 年 1 月,Rational 公司向 OMG(对象管理组织)提交了 UML1.0
1997 年 11 月,OMG 宣布接受 UML,认定为标准的建模语言
1998 年发布了 UML 1.2
1999 年发布了 UML 1.3
2003 年 3 月发布了 UML 1.5
2004 年推出 UML2.0
1.4 UML 可以做什么
从命名上分析:统一、建模、语言
统一:没有规矩不成方圆,它指定了一种标准,一种约束,使得大家的表达变得一致。它被 OMG(Object Management Group)所认可。
OMG是一个国际化的、开放成员的、非盈利性的计算机行业标准协会,该协会成立于1989年,他是软件行业中一个标准的认可。包括客户、领域专家、分析师、设计师、程序员、测试工程师及培训人员等。UML成为他们工作中统一的沟通工具,用于充分理解和表达自己所关注的内容。
建模:复杂业务系统建模,即建立软件系统模型。UML 的创始人之一 Booch,曾用建一座摩天大楼来比喻 UML 的必要性。简单系统下,可有可无,系统复杂或大到一定程度,建模和文档成为系统周期里非常重要的一环。
语言:面向对象思想的表达。互相之间的沟通工具。一种按照特定规则和模式组成的符号系统。
1.5 学习 UML 的意义
团队或架构设计互相交流,必然需要一种沟通语言
是一门技能,不一定用到,但是作为架构师应该知道
有其他的表达办法,但是用习惯后,UML 真的很方便易用
1.6 关于 UML 的争议
观点一:UML 是鸡肋,离程序员真正需要的设计工具还差得很远。只有为数不多的程序员使用这个工具交流想法,而没有用在具体工作中。
观点二:UML 设计相当的严谨与全面,在面向对象的系统架构上,可以便捷的表达你想要表达的一切想法,优美切无可替代。
个人观点:一项技能和工具,学会并不难,需要的时候能拿来用就好,艺不压身。
1.7 切忌形式化
不要把 UML 过度神化
一个表达想法的工具而已
当用则用,不要刻意去套
2 理论篇
2.1 关系
关系是现实世界中事物与事物之间相互关系的符号表达,抽象到面向对象理念上,大致分为 6 种。
2.1.1 泛化(Generalization)
编辑
定义:
Java 里的 extends,可用于接口与接口之间,或父子类之间
单向,箭头指向父类,如 Tiger 指向 Animal
代码:
//类
public class Animal {
}
public class Cat extends Animal {
}
//接口
public interface Action {
}
public interface Jump extends Action {
}
2.1.2 实现(Realization)
编辑
定义:
Java 里的 implements,箭头指向接口
单向,如 Tiger 扩展了 Sleep 接口,那么箭头指向 Sleep
代码:
public interface Jump {
}
public class Tiger implements Jump {
}
2.1.3 依赖(Dependency)
编辑
定义:
某个类或对象实例,依赖于另一个而存在,在其关键方法中用到了对方
如果一方属性发生变动,另一方可能会收到影响
一般为单向,例如动物依赖于食物,eat (Food food)
类比在表结构上,更像是外键
代码:方法参数,局部变量
2.1.4 关联(Association)
编辑
定义:
是一种拥有的关系,双方不一定属于同一类事物,箭头指向被拥有者
可以单向,也可以双向,例如 Tiger 与 Zookeeper
类比在表结构上,更像是存在中间表关系
代码:成员变量
2.1.5 聚合(Aggregation)
编辑
定义:
单向,空心菱形起始的箭头,箭头指向被拥有者
一种很弱的拥有关系,A 可以拥有 B,但是不是离了 B 就无法生存
群体与个体的关系,如小组包含组员
代码:成员变量,多为集合
2.1.6 组合(Composition)
编辑
正在上传…重新上传取消 定义:
单向,实心菱形为起始,箭头指向子模块
一种整体与部分的关系,A 是由 B 组成的,离开 B 则不完整。
单向,如人和四肢的关系
代码:成员变量,多为集合