You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

170 lines
5.0 KiB

package com.automobile.model;
import com.automobile.parts.SteeringWheel;
import com.automobile.parts.Seat;
import com.automobile.parts.Engine;
import com.automobile.parts.Transmission;
import com.automobile.parts.Wheel;
import com.automobile.system.ElectronicSystem;
import java.util.ArrayList;
import java.util.List;
/**
* 汽车类 - 展示组合关系的主类
* 汽车包含方向盘、座椅、引擎、变速箱、车轮和电子系统等部件
* 这些部件与汽车是组合关系,当汽车被销毁时,这些部件也应该被销毁
*/
public class Car {
private String brand;
private String model;
private String vin;
// 组合关系 - 方向盘是汽车的一部分
private SteeringWheel steeringWheel;
// 组合关系 - 座椅是汽车的一部分
private List<Seat> seats;
// 组合关系 - 引擎是汽车的一部分
private Engine engine;
// 组合关系 - 变速箱是汽车的一部分
private Transmission transmission;
// 组合关系 - 车轮是汽车的一部分
private List<Wheel> wheels;
// 组合关系 - 电子系统是汽车的一部分
private ElectronicSystem electronicSystem;
/**
* 构造方法 - 创建汽车时同时创建其所有必要部件
* 体现了组合关系的特点:整体负责创建和管理部分的生命周期
*/
public Car(String brand, String model, String vin) {
this.brand = brand;
this.model = model;
this.vin = vin;
// 创建方向盘(组合关系)
this.steeringWheel = new SteeringWheel();
// 创建座椅(组合关系)
this.seats = new ArrayList<>();
this.seats.add(new Seat(Seat.SeatType.DRIVER)); // 驾驶员座椅
this.seats.add(new Seat(Seat.SeatType.PASSENGER)); // 乘客座椅
this.seats.add(new Seat(Seat.SeatType.REAR)); // 后排座椅
this.seats.add(new Seat(Seat.SeatType.REAR)); // 后排座椅
// 创建引擎(组合关系)
this.engine = new Engine();
// 创建变速箱(组合关系)
this.transmission = new Transmission();
// 创建车轮(组合关系)
this.wheels = new ArrayList<>();
for (int i = 0; i < 4; i++) {
this.wheels.add(new Wheel());
}
// 创建电子系统(组合关系)
this.electronicSystem = new ElectronicSystem();
}
/**
* 启动汽车
*/
public void start() {
System.out.println(brand + " " + model + " 启动中...");
engine.start();
electronicSystem.initializate();
System.out.println("汽车启动成功!");
}
/**
* 停止汽车
*/
public void stop() {
System.out.println(brand + " " + model + " 停止中...");
engine.stop();
electronicSystem.shutdown();
System.out.println("汽车已停止!");
}
/**
* 加速汽车
*/
public void accelerate(int speed) {
System.out.println("加速到 " + speed + " km/h");
engine.increaseRPM(speed * 100);
transmission.shiftGears(speed);
}
/**
* 显示汽车信息
*/
public void displayInfo() {
System.out.println("===== 汽车信息 =====");
System.out.println("品牌: " + brand);
System.out.println("型号: " + model);
System.out.println("VIN码: " + vin);
System.out.println("方向盘类型: " + steeringWheel.getType());
System.out.println("座椅数量: " + seats.size());
System.out.println("引擎类型: " + engine.getType());
System.out.println("变速箱类型: " + transmission.getType());
System.out.println("车轮数量: " + wheels.size());
System.out.println("电子系统状态: " + electronicSystem.getStatus());
System.out.println("===================");
}
// Getter 和 Setter 方法
public String getBrand() {
return brand;
}
public void setBrand(String brand) {
this.brand = brand;
}
public String getModel() {
return model;
}
public void setModel(String model) {
this.model = model;
}
public String getVin() {
return vin;
}
public void setVin(String vin) {
this.vin = vin;
}
public SteeringWheel getSteeringWheel() {
return steeringWheel;
}
public List<Seat> getSeats() {
return seats;
}
public Engine getEngine() {
return engine;
}
public Transmission getTransmission() {
return transmission;
}
public List<Wheel> getWheels() {
return wheels;
}
public ElectronicSystem getElectronicSystem() {
return electronicSystem;
}
}