Phase 1: Requirements & Use Cases
Interviewer: "Design a Hotel Management System. Walk me through your approach."
Candidate: "Sure. Let me restate the problem before diving in. A Hotel Management System is software that manages a hotel's core operations: room inventory, guest reservations, check-in and check-out, room service, and invoicing. The primary stakeholders are guests, front-desk staff, and hotel administrators. I'm designing the class model here — not a distributed booking platform or microservices architecture. Does that match what you have in mind?"
Interviewer: "Yes. What actors are involved?"
Candidate: "I see four actors:
- Guest — the person making reservations and staying at the hotel
- Front Desk Staff — manages check-in, check-out, room assignment, and handles room service requests
- Admin — configures room inventory, pricing, and hotel policies
- Housekeeping Staff — marks rooms as clean or under maintenance
The core use cases I want to cover are:
- Guest searches for available rooms by type and date range
- Guest (or staff) creates a reservation
- Guest checks in — reservation becomes active, room is assigned
- Guest requests room service or amenities during stay
- Guest checks out — room is freed, invoice is generated and finalized
- Staff marks a room as under maintenance or as cleaned
- Admin configures room types and pricing strategies"
Interviewer: "What about online payment integration or loyalty points programs?"
Candidate: "I'd scope both out of V1. Online payment involves an external payment gateway — that's a systems integration concern. Loyalty programs require a separate account management model.…
In the full tutorial
- Phase 2: Object Modeling
- Phase 3: Class Design & Relationships
- Phase 4: Design Patterns Application
- Phase 5: Key Implementation
- Phase 6: Extensibility & Trade-offs