UML统一建模语言

一、基本介绍

  (1)UML——Unified modeling language(统一建模语言),是一种用于软件系统分析和设计的语言工具,它用于帮助软件开发人员进行思考和记录思路的结果

  (2)UML 本身是一套符号的规定,就像数学符号和化学符号一样,这些符号用于描述软件模型中的各个元素和他们之间的关系,比如类、接口、实现、泛化、依赖、组合、聚合等,如下图

              

二、UML图

  画 UML 图与写文章差不多,都是把自己的思想描述给别人看,关键在于思路和条理

  UML 图分类:

  (1)用例图(use case)

  (2)静态结构图:类图、对象图、包图、组件图、部署图

  (3)动态行为图:交互图(时序图与协作图)、状态图、活动图

三、UML类图

  (1)用于描述系统中的类(对象)本身的组成和类(对象)之间的各种静态关系

  (2)类之间的关系:依赖、泛化(继承)、实现、关联、聚合与组合

  举例:将以下代码转换为UML类图

 1 class Person { //代码形式->类图
 2     private Integer id;
 3     private String name;
 4 
 5     public void setName(String name) {
 6         this.name = name;
 7     }
 8 
 9     public String getName() {
10         return name;
11     }
12 }

  结果:

  

 

  UML类图---依赖关系(Dependence)

  只要是在类中用到了对方,那么他们之间就存在依赖关系。如果没有对方,连编译都无法通过

  示例代码:

 1 class PersonServiceBean {
 2     private PersonDao personDao;
 3 
 4     public void save(Person person){
 5     
 6     }
 7 
 8     public IDCard getIDCard(Integer personid) {
 9 
10     }
11 
12     public void modify() {
13         Department department = new Department();
14     }
15 
16 }
17 
18 class PersonDao {
19 }
20 
21 class IDCard {
22 }
23 
24 class Person {
25     
26 }
27 
28 class Department {
29 }

  转换成类图:

  

   总结:如何判断两个类之间是否为依赖关系

  (1)类中用到了对方

  (2)类的成员属性

  (3)方法的返回类型

  (4)方法接收的参数类型

  (5)方法体中使用到

 

  UML类图---泛化关系(Generalization)

  泛化关系实际上就是继承关系,它是依赖关系的特例

  示例代码:

 1 abstract class DaoSupport {
 2     public void save(Object entity) {
 3         
 4     }
 5 
 6     public void delete(Object id) {
 7         
 8     }
 9 
10 }
11 
12 
13 class PersonServiceBean extends DaoSupport {
14     
15 }

  转换成类图:

  

   总结:

  (1)泛化关系实际上就是继承关系

  (2)如果 A 类继承了 B 类,我们就说 A 和 B 存在泛化关系

 

  UML类图---实现关系(Implementation)

  实现关系实际上就是 A类实现 B 接口,它是依赖关系的特例

  示例代码:

1 interface PersonService {
2     public void delete(Integer id);
3 }
4 
5 class PersonServiceBean implements PersonService {
6     public void delete(Integer id) {
7     }
8 }

  转换成类图:

  

 

  UML类图---关联关系(Association)

  关联关系实际上就是类和类之间的联系,它是依赖关系的特例

  关联具有导航性,即双向关系或单向关系

  关系具有多重性:如“1”(表示有且仅有一个),“0...”(表示0个或者多个),“0,1”(表示0个或者一个),“n...m”(表示n到m个都可以),“m...*”(表示至少m个)

 

  单向一对一关系:

1 public class Person {
2     private IDCard idCard;
3 }
4 
5 public class IDCard {
6     
7 }

  转换成类图:

  

 

  

 

   双向一对一关系:

1 public class Person {
2     private IDCard idCard;
3 }
4 
5 public class IDCard {
6     private Person person;
7 }

  转换成类图:

  

 

 

   

  UML类图---聚合关系(Aggregation)

  聚合关系(Aggregation)表示的是整体和部分的关系,整体与部分可以分开

  聚合关系是关联关系的特例,所以他具有关联的导航性与多重性

  举例:一台电脑由键盘(keyboard)、显示器(monitor),鼠标(mouse)等组成,组成电脑的各个配件是可以从电脑上分离出来的,使用带空心菱形的实线来表示

  示例代码:

 1 public class Computer {
 2     private Mouse mouse;
 3     private Keyboard keyboard;
 4     private Monitor monitor;
 5 
 6     public void setMouse(Mouse mouse) {
 7     }
 8 
 9     public void setKeyboard(Keyboard keyboard) {
10     }
11 
12     public void setMonitor(Monitor monitor) {
13     }
14 }
15 
16 public class Keyboard {
17 }
18 
19 public class Monitor {
20 }
21 
22 public class Mouse {
23 }

  转换成类图:

  

 

 

   

  UML类图---组合关系(Composition)

  组合关系(Composition)跟聚合关系(Aggregation)一样,也是整体与部分的关系,但是整体与部分不可以分开

  例如:在程序中我们定义实体:Person,IDCard 和 Head, 那么 Head 和 Person 就是组合,IDCard 和 Person 就是聚合,但是如果在程序中 Person 实体中定义了对 IDCard 进行级联删除,即删除 Person 时连同 IDCard 一起删除,那么 IDCard  和 Person 就是组合了

  具体代码:

 1 public class Person {
 2     private IDCard idCard;
 3     private Hand hand = new Hand();
 4 }
 5 
 6 public class IDCard {
 7 }
 8 
 9 public class Hand {
10 }

  转换成类图:

  

 

   

posted @ 2021-03-11 22:31  孤云jh  阅读(456)  评论(0编辑  收藏  举报