From 67393f42f41ab92219deb549f711121c4dab845b Mon Sep 17 00:00:00 2001 From: Nguyễn Gia Phong Date: Sun, 15 Dec 2019 10:34:58 +0700 Subject: [usth/ICT2.2] Object Oriented Programming --- usth/ICT2.2/labwork/3/Java/Automobile.java | 68 ++++++++++++++++++++++++ usth/ICT2.2/labwork/3/Java/Button.java | 50 +++++++++++++++++ usth/ICT2.2/labwork/3/Java/ButtonTest.java | 12 +++++ usth/ICT2.2/labwork/3/Java/Cow.java | 36 +++++++++++++ usth/ICT2.2/labwork/3/Java/CowTest.java | 9 ++++ usth/ICT2.2/labwork/3/Java/NameCard.java | 67 +++++++++++++++++++++++ usth/ICT2.2/labwork/3/Java/NameCardTest.java | 9 ++++ usth/ICT2.2/labwork/3/Java/README.md | 10 ++++ usth/ICT2.2/labwork/3/Java/ShoppingCart.java | 27 ++++++++++ usth/ICT2.2/labwork/3/Java/ShoppingCartTest.java | 16 ++++++ usth/ICT2.2/labwork/3/Java/Vector.java | 39 ++++++++++++++ usth/ICT2.2/labwork/3/Java/VectorTest.java | 10 ++++ 12 files changed, 353 insertions(+) create mode 100644 usth/ICT2.2/labwork/3/Java/Automobile.java create mode 100644 usth/ICT2.2/labwork/3/Java/Button.java create mode 100644 usth/ICT2.2/labwork/3/Java/ButtonTest.java create mode 100644 usth/ICT2.2/labwork/3/Java/Cow.java create mode 100644 usth/ICT2.2/labwork/3/Java/CowTest.java create mode 100644 usth/ICT2.2/labwork/3/Java/NameCard.java create mode 100644 usth/ICT2.2/labwork/3/Java/NameCardTest.java create mode 100644 usth/ICT2.2/labwork/3/Java/README.md create mode 100644 usth/ICT2.2/labwork/3/Java/ShoppingCart.java create mode 100644 usth/ICT2.2/labwork/3/Java/ShoppingCartTest.java create mode 100644 usth/ICT2.2/labwork/3/Java/Vector.java create mode 100644 usth/ICT2.2/labwork/3/Java/VectorTest.java (limited to 'usth/ICT2.2/labwork/3/Java') 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); + } +} diff --git a/usth/ICT2.2/labwork/3/Java/Button.java b/usth/ICT2.2/labwork/3/Java/Button.java new file mode 100644 index 0000000..8a26b3f --- /dev/null +++ b/usth/ICT2.2/labwork/3/Java/Button.java @@ -0,0 +1,50 @@ +public class Button +{ + private String label; + private String color; + private boolean state; + + public Button(String label, String color) + { + this.label = label; + this.color = color; + this.state = false; + } + + public String toString() + { + return String.format("