diff --git a/src/ru/skypro/Main.java b/src/ru/skypro/Main.java index 625884e..35e44ee 100644 --- a/src/ru/skypro/Main.java +++ b/src/ru/skypro/Main.java @@ -1,7 +1,38 @@ package ru.skypro; +import ru.skypro.transport.*; + public class Main { public static void main(String[] args){ - + Car car1 = new Car("brand1","car1",1.6); + Transport car2 = new Car("brand2","car2",2.0); + Bus bus1 = new Bus("brand1","bus1",3.0); + Truck truck1 = new Truck("brand2","truck1",4.0); + car1.startMoving(); + car2.startMoving(); + bus1.startMoving(); + truck1.startMoving(); + truck1.stopMoving(); + car1.stopMoving(); + bus1.stopMoving(); + car2.stopMoving(); + car1.pitStop(); + car1.bestTime(); + car1.maxSpeed(); + truck1.pitStop(); + truck1.bestTime(); + truck1.maxSpeed(); + bus1.pitStop(); + bus1.bestTime(); + bus1.maxSpeed(); + Car car2c = (Car) car2; + Driver driver1 = new DriverB("F I O 1", true,5, car1); + Driver driver2 = new DriverB("F I O 2", false,0, car2c); + Driver driver3 = new DriverD("F I O 3", true,9, bus1); + Driver driver4 = new DriverC("F I O 4", true,7, truck1); + driver1.refill(); + driver2.refill(); + driver3.refill(); + driver4.refill(); } } diff --git a/src/ru/skypro/transport/Bus.java b/src/ru/skypro/transport/Bus.java new file mode 100644 index 0000000..85dcf64 --- /dev/null +++ b/src/ru/skypro/transport/Bus.java @@ -0,0 +1,32 @@ +package ru.skypro.transport; + +public class Bus extends Transport implements Competitive { + + public Bus(String brand, String model, Double engineVolume) { + super(brand, model, engineVolume); + } + + @Override + public void startMoving() { + super.startMoving(); + } + + @Override + public void stopMoving() { + super.stopMoving(); + } + @Override + public void pitStop() { + System.out.println("false"); + } + + @Override + public void maxSpeed() { + System.out.println("200"); + } + + @Override + public void bestTime() { + System.out.println("9.00"); + } +} diff --git a/src/ru/skypro/transport/Car.java b/src/ru/skypro/transport/Car.java new file mode 100644 index 0000000..88dc3f0 --- /dev/null +++ b/src/ru/skypro/transport/Car.java @@ -0,0 +1,32 @@ +package ru.skypro.transport; + +public class Car extends Transport implements Competitive{ + public Car(String brand, String model, Double engineVolume) { + super(brand, model, engineVolume); + } + + @Override + public void startMoving() { + super.startMoving(); + } + + @Override + public void stopMoving() { + super.stopMoving(); + } + + @Override + public void pitStop() { + System.out.println("false"); + } + + @Override + public void maxSpeed() { + System.out.println("160"); + } + + @Override + public void bestTime() { + System.out.println("10.00"); + } +} diff --git a/src/ru/skypro/transport/Competitive.java b/src/ru/skypro/transport/Competitive.java new file mode 100644 index 0000000..6fe64c3 --- /dev/null +++ b/src/ru/skypro/transport/Competitive.java @@ -0,0 +1,7 @@ +package ru.skypro.transport; + +public interface Competitive { + void pitStop(); + void maxSpeed(); + void bestTime(); +} diff --git a/src/ru/skypro/transport/Driver.java b/src/ru/skypro/transport/Driver.java new file mode 100644 index 0000000..f900c7d --- /dev/null +++ b/src/ru/skypro/transport/Driver.java @@ -0,0 +1,27 @@ +package ru.skypro.transport; + +public abstract class Driver{ + + private final Transport transport; + private String fio; + private Boolean haveRights; + private Integer stazh; + + public Driver(String fio, Boolean haveRights, Integer stazh, Transport transport) { + this.fio = fio; + this.haveRights = haveRights; + this.stazh = stazh; + this.transport = transport; + } + + public void startMoving(){ + transport.startMoving(); + } + public void stopMoving(){ + transport.stopMoving(); + + } + public void refill(){ + System.out.println("водитель "+fio+" управляет автомобилем "+transport.getBrand()+" "+transport.getModel()+" и будет участвовать в заезде"); + } +} diff --git a/src/ru/skypro/transport/DriverB.java b/src/ru/skypro/transport/DriverB.java new file mode 100644 index 0000000..41aca26 --- /dev/null +++ b/src/ru/skypro/transport/DriverB.java @@ -0,0 +1,7 @@ +package ru.skypro.transport; + +public class DriverB extends Driver{ + public DriverB(String fio, Boolean haveRights, Integer stazh, Car transport) { + super(fio, haveRights, stazh, transport); + } +} diff --git a/src/ru/skypro/transport/DriverC.java b/src/ru/skypro/transport/DriverC.java new file mode 100644 index 0000000..858bae5 --- /dev/null +++ b/src/ru/skypro/transport/DriverC.java @@ -0,0 +1,7 @@ +package ru.skypro.transport; + +public class DriverC extends Driver{ + public DriverC(String fio, Boolean haveRights, Integer stazh, Truck transport) { + super(fio, haveRights, stazh, transport); + } +} diff --git a/src/ru/skypro/transport/DriverD.java b/src/ru/skypro/transport/DriverD.java new file mode 100644 index 0000000..d3184fd --- /dev/null +++ b/src/ru/skypro/transport/DriverD.java @@ -0,0 +1,7 @@ +package ru.skypro.transport; + +public class DriverD extends Driver{ + public DriverD(String fio, Boolean haveRights, Integer stazh, Bus transport) { + super(fio, haveRights, stazh, transport); + } +} diff --git a/src/ru/skypro/transport/Transport.java b/src/ru/skypro/transport/Transport.java new file mode 100644 index 0000000..dcb6486 --- /dev/null +++ b/src/ru/skypro/transport/Transport.java @@ -0,0 +1,53 @@ +package ru.skypro.transport; + +public abstract class Transport { + private String brand; + private String model; + private Double engineVolume; + + public Transport(String brand, String model, Double engineVolume) { + this.brand = brand == null || brand.equals("") ? "default" : brand; + this.model = model == null || model.equals("") ? "default" : model; + this.engineVolume = (engineVolume == null || engineVolume<0) ? 1.6 : engineVolume; + } + + public void startMoving(){ + System.out.println(this.getClass() +" "+ this.brand +" "+ this.model + "Начал движение"); + } + public void stopMoving(){ + System.out.println(this.getClass() +" "+ this.brand +" "+ this.model + "Закончил движение"); + } + + @Override + public String toString() { + return "Transport{" + + "brand='" + brand + '\'' + + ", model='" + model + '\'' + + ", engineVolume=" + engineVolume + + '}'; + } + + public String getBrand() { + return brand; + } + + public String getModel() { + return model; + } + + public void setBrand(String brand) { + this.brand = brand; + } + + public void setModel(String model) { + this.model = model; + } + + public Double getEngineVolume() { + return engineVolume; + } + + public void setEngineVolume(Double engineVolume) { + this.engineVolume = engineVolume; + } +} diff --git a/src/ru/skypro/transport/Truck.java b/src/ru/skypro/transport/Truck.java new file mode 100644 index 0000000..84edcee --- /dev/null +++ b/src/ru/skypro/transport/Truck.java @@ -0,0 +1,33 @@ +package ru.skypro.transport; + +public class Truck extends Transport implements Competitive{ + + public Truck(String brand, String model, Double engineVolume) { + super(brand, model, engineVolume); + } + + @Override + public void startMoving() { + System.out.println(super.getBrand() +" "+ super.getModel() + " Начал движение"); + } + + @Override + public void stopMoving() { + System.out.println(super.getBrand() +" "+ super.getModel() + " Закончил движение"); + } + + @Override + public void pitStop() { + System.out.println("true"); + } + + @Override + public void maxSpeed() { + System.out.println("330"); + } + + @Override + public void bestTime() { + System.out.println("6.00"); + } +}