2.UML

目录

2.UML

2.1 UML基本介绍

2.2 UML类图

2.3 类图的表示方式

2.4 类图-依赖关系(Dependence)

 2.5 类图-泛化关系(Generalization)

2.6 类图-实现关系(Implementation)

 2.7 类图-关联关系(Association)

 2.8 类图-聚合关系(Aggregation)

 2.9 类图-组合关系(Composition)

 2.10 组合关系 VS 聚合关系

相关文章索引

后记


2.1 UML基本介绍

  1. UML——Unified modeling language UML (统一建模语言),是一种用于软件系统分析和设计的语言工具,它用于帮助软件开发人员进行思考和记录思路的结果
  2. UML本身是一套符号的规定,就像数学符号和化学符号一样,这些符号用于描述软件模型中的各个元素和他们之间的关系,比如类、接口、实现、泛化、依赖、组合、聚合等。

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

  1. 用例图(use case)
  2. 静态结构图: 类图、对象图、包图、组件图、部署图
  3. 动态行为图:交互图(时序图与协作图)、状态图、活动图
  • 说明: 类图是描述类与类之间的关系的,是UML图中最核心的部分。

2.2 UML类图

  1. 用于描述系统中的类(对象)本身的组成和类(对象)之间的各种静态关系。类图是面向对象建模的主要组成部分。
  2. 类之间的关系: 依赖、泛化(继承)、实现、关联、聚合与组合

2.3 类图的表示方式

1)在UML类图中,类使用包含类名、属性(field) 和方法(method) 且带有分割线的矩形来表示,比如下图表示一个Employee类,它包含name,age和address这3个属性,以及work()方法。

2)属性/方法名称前加的加号和减号表示了这个属性/方法的可见性,UML类图中表示可见性的符号有三种:

  • +:表示public
  • -:表示private
  • #:表示protected

3)属性的完整表示方式是: 可见性 属性名 :类型 [ = 缺省值 ]

4)方法的完整表示方式是: 可见性 方法名(参数列表) [ :返回类型 ]

  • 也可以将类型放在变量名前面,返回值类型放在方法名前面

示例

上图Demo类定义了三个方法:

  • method()方法:修饰符为public,没有参数,没有返回值。
  • method1()方法:修饰符为private,没有参数,返回值类型为String。
  • method2()方法:修饰符为protected,接收两个参数,第一个参数类型为int,第二个参数类型为String,返回值类型是int。
  • method3()方法:权限修饰符为默认修饰符,返回值为void

2.4 类图-依赖关系(Dependence)

  • 只要是在类中用到了对方,那么他们之间就存在依赖关系。如果没有对方,连编绎都通过不了。
  • 在UML类图中,依赖关系使用带箭头的虚线来表示,箭头指向被依赖的类。

依赖关系示例代码:

public class PersonServiceBean {

        private PersonDao personDao;//类

        public void save(Person person){}

        public IDCard getIDCard(Integer personid){}

        public void modify() {

                Department department = new Department();

        }

}

public class PersonDao{}

public class IDCard{}

public class Person{}

public class Department{}

以上代码对应的类图:

总结

  • 类中用到了对方
  • 是类的成员属性
  • 是方法的返回类型
  • 是方法接收的参数类型
  • 方法中使用到
  • 以上都是依赖。

 2.5 类图-泛化关系(Generalization)

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

2)在 UML 类图中,泛化关系用带空心三角箭头的实线来表示,箭头从子类指向父类

泛化关系示例代码:

public abstract class DaoSupport{

        public void save(Object entity){

        }

        public void delete(Object id){

        }

}

public class PersonServiceBean extends Daosupport{

}

以上代码对应类图:

2.6 类图-实现关系(Implementation)

1)实现关系是接口与实现类之间的关系,也是依赖关系的特例。

2)在 UML 类图中,实现关系使用带空心三角箭头的虚线来表示,箭头从实现类指向接口。

实现关系示例代码:

public interface PersonService {

        public void delete(Interger id);

}

public class PersonServiceBean implements PersonService {

        public void delete(Interger id){}

}

以上关系对应类图如下:

 2.7 类图-关联关系(Association)

1)关联关系是对象之间的一种引用关系,用于表示一类对象与另一类对象之间的联系,是依赖关系的特例

2)具有导航性:即双向关系或单向关系

3)具有多重性。主要有以下几种形式:

关联关系的多重性

形式

含义

形式

含义

0

恰为0

1

恰为1

0..1

0或1

0..*

任何数

*

任何数

1..*

1或更多

  • 单向一对一
单向一对一关联关系示例代码

public class Person {

        private IDCard card;

}

public class IDCard{}

标单向一对一关联关系类图题
  •  双向一对一
双向一对一关联关系示例代码

public class Person {

        private IDCard card;

}

public class IDCard{

        private Person person

}

标题双向一对一关联关系类图

双向关联关系用一个不带箭头的实线表示。

  • 自关联关系

自关联关系示例代码

public class Employee {

        private Integer id; // 主键id

        private Integer leader;  // 领导id

}

自关联关系类图标题

 2.8 类图-聚合关系(Aggregation)

1)表示的是整体和部分的关系,整体与部分可以分开。

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

3)在UML类图中,聚合关系可以用带空心菱形的实线来表示,菱形指向整体。

示例:如,一台电脑由键盘(keyboard)、显示器(monitor),鼠标等组成;组成电脑的各个配件是可以从电脑上分离出来的。

聚合关系示例代码

public Computer {

        private Mouse mouse;

        private Monitor monitor;

        public void setMouse(Mouse mouse) {

                this.mouse = mouse;

        }

        public void setMonitor(Monitor monitor) {

                this.monitor = monitor;

        }

}

聚合关系类图标题

 2.9 类图-组合关系(Composition)

1)也是整体与部分的关系,但是整体与部分不可以分开。

2)在UML类图中,组合关系用带实心菱形的实线来表示,菱形指向整体

3)再看一个案例:在程序中我们定义实体,Person、IDCard和Head,那么Head和Person就是组合,IDCard和Person就是聚合。

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

组合关系示例代码

public class Person{

        private IDCard card;

        private Head head = new Head();

}

public class IDCard{}

public class Head{}

标组合关系类图题

 2.10 组合关系 VS 聚合关系

1)组合关系是一种强关联关系,部分和整体具有同样的生命周期,即部分不能脱离整体单独存在,在整体消亡后,部分也会随之消亡。比如人和器官就是组合关系;国和家的关系也是组合关系,国没有了家也就没有了。

2)聚合关系是一种弱关联关系,部分和整体并没有相同的生命周期,整体消亡后部分可以独立存在。比如汽车(整体)与轮胎或发动机(部分)的关系,轮胎或发动机都可以脱离汽车而独立存在;再比如公司和员工的关系。

3)一般来说,组合关系中,被组合的对象是在组合对象创建的时候创建的,如上述组合关系代码中所看到的一样。

4)组合对象和被组合对象是一对一的关联关系;聚合关系则不同,被聚合的对象可以属于多个聚合对象,例如一个员工可以属于多个公司(全职和兼职)

相关文章索引

设计模式概述

后记

我水平有限,错误难免,还望各位加以指正。


本文内容到此结束,感谢您的阅读!!!如果内容对你有帮助的话,记得给我三连丫(点赞、收藏、关注)

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐