mirror of
https://github.com/MartinThoma/LaTeX-examples.git
synced 2025-04-26 06:48:04 +02:00
67 lines
1.8 KiB
Java
67 lines
1.8 KiB
Java
/**
|
|
* 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;
|
|
}
|
|
}
|
|
|