5. Система бронирования билетов (кино/театр/концерт)
Цель: Проектирование системы с ограниченными ресурсами (места), управление состоянием объектов, реализация бизнес-правил. Требования:
- Класс
Event(Событие):- Атрибуты: event_id, name, date, time, venue (зал).
- Связь с объектом SeatMap.
- Класс
Seat(Место):- Атрибуты: row, number, seat_type (standard/vip), price, is_booked.
- Класс
SeatMap(План зала):- Атрибут: seats (двумерный список/словарь объектов Seat).
- Методы: display_map() (отображает схему зала с символами: [ ] свободно, [X] занято), find_available_seats(seat_type).
- Класс
Booking(Бронь):- Атрибуты: booking_id, customer (объект Customer), event, booked_seats (список объектов Seat), total_price, booking_date.
- Метод: cancel() (освобождает места).
- Класс
Customer(Покупатель):- Атрибуты: customer_id, name, email, bookings (история).
- Класс
BookingSystem(Основная система):- Координирует все объекты. Методы: create_event(), show_events(), make_booking(customer_id, event_id, list_of_seats), cancel_booking(booking_id).
- Интерфейс: Консольный, с визуализацией схемы зала. Сохранение каталога событий и броней в файл. Критерии оценки: Невозможность двойного бронирования одного места, удобство выбора мест на схеме, полнота информации в брони.