import static java.lang.System.*; public class Main { public static void F(Driver d, Car c) { out.println("State: "); out.println("- Ключ в рукав? - " + state(d.isKeyInHand())); out.println("- Водитель в машине? - " + state(d.isInCar())); out.println("- Дверь открыта? - " + state(c.isDoorOpen())); out.println("- Ключ в замке зажигания? - " + state(c.isKeyInserted())); out.println("- Двигатель работает? - " + state(c.isEngineWorked())); out.println(); } private static String state(boolean b) { return (b) ? "Да" : "Нет"; } public static void main(String[] args) { Driver driver = new Driver(false, false); Car car = new Car(false, false, false); F(driver, car); driver.openDoorOfCar(car); F(driver, car); driver.sitInCar(); F(driver, car); driver.closeDoorOfCar(car); F(driver, car); driver.getKey(); F(driver, car); driver.insertKey(car); F(driver, car); driver.rotateKey(car); F(driver, car); } } /** * Водитель (субъект) */ public class Driver { /** * Находится ли водитель в машине */ private boolean inCar; /** * Взял ли водитель ключ */ private boolean keyInHand; /** * Конструктор * @param inCar * @param keyInHand */ public Driver(boolean inCar, boolean keyInHand) { this.inCar = inCar; this.keyInHand = keyInHand; } /** * Возвращает true, если водитель находится ли водитель в машине * @return */ public boolean isInCar() { return inCar; } /** * Возвращает true, если водитель взял ключ * @return */ public boolean isKeyInHand() { return keyInHand; } /** * Открыть дверь автомобиля * @param c автомобиль */ public void openDoorOfCar(Car c) { c.openDoor(); } /** * Сесть в машину */ public void sitInCar() { inCar = true; } /** * Закрыть дверь в автомобиле * @param c автомобиль */ public void closeDoorOfCar(Car c) { c.closeDoor(); } /** * Взять ключ */ public void getKey() { keyInHand = true; } /** * Вставить ключ в замок зажигания * @param c автомобиль */ public void insertKey(Car c) { c.insertKey(); } /** * Повернуть ключ (завести двигатель) * @param c автомобиль */ public void rotateKey(Car c) { c.startEngine(); keyInHand = false; } } /** * Автомобиль */ public class Car { /** * Открыта ли дверь */ private boolean doorOpen; /** * Вставлен ли ключ в замок зажигания */ private boolean keyInserted; /** * Работает ли двигатель */ private boolean engineWorked; /** * Конструктор * @param doorOpen * @param keyInserted * @param engineWorked */ public Car(boolean doorOpen, boolean keyInserted, boolean engineWorked) { this.doorOpen = doorOpen; this.keyInserted = keyInserted; this.engineWorked = engineWorked; } /** * Возвращает true, если дверь открыта * @return */ public boolean isDoorOpen() { return doorOpen; } /** * Возвращает true, если ключ в замке зажигания * @return */ public boolean isKeyInserted() { return keyInserted; } /** * Возвращает true, если двигатель работает * @return */ public boolean isEngineWorked() { return engineWorked; } /** * Открыть дверь */ public void openDoor() { doorOpen = true; } /** * Закрыть дверь */ public void closeDoor() { doorOpen = false; } /** * Вставить ключ в замок зажигания */ public void insertKey() { keyInserted = true; } /** * Завести двигатель */ public void startEngine() { engineWorked = true; } }