类的表示
从上到下:类名、属性、方法、内部类
若类名为斜体则表示其为虚类
标示符前的符号含义如下:
符号|含义
-|-
+|public
-|private
#|protected
标示符的冒号后表示:属性类型或返回类型
类间关系
关联 Association
在使用Java、C#和C++等编程语言实现关联关系时,通常将一个类的对象作为另一个类的成员变量。
class LoginForm {
private JButton loginButton; //定义为成员变量
}
class JButton {}
双向关联
public class Customer {
private Product[] products;
}
public class Product {
private Customer customer;
}
单向关联
public class Customer {
private Address address;
}
public class Address {}
自关联
public class Node {
private Node subNode;
}
多重性关联
public class Form {
private Button[] buttons; //定义一个集合对象
}
public class Button {}
聚合 Aggregation
在聚合关系中,成员对象是整体对象的一部分,但是成员对象可以脱离整体对象独立存在。
成员对象通常作为构造方法、Setter方法或业务方法的参数注入到整体对象中。
public class Car {
private Engine engine;
public Car(Engine engine) {
this.engine = engine;
}
public void setEngine(Engine engine) {
this.engine = engine;
}
}
public class Engine {}
组合 Composition
组合关系中整体对象可以控制成员对象的生命周期,一旦整体对象不存在,成员对象也将不存在,成员对象与整体对象之间具有同生共死的关系。
在整体类的构造方法中直接实例化成员类。
public class Head {
private Mouth mouth;
public Head() {
mouth = new Mouth(); //实例化成员类
}
}
public class Mouth {}
依赖 Dependency
一种使用关系,特定事物的改变有可能会影响到使用该事物的其他事物,在需要表示一个事物使用另一个事物时使用依赖关系。
将一个类的对象作为另一个类中方法的参数
class Driver {
public drive(Car car) {
car.move();
}
}
class Car {
public void move();
}
在一个类的方法中将另一个类的对象作为其局部变量
Class Main {
pubilc static void main(String[] args) {
File file = new File(args[0]);
Scanner scanner = new Scanner(file);
...
}
}
在一个类的方法中调用另一个类的静态方法
Class Main {
pubilc static void main(String[] args) {
System.out.println("hello");
}
}
泛化 Generalization
即继承关系。
//父类
public class Person {
protected String name;
protected int age;
public void move() {}
public void say() {}
}
public class Student extends Person {
private String studentNo;
public void study() {}
}
public class Teacher extends Person {
private String teacherNo;
public void teach() {}
}
实现 Realization
public interface Vehicle {
public void move();
}
public class Ship implements Vehicle {
public void move() {}
}
public class Car implements Vehicle {
public void move() {}
}