Auto-Layout angewandt

This commit is contained in:
ngb 2020-08-19 12:08:59 +02:00
parent 50498ad534
commit 81edcd58fe
2 changed files with 91 additions and 96 deletions

View File

@ -10,103 +10,101 @@
*/ */
public class Besitzer { public class Besitzer {
// Objektvariablen deklarieren // Objektvariablen deklarieren
private String name; private String name;
private double geld; private double geld;
private boolean fuehrerschein; private boolean fuehrerschein;
private Motorroller meinRoller; private Motorroller meinRoller;
/** /**
* Konstruktor für Objekte der Klasse Besitzer * Konstruktor für Objekte der Klasse Besitzer
*/ */
public Besitzer(String pName, double pGeld, boolean pFuehrerschein, Motorroller pMeinRoller) { public Besitzer(String pName, double pGeld, boolean pFuehrerschein, Motorroller pMeinRoller) {
// Objektvariablen initialisieren // Objektvariablen initialisieren
name = pName; name = pName;
geld = pGeld; geld = pGeld;
fuehrerschein = pFuehrerschein; fuehrerschein = pFuehrerschein;
meinRoller = pMeinRoller; meinRoller = pMeinRoller;
} }
public String getName() { public String getName() {
return name; return name;
} }
public double getGeld() { public double getGeld() {
return geld; return geld;
} }
public boolean hatFuehrerschein() { public boolean hatFuehrerschein() {
return fuehrerschein; return fuehrerschein;
} }
/** /**
* Gibt die Referenz auf das Objekt vom Typ "Motorroller" zurück. * Gibt die Referenz auf das Objekt vom Typ "Motorroller" zurück.
*/ */
public Motorroller getMeinenRoller() { public Motorroller getMeinenRoller() {
return meinRoller; return meinRoller;
} }
/** /**
* Ändert die Motorroller-Referenz auf ein neues Objekt vom Typ * Ändert die Motorroller-Referenz auf ein neues Objekt vom Typ
* "Motorroller". * "Motorroller".
*/ */
public void setMeinenRoller( Motorroller pNeuerRoller ) { public void setMeinenRoller( Motorroller pNeuerRoller ) {
meinRoller = pNeuerRoller; meinRoller = pNeuerRoller;
} }
public void taschengeldBekommen( double pBetrag ) { public void taschengeldBekommen( double pBetrag ) {
if( pBetrag > 0 ) { if( pBetrag > 0 ) {
geld = geld + pBetrag; geld = geld + pBetrag;
} }
} }
/** /**
* Tankt den zugeordneten Roller um die angegebene Menge (in Litern) auf. * Tankt den zugeordneten Roller um die angegebene Menge (in Litern) auf.
* Dabei wird zunächst geprüft wie viel Platz noch im Tank ist * Dabei wird zunächst geprüft wie viel Platz noch im Tank ist
* und nur die Menge getankt, die auch noch in den Tank passt. * und nur die Menge getankt, die auch noch in den Tank passt.
* Für die getankte Menge müssen pro Liter 1.5 Euro gezahlt werden, die * Für die getankte Menge müssen pro Liter 1.5 Euro gezahlt werden, die
* vom vorhandenen Geld abgezogen werden. * vom vorhandenen Geld abgezogen werden.
*/ */
public void tankeRoller( double pMenge ) { public void tankeRoller( double pMenge ) {
meinRoller.tanke(pMenge); meinRoller.tanke(pMenge);
geld = geld - 1.5*pMenge; geld = geld - 1.5*pMenge;
// TODO: // TODO:
// - Teste die Methode mit verschiedenen Eingaben. Probier // - Teste die Methode mit verschiedenen Eingaben. Probier
// auch Werte aus, die eigentlich nicht logisch sind (z.B. // auch Werte aus, die eigentlich nicht logisch sind (z.B.
// negative Mengen). // negative Mengen).
// - Diese Methode wurde nicht korrekt nach der // - Diese Methode wurde nicht korrekt nach der
// Spezifikation (im Kommentar oben) implementiert. // Spezifikation (im Kommentar oben) implementiert.
// Welche Fehler können auftreten? // Welche Fehler können auftreten?
// - Korrigiere so viele Fehler wie möglich. // - Korrigiere so viele Fehler wie möglich.
// - Bei dieser Methode ist auch die Spezifikation fehlerhaft. // - Bei dieser Methode ist auch die Spezifikation fehlerhaft.
// Welche möglichen Objektzustände werden dort nicht // Welche möglichen Objektzustände werden dort nicht
// beachtet? // beachtet?
// - Ergänze den Kommentar zu einer möglichst exakten Beschreibung. // - Ergänze den Kommentar zu einer möglichst exakten Beschreibung.
} }
/** /**
* Fährt den Roller um die angegeben Strecke (in km). Der Besitzer * Fährt den Roller um die angegeben Strecke (in km). Der Besitzer
* prüft zunächst, ob genug Benzin im Tank ist für die Strecke, und fährt * prüft zunächst, ob genug Benzin im Tank ist für die Strecke, und fährt
* nur dann los. Er prüft dies, indem er ungefähr den Verbrauch des Rollers * nur dann los. Er prüft dies, indem er ungefähr den Verbrauch des Rollers
* abschätzt. * abschätzt.
*/ */
public void fahreRoller( int pStrecke ) { public void fahreRoller( int pStrecke ) {
if( meinRoller.getTankinhalt() >= pStrecke ) { if( meinRoller.getTankinhalt() >= pStrecke ) {
meinRoller.fahre(pStrecke); meinRoller.fahre(pStrecke);
} }
// TODO:
// - Der Besitzer schätzt nur grob den Verbrauch seines Rollers ab.
// TODO: // Wie macht er das?
// - Der Besitzer schätzt nur grob den Verbrauch seines Rollers ab. // - Wie könnten die Klassn sinnvoll ergänzt werden, um eine genauere
// Wie macht er das? // Rechnung pro Roller zu ermöglichen?
// - Wie könnten die Klassn sinnvoll ergänzt werden, um eine genauere // - Implementiere eure Idee.
// Rechnung pro Roller zu ermöglichen? }
// - Implementiere eure Idee.
}
} }

View File

@ -20,8 +20,7 @@ public class Motorroller
/** /**
* Konstruktor für Objekte der Klasse Motorroller * Konstruktor für Objekte der Klasse Motorroller
*/ */
public Motorroller( int pKilometerstand, double pTankgroesse, double pTankinhalt ) public Motorroller( int pKilometerstand, double pTankgroesse, double pTankinhalt ) {
{
// Attribute initialisieren // Attribute initialisieren
kilometerstand = Math.max(0,pKilometerstand); kilometerstand = Math.max(0,pKilometerstand);
tankgroesse = pTankgroesse; tankgroesse = pTankgroesse;
@ -34,18 +33,15 @@ public class Motorroller
// unsinniger Werte. // unsinniger Werte.
} }
public int getKilometerstand() public int getKilometerstand() {
{
return kilometerstand; return kilometerstand;
} }
public double getTankgroesse() public double getTankgroesse() {
{
return tankgroesse; return tankgroesse;
} }
public double getTankinhalt() public double getTankinhalt() {
{
return tankinhalt; return tankinhalt;
} }
@ -53,9 +49,11 @@ public class Motorroller
* Tankt den Roller um die übergebene Menge (in Litern) auf. Dabei kann * Tankt den Roller um die übergebene Menge (in Litern) auf. Dabei kann
* der Tank nicht voller werden, als durch die Tankgroesse * der Tank nicht voller werden, als durch die Tankgroesse
* festgelegt ist. Das zuviel getankte Benzin verfällt einfach. * festgelegt ist. Das zuviel getankte Benzin verfällt einfach.
*
* Die Methode akzeptiert auch negative Werte (das Benzin wird dann also
* abgelassen). Natürlich darf der Tankinhalt nicht negativ werden.
*/ */
public void tanke( double pMenge ) public void tanke( double pMenge ) {
{
tankinhalt += pMenge; // += rechnet "tankinhalt + pMenge" und weist das Ergebnis "tankinhalt" zu tankinhalt += pMenge; // += rechnet "tankinhalt + pMenge" und weist das Ergebnis "tankinhalt" zu
// TODO: // TODO:
@ -71,8 +69,7 @@ public class Motorroller
* volle Strecke, dann fährt der Roller nur so weit, wie er mit dem verbleibenden * volle Strecke, dann fährt der Roller nur so weit, wie er mit dem verbleibenden
* Benzin kommt. Der Kilometerstand wird um die gefahrene Strecke hochgezählt. * Benzin kommt. Der Kilometerstand wird um die gefahrene Strecke hochgezählt.
*/ */
public void fahre( int pStrecke ) public void fahre( int pStrecke ) {
{
// TODO: // TODO:
// - Diese Methode muss noch nach den Spezifikationen // - Diese Methode muss noch nach den Spezifikationen
// oben implementiert werden. // oben implementiert werden.