UML&类之间的关系
UML&类之间的关系
CAMELLIA!!! note 目录
在Java中,类之间可以通过不同的关系进行连接和交互。以下是一些常见的类之间的关系:
继承关系(Inheritance)/泛化关系(is a):
- 在Java中,一个类可以继承另一个类。被继承的类称为父类或超类,继承的类称为子类。
- 子类可以继承父类的属性和方法,并且可以重写父类的方法或添加新的方法。
- 通过继承,可以实现代码的重用和层次化的设计。
1
2
3
4
5
6
7
8
9
10
11class Animal {
void eat() {
System.out.println("Animal is eating");
}
}
class Dog extends Animal {
void bark() {
System.out.println("Dog is barking");
}
}实现关系(Implementation):
- 在Java中,一个类可以实现一个接口或者扩展一个抽象类。
- 通过实现接口或抽象类,子类必须提供接口或抽象类定义的所有方法的具体实现。
- 实现关系使得多个类可以共享相同的行为,同时具备自己的特定实现。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20interface Shape {
double calculateArea();
double calculatePerimeter();
}
class Circle implements Shape {
double radius;
Circle(double radius) {
this.radius = radius;
}
public double calculateArea() {
return Math.PI * radius * radius;
}
public double calculatePerimeter() {
return 2 * Math.PI * radius;
}
}关联关系(Association):
- 关联表示不同类之间的关联关系,通常是通过一个类中的成员变量引用另一个类的对象来实现的。
- 关联关系可以是单向的或双向的。
1
2
3
4
5
6
7
8
9
10
11class Car {
Engine engine;
Car(Engine engine) {
this.engine = engine;
}
}
class Engine {
// Engine class definition
}依赖关系(Dependency):
- 依赖关系表示一个类(或方法)依赖于另一个类(或方法)来完成其工作,但它们之间的关系比关联关系更弱。
- 通常表现为一个类作为另一个类的方法参数、局部变量或静态方法调用等。
1
2
3
4
5
6
7
8
9class Car {
void drive(Engine engine) {
// Method implementation
}
}
class Engine {
// Engine class definition
}聚合关系(Aggregation):
- 聚合关系表示整体和部分之间的关系,整体对象和部分对象之间是“包含”的关系,但它们之间的生命周期可以不同。
- 聚合关系是一种弱的“拥有”关系,部分对象可以脱离整体而存在。
1
2
3
4
5
6
7
8
9
10
11class University {
List<Student> students;
University(List<Student> students) {
this.students = students;
}
}
class Student {
// Student class definition
}组合关系(Composition):
- 组合关系也表示整体和部分之间的关系,但与聚合关系不同,组合关系中部分对象与整体对象具有相同的生命周期。
- 整体对象被销毁时,其部分对象也会被销毁。
1
2
3
4
5
6
7
8
9
10
11
12
13class House {
Room kitchen;
Room bedroom;
House() {
kitchen = new Room();
bedroom = new Room();
}
}
class Room {
// Room class definition
}
这些类之间的关系可以帮助我们在设计和组织Java程序时更好地理解和建模不同类之间的交互。