0
点赞
收藏
分享

微信扫一扫

想学设计模式、想搞架构设计,先学学 UML 系统建模

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 则不完整。

单向,如人和四肢的关系

代码:成员变量,多为集合

举报

相关推荐

0 条评论