UML---类图
April 24, 2021
2312
简介+结构+事务+关系及代码映射+实例
📍类图简介
类图(Class diagram)是显示了模型的静态结构,模型中存在的类、类的内部结构以及它们与其他类的关系等。(类图图示了所构建系统的所有实体、实体的内部结构以及实体之间的关系)
📍类图结构
📍类图中的事物
- 接口:一组操作的集合,只有操作的声明而没有实现
- 抽象类:不能被实例化的类,一般至少包含一个抽象操作
- 模板类:一种参数化的类,在编译时把模板参数绑定到不同的数据类型,从而产生不同的类
📍类图中的关系及代码映射(java)
类的映射
java:
1
2
3
4
5
6public abstract class Vehicle{
public abstract int Start();
public abstract int Stop();
public abstrct int Run(float fSpeed);
private float fMaxSpeed;
}关联关系(Association):对象之间一种引用关系,由使用类指向被关联类(可以是单向和双向)
eg:客户类与订单类- 双向关联
1
2
3
4
5
6
7
8public class Customer{
private Order[] order;
...
}
public class Order{
private Customer customer;
...
}- 单向关联
1
2
3
4
5
6
7public class Customer{
private Address address;
...
}
public class Address{
...
}- 自关联
1
2
3
4public class Node{
private Node subNode;
...
}聚合关系(Aggregation):一种不稳定的包含关系,较强于一般关联,整体和局部的关系,局部也可单独存在
eg:学校类与学生类1
2
3
4
5
6public class Student{
...
}
public class School{
private List<Student> students;
}组合关系(Composition):一种强烈的聚合关系,部分不能脱离整体存在
eg: 窗口类和菜单类 <img src="https://miedamie.oss-cn-beijing.aliyuncs.com/img/20210424171101192.png" />
1
2
3
4
5
6
7public class Menu{
...
}
public class Window{
private List<Menu> menus;
...
}依赖关系(Dependency):对象之间最弱的一种关联方式,临时性的关联。一般指由局部变量、函数参数、返回值建立的对其他对象的调用关系。(使用类指向被依赖类)
1
2
3
4
5
6
7public class Screwdriver { //螺丝刀,作为人类的工具,是用来被人类使用的
}
public class Person{
public void screw(Screwdriver src){ //拧螺丝,需使用螺丝刀
}
}依赖关系有如下三种情况:
- A类是B类中的(某中方法的)局部变量;
- A类是B类方法当中的一个参数;
- A类向B类发送消息,从而影响B类发生变化
泛化关系(Generalization):对象之间耦合度最大的一种关系,子类继承父类的所有细节。(箭头从子类指向父类)
要求:
- 子类与父类应该完全一致,父类所具有的属性、操作,子类应该都有;
- 子类中除了与父类一致的信息以外,还包括额外的信息;
- 可以使用父类的实例的地方,也可以使用子类的实例;
1
2
3
4
5
6public class Animal{
}
public class Tiger extends Animal{
}实现关系(Realization):接口和实现类的关系(实现类指向接口)
1
2
3
4
5
6
7
8
9
10
11
12
13public interface Vechicle{
public void move();
}
public class Ship implements Vehicle{
public void move(){
...
}
}
public class Car implements Vehicle{
public void move(){
...
}
}
📍生动形象的实例
📌图源:https://www.jianshu.com/p/57620b762160
📌参考博客:https://www.cnblogs.com/chen-chen-chen/p/12295463.html
- 本文作者:Gyanga
- 本文链接:https://gyanga.github.io/2021/04/24/UML---%E7%B1%BB%E5%9B%BE/index.html
- 版权声明:本博客所有文章均采用 BY-NC-SA 许可协议,转载请注明出处!
查看评论