コード例 #1
0
        static void Main(string[] args)
        {
            // Начало работы программы. Просим представиться клиента.
            Console.WriteLine("Здравствуйте. Вы обратились в службу заказа шаурты. Представьтесь, пожалуйста.");
            Console.Write("Ваше имя: ");
            var clientName = Console.ReadLine();

            Console.WriteLine("Ваш заказ уже начал готовиться.");
            Shaurma shaurma = null;

            // Просим клиента выбрать тип шаурмы.
            // Повторяем до тех пор, пока пользователь не введет корректное значение.
            do
            {
                shaurma = GetShaurmaType(clientName);
            }while (shaurma == null);

            // Просим клиента выбрать добавки к шаурме.
            // Повторяем вопрос до тех пор, пока пользователь не откажется от добавки.
            while (true)
            {
                shaurma = GetShaurmaAdding(shaurma, out bool finish);
                if (finish)
                {
                    break;
                }
            }

            // Выводим сообщение о готовности шаурмы.
            Console.WriteLine($"{shaurma} готова. Стоимость {shaurma.Price} рублей.");
            Console.ReadLine();
        }
コード例 #2
0
        /// <summary>
        /// Запросить о необходимости добавки в шаурму.
        /// </summary>
        /// <param name="shaurma">Шаурма, в которую может быть добавлена добавка.</param>
        /// <param name="finish">Добавление не нужно.</param>
        /// <returns>Шаурма после добавления добавки.</returns>
        private static Shaurma GetShaurmaAdding(Shaurma shaurma, out bool finish)
        {
            // По умолчанию добавки еще нужны.
            finish = false;

            // Выводим пользователю все возможные виды добавок
            // и сохраняем его ответ.
            Console.WriteLine("Хотите добавить особую добавку в шаурму?");
            foreach (AddingType t in Enum.GetValues(typeof(AddingType)))
            {
                Console.WriteLine($"{(int)t} - {t.GetDescription()}");
            }
            var adding = Console.ReadLine();

            // Пытаемя привести ответ пользователя к требуемому типу.
            if (int.TryParse(adding, out int addingType))
            {
                switch ((AddingType)addingType)
                {
                case AddingType.None:
                    // Добавки больше не нужны.
                    // Возвращаем шаурму без изменений.
                    finish = true;
                    return(shaurma);

                case AddingType.Cheese:
                    // Добавляем сыр.
                    return(new CheeseAdding(shaurma));

                case AddingType.Ginger:
                    // Добавляем имбирь
                    return(new GingerAdding(shaurma));

                case AddingType.Mushroom:
                    // Добавляем грибы.
                    return(new MushroomAdding(shaurma));

                case AddingType.Spisy:
                    // Добавляем перца.
                    return(new SpicyAdding(shaurma));

                default:
                    // Не удалось привести ответ пользователя к требуемому виду.
                    // Введено число отсутствующее в перечислении типов добавок.
                    Console.WriteLine("Вы ввели некорректное значение!");
                    return(shaurma);
                }
            }
            else
            {
                // Не удалось привести ответ пользователя к требуемому виду.
                // Введено не целое число.
                Console.WriteLine("Вы ввели некорректное значение!");
                return(shaurma);
            }
        }
コード例 #3
0
ファイル: ChilliAdding.cs プロジェクト: dima92/DesignPatterns
 /// <summary>
 /// Создать новый экземпляр шаурмы с острой добавкой.
 /// </summary>
 /// <param name="shaurma">Шаурма, в которую добавляется добавка.</param>
 public ChilliAdding(Shaurma shaurma) : base(shaurma)
 {
     Price += 5;
     Name += " острая";
 }
コード例 #4
0
 /// <summary>
 /// Создание нового экземпляра шаурмы с добавкой.
 /// </summary>
 /// <param name="shaurma">Шаурма, в которую добавляется добавка.</param>
 public ShaurmaAdding(Shaurma shaurma) : base(shaurma.Name)
 {
     Shaurma = shaurma ?? throw new ArgumentNullException(nameof(shaurma));
     Price   = shaurma.Price;
 }
コード例 #5
0
 /// <summary>
 /// Создать новый экземпляр шаурмы с добавлением грибов.
 /// </summary>
 /// <param name="shaurma">Шаурма, в которую будут добавлены грибы.</param>
 public MushroomAdding(Shaurma shaurma) : base(shaurma)
 {
     Price += 10;
     Name  += " с грибами";
 }
コード例 #6
0
 /// <summary>
 /// Создать новый экземпляр шаурмы с острой добавкой.
 /// </summary>
 /// <param name="shaurma">Шаурма, в которую добавляется добавка.</param>
 public SpicyAdding(Shaurma shaurma) : base(shaurma)
 {
     Price += 5;
     Name  += " острая";
 }
コード例 #7
0
 /// <summary>
 /// Создание экземпляра шаурмы с сырной добавкой.
 /// </summary>
 /// <param name="shaurma">Шаурма, в которую будет добавлен сыр.</param>
 public CheeseAdding(Shaurma shaurma) : base(shaurma)
 {
     Price += 10;
     Name  += " с сыром";
 }
コード例 #8
0
 /// <summary>
 /// Создать экземпляр шаурмы с добавкой имбиря.
 /// </summary>
 /// <param name="shaurma">Шаурма, в которую будет добавлен имбирь.</param>
 public GingerAdding(Shaurma shaurma) : base(shaurma)
 {
     Price += 15;
     Name  += " с имбирем";
 }