about summary refs log tree commit diff
path: root/usth/ICT2.2/labwork/3/Java/Automobile.java
diff options
context:
space:
mode:
Diffstat (limited to 'usth/ICT2.2/labwork/3/Java/Automobile.java')
-rw-r--r--usth/ICT2.2/labwork/3/Java/Automobile.java68
1 files changed, 68 insertions, 0 deletions
diff --git a/usth/ICT2.2/labwork/3/Java/Automobile.java b/usth/ICT2.2/labwork/3/Java/Automobile.java
new file mode 100644
index 0000000..14a82ef
--- /dev/null
+++ b/usth/ICT2.2/labwork/3/Java/Automobile.java
@@ -0,0 +1,68 @@
+import java.util.regex.Pattern;
+
+class Automobile
+{
+  private static final Pattern licensePattern = Pattern.compile("[0-9A-Z]+");
+  private double fuel;
+  private double speed;
+  private String license;
+
+  public double getFuel()
+  {
+    return fuel;
+  }
+
+  public double getSpeed()
+  {
+    return speed;
+  }
+
+  public String getLicense()
+  {
+    return license;
+  }
+
+  public void setFuel(double fuel)
+  {
+    if (fuel < 0)
+      throw new IllegalArgumentException(
+        "fuel must be nonnegative, instead got " + fuel);
+    this.fuel = fuel;
+  }
+
+  public void setSpeed(double speed)
+  {
+    this.speed = Math.max(0, speed);
+  }
+
+  public void setLicense(String license)
+  {
+    if (!licensePattern.matcher(license).matches())
+      throw new IllegalArgumentException("invalid license: " + license);
+    this.license = license;
+  }
+
+  public Automobile(double f, double s, String l)
+  {
+    setFuel(f);
+    setSpeed(s);
+    setLicense(l);
+  }
+
+  public void accelerate(double v)
+  {
+    if (v < 0)
+      throw new IllegalArgumentException(
+        "acceleration must be nonnegative, instead got " + v);
+    if (fuel > 0)
+      setSpeed(speed + v);
+  }
+
+  public void decelerate(double v)
+  {
+    if (v < 0)
+      throw new IllegalArgumentException(
+        "deceleration must be nonnegative, instead got " + v);
+    setSpeed(speed - v);
+  }
+}