UML---类图

本文详细介绍了UML类图的概念,包括类图的结构,如接口、抽象类和模板类的定义。此外,还阐述了类图中的各种关系,如关联、聚合、组合、依赖和泛化,并通过Java代码示例解释了这些关系的映射。最后,通过实例加深了对类图的理解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、类图简介

类图(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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值