From 1b07a3b6ab173bcc1a891eff1cb7b4c8ada80441 Mon Sep 17 00:00:00 2001 From: Peet Date: Wed, 4 Jun 2025 18:27:10 +0200 Subject: [PATCH] uebung07 --- uebung07/src/oop/ch05/mensa/CashPoint.java | 6 ++ uebung07/src/quantities/generic/Length.java | 22 ++++++++ .../src/quantities/generic/LengthUnit.java | 19 +++++++ uebung07/src/quantities/generic/Quantity.java | 55 +++++++++++++++++++ uebung07/src/quantities/generic/Time.java | 11 ++++ uebung07/src/quantities/generic/TimeUnit.java | 17 ++++++ uebung07/src/quantities/generic/Unit.java | 18 ++++++ uebung07/src/quantities/generic/Velocity.java | 15 +++++ .../src/quantities/generic/VelocityUnit.java | 16 ++++++ uebung07/src/quantities/plain/Time.java | 34 ++++++++++++ uebung07/src/quantities/plain/TimeUnit.java | 13 +++++ uebung07/src/quantities/plain/Velocity.java | 38 +++++++++++++ .../src/quantities/plain/VelocityUnit.java | 13 +++++ 13 files changed, 277 insertions(+) create mode 100644 uebung07/src/quantities/generic/Length.java create mode 100644 uebung07/src/quantities/generic/LengthUnit.java create mode 100644 uebung07/src/quantities/generic/Quantity.java create mode 100644 uebung07/src/quantities/generic/Time.java create mode 100644 uebung07/src/quantities/generic/TimeUnit.java create mode 100644 uebung07/src/quantities/generic/Unit.java create mode 100644 uebung07/src/quantities/generic/Velocity.java create mode 100644 uebung07/src/quantities/generic/VelocityUnit.java create mode 100644 uebung07/src/quantities/plain/Time.java create mode 100644 uebung07/src/quantities/plain/TimeUnit.java create mode 100644 uebung07/src/quantities/plain/Velocity.java create mode 100644 uebung07/src/quantities/plain/VelocityUnit.java diff --git a/uebung07/src/oop/ch05/mensa/CashPoint.java b/uebung07/src/oop/ch05/mensa/CashPoint.java index 832899b..afa1ec2 100644 --- a/uebung07/src/oop/ch05/mensa/CashPoint.java +++ b/uebung07/src/oop/ch05/mensa/CashPoint.java @@ -58,6 +58,12 @@ public class CashPoint implements SecurityClient { void charge(AccountCard accountCard) { final int price = getPrice(accountCard.color); + // zahlen methode + /* + + zahlen bein acmgmt + + */ System.out.println("Charging " + price + " cents on account " + accountCard.getAccount()); cents += price; } diff --git a/uebung07/src/quantities/generic/Length.java b/uebung07/src/quantities/generic/Length.java new file mode 100644 index 0000000..ea5101b --- /dev/null +++ b/uebung07/src/quantities/generic/Length.java @@ -0,0 +1,22 @@ +package quantities.generic; + +import static quantities.generic.LengthUnit.METER; +import static quantities.generic.TimeUnit.SECOND; +import static quantities.generic.VelocityUnit.METER_PER_SECOND; + +public class Length extends Quantity{ + + public Length(double value, Unit unit) { + super(value, unit); + } + + public Velocity div(Time t) { + return METER_PER_SECOND.quantity(this.value(METER) / t.value(SECOND)); + } + + public Time div(Velocity v) { + return SECOND.quantity(this.value(METER) / v.value(METER_PER_SECOND)); + } + + +} diff --git a/uebung07/src/quantities/generic/LengthUnit.java b/uebung07/src/quantities/generic/LengthUnit.java new file mode 100644 index 0000000..015f89e --- /dev/null +++ b/uebung07/src/quantities/generic/LengthUnit.java @@ -0,0 +1,19 @@ +package quantities.generic; + +public class LengthUnit extends Unit { + public LengthUnit(String name, double baseFactor) { + super(name, baseFactor); + } + + public static final LengthUnit METER = new LengthUnit("m", 1); + public static final LengthUnit MILLIMETER = new LengthUnit("mm", 0.001); + public static final LengthUnit KILOMETER = new LengthUnit("km", 1000); + public static final LengthUnit MILE = new LengthUnit("mi", 1609.344); + public static final LengthUnit LIGHTYEAR = new LengthUnit("ly", 9460730472580800.0); + public static final LengthUnit PARSEC = new LengthUnit("pc", 3.0856776e16); + + @Override + public Length quantity(double value) { + return new Length(value, this); + } +} diff --git a/uebung07/src/quantities/generic/Quantity.java b/uebung07/src/quantities/generic/Quantity.java new file mode 100644 index 0000000..2757bf0 --- /dev/null +++ b/uebung07/src/quantities/generic/Quantity.java @@ -0,0 +1,55 @@ +package quantities.generic; + +public abstract class Quantity> { + public final double value; + public final Unit unit; + + protected Quantity(double value, Unit unit) { + this.value = value; + this.unit = unit; + } + + public double getBaseValue() { + return value * unit.baseFactor; + } + + public double value(Unit unit) { + return getBaseValue() / unit.baseFactor; + } + + //neue Methoden + + public Q plus(Q other) { + return unit.quantity(value + other.getBaseValue() / unit.baseFactor); + } + + public Q minus(Q other) { + return unit.quantity(value - other.getBaseValue() / unit.baseFactor); + } + + public Q mult(double f) { + return unit.quantity(value * f); + } + + public Q div(double f) { + return unit.quantity(value / f); + } + + public Q to(Unit unit) { + return unit.quantity(getBaseValue() / unit.baseFactor); + } + + public double div(Q other) { + return getBaseValue() / other.getBaseValue(); + } + + + @Override + public String toString() { + return value + " " + unit; + } + + public String format(String fmt, Unit unit) { + return String.format(fmt, value(unit), unit); + } +} diff --git a/uebung07/src/quantities/generic/Time.java b/uebung07/src/quantities/generic/Time.java new file mode 100644 index 0000000..e8618ea --- /dev/null +++ b/uebung07/src/quantities/generic/Time.java @@ -0,0 +1,11 @@ +package quantities.generic; + +public class Time extends Quantity