Java基础(复习三) —— 类图例子
上一篇blog记录了一些类图关系的基本概念,之后一直想添加些代码生产类图的例子奈何之后如此不如意下一篇在说。下面例子的目的是简单展示类之间的关系。
上代码:
package com.energy8.sample.uml;
public interface Engine {
public void start();
}
package com.energy8.sample.uml;
public class CarEngine implements Engine {
@Override
public void start() {
System.out.println("Car Engine started");
}
}
package com.energy8.sample.uml;
public class BikeEngine implements Engine {
@Override
public void start() {
System.out.println("Bike Engine started");
}
}
package com.energy8.sample.uml;
public class Vehicle {
Engine engine;
public Vehicle(Engine engine) {
this.engine = engine;
}
public void startEngine() {
engine.start();
}
}
package com.energy8.sample.uml;
public class Car extends Vehicle {
public Car(Engine engine) {
super(engine);
// TODO Auto-generated constructor stub
}
}
package com.energy8.sample.uml;
public class Bike extends Vehicle {
public Bike(Engine engine) {
super(engine);
// TODO Auto-generated constructor stub
}
}
这个例子展示了以下关系:
● 泛化(Generalization):Car和Bike继承自Vehicle
● 实现(Realization):CarEngine和BikeEngine实现Engine接口
● 聚合(Aggregation):Garage有一个vehicles列表,存储了多个Vehicle对象
● 组合(Composition):Vehicle拥有一个Engine对象,形成组合关系
● 关联(Association):Vehicle类中有一个指向Engine类的引用
● 依赖(Dependence):Vehicle类依赖于Engine接口,以调用start方法。
生成类图(由IDEA生成):

加了一些个人的理解:

其它情况
修改一下Car 和 Bike的代码:
package com.energy8.uml.sample;
public class Car extends Vehicle {
// public Car(Engine engine) {
// super(engine);
// // TODO Auto-generated constructor stub
// System.out.println("test");
// }
public Car(CarEngine engine){
super(engine);
}
}
package com.energy8.uml.sample;
public class Bike extends Vehicle {
public Bike(BikeEngine engine) {
super(engine);
// TODO Auto-generated constructor stub
}
}
重新生成类图:

Car 和 Bike 对Engine的依赖关系改变了。
本文只是个人(EnergyNo8)学习笔记如有错误请网友指出。
如有引用或转载请标明出处!
努力、坚持,总会有收获!
______ EnergyNo8