package com.automobile.parts; import java.util.ArrayList; import java.util.List; /** * 引擎类 - 与汽车是组合关系 * 引擎包含活塞等部件,展示更深层级的组合关系 */ public class Engine { private String type; private int cylinders; private int horsepower; private int currentRPM; private boolean isRunning; // 组合关系 - 引擎包含多个活塞 private List pistons; /** * 构造方法 - 创建引擎时同时创建活塞 * 体现了多层级组合关系 */ public Engine() { this.type = "四缸涡轮增压"; this.cylinders = 4; this.horsepower = 200; this.currentRPM = 0; this.isRunning = false; // 创建活塞(组合关系) this.pistons = new ArrayList<>(); for (int i = 0; i < cylinders; i++) { this.pistons.add(new Piston(i + 1)); } } /** * 启动引擎 */ public void start() { if (!isRunning) { isRunning = true; currentRPM = 800; // 怠速转速 System.out.println("引擎启动成功,当前转速: " + currentRPM + " RPM"); // 启动所有活塞 for (Piston piston : pistons) { piston.move(); } } else { System.out.println("引擎已经在运行中"); } } /** * 停止引擎 */ public void stop() { if (isRunning) { isRunning = false; currentRPM = 0; System.out.println("引擎已停止"); // 停止所有活塞 for (Piston piston : pistons) { piston.stop(); } } else { System.out.println("引擎已经停止"); } } /** * 增加转速 * @param rpm 目标转速 */ public void increaseRPM(int rpm) { if (isRunning) { currentRPM = rpm; System.out.println("引擎转速提升到: " + currentRPM + " RPM"); // 所有活塞加速运动 for (Piston piston : pistons) { piston.moveFaster(rpm); } } else { System.out.println("请先启动引擎"); } } // Getter 和 Setter 方法 public String getType() { return type; } public void setType(String type) { this.type = type; } public int getCylinders() { return cylinders; } public void setCylinders(int cylinders) { this.cylinders = cylinders; // 重新创建对应数量的活塞 this.pistons = new ArrayList<>(); for (int i = 0; i < cylinders; i++) { this.pistons.add(new Piston(i + 1)); } } public int getHorsepower() { return horsepower; } public void setHorsepower(int horsepower) { this.horsepower = horsepower; } public int getCurrentRPM() { return currentRPM; } public boolean isRunning() { return isRunning; } public List getPistons() { return pistons; } }