====== Lab 4 ====== ~~NOTOC~~ ** CS203 ** \\ ** Fall 2016 ** \\ ===== Goals ===== * Design a software system for managing a car rental agency. * Determine the necessary classes from the problem description. * Use CRC cards to determine the responsibilities and collaborations. * Create a class diagram showing relationships and cardinalities. * Create sequence diagrams for a set of use cases. ===== Activities ===== * This project is meant to be done in pairs. * Please put both names on each paper submission. * All work for this project is to be submitted in hard copy. * Given that most of the work is in diagram form, hand written work may be the easiest to produce. ===== Problem Description ===== Consider a software system for a car rental agency. Customers should be able to reserve a car, pick it up, return it, and pay for it. The rental agency keeps information about the customers (name, address, etc.), the cars (type, price, availability, etc.), and the rentals ( customer ID, car ID, date-out, date-returned, amount payed, or payment due, etc.). Note: This is a description supplied by the stakeholder and may not be complete. Additional assumptions may be required. * Create a class diagram showing the classes, their attributes and methods, and the relationships between the classes, including the cardinalities (one to many, etc.). * If the class diagram requires too much detail, show the attributes and methods for the classes on a separate page. * You may want to use CRC cards to start the process. * Remember that a good design distributes the responsibilities among the various classes. One "uber" class that does most of the work is generally not a good idea. * Do not clutter your designs with extra capabilities (we call that "blue sky thinking"). Just design the system to cover the basic use cases. A good design will allow us to evolve and extend the program later. * Create sequence diagrams for the following use cases: - A customer chooses a car and reserves it. - A customer picks up a car that has been reserved and supplies a credit card number. - A customer returns a car and pays for it. * Have your sequence diagrams show the return arrows as well as the forward arrows (method invocations). ===== NOTES ===== - It is normal for your classes and collaborations to change as you progress. The sequence diagrams may reveal that you should alter your class diagram. This is an iterative process. - If this project takes more than one session, we will allocate additional time. Good work is more important than quick work. - Good collaboration between developers is generally noisy collaboration! Be willing to make your case!