Classes and UML Lab
Classes in Java and their representation in UML.
Categories:
2 minute read
Introduction
The goal for this activity is to implement a Car class so that it conforms to the UML below:
classDiagram
class Car
Car: -String make
Car: -int year
Car: -double speed
Car: +Car(m String, y int)
Car: +toString() String
Car: +getMake() String
Car: +getSpeed() double
Car: +getYear() int
Car: +accelerate() String
Car: +brake() void
ℹ️ Note
UML diagrams often omit the return type onvoid
methods. While they’re present above, we’ll likely omit them in the future.Part 1: Driver, Constructor and toString
- Create two Java class files: CarTester.java and Car.java. Only CarTester.java should include a main method.
- Add the three instance variables from the UML diagram to
your
Car
class. - Code the constructor for your
Car
class. This should initialize themake
andyear
fields using the arguments to the constructor. Thespeed
should be initialized to0
. - Code the
toString
method. This method should take no parameters and should return aString
that looks like this (except with the angle-bracketed parts replaced with this car's values):"A <year> <make> that is going <speed> mph"
- Test your partially completed
Car
class by adding code to themain
in CarTester.java that creates and prints two car objects. The contents ofmain
should look something like the following.Car car1; Car car2; car1 = new Car("Ford", 1997); car2 = new Car("Toyota", 2014); System.out.println(car1.toString()); System.out.println(car2.toString());
Part 2: Remaining Methods
Complete each of the remaining methods of the Car
class.
Test each method by adding appropriate calls to main
.
- The three "getter" methods should each return the value of the appropriate instance variable.
- The
accelerate
method should increase the currentspeed
of the car by 5.0 mph. It should also return aString
that describes the change to thespeed
, e.g."15.0 + 5.0 = 20.0"
. It should NOT be possible to increase the speed beyond 150.0 mph. If a call toaccelerate
would push the speed beyond 150.0, the speed should be set to 150.0. (reaching this limit should be reflected in the returned String as well, i.e."150.0 + 0.0 = 150.0"
)(How will you test that this is working correctly? How many times do you need to call
accelerate
before the upper speed limit is reached? Might a loop be helpful here?) - The
brake
method should decrease the current speed by 5.0 mph. It should not be possible for the speed to drop below 0 mph.
Submit Car.java only to Gradescope per your section's deadline. Gradescope will run Checkstyle tests on your submission.
Acknowledgements
Thank you to Dr. Sprague for this activity.
Last modified May 1, 2023: student-sourced updates (1f18b77)