---
title: "Rental car system candidate objects"
subject: "Object Oriented Analysis and Design"
chapter: 2
key: "semester_6/object_oriented_analysis_and_design:rental-car-system-candidate-objects"
source: https://www.bctengineer.com/q/semester_6/object_oriented_analysis_and_design/rental-car-system-candidate-objects
site: BCT Engineering
---

# Rental car system candidate objects

Object Oriented Analysis and Design · Chapter 2: Object Oriented Analysis

- Asked in: 2073 Bhadra, 8 marks
- Answer checked by Claude Sonnet 5.5 on 2026-10-14
- Page: https://www.bctengineer.com/q/semester_6/object_oriented_analysis_and_design/rental-car-system-candidate-objects
- Whole chapter: https://www.bctengineer.com/md/semester_6/object_oriented_analysis_and_design/chapter-2

## Question

Consider a Rental Car System (RCS). A rental agency has multiple offices/locations where customer can test drive and select a car for rental. The period of rental, terms and conditions for rental is flexible. RCS has to take responsibility for loaning cars, keeping track of availability of cars, return of cars, billing, maintenance activities for cars and keeping track of driver's availability and assignment in case of chauffeur driver car rentals. Identify the candidate objects with relationships of above case.

## Short answer

Candidate objects: RentalAgency, Office, Customer, Car, Rental, Bill, Payment, MaintenanceRecord, Driver, DriverAssignment, TestDrive. Relationships: Agency has Offices, each Office owns Cars; Customer makes Rentals for a Car, each Rental generates a Bill with Payments; a Rental may assign at most one Driver; Cars have MaintenanceRecords.

## Answer

**Method:** nouns and noun phrases in the description give the candidate objects. Irrelevant, vague or duplicate ones are removed, and then the relationships are identified.

#### Candidate objects (classes)
`RentalAgency`, `Office` (location), `Customer`, `Car`, `Rental` (rental agreement: period, terms and conditions), `Reservation`, `Bill` (Invoice), `Payment`, `MaintenanceRecord` (maintenance activity), `Driver` (chauffeur), `DriverAssignment`, `TestDrive`.

Rejected as classes: "responsibility", "system" (RCS itself), "period" and "terms" (attributes of `Rental`), "availability" (attribute or status of `Car` and `Driver`).

#### Attributes (examples)
| Class | Attributes |
|---|---|
| Office | officeId, address, phone |
| Car | regNo, make, model, status (available/rented/maintenance), dailyRate |
| Customer | customerId, name, licenceNo, address |
| Rental | rentalId, startDate, endDate, terms, status |
| Bill | billId, amount, date |
| Driver | driverId, name, licenceNo, available |
| MaintenanceRecord | date, type, cost |

#### Relationships
- `RentalAgency` **1 - 1..*** `Office` (composition: the agency has multiple offices).
- `Office` **1 - *** `Car` (a car belongs to an office).
- `Customer` **1 - *** `Rental`; `Rental` *** - 1** `Car`; `Rental` **1 - 1** `Bill`; `Bill` **1 - *** `Payment`.
- `Rental` *** - 0..1** `Driver`, through `DriverAssignment`: a rental has at most one chauffeur (only for chauffeur-driven rentals), and a driver can be assigned to many rentals over time.
- `Car` **1 - *** `MaintenanceRecord`.
- `Customer` **1 - *** `TestDrive`, each for one `Car`.

```text
+--------------+ 1  1..* +--------+ 1   * +--------+
| RentalAgency |<#>------| Office |-------|  Car   |
+--------------+         +--------+       +--------+
                                            | 1   | 1
                                            | *   | *
 +----------+ 1   * +--------+ *   1        |  +-------------+
 | Customer |-------| Rental |--------------+  | Maintenance |
 +----------+       +--------+                 | Record      |
                      | 1   | *                +-------------+
                      | 1   | 0..1
                 +------+  +----------------+
                 | Bill |  | Driver         |
                 +------+  | (chauffeur)    |
                    | 1    +----------------+
                    | *
                +---------+
                | Payment |
                +---------+
```

## Check yourself

The answer's key points as multiple-choice questions, with the correct option and why.

1. How are candidate objects identified from the RCS description?
   A. Take nouns and noun phrases, remove irrelevant, vague or duplicate ones, then find relationships
   B. Take all verbs as classes and nouns as methods
   C. List every screen the system will show
   D. Take only the physical objects such as cars
   Answer: A. The noun-phrase method gives candidates, which are filtered and then related. (Key point: Finding candidate objects)

2. Why are 'period' and 'terms' not made separate classes?
   A. They are verbs
   B. They are attributes of Rental
   C. They duplicate Customer
   D. They belong to the Office class only
   Answer: B. Period and terms and conditions describe a Rental, so they are attributes of Rental. (Key point: Rejected candidates)

3. How should 'availability' of cars and drivers be modelled?
   A. As a class Availability
   B. As a relationship between Office and Car
   C. As an attribute or status of Car and Driver
   D. As a method of Bill
   Answer: C. Availability is a state of Car and Driver, so it is an attribute/status, not a class. (Key point: Car availability)

4. How is the driver related to a rental?
   A. Every Rental has exactly one Driver
   B. Customer is a subclass of Driver
   C. Rental 0..1 to 1 Driver, only for chauffeur-driven rentals, through DriverAssignment
   D. Driver is composed inside Car
   Answer: C. A driver is assigned only for chauffeur rentals, so the multiplicity on the Rental side is optional (0..1). (Key point: Chauffeur relationship)

## Related in Object Oriented Analysis and Design

- [Video rental shop class diagram](https://www.bctengineer.com/question.md?key=semester_6%2Fobject_oriented_analysis_and_design%3Avideo-rental-class-diagram) — Object Oriented Analysis and Design, chapter 2
- [KUKL customer system design and code](https://www.bctengineer.com/question.md?key=semester_6%2Fobject_oriented_analysis_and_design%3Akukl-use-case-class-diagram-code) — Object Oriented Analysis and Design, chapter 4
- [Food ordering system sequence diagram](https://www.bctengineer.com/question.md?key=semester_6%2Fobject_oriented_analysis_and_design%3Afood-ordering-system-sequence-diagram) — Object Oriented Analysis and Design, chapter 2

## Related in other subjects

- [Prove mean annual flood has 2.33-year return period](https://www.bctengineer.com/question.md?key=semester_5%2Fengineering_hydrology%3Agumbel-mean-flood-2-33yr) — Engineering Hydrology, chapter 6
- [Test: mean weight of ten objects is 65 g](https://www.bctengineer.com/question.md?key=semester_5%2Fprobability_and_statistics%3Aweights-ten-objects-mean-65) — Probability and Statistics, chapter 6
- [Flexible pavement design with 8 CBR values](https://www.bctengineer.com/question.md?key=semester_7%2Ftransportation_engineering_ii%3Aflexible-design-eight-cbr-340-cvd) — Transportation Engineering II, chapter 2
- [Flexible pavement life with 140 cvpd traffic](https://www.bctengineer.com/question.md?key=semester_7%2Ftransportation_engineering_ii%3Aflexible-design-life-years-140-cvpd) — Transportation Engineering II, chapter 2
