1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- /**
- * This class models the gears. It is restricted to derailleur gears.
- *
- * @author Markus Iser, Martin Thoma
- * @version 1.0
- */
- public class Gears {
- public static final int MIN_FRONT_SPROCKETS = 1;
- public static final int MAX_FRONT_SPROCKETS = 3;
- public static final int MIN_REAR_SPROCKETS = 1;
- public static final int MAX_REAR_SPROCKETS = 10;
- private int frontSprockets;
- private int rearSprockets;
- /** Price in cents. */
- private final int price;
- Gears(int frontSprockets, int rearSprockets, int price) {
- setSprockets(frontSprockets, rearSprockets);
- this.price = price;
- }
- /**
- * Sets the sprocket numbers.
- * Uses default-values if consisteny criteria are not met.
- * @param sprockets
- * @param rearSprockets
- */
- void setSprockets(int sprockets, int rearSprockets) {
- this.frontSprockets = sprockets;
- this.rearSprockets = rearSprockets;
- if (!(this.frontSprockets >= 1)) { // A.1
- this.frontSprockets = 1;
- } else if (!(this.frontSprockets < 4)) { // A.2
- this.frontSprockets = 3;
- }
- // B.1, B.2
- if (this.rearSprockets < 1 || this.rearSprockets > 9) {
- this.rearSprockets = this.frontSprockets * 3;
- }
- if (this.rearSprockets < this.frontSprockets) { // C.1
- this.rearSprockets = this.frontSprockets;
- } else if (this.rearSprockets > 3 * this.frontSprockets) { // C.2
- this.rearSprockets = 3 * this.frontSprockets;
- }
- }
- /**
- * @return the number of gears as the number of sprocket-combinations
- */
- int getNumberOfGears() {
- return frontSprockets * rearSprockets;
- }
- /**
- * @return the price of the gears
- */
- int getPrice() {
- return price;
- }
- }
|