UML类图

UML类图是一种结构图,用于描述一个系统的静态结构。类图以反映类结构和类之间关系为目的,用以描述软件系统的结构,是一种静态建模方法。类图中的类,与面向对象语言中的类的概念是对应的。

1、类结构

(1)UML类图图示:
在这里插入图片描述
(2)UML规定属性表示如下:

可见性 名称:类型 [=缺省值]
  • 可见性:对应java中public(+)、private(-),package(~) 和protected(#)修饰符
  • 名称:表示属性名
  • 类型:表示属性的数据类型,如int、String或自定义类型等
  • 缺省值:表示属性的初始值,可选

(3)UML规定操作方法表示如下:

可见性 名称(参数列表) [ : 返回类型]
  • 可见性:对应java中public(+)、private(-),package(~) 和protected(#)修饰符
  • 名称:表示方法名
  • 参数类型列表:表示方法参数的数据类型,多个参数的数据类型之间用逗号隔开
  • 返回类型:表示方法的返回值数据类型,可选项,如void、int等

(4)UML类图示例:

  • User类的定义如下:
	public class Person {  
	    private String name;  
	    private int age;   
	    public Person(int age, String name){
	    }  
	    public void eating() {  
	    }  
	}  
  • User类的UML类图如下:
    在这里插入图片描述

2、类间关系

(1)依赖关系:是一种“使用”关系,被使用类的改变有可能会影响到其使用类,依赖关系是类与类之间最弱的关系。在代码中体现就是某个类作为另一个类的方法参数或者局部变量,或者另一个类调用其静态方法。

  • 依赖关系图示如下:
    在这里插入图片描述
  • 依赖关系的代码示例:
public class People {  
	public void crossRiver(Ship ship) {  
	}  
}  
public class Ship {  
}  

(2)关联关系:表示类之间的一种持续一段时间的合作关系,包括有自关联、单向关联和双向关联关系,是一种比依赖关系更强的关系。在代码中体现就是被关联类B作为关联类A的属性。比如朋友关系、师徒关系

  • 关联关系图示如下:
    在这里插入图片描述
  • 关联关系间的数量表示如下:
表达方式数量说明
1…1表示另一个类的一个对象只与该类的一个对象有关系
0…*表示另一个类的一个对象与该类的零个或多个对象有关系
1…*表示另一个类的一个对象与该类的一个或多个对象有关系
0…1表示另一个类的一个对象没有或只与该类的一个对象有关系
m…n表示另一个类的一个对象与该类最少m,最多n个对象有关系 (m≤n)
  • 关联关系代码示例:
public class Student {  
    private List<Course> courses;
    //设值注入  
	public void addCourse(Course course) {  
	   if(courses == null){
	   		courses = new ArrayList();
		}  
		course.add(course);
	}
}  
public class Course { 
 private List<Student> students;
    //设值注入  
	public void addCourse(Student student) {  
	   if(students == null){
	   		students = new ArrayList();
		}  
		students.add(student);
	}
}  

(3)聚合关系:是一种“拥有”关系,表示整体与部分的关系,部分可以脱离整体单独存在,他们具有各自的生命周期。在代码中体现就是部分类作为整体类的属性,部分类作为构造方法的参数或通过set方法或业务方法注入到整体对象中。比如汽车与轮胎、汽车与汽油、班级与学生等。

  • 聚合关系图示如下:
    在这里插入图片描述
  • 聚合关系代码示例:
public class Car {  
    private Engine engine;
    //构造注入  
    public Car(Engine engine) {  
        this.engine = engine;  
    }   
    //设值注入  
	public void setEngine(Engine engine) {  
	   this.engine = engine;  
	}  
}  
public class Engine {  
}  

(4)组合关系:也是一种“拥有”关系,表示整体和部分的关系,但是整体对象可以控制部分的生命周期,整体的生命周期结束也就意味着部分的生命周期结束。在代码中体现就是部分类作为整体类的属性,但是部分类直接在整体类的构造方法中进行实例化。比如人和大脑等

  • 组合关系图示如下:
    在这里插入图片描述
  • 组合关系代码示例:
public class People {  
    private Brain brain; 
    public People() {  
        this.brain = new Brain();  
    }   
}  
public class Brain {  
}  

(5)泛化关系:也叫继承关系,用于描述父类与子类之间的关系。在代码中体现就是子类与父类、子接口与父接口之间的关系,在java中通过关键字extends标示。如苹果与水果等。

  • 泛化关系图示如下:
    在这里插入图片描述
  • 泛化关系代码示例:
public class HashMap {  
}  
public class LinkedHashMap extends HashMap {  
}  

(6)实现关系:在代码中体现就是类与接口之间的关系。在Java中通过关键字implements标识

  • 泛化关系图示如下:
    在这里插入图片描述
  • 泛化关系代码示例:
public interface Fruit {  
}  
public class Apple implements Fruit {  
}  

参考博客:
https://www.cnblogs.com/xrq730/p/5533019.html
https://justsee.iteye.com/blog/808799

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值