UML类图属性和相关关系

UML类图

1. 类属性的可见性

描述类的属性的可见性:

UML中,可见性分为4级

  1. public 公用的 :用+ 前缀表示 ,该属性对所有类可见

  2. protected 受保护的:用 # 前缀表示,对该类的子孙可见

  3. private 私有的:用- 前缀表示,只对该类本身可见

  4. package 包的:用 ~ 前缀表示,只对同一包声明的其他类可见
    UML类图属性和相关关系_第1张图片

2. UML类与类之间的关系

关系有: 依赖、泛化(继承)、实现、关联、聚合、组合

2.1. 依赖关系(Dependence)

依赖关系: 是一种使用关系,即一个类实现需要另一个类的协助,所以要尽量不使用相互依赖。

代码表现: 局部变量、方法的参数或者静态方法调用

箭头及指向: 带箭头的虚线,指向被使用者

具体体现:

  1. 类中用到了对方;
  2. 如果是类的成员属性;
  3. 如果方法的返回值类型;
  4. 是方法接收的参数类型;
  5. 方法中使用到。
2.1.1 实例代码
public class PersonDao {
    
}

public class IDCard {
    
}

public class Person {
    
}

public class Department {
    
}

public class PersonServiceBean {
    private PersonDao personDao;
    public void save(Person person);
    public IDCard getIDCard(Integer personId) {
        return null;
    }
    public void modify() {
        Department department = new Department();
    }
}
2.1.2 UML类图

UML类图属性和相关关系_第2张图片

2.2 泛化(继承)关系(Generalization)

2.2.1 介绍:

泛化关系:是一种继承关系,表示一般与特殊的关系,它指定了子类如何转化父类的所有特性和行为。他是依赖关系的特例。

箭头指向: 带三角空心箭头的实线,箭头指向父类。

2.2.2 代码示例
public abstract class A {
    public void save(Object c) {
        
    }
    
    public void delete(Object id) {
        
    }
}

public class B extends A {
    
}
2.2.3 UML图

UML类图属性和相关关系_第3张图片

2.3 实现关系(Implementation)

2.3.1 介绍

实线关系:是一种类与接口之间的关系,表示类是接口所有的特性和行为的实现。他是依赖关系的特例。

**箭头指向:**带空心三角形箭头的虚线,箭头指向接口。

2.3.2 代码示例
public interface A {
    public void delete(Integer id);
    public void save(Object a);
}

public class B implements A {
    public void delete(Integer id) {
        
    }
    
    public void save(Object a) {
        
    }
}
2.3.3 UML图

UML类图属性和相关关系_第4张图片

2.4 关联关系(Association)

2.4.1 介绍

**关联关系:**是一种拥有的关系,他使一个类知道另一个类的属性和方法;如:老师和学生。丈夫和妻子关联可以使双向,也可以单向。双向的关联可以有两个箭头或者没有箭头,单向的关联有一个箭头。

**代码体现:**成员变量

**箭头指向:**带空心菱形的实心线,指向被拥有者。

2.4.2 UML图

UML类图属性和相关关系_第5张图片

2.5 聚合关系

2.5.1 介绍

**聚合关系:**是整体与部分的关系,且部分与整体可以分离而单独存在,如车和轮胎是整体与部分的关系,轮胎离开车仍然可以存在。

聚合关系是关联关系的一种,是强的关联关系,关联和聚合在语法上无法区分,必须考察具体的逻辑关系。

**代码体现:**成员变量

**箭头指向:**带空心菱形的实心线,菱形指向被拥有者

2.5.2 示例代码
// 汽车类
public class Car {
    private Tyre tyre;
    
    private void setTyre(Tyre tyre) {
        this.tyre = tyre;
    }
}
// 轮胎类
public class Tyre {
    
}
2.5.3 UML图

UML类图属性和相关关系_第6张图片

2.6 组合关系

2.6.1 介绍

**组合关系:**是整体和部分关系,但部分不能离开整体而单体存在,如公司和部分是整体和部分的关系,没有公司就不存的部分。

组合关系是关联关系的一种,是比聚合关系还要强的关系,他要求普通的聚合关系中代表整体的对象负责代表

2.6.2 示例代码
// 人
public class Person {
    private Head head = new Head();
}
// 脑袋
public class Head {
    
}
2.6.2 示例代码
// 人
public class Person {
    private Head head = new Head();
}
// 脑袋
public class Head {
    
}
2.6.3 UML图

UML类图属性和相关关系_第7张图片

你可能感兴趣的:(设计模式,Java设计模式)