Labor – 1CHIF PLF 2, 2024-01-09

1. Allgemeines

Java-Dokumentation findet sich unter C:\Javadoc\JavaDoc11\jdk-11.0.2_doc-all\docs\index.html o.ä. .

Fehlermeldungen sollten eine gute Basis für Wahrnehmung, Lokalisierung und Verstehen liefern: Fehler-Markierung ("ERR") am Beginn, betroffene Methode, übertretene Regel, auslösende(r) Wert(e), entstehende Folge – wie z.B.:
"ERR in setLeerGewicht(..) - ungültiger Param. (1 bis 50): 200 -> bleibt -1"
(200 ist der ungültige Wert-Kandidat, -1 der alte, im Attribut gespeicherte Wert) oder ähnlich - situationsabhängig.
Generell soll bei allen nicht-regulären Zuständen eine aussagekräftige Fehlermeldung ausgegeben werden!

2. Klassen 'Box', 'Lieferwagen'

BoxMAX_GEWICHT: int = 1000beschriftung: String = nullleerGewicht: int = -1;ladung: int = 0;defekt: boolean = false;Konstruktor()Konstruktor(beschriftung: String,leerGewicht: int, defekt: boolean) setBeschriftung(beschriftung: String)setLeerGewicht(leerGewicht: int)setDefekt(defekt: boolean) einfuellen(gewicht: int): booleanentnehmen(gewicht: int): boolean calcBoxGewicht(): inttoString(): StringprintInfo()Konstante (public static final)3...20 Zeichen, Std.: "-undef-"nur 1 x gültig setzbar auf1...50 kg (prüfe alten Wert!)0...MAX_GEWICHTwichtig bei boxEinladen(..),beide calc...()-MethodenBEIDE Konstr.: 3 Setternutzen, Rest direkt;Std-Konstr.: leerGewicht=20beschriftung="-undef-"alle 3 Setter: siehe Attributsiehe Beschreibung untensiehe Beschreibung untenliefert leerGewicht + ladungsiehe Beschreibung untenAusgeben v. toString()auf BildschirmLieferwagenEIGENGEWICHT: int=2000MAX_GESAMTGEWICHT: int=3500box1: Box = nullbox2: Box = nullbox3: Box = nullKonstruktor()boxEinladen(box: Box, stellplatz: int)boxAusladen(stellplatz: int): BoxcalcAnzahlBoxen(auchDefekt: boolean): intcalcGesamtLadung(auchDefekt: boolean): intistUeberladen(): booleanprintInfo()Konstante (public static final)Konstante (public static final)Zulässiges Gesamtgewichtlt. Typenscheinnull, wenn Platz leerGleiches für box2, box3erzeugt leeren Lieferwagenbox nicht: null, schon in Wagen,stellplatz 1...3 (Platz leer?)Überladung "erlaubt"Fehlermeldung bei Problem!stellpatz 1...3, nicht leer?liefert ausgeladene Box od. nullliefert Anzahl der vorhandenenoder nutzbaren Boxen (wenn<auchDefekt> false) zurück,analog, nur statt Anzahlaufsummierte Boxengewichtetrue wenn MAX_GESAMTGEW.< EIGENGEWICHT+GesamtLadgsiehe Beschreibung unten

Zusätzliche Methoden-Infos:

  • Box - einfuellen(..) …​ erlaubt: >0, maximal so viel, wie noch Platz ist (Differenz MAX_GEWICHT-leerGewicht zu aktueller ladung), nur wenn nicht defekt. Bei Fehler wird ladung nicht geändert, Rückgabewert false.

  • Box - entnehmen(..) …​ erlaubt: >0, <=ladung. Bei Fehler wird ladung nicht geändert, Rückgabewert false.

  • Box - toString() …​ Beispiel-Rückgabewert (einzeilig!):
    Beschriftung: -undef-, Leergewicht=20kg, Ladung=500kg, Gesamtgeicht=520kg, Zustand ok (wenn defekt true: Zustand defekt)

  • Box - printInfo() …​ Rückgabwert von toString() auf Bildschirm ausgeben

  • Lieferwagen - printInfo() …​ nutzt boxN.toString(), wenn Platz N besetzt, sonst "Platz leer" und liefert z.B.

 Lieferwagen aktuelles Gewicht / zulässiges Gesamtgewicht: 2060kg / 3500kg
 Lieferwagen ist überladen: nein
 Box 1:
   Beschriftung: -undef-, Leergewicht=20kg, Ladung=500kg, Gesamtgeicht=520kg, Zustand ok
 Box 2:
   Platz leer
 Box 3:
   Platz leer

3. 'Testklasse'

Erstelle eine minimalistische Testklasse Testklasse, die folgendes tut:

  1. Lieferwagen-Instanz erstellen

  2. zwei Boxen an von dir gewählten Stellplätzen in den Lieferwagen einladen.

  3. Lieferwagen-printInfo()-Methode aufrufen

  4. versuchen, eine bereits vorhandene Box nochmals einzuladen

  5. Meldung, ob gelungen/fehlgeschlagen

  6. Lieferwagen-printInfo()-Methode aufrufen

  7. eine Box ausladen

  8. nochmals Lieferwagen-printInfo()-Methode aufrufen

4. Bonus-Aufgabe Klasse 'Schleife1'

Klasse Schleife1 enthält drei Methoden:

  • int summeTeilbarDurch(int mod, int von, int bis) …​ summiert mit einer while-Scheife alle Zahlen zwischen von und bis (beide inklusive), die durch mod ohne Rest teilbar sind (Erhöhung von i nicht vergessen, um Endlosschleife zu vermeiden!)

  • void ausgabe(int mod, int von, int bis) …​ Gibt die Parameterwerte und das Rechenergebnis aus in der Form:
    Summe aller durch <mod> teilbaren Zahlen zwischen <von> und <bis>: <ergebnis>

  • void testen() …​ ruft ausgabe(…​) 3 mal auf mit Parametern: (1, 1, 1); (2, 3, 6); (3, 5, 15)
    Die Ausgabe sollte sein:
    Summe aller durch 1 teilbaren Zahlen zwischen 1 und 1: 1
    Summe aller durch 2 teilbaren Zahlen zwischen 3 und 6: 10
    Summe aller durch 3 teilbaren Zahlen zwischen 5 und 15: 42