java利器之UML类图详解(IDEA)

简介: java利器之UML类图详解(IDEA)

一、概述



类图(Class Diagram)是面向对象系统建模中最常用和最重要的图,是定义其它图的基础。

类图主要是用来显示系统中的类、接口以及它们之间的静态结构和关系的一种静态模型。


类图不仅用于可视化描述和记录系统的不同方面,也为构建可执行代码的软件应用程序。

类图描述一类的属性和操作,也对系统的约束。被广泛应用于类图的建模的面向对象的系统中,因为它们是唯一的,可以直接映射到面向对象的语言的 UML 图。


类图显示集合的类,接口,关联,协作和约束,它也被称为作为结构图。


二、类的UML表示



1. 类图(ClassDiagram)


640.png

idea类图示意图


2. 类图对应java实例


public class ClassDiagramDemo {
    public int id;
    protected String name;
    int age;
    private String password;
    public void setId(int id) {
        this.id = id;
    }
    protected void setName(String name) {
        this.name = name;
    }
    void setAge(int age) {
        this.age = age;
    }
    private void setPassword(String password) {
        this.password = password;
    }
}


3. 注意


实际类图中"可见性"表示该属性对于类外的元素而言是否可见,包括公有(public)、私有(private),友好的(friendly,代表package)和受保护(protected)三种,在类图中分别用符号+、-,~和#表示。


三、类之间的关系



1. 依赖关系(Dependence)


定义:只要在类中用到了对方,那么他们之间就存在依赖关系。如果没有对方,连编译都通过不了。

640.png

依赖关系


public class PersonServiceBean {
    private PersonDao personDao;
    public void Save(Person person){}
    public IDCard getIDCard(int personid){return null;}
    public void modify(){
        Department department = new Department();
    }
}
class IDCard {
}
class Person {
}
class PersonDao {
}
class Department {
}


小结:

  1. 类中用到了对方
  2. 类中的成员属性
  3. 方法的返回类型
  4. 方法接收的参数类型
  5. 方法中有使用到


2. 泛化关系(Generalization)


定义:泛化关系实际上就是继承关系,它是依赖关系的一种特例。

640.png

泛化关系


public class A {
}
public class B extends A {
}


小结:

  1. 泛化关系即继承关系
  2. 如果B继承了A,则A和B之间存在泛化关系


3. 实现关系(Implementation)


定义:实现关系实际上就是A类实现B类,它是依赖关系的特例。

640.png

实现关系


public interface Service {
}
public class ServiceImpl implements Service {
}


小结:如果B实现了A,则A和B之间存在实现关系


4. 关联关系(Association)


定义:关联关系实际上就是类与类之间的联系,它是依赖关系的特例。存在单向关联,双向关联和自关联。


  1. 单向关联


定义:类A与类B是单向关联关系,是指类A包含类B对象的引用,但是类B并不包含类A对象的引用。

640.png

单向关联


public class Customer {
    private Address address;
}
public class Address {
}


小结:顾客(Customer)拥有地址(Address),Customer类的属性中有Address类的对象,则Customer类与Address类具有单向关联关系。2. 双向关联


定义:类A与类B如果包含对方的引用,则称类A与类B是双向关联的关系。

640.png

双向关联


public class Student {
    private Teacher teacher;
}
public class Teacher {
    private Student student;
}


小结:老师(Teacher)教育的学生(Student),反之,接受教育的学生总有某个老师与之相关联。因此,Teacher类和Student类之间具有双向关联关系。


  1. 自关联


定义:自己包含自己。


public class StudentNode {
    private StudentNode next;
    public void setNext(StudentNode next) {
        this.next = next;
    }
}


5. 聚合关系(Aggregation)


定义:聚合关系表示的是整体和部分的关系,整体和部分可以分开。

640.png

聚合关系


public class Car {
    private Wheel wheel;
    public void setWheel(Wheel wheel) {
        this.wheel = wheel;
    }
}
public class Wheel {
}


6. 组合关系(Composition)


定义:组合关系表示的是整体和部分的关系,整体和部分不可分开。

640.png

组合关系


public class Face {
    private Nose nose;
    public Face(Nose nose) {
        this.nose = nose;
    }
}
public class Nose {
}


目录
相关文章
|
4月前
|
Java
使用IDEA创建项目运行我的第一个JAVA文件输出Helloword
本文介绍了如何使用IDEA(IntelliJ IDEA)创建一个新的Java项目,并运行一个简单的Java程序输出"Hello Word"。文章详细展示了创建项目的步骤,包括选择JDK版本、设置项目名称和路径、创建包和类,以及编写和运行代码。最后,还展示了如何通过IDEA的运行功能来执行程序并查看输出结果。
215 4
使用IDEA创建项目运行我的第一个JAVA文件输出Helloword
|
3月前
|
关系型数据库 MySQL Java
【IDEA】java后台操作mysql数据库驱动常见错误解决方案
【IDEA】java后台操作mysql数据库驱动常见错误解决方案
128 0
|
2月前
|
Java
轻松上手Java字节码编辑:IDEA插件VisualClassBytes全方位解析
本插件VisualClassBytes可修改class字节码,包括class信息、字段信息、内部类,常量池和方法等。
142 6
|
5月前
|
Java uml
使用工厂方法模式设计能够实现包含加法(+)、减法(-)、乘法(*)、除法(/)四种运算的计算机程序,要求输入两个数和运算符,得到运算结果。要求使用相关的工具绘制UML类图并严格按照类图的设计编写程序实
该博客文章通过UML类图和Java代码示例,展示了如何使用工厂方法模式设计一个支持加法、减法、乘法和除法运算的计算机程序,并严格按照类图设计实现程序。
|
5月前
|
Java uml
1、使用简单工厂模式设计能够实现包含加法(+)、减法(-)、乘法(*)、除法(/)四种运算的计算机程序,要求输入两个数和运算符,得到运算结果。要求使用相关的工具绘制UML类图并严格按照类图的设计编写程
该博客文章展示了如何使用简单工厂模式设计一个程序,该程序能够根据用户输入的运算符(加、减、乘、除)对两个数进行计算,并提供了相应的UML类图和Java源码实现。
1、使用简单工厂模式设计能够实现包含加法(+)、减法(-)、乘法(*)、除法(/)四种运算的计算机程序,要求输入两个数和运算符,得到运算结果。要求使用相关的工具绘制UML类图并严格按照类图的设计编写程
|
3月前
|
存储 缓存 Java
java基础:IO流 理论与代码示例(详解、idea设置统一utf-8编码问题)
这篇文章详细介绍了Java中的IO流,包括字符与字节的概念、编码格式、File类的使用、IO流的分类和原理,以及通过代码示例展示了各种流的应用,如节点流、处理流、缓存流、转换流、对象流和随机访问文件流。同时,还探讨了IDEA中设置项目编码格式的方法,以及如何处理序列化和反序列化问题。
95 1
java基础:IO流 理论与代码示例(详解、idea设置统一utf-8编码问题)
|
3月前
|
搜索推荐 Java 数据库连接
Java|在 IDEA 里自动生成 MyBatis 模板代码
基于 MyBatis 开发的项目,新增数据库表以后,总是需要编写对应的 Entity、Mapper 和 Service 等等 Class 的代码,这些都是重复的工作,我们可以想一些办法来自动生成这些代码。
45 6
|
3月前
|
Oracle IDE Java
IDEA安装教程配置java环境(超详细)
IDEA安装教程配置java环境(超详细)
1588 1
|
4月前
|
设计模式 Java 测试技术
Java设计模式-UML与设计原则(1)
Java设计模式-UML与设计原则(1)
|
5月前
|
前端开发 Java Maven
【前端学java】全网最详细的maven安装与IDEA集成教程!
【8月更文挑战第12天】全网最详细的maven安装与IDEA集成教程!
117 2
【前端学java】全网最详细的maven安装与IDEA集成教程!