- Пикель Герман
- Бужор Роман
Приложение для составления меню ресторанов, кафе, кофеен. Проект содержитв себе:
- Обращение к определенным типам заведений
- Обращение к классичесому/сезонному меню заведения
- Создание сезонного меню у конкретного заведения
- Просмотр блюд в определенном меню
- Добавление и удаление блюд
- ⭐ Динамики на устройстве 🔊
- ⭐ Включить динамики на максимальную громкость 🕺
- ⭐ Пересмотреть все серии сериала "Кухня" 👨🍳
- ⭐ Не воспринимать происходящее близко к сердцу ( В приложении Виктóр - это кафешка без звезды мишлен ) 🌟
Проект соответствует всем критериям для оценки 5 (25 баллов):
- ✅ 2+ интерфейса (
IMenu,IMeal,ISerializer) - ✅ 2+ абстрактных класса (
Meal,Menu,Venue) - ✅ 6+ приведений типов (
SeasonMenuвT,DrinkвMeal,SaladвMeal,HotMealвMeal,DessertвMeal,SeasonMenuвMenu,DefaultMenuвMenu) - ✅ Перегрузка методов (
ToString()вMenu,ToString()вMeal,Serialize<T>вJsonSerialize,Serialize<T>вXMLSerialize) - ✅ Перегруженные операторы (
+для классаMenu) - ✅ Делегаты (
private delegate void ChangeFormatDelegate(string format);, А так же добавление в делигатыitem.Click += CommonBtn_Click;) - ✅ Дженерики (
Serialize<T>вJsonSerialize,Serialize<T>вXMLSerialize) - ✅ 4+ элемента UI (Label, ComboBox, Button, CheckBox, FlowLayoutPanel)
RestaurantMenu/
├── Model/ (библиотека)
│ ├── Core/ # Бизнес-логика
│ └── Data/ # Сериализация
└── RestaurantMenu/ # WindowsForms приложение, сами формы
-
Выбор типа заведения:
- Кафе. рестораны или фастфуд
-
Кнопка создания сезонного меню:
- Кнопка доступна, если у выбранного заведения нет сезонного меню
-
Выбор меню у конкретного заведения:
- Классическое, сезонное(если создано)
-
ComboBox для фильтрации блюд
- Выбор типа блюда и вывод только данный тип блюд
-
DropBox для выбора типа файла для сохранений меню:
- Выбор между XML и JSON
-
Кнопка ( галочка ) для подтвержддения выбора
-
Кнопка добавить блюдо.
-
Список блюд в меню
- Около каждого блюда есть кнопка удалить, по нажатию на которую, блюдо удаляется, и меню сохраняется в файл.
- Инкапсуляция: приватные сеттеры, методы валидации
- Наследование:
Laptop→ITProduct - Полиморфизм: переопределение свойства
Price - Абстракция: интерфейс
IReportable
-
Single Responsibility:
MainSerializer- хранение данныхMenu.Id- Уникальность
-
Open-Closed:
- Новые типы блюд через наследование
-
Liskov Substitution:
- Все наследники
IMealсовместимы
- Все наследники
-
Interface Segregation:
IVenueтолько для мест питанияIMealтолько для блюдIMenuтолько для меню
-
Dependency Inversion:
- Зависимости от абстракций (
ISerializer)
- Зависимости от абстракций (
- Требуется библиотеки Newtonsoft.Json
- JSON/XML сериализация
