OOP hat jemand verbesserungsvorschläge für mein Programm

S

Scholli

Gast
Hallo,

ich soll folgende aufgabe lösen:

Erstellen Sie die public Klasse Tasse mit Konstruktor

public Tasse(String bezeichnung)
für eine mit 200 ml gefüllte Tasse

und Methoden

public int schluckTrinken() versuche 80 ml zu entnehmen, liefert tatsächlich entnommene Menge

public String getBezeichnung() Beschreibung des Inhalts

public int getQ() aktuelle Füllmenge (Quantity)


außerdem geben Sie Code an, mit dem eine Tasse „Tee“ erzeugt und dann ausgetrunken wird.


Habe das Programm so weit
ich wollt nur fragen, ob jemand Verbesserungsvorschläge hat,
vorallem bei der Methode public int schluckTrinken()

hier mein programm:



package Uebung;

public class Tasse {
protected String bezeichnung;
protected int q;
protected int r;

public String getBezeichnung(){
return bezeichnung;
}

public int getQ(){
return q;
}

public Tasse(String bezeichnung){
this.bezeichnung=bezeichnung;
q=200;
r=80;
}
public int schluckTrinken(){
if(q==0)r=0;
if(q>=r)q-=r;
if(q<r)r-=q;


return r;
}

@Override
public String toString() {
return "Tasse1{" + "bezeichnung=" + bezeichnung + ", q=" + q + ", r=" + r + '}';
}

public static void main(String[] args) {
Tasse t = new Tasse("Tee");
System.out.println("versucht 80 ml zu trinken\n"+t+"\n");

t.schluckTrinken();
System.out.println(t);

t.schluckTrinken();
System.out.println(t);

t.schluckTrinken();
System.out.println(t);

t.schluckTrinken();
System.out.println(t);

t.schluckTrinken();
System.out.println(t);
}
}
 

Landei

Top Contributor
Könntest du bitte Java-Tags verwenden, wie es in GROSSEN ROTEN BUCHSTABEN über dem Eingabe-Feld steht?

- [c]package Uebung;[/c] - nach allgemeiner Konvention werden Java-Packages kleingeschrieben
- normalerweise würde ich die Member-Variablen private statt protected machen
- schluckTrinken würde ich so schreiben:

Java:
public int schluckTrinken(){
  int schluck = Math.min(q, r);
  q -= schluck;  
  return schluck;
}

- damit könnte man r zu einer "Konstanten" (also einer Klassen-Variablen [c]final static int R = 80;[/c]) machen.
- r hat eigentlich in [c]toString()[/c] nichts verloren, interessant ist nur die Bezeichnung und der "Füllstand"
- Eine Tasse "austrinken" würde ich eher so implementieren:

Java:
while(tasse.getQ() > 0) {
  tasse.schluckTrinken();
  System.out.println(tasse);
}
- sinnvolle, verständliche Variablennamen (wie tasse statt t) sind gut, auch wenn die Aufgabenstellung schon mit schlechtem Beispiel ("q") vorangeht.
 
Zuletzt bearbeitet:

Oben