|
7 / 0 / 0
Регистрация: 18.05.2018
Сообщений: 158
|
||||||
Как реализовать более абстрактную реализацию, при которой добавление новых типов животных не будет требовать модификации18.02.2022, 15:20. Показов 725. Ответов 3
Метки нет (Все метки)
Всем привет!
Есть задача: Реализовать объектно-ориентированную систему: прототип сбора продукции. Реализовать структуру классов, задействовать механизм наследования. Класс фермы (Farm) должен быть автономным, сам вести учёт номеров животных, сбор и подсчет продукции. Решение должно быть расширяемым, добавление новых типов животных и продукции не должно приводить к модификации непосредственно класса Farm. Система должна уметь: Добавлять животных в хлев поштучно. Собирать продукцию у всех животных, зарегистрированных в хлеву. Подсчитывать общее кол-во собранной продукции. При запуске скрипта в консоли: Система должна добавить животных в хлев (10 коров и 20 кур). Вывести на экран информацию о количестве каждого типа животных на ферме. 7 раз (неделю) произвести сбор продукции (подоить коров и собрать яйца у кур). Вывести на экран общее кол-во собранных за неделю шт. яиц и литров молока. Добавить на ферму ещё 5 кур и 1 корову (съездили на рынок, купили животных). Снова вывести информацию о количестве каждого типа животных на ферме. Снова 7 раз (неделю) производим сбор продукции и выводим результат на экран. Реализация задания:
Я так понял,что нужно реализовать добавление новых животных в хлев так,чтобы добавление не было завязано на конкретных типах животных. Я думал так: мне нужно добавить какое-то колво куриц и коров. Если нужно реализовать более абстрактную реализацию добавления животных,то я могу просто написать new Animal(.....) при добавлении. Но будет неизвестно ,что это за животное корова или курица. Можно,конечно, сделать downcasting при добавлении животного,но animal не является курицей или коровой и поэтому появится ошибка. В общем, не знаю как реализовать эту абстрактную реализацию. Помогите ,пожалуйста! Заранее спасибо!
0
|
||||||
| 18.02.2022, 15:20 | |
|
Ответы с готовыми решениями:
3
Добавление новых типов в функцию Как ограничить время выполнения функции и реализовать добавление новых функций Можно ли опубликовть приложение из VS 2013, которое не будет требовать Framework 4.5.1 при установке? |
|
4694 / 2702 / 734
Регистрация: 02.08.2011
Сообщений: 7,233
|
|||||||||||||||||
| 18.02.2022, 16:06 | |||||||||||||||||
Для этого в ООП используется паттерн Абстрактная Фабрика, в вашем случае что-то вроде того:
И в классе Farm просто надо будет заменить:
0
|
|||||||||||||||||
|
7 / 0 / 0
Регистрация: 18.05.2018
Сообщений: 158
|
||||||
| 19.02.2022, 16:39 [ТС] | ||||||
|
Спасибо за ответ. Сделал через фабрику,но препод все равно отклонил задание: речь о том, чтобы внутри классов Farm и Stable не было упоминания животных, фабрика не решает данного вопроса. Добавление животных на ферму должно вызываться, например, из метода Main, т.е. не из самой фермы, а извне.
Тут я уже не понял. Как можно добавлять животных на ферму без упоминания животных.
0
|
||||||
|
4694 / 2702 / 734
Регистрация: 02.08.2011
Сообщений: 7,233
|
||
| 19.02.2022, 17:38 | ||
|
Тогда просто создайте одноименные метод AddAnimals(IEnumerable<Animal> animals) в классы Farm, Stable. И вызывайте, когда нужно. Фабрику можно удалить. PS: непонятно, в чем смысл класса Stable - его название ни о чем не говорит. Первая мысль, что приходит в голову - эта та часть фермы, которую не стыдно показать инвестору, где все животные дружно живут, и сами добровольно лезут под нож, по-расписанию. Так сказать, понимают свою роль. А есть нестабильная часть фермы - где куры дохнут пачками, если их забыли покармить (тут такое случается). Так что-ли? Наверное, имеет смысл удалить класс Stable и весь код оформить внутри одного класса Farm.
0
|
||
| 19.02.2022, 17:38 | |
|
Помогаю со студенческими работами здесь
4
Как реализовать добавление новых тегов div на asp.net страницу по нажатию кнопки "Добавить" Как реализовать классы животных? Как реализовать паттерн Хранитель при использовании ссылочных типов Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. .
Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
|
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла:
Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
|
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога
Финальные проекты на Си и на C++:
finish-text-sdl3-c. zip
finish-text-sdl3-cpp. zip
|
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
|
|
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo
Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло.
Но на выплатах по больничным это. . .
|
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью в КА2. Данные берутся из регистра сведений, по которому настроено. . .
|
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y
Z4Tv2zpXVVo
https:/ / github. com/ shumilovas/ med2. git
|
Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа в КА2.
В качестве фильтра для отбора справочника служит группа номенклатуры.
Отбор по наименованию. . .
|