Создать класс Повар

Как написать программу на Java. Создать класс Повар. Повар должен уметь готовить (создать метод cook с параметром названия блюда). Он может приготовить 2 блюда: 1) Глазунья, 2) Омлет. Создать вспомогательные методы, с помощью которых повар может приготовить эти блюда (поперчить, посолить, разбить и так далее). Вывести на консоль имя, возраст повара и список действий для приготовления определенного блюда.

Пример: Николай 32 года

Глазунья:

  1. Разбить яйца
  2. Выложить на сковородку
  3. Посолить
  4. Поперчить
  5. Жарить

Омлет:

  1. Разбить яйца
  2. Перемешать
  3. Добавить молоко
  4. Выложить на сковородку
  5. Посолить
  6. Поперчить
  7. Жарить

Ответы (4 шт):

Автор решения: Юрий Мусиенко

Создай класс Повар, введи поля, геттеры сеттеры, конструктор, переопредели то-стринг, список действий, можешь систем аутом вывести, можешь две мапы сделать одна для омлета другая для глазуньи тут уже как сам сообразишь, можешь ещё проверок напихать чтобы пользователь вводил блюдо которое он хочет и если повар не умеет такого готовить выводить соответствующее сообщение или ошибку кидать или рекурсивно опять метод вызывать пока пользователь не введет нужное блюдо, можешь enum сделать для блюд, не совсем понятен вопрос или вы хотели чтобы за вас задачу решили???)

→ Ссылка
Автор решения: Никита Жуков

Главный класс

public class Main
{
    
    public static void main(String[] args)
    {
        Cook test = new Cook("Николай",32);
        test.cook("Омлет");
    }
    
}

Класс Повар

public class Cook
{

    private String name; //имя
    private int age; //возраст

    public Cook(String name, int age){
        this.name = name;
        this.age = age;
    }

    public void cook(String disn){
        System.out.println(name+" "+age+" года");//выводит имя и возраст
        switch(disn) 
        {
            case "Глазунья:":
                System.out.println("Глазунья");
                System.out.println("1) Разбить яйца");
                System.out.println("2) Выложить на сковородку");
                System.out.println("3) Посолить");
                System.out.println("4) Поперчить");
                System.out.println("5) Жарить");
                break;
            case "Омлет":
                System.out.println("Омлет:");
                System.out.println("1) Разбить яйца");
                System.out.println("2) Перемешать");
                System.out.println("3) Добавить молоко");
                System.out.println("4) Выложить на сковородку");
                System.out.println("5) Посолить");
                System.out.println("6) Поперчить");
                System.out.println("7) Жарить");
                break;
            default:
                System.out.println("Я не умею готовить "+disn);
                break;
        }
    }
    
}
→ Ссылка
Автор решения: lampa

Наш повар умеет готовить только еду, которая наследуется от интерфейса Food

public static class Cook {
    private String fullName;
    private Integer age;

    public Cook(String fullName, Integer age) {
        this.fullName = fullName;
        this.age = age;
    }

    private <T extends Food> T cook(Class<T> foodType) throws NoSuchMethodException, IllegalAccessException, InvocationTargetException, InstantiationException {
        System.out.println("Готовим: " + foodType.getSimpleName());
        return foodType.getDeclaredConstructor().newInstance();
    }
}

Интерфейс еды, реализуем шаблон цепочки

public interface Food<T> {
    default T breakEggs() {
        System.out.println("Разбить яйца");
        return (T) this;
    }

    default T putInSkillet() {
        System.out.println("Выложить на сковородку");
        return (T) this;
    }

    default T salt() {
        System.out.println("Посолить");
        return (T) this;
    }

    default T pepper() {
        System.out.println("Поперчить");
        return (T) this;
    }

    default void fry() {
        System.out.println("Жарить\n");
    }
}

Опишем классы глазуньи и омлета. У омлета есть доп. методы:

public static class FriedEggs implements Food<FriedEggs> {}

public static class Omelet implements Food<Omelet> {
    public Omelet mix() {
        System.out.println("Перемешать");
        return this;
    }

    public Omelet addMilk() {
        System.out.println("Добавить молоко");
        return this;
    }
}

и запустим всё:

Cook cook = new Cook("Коля", 32);

FriedEggs friedEggs = cook.cook(FriedEggs.class);
friedEggs.breakEggs().putInSkillet().salt().pepper().fry();

Omelet omelet = cook.cook(Omelet.class);
omelet.breakEggs().mix().addMilk().putInSkillet().salt().pepper().fry();
→ Ссылка
Автор решения: A_Br2H

Я соблюдал все ваши критерии. Вот код:

class Cook 
{
    private String name;
    private int age;
    private String[] omletRecipe = new String[] {
        "{Пустая строка}", "Разбить яйца.", 
        "Выложить на сковородку.", "Посолить.", 
        "Поперчить.", "Жарить."
    };
    private String[] friedEggsRecipe = new String[] {
        "{Пустая строка}", "Разбить яйца.", "Перемешать.", "Добавить молоко.", "Выложить на сковородку.", "Посолить.", "Поперчить.", "Жарить."
    };

    public Cook(String name, int age) 
    {
        this.name = name;
        this.age = age;
        System.out.println("Повар: " + name + ", " + age + " лет.");
    }
    public void cook(String dish)
    {
        switch (dish)
        {
            case "Глазунья":
                this.cookFriedEggs();
                break;
            case "Омлет":
                this.cookOmlet();
                break;
            default:
                System.out.println("Я не умею готовить ваш " + dish);
        }
    }
    private void cookOmlet() 
    {
        for (int index = 1; index < this.omletRecipe.length; index++) 
        {
            System.out.println(index + ". " + this.omletRecipe[index]);
        }
    }
    private void cookFriedEggs() 
    {
        for (int index = 1; index < this.friedEggsRecipe.length; index++) 
        {
            System.out.println(index + ". " + this.friedEggsRecipe[index]);
        }
    }
}

Главный метод:

class Main 
{
    public static void main(String[] args)
    {
        Cook cook = new Cook("Володя", 29);
        cook.cook("Омлет");
    }
}

Объясняю - мы инициализируем 4 приватных поля: имя повара, возраст повара, рецепт омлета, рецепт глазуньи. После, мы инициализируем конструктор, в котором присваиваем значения name и age. После завершения, пишем имя и возраст повара. Дальше, при вызове метода cook, мы проверяем наше запрошенное блюдо, на два значения: омлет и глазунья. Если значение блюда Глазунья, то вызывается метод cookFriedEggs, если Омлет, то метод cookOmlet. Логика в этих обоих методах одинаковая. Мы начинаем с индекса 1, так как кому будет хорошо видеть: 0. Разбить яйца. Также, чтобы у нас всё работало, мы добавили в нулевой индекс обоим массивам рецепта - "{Пустая строка}". Я сделал для удобства. Впринципе, если вы знаете как объявлять класс, приватные методы, приватные поля, то вы бы смогли написать такую лёгкую программу.

→ Ссылка