一、类图简介
类图(Class diagram)是显示了模型的静态结构,模型中存在的类、类的内部结构以及它们与其他类的关系等。(类图图示了所构建系统的所有实体、实体的内部结构以及实体之间的关系)
二、类图结构
指定接口的方式:再类名上方添加<<interface>>
三、类图中的事物
- 接口:一组操作的集合,只有操作的声明而没有实现
- 抽象类:不能被实例化的类,一般至少包含一个抽象操作
- 模板类:一种参数化的类,在编译时把模板参数绑定到不同的数据类型,从而产生不同的类
四、类图中的关系及代码映射(java)
- 类的映射
java:
public abstract class Vehicle{
public abstract int Start();
public abstract int Stop();
public abstrct int Run(float fSpeed);
private float fMaxSpeed;
}
- 关联关系(Association):对象之间一种引用关系,由使用类指向被关联类(可以是单向和双向)
eg:客户类与订单类
1.双向关联
public class Customer{
private Order[] order;
...
}
public class Order{
private Customer customer;
...
}
2.单向关联
public class Customer{
private Address address;
...
}
public class Address{
...
}
3.自关联
public class Node{
private Node subNode;
...
}
- 聚合关系(Aggregation):一种不稳定的包含关系,较强于一般关联,整体和局部的关系,局部也可单独存在
eg:学校类与学生类
public class Student{
...
}
public class School{
private List<Student> students;
}
- 组合关系(Composition):一种强烈的聚合关系,部分不能脱离整体存在
eg:窗口类和菜单类
public class Menu{
...
}
public class Window{
private List<Menu> menus;
...
}
- 依赖关系(Dependency):对象之间最弱的一种关联方式,临时性的关联。一般指由局部变量、函数参数、返回值建立的对其他对象的调用关系。(使用类指向被依赖类)
public class Screwdriver { //螺丝刀,作为人类的工具,是用来被人类使用的
}
public class Person{
public void screw(Screwdriver src){ //拧螺丝,需使用螺丝刀
}
}
依赖关系有如下三种情况:
1、A类是B类中的(某中方法的)局部变量;
2、A类是B类方法当中的一个参数;
3、A类向B类发送消息,从而影响B类发生变化
- 泛化关系(Generalization):对象之间耦合度最大的一种关系,子类继承父类的所有细节。(箭头从子类指向父类)
要求:
1、子类与父类应该完全一致,父类所具有的属性、操作,子类应该都有;
2、子类中除了与父类一致的信息以外,还包括额外的信息;
3、可以使用父类的实例的地方,也可以使用子类的实例;
public class Animal{
}
public class Tiger extends Animal{
}
- 实现关系(Realization):接口和实现类的关系(实现类指向接口)
public 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