UML类图
UML图分为很多种类,而对于我们来说,类图时其中最为重要的一种。在实际应用中,类图在我们进行编程时能够帮助我们快速的理清类之间的关系,进而让我们更好的进行编程。
那么什么是类图呢? 类图主要用于反映类的属性以及类之间的关系,是一种静态模型。
类图的画法
类图中又类和接口。
1)类从上到下分为三部分,分别是类名、属性和方法。其中,类名必须有,当类中存在属性和方法时,就需要添加属性和方法。简单举个例子
public class Person {
private int id;
public void parent() {
System.out.println("parent");
}
public void children() {
System.out.println("children");
}
}
这段代码的类图可以这么画
格式大致是
要注意的是,方法和属性的返回值类型都需要写在方法或者属性的后面,用 : 隔开。
对于修饰符,+ 代表 public , - 代表 private,# 代表 protected。
2)接口只包含方法而不含有属性,在UML中,接口用一个小圆圈来表示,如下
类图中的几种关系
类图中,类与类之间的关系通常用各种箭头和连线来表示
1)泛化关系
泛化关系其实就相当于继承关系,用空心箭头的实线表示,如图
2)实现关系
顾名思义,实现关系就是类对接口的实现,用空心箭头的虚线表示,如图
3)依赖关系
依赖关系是一种使用关系,用实心箭头的虚线表示,如图
产生依赖的几种情况
- 一个类是另一个类中的局部变量
- 一个类时另一个类方法中的参数
- 一个类向另一个类发送消息导致其发生改变
- 静态方法调用
4)关联关系
关联关系是类与类之间的联结,它使一个类知道另一个类的属性和方法,指明了事物的对象之间的联系,用带普通箭头的实心线表示,如图
示例
代码
Audi.java
package com.why.demo02.car;
public class Audi implements Car {
@Override
public void product() {
System.out.println("生产Audi零件");
}
@Override
public void assemble() {
System.out.println("组装Audi");
}
}
BMW.java
package com.why.demo02.car;
public class BMW implements Car {
@Override
public void product() {
System.out.println("生产BMW零件");
}
@Override
public void assemble() {
System.out.println("组装BMW");
}
}
Car.java
package com.why.demo02.car;
public interface Car {
void product();
void assemble();
}
AbstractFactory.java
package com.why.demo02.factory;
import com.why.demo02.car.Car;
public interface AbstractFactory {
Car car();
}
AudiFactory.java
package com.why.demo02.factory;
import com.why.demo02.car.Audi;
import com.why.demo02.car.Car;
public class AudiFactory implements AbstractFactory {
@Override
public Car car() {
return new Audi();
}
}
BMWFactory.java
package com.why.demo02.factory;
import com.why.demo02.car.BMW;
import com.why.demo02.car.Car;
public class BMWFactory implements AbstractFactory {
@Override
public Car car() {
return new BMW();
}
}
类图如图