C#
Реализовать следующую модель: имеется кофемашина (CoffeeMachine), позволяющая готовить различные варианты кофе.
В соответствующие ёмкости машины (контейнеры) в определённых количествах загружаются ресурсы: зёрна кофе, вода и молоко. Каждый контейнер вмещает ограниченное количество ресурса, имеет ёмкость (capacity). В любой момент времени в контейнер можно загрузить или извлечь из него определённое количество ресурса. Извлечь (метод GetResource) больше, чем осталось -- нельзя. Загрузить (метод LoadResource) больше, чем он может вместить (с учётом имеющихся остатков) -- нельзя. Такие ситуации должны сопровождаться запуском исключений.
Для приготовления кофе можно использовать несколько разных рецептов: эспрессо, фильтрованный, капучино. Каждый рецепт требует определённого количества ресурсов для приготовления, а также имеет название (в терминах исходного кода его удобно отразить перечислением RecipeName. Сопоставление рецепта и набора требуемых ресурсов можно выразить с помощью словаря (см. “Полезные советы” к предыдущей лабораторной работе в части перечислений)).
Перед тем, как машина будет готова к использованию, для неё нужно определить набор доступных рецептов (он определён производителем и не меняется). С помощью вызова метода приготовления кофе BrewCoffee машина будет принимать команду на приготовление указанного рецепта (в качестве параметра передаётся нужный элемент перечисления). Машина, имея в распоряжении ресурсы, будет забирать из контейнеров указанное в соответствующем рецепте количество воды, молока и зёрен. Если ресурсов недостаточно, должно запускаться исключение (см. ”Полезные советы”), говорящее о проблеме.
Поскольку устройство машины скрыто от пользователя, его также можно смоделировать с помощью, условно, двух частей: модуль помола (GrinderUnit) и модуль варки (BrewingUnit). Эти модули являются частью машины и пользователь не взаимодействует с ними напрямую. Т.е. при вызове метода приготовления кофе машина отдаёт нужное количество зёрен модулю помола, который возвращает помол (GroundCoffee), затем передаёт этот помол модулю варки, который и завершает работу по приготовлению напитка (Coffee) (см. “Модель предметной области” из “Полезных советов”).
Таким образом, результатом должно быть решение для Visual Studio, состоящее из следующих частей:
1) Проект с модульными тестами (тип проекта -- “Тестовый проект xUnit”), покрывающими фукнциональность контейнеров, модулей варки и помола, а также кофемашины. См. “Полезные советы”, раздел “Разработка через тестирование (TDD)”. Тестами должны быть покрыты составные части модели, требования к которым приведены выше.
2) Проект с моделью кофемашины (тип проекта -- “Библиотека классов”).
Майя
МИФИ
Очень, быстро и качественно подготовила глоссарий. Спасибо большое! Буду еще обращаться к Вам.
Юлия
Институт экономики и права
Спасибо Анне за профессиональную помощь! Лабораторные сданы без замечаний. Сделала всё быс...
яна
имэс
Спасибо большое за выполненную работу! Смело рекомендую исполнителя! Сама еще не раз буду ...
Вячеслав
Омский институт водного транспорта
Исполнитель ответственный, хоть и не общительный, работу знает, респект !!!