# Unit 8 – Advanced Practice: Reservable, Accommodation, HotelRoom, 
VacationCabin, RestaurantTable

The basic practice covered a hotel room and a restaurant table — two 
very different things that can both be reserved. This practice adds 
vacation cabins and explores what hotel rooms and cabins have in common 
that restaurant tables do not: they are places where guests stay 
overnight.

## Instructions

### Reservable

1. All three methods are stubbed. For `capacity()` — can the interface 
   know the answer on its own, or must each implementing class decide?
2. Implement `isAvailableFor()`.
3. Implement `reservationSummary()`.

### HotelRoom

1. A hotel room is a type of accommodation. Look at the `Accommodation` 
   class — what does it need from its subclasses?
2. `HotelRoom` must also be `Reservable`. What data does it need to 
   report its capacity?
3. Give `HotelRoom` its own `reservationSummary()` that includes the 
   room number, e.g.: `"Room 204 — fits up to 2 guest(s)"`

### VacationCabin

1. A vacation cabin is also a type of accommodation. Implement it 
   similarly to `HotelRoom`.
2. Do not override `reservationSummary()` — the default is sufficient.

### RestaurantTable

1. A restaurant table can be reserved, but guests don't stay overnight — 
   how does this affect what it extends or implements?
2. Do not override `reservationSummary()` — the default is sufficient.

### Functions

1. Implement `summarise()`.
2. Implement `printAccommodationInfo()`.

### Testing

1. Create `HotelRoom(204, 89.0, 2)` and 
   `VacationCabin("Lakeside Cabin", 120.0, 6)`.
2. Call `pricingInfo()` on each — should show the name and nightly price.
3. Call `reservationSummary()` on each — the hotel room should include 
   the room number; the cabin should use the default format.
4. Create `RestaurantTable(7, 4)`.
5. Notice that `pricingInfo()` does not appear in the method menu for
   the table — `RestaurantTable` does not extend `Accommodation`.
6. Call `summarise()` with the hotel room, then the cabin, then the 
   table — all three should work.
7. Call `printAccommodationInfo()` with the hotel room — should print 
   pricing. Call it with the restaurant table — should print 
   `"Not accommodation."`
