
16. Общежитие (Hostel)
Включает: многоэтажное общежитие (не менее 4-х этажей), с нескольким комнатами на 3-х студентов каждая на этаже, студентов, коменданта, охранника.
Пояснение: основной объект - комната этажа. При инициализации все комнаты должны быть заселены студентами 1-4 курсов. С течением времени курс проживающего увеличивается и после 4-го он должен быть выселен. Кроме того, выселяются студенты, отчисленные из университета, неоплатившие проживание или имеющие 2 замечания в течение 1 года от старосты этажа. Староста этажа назначается из числа студентов, проживших в общежитии хотя бы год, и наряду с комендантом и охранником входит в администрацию общежития. Комендант утверждает заселение и выселение, староста регулярно делает обход на предмет проверки состояния комнат и проживающих. Функции охранника - не пускать посетителей без пропуска и помогать выселять.
17. Футбольная команда (SoccerTeam)
Включает: 18 игроков, тренера, врача, менеджера, игру чемпионата (всего30), тренировку.
Пояснение: основной объект - игрок. Он может быть здоров или травмирован, что определяет врач. В свою очередь здоровый игрок может готов играть или растренирован на сколько-то процентов. Причиной растренированности является травма, полученная в игре. Травму лечит врач. Далее травмированный игрок под руководством тренера проводит дополнительные ( от 1 до 5 в зависимости от тяжести травмы) тренировки для восстановления игровых навыков.
На каждую игру чемпионата тренер назначает 11 футболистов. Если какой-либо игрок из 18 проводит на поле менее 10% общего количества игр чемпионата, то менеджер исключает этого игрока из команды. Моделируется 2 последовательных тура чемпионата.
18. Интернет-магазин (eShop).
Включает: сайт магазина, корзина покупателя, склады товаров, фирма по доставке товара, администратора фирмы, администратора магазина.
Пояснения: основной объект-товар, который может быть заказан покупателем на сайте из некоторого перечня, при условии существовании его на складе, оплачен покупателем и доставлен ему, согласно заявке администратора фирме по доставке. Если товар не оплачивается за 3 дня, то ссылка на него изымается из корзины покупателя и возвращается на склад. Доставка завершается направлением соответствующих сообщений администратору и покупателю.
19. Стипл-чейз (SteepleChase)
CЧ – конная гонка с препятствиями - барьерами. Побеждает лошадь, пришедшая к финишу первой. Лошадь управляется жокеем.
Включает: лошадь, жокея, тренера, конюшню, ветеринара, ипподром – дистанция с 6-ю барьерами.
Пояснения: на конкретную гонку тренером выставляется наиболее подготовленная (имеющей лучшее время на тренировке) лошадь. Во время гонки лошадь может упасть при преодолении барьера, получить травму и выбыть из соревнования. Если лошадь перепрыгнула все барьеры, не зацепив ни одного (жокей провел гонку без ошибок), то считается победителем та, которая имела лучшее время на тренировке; ее жокей получает денежный приз. Если лошадь зацепила барьер, но не упала, то она продолжает гонку, но с худшим результатом. Если лошадь упала, то ветеринар ее лечит.
Итак, основной объект-лошадь, которая здорова/травмирована, имеет время прохождения дистанции, сбивает/не сбивает барьеры, побеждает/проигрывает.
Запустите последовательно несколько лошадей и выберите победителя. Параметры – время, сбила/не сбила барьер, падение – задавайте случайным образом.
Примечание. Всячески приветствуется и поощряется использование в проектах паттернов программирования. Например, в проектах, связанных с несколькими однотипными объектами (зоопарк, аквариум, оранжерея), можно использовать паттерн «Наблюдатель». Для этого следует определить отдельный класс («субъект» в терминологии [Гамма и др.]), который периодически или случайно посылает сообщения объектам-обитателям («наблюдателям»), вследствие чего последние изменяют свое состояние, например, с «болен» на «здоров». В проекте может быть несколько субъектов.
Далее, при инициализации модели (кстати, обязательной – программа при запуске не должна быть пустой) для генерации объектов различных классов можно использовать паттерн «Абстрактная фабрика». Если в программе есть меню, то можно применить паттерн «Команда» и т.д..
Наличие в программах паттернов программирования (при условии, естественно, понимания автором того, что написано в его работе) является достаточным основанием для получения отличной оценки не только по курсовой, но и на экзамене.
Лутай В.Н. «Курсовая работа по ООП»