Java基础(八) ——– UML图

1、 定义:
Unified Modeling Language (UML)又称统一建模语言或标准建模语言
UML规范用来描述建模的概念有,类(对象的)、对象、关联、职责、行为、接口、用例、包、顺序、协作,以及状态

2、 五类十种模型图
1). 用例图(use case): 从用户角度描述系统功能,并指各功能的操作者
2). 静态图: 包括类图,包图,对象图
类图(class): 描述系统中的类的静态结构
包图:是包和类组成,表示包与包之间的关系,包图描述系统分层结构
对象图(Object):是类图的实例

3). 行为图: 描述系统动态模型和队形组成的交换关系。包括状态图和活动图
活动图(activity):描述了业务实现用例的工作流程
状态图(statechart):是描述状态到状态控制流,常用于动态特性建模

4). 交互图: 描述对象之间的交互关系
顺序图(序列图): 对象之间的动态合作关系,强调对象发送消息的顺序,同时显示对象之间的交互
合作图(协作图 collaboration): 描述对象之间的协助关系

5). 实现图
构件图(Component)
部署图(Deployment): 定义系统中软硬件的物理体系结构

3、 UML图中类之间的关系:
泛化、实现、关联、聚合、组合、依赖

1).类封装了数据和行为,具有相同属性、操作、关系的对象的集合总称
2).在系统中,每个类具有一定的职责,即类要完成什么样的功能,要承担什么样的义务。一个类可以有多个职责。
3).类的属性即类的数据职责,类的操作即类的行为职责

a. 泛化(Generalization):
即继承关系(包括类与类的单继承、接口与接口的多继承), is a kind of ,用于描述父类与子类之间的关系

public class A {}
public class B extends A{}

public interface c {}
public interface D extends C {}

Java中UML类图 java中的uml图_uml

b. 实现(Implementation):
接口和了类的实现

public interface A {}
public class B implements A {}

Java中UML类图 java中的uml图_Java中UML类图_02

c. 关联(Association):
是最常用的一种关系
分为: 双向关联、单向关联、自关联、重数性关联

public class Me {
    // 在当前类中含有其他类的引用
    // 在当前对象中含有指向其他对象的引用
    // Me和Friend是在同一个水平
    Friend f; // Me和Friend是关联关系
}

public class Friend {}

Java中UML类图 java中的uml图_uml_03

d. 聚合(Aggregation):
表示整体和部分,整体和部分可以分开

// ClassRoom是整体
public class ClassRoom {
    // Student是部分
    // ClassRoom和List集合属于关联关系,在同一个层级上
    // ClassRoom和Student属于聚合关系,一个是整体,一个是部分
    List<Student> s;

    // 聚合关系,整体不依赖部分,部分也不依赖整体
    // 整体无法决定部分的生命周期
}
public class Student {}

Java中UML类图 java中的uml图_java_04

e. 组合(Composition):
也表示整体和部分,整体和部分不可以分开,即一旦整体不存在,部分也将不存在

public class Person  {
    // Person和list是关联关系
    // Person 和Sizhi是组合关系,Person是整体,Sizhi是部分
    // 组合关系和聚合关系是相似的,区别的地方在: 整体和部分是紧密相连的
    // 整体的生命周期决定部分的生命周期
    List<Sizhi> sizhi;
}

public class Sizhi {}

Java中UML类图 java中的uml图_uml_05

f. 依赖(Dependency):
A类的变化引起了B类的变化,则说明B类依赖于A类
通常出现的地方: 方法的返回值、方法的形参、方法的局部变量

public class Test {
    public void m1 () {
        User u = new User();
    }
}

public class User{}

Java中UML类图 java中的uml图_UML_06

4、 is_a、 is like a、 has_a

is_a:  泛化,继承
is_like_a : 实现
has_a: 关联

5、 依赖和关联的区别:
依赖: 是指使用关系,A依赖B, A需要使用B, 如 人使用汽车,即依赖关系
关联: 是指拥有关系,A关联B, A拥有B,如 教师拥有多个学生,即关联关系