CS 123 - Programming Assignment 9

In this assignment you will write a class called Car.java that can "simulate" some of the behavior of a real car. This assignment makes use of Chapter 11 from the textbook. Download this zip file and un-zip it. In the zip file there is a copy of this web page, which you can read in your browser, and a file that you need for this assignment. This assignment is due Friday, December 11 (the last day of classes before final exam week).

Implement a class Car. A Car object should have three instance variables, one for fuel efficiency (representing miles per gallon), one for fuel level (representing gallons), and a variable that acts as an odometer (representing miles). The fuel efficiency of a car should be specified as a parameter in the Car constructor and the constructor should set the fuel level and the odometer to zero. There should be getFuelEfficiency(), getOdometer(), and getFuelLevel() methods. There should also be a method addFuel(double gallons) which adds a specified amount to the fuel level and returns the new fuel level, and there should be a method drive(double miles) which simulates driving the car a specified distance. The drive() method should adjust the fuel level by the amount of fuel used, adjust the odometer by the amount of miles driven, and it should return the number of miles driven, which may be less than the number of miles specified if there is not enough fuel. (Notice that there are no setFuelEfficiency(), setOdometer(), and setFuelLevel() methods. The fuel efficiency field is immutable; once it is set by the constructor, it cannot be changed. The odometer should only be changeable by driving the car, as in a real car. The fuel level should only be changed by driving the car or by adding fuel.)

Write a client program TestDrive.java that tests your Car class. The test program should prompt a user for a fuel efficiency, construct a Car object, prompt the user for an amount of fuel, put the fuel in the Car object, prompt the user for a distance to travel, drive the appropriate distance, and then report back to the user the distance actually travelled, the current fuel level, and the current odometer reading. Your test program should let the user drive the car until the user enters a distance of zero. Then your test program should prompt the user for an amount of fuel to add to the car and then let the user drive the car some more. If the user enters zero for the amount of fuel to add, then your test program should prompt the user for a new fuel efficiency and construct a new Car object and let the user drive the new car. Your test program should terminate if the user enters zero for the fuel efficiency.

As part of grading your assignment, I will use the program PreTestDrive.java (from the zip file), to test if your Car class implements the proper public interface as specified in the paragraphs above. You should use this program to test your Car class before you write your own TestDrive.java program.

Turn in a zip file called CS123Hw9Surname.zip containing your Car.java and TestDrive.java files plus the original PreTestDrive.java file. This assignment is due Friday, December 11.


Return to the main homework page.
Return to the CS 123 home page.


compliments and criticisms