ЗАДАЧА 13.02.01.

package com.javarush.test.level13.lesson02.task01;

/* Пиво
1. Подумай, какой из двух интерфейсов нужно реализовать в классе Beer.
2. Добавь к классу Beer этот интерфейс и реализуйте все нереализованные методы.
3. Подумай, как связаны переменная  READY_TO_GO_HOME и метод isReadyToGoHome.
4. Верни значение переменной READY_TO_GO_HOME в методе isReadyToGoHome.
*/

public class Solution
{
    public static void main(String[] args) throws Exception
    {
    }

    public interface Drink
    {
        void askMore(String message);

        void sayThankYou();

        boolean isReadyToGoHome();
    }

    public interface Alcohol extends Drink
    {
        boolean READY_TO_GO_HOME = false;

        void sleepOnTheFloor();
    }

    public static class Beer implements Alcohol
    {

        @Override
        public void sleepOnTheFloor()
        {

        }

        @Override
        public void askMore(String message)
        {

        }

        @Override
        public void sayThankYou()
        {

        }

        @Override
        public boolean isReadyToGoHome()
        {
            return false;
        }
    }
}

 

ЗАДАЧА 13.02.02.

package com.javarush.test.level13.lesson02.task02;

/* Пиво: возвращение
Добавь к классу AlcoholicBeer интерфейс Drink и реализуй все нереализованные методы.
*/

public class Solution
{
    public static void main(String[] args) throws Exception
    {
        Drink beer = new AlcoholicBeer();
        System.out.println(beer.toString());
    }

    public interface Drink
    {
        boolean isAlcoholic();
    }

    public static class AlcoholicBeer implements Drink
    {
        @Override
        public boolean isAlcoholic()
        {
            return true;
        }
        @Override
        public String toString()
        {
            if (isAlcoholic()) {
                return "Напиток алкогольный";
            }
            else {
                return "Напиток безалкогольный";
            }

        }


    }
}

 

ЗАДАЧА 13.02.03.

package com.javarush.test.level13.lesson02.task03;

/* Пиво и кола
Реализуй интерфейс Drink в классах Beer и Cola.
*/

public class Solution
{
    public static void main(String[] args) throws Exception
    {

        print(new Beer());
        print(new Cola());

    }

    private static void print(Drink drink)
    {
        System.out.println(drink.getClass().getSimpleName());
    }

    public interface Drink
    {
        boolean isAlcoholic();
    }

    public static class Beer implements Drink
    {
        @Override
        public boolean isAlcoholic()
        {
            return true;
        }
    }

    public static class Cola implements Drink
    {
        @Override
        public boolean isAlcoholic()
        {
            return false;
        }
    }
}

 

ЗАДАЧА 13.02.04.

package com.javarush.test.level13.lesson02.task04;

/* Selectable и Updatable
1. Создай класс Screen.
2. Реализуй в нем интерфейсы Selectable с методом onSelect, Updatable с методом refresh.
*/

public class Solution
{
    public static void main(String[] args) throws Exception
    {
    }

    interface Selectable
    {
        void onSelect();
    }

    interface Updatable
    {
        void refresh();
    }

    //напишите тут ваш класс
    public static class Screen implements Selectable, Updatable
    {

        @Override
        public void onSelect()
        {

        }

        @Override
        public void refresh()
        {

        }
    }
}

 

ЗАДАЧА 13.02.05.

package com.javarush.test.level13.lesson02.task05;

/* 4 ошибки
Исправь 4 ошибки в программе, чтобы она компилировалась.
Объявление интерфейсов не изменять.
*/

public class Solution
{

    public static void main(String[] args) throws Exception
    {
        System.out.println(new Hobbie().HOBBIE.toString());
        System.out.println(new Hobbie().toString());
    }
    interface Desire
    {
    }
    interface Dream
    {
        static Hobbie HOBBIE = new Hobbie();
    }
    static class Hobbie  implements Dream, Desire
    {
        static int INDEX = 1;
        @Override
        public String toString()
        {
            INDEX++;
            return "" + INDEX;
        }
    }

}

 

ЗАДАЧА 13.02.06.

package com.javarush.test.level13.lesson02.task06;

/* Баг в initializeIdAndName
1. Подумать, что в программе неправильно.
2. Вынести реализацию метода initializeIdAndName в класс User.
3. initializeIdAndName в классе User должен возвращать тип User.
4. Поправить программу, чтобы компилировалась и работала.
*/

public class Solution
{
    public static void main(String[] args) throws Exception
    {
        System.out.println(Matrix.NEO);
        System.out.println(Matrix.TRINITY);
    }

    static class Matrix
    {
        public static DBObject NEO = new User().initializeIdAndName(1, "Neo");
        public static DBObject TRINITY = new User().initializeIdAndName(2, "Trinity");
    }
    interface DBObject
    {
        DBObject initializeIdAndName(long id, String name);
    }
    static class User implements DBObject
    {
        public DBObject initializeIdAndName(long id, String name)
        {
            this.id = id;
            this.name = name;
            return this;
        }
        long id;
        String name;
        @Override
        public String toString()
        {
            return String.format("User has name %s, id = %d", name, id);
        }
    }

}

 

ЗАДАЧА 13.02.07.

package com.javarush.test.level13.lesson02.task07;

/* Параметризованый интерфейс
В классе StringObject реализуй интерфейс SimpleObject с параметром типа String.
*/

public class Solution
{
    public static void main(String[] args) throws Exception
    {
    }

    interface SimpleObject<T>
    {
        SimpleObject<T> getInstance();
    }

    class StringObject implements SimpleObject<String> //допишите здесь ваш код
    {
        @Override
        public SimpleObject<String> getInstance()
        {
            return null;
        }
    }
}

 

ЗАДАЧА 13.02.08.

package com.javarush.test.level13.lesson02.task08;

/* Жив или нет
1. Создай интерфейс Person.
2. Добавь в него метод isAlive(), который проверяет, жив человек или нет.
3. Подумай, какой тип должен возвращать этот метод.
4. Создай интерфейс Presidentable.
5. Унаследуй интерфейс Presidentable от интерфейса Person.
*/

public class Solution
{
    public static void main(String[] args) throws Exception
    {
    }

    public interface Person
    {
        boolean isAlive();
    }
    public static class IsAlive implements Person
    {

        @Override
        public boolean isAlive()
        {
            return true;
        }
    }
    public interface Presidentable extends Person
    {

    }
}

 

ЗАДАЧА 13.02.09.

package com.javarush.test.level13.lesson02.task09;

/* Наследование интерфейса
1. Создать интерфейс Movable с методом speed.
2. Метод speed возвращает значение типа Double и не принимает параметров.
3. Создать и унаследовать интерфейс Runable от интерфейса Movable.
4. Добавить в интерфейс Runable метод speed.
5. Метод speed возвращает значение типа Double и принимает один параметр типа Runable.
*/

public class Solution
{
    public static void main(String[] args) throws Exception
    {
    }
    public interface Movable
    {
        Double speed();
    }
    public interface Runable extends Movable
    {
        Double speed(Runable a);
    }
}

 

ЗАДАЧА 13.02.10.

package com.javarush.test.level13.lesson02.task10;

/* CleverMan и SmartGirl
1. Добавь интерфейсы Secretary и Boss к классам CleverMan и SmartGirl. По одному на каждый. Подумай, кому какой.
2. Унаследуй  интерфейсы Secretary и Boss от интерфейсов Person и Workable так,
чтобы все методы у классов CleverMan и SmartGirl оказались объявленными в каком-то интерфейсе.
*/

public class Solution
{
    public static void main(String[] args) throws Exception
    {
    }

    interface Person
    {
        void use(Person person);
        void startToWork();
    }

    interface Workable
    {
        boolean wantGetExtraWork();
    }

    interface Secretary extends Person
    {
    }

    interface Boss extends Workable, Person
    {
    }

    class CleverMan implements Boss
    {
        public void use(Person person)
        {
            person.startToWork();
        }

        public void startToWork()
        {
        }

        public boolean wantGetExtraWork()
        {
            return true;
        }
    }

    class SmartGirl implements Secretary
    {
        public void use(Person person)
        {
        }

        public void startToWork()
        {
        }
    }
}