Java Anfängerfrage (Klasse, Klasseneigenschaft...)

raffiSSL

Lt. Junior Grade
Registriert
Feb. 2006
Beiträge
289
Hallo, ich habe dieses Semester angefangen Wirtschaftsinfo zu studieren. Im Rahmen unseres Praktikums lernen wir die java-Programmierung. Generell fällt mir das nicht schwer, da ich in der Schule bereits Delphi hatte und daher die generelle Struktur schnell bergreife. Jetzt sind wir in der Uni gerade bei Klassen, Methoden, Objekten. Noch nichts mit Vererbung oder Polymorphie. Jedoch wird es für mich an dieser Stelle nicht mehr so leicht rein strukturell gesehen.
Wir haben diverse Aufagaben die wir teilweise in der Uni lösen (natürlich freiwillig) manche mache ich aber auch zu Hause, da man ja in der Uni nicht alle schafft. Die Aufgabe bei der ich derzeit hänge fängt folgendermaßen an:

Schreiben Sie eine Klasse UmsatzSteuer. Der Steuersatz soll eine Klasseneigenschaft sein und beim Erzeugen eines Umsatzsteuerobjektes angegeben werden...

Speziell der zweite Satz verwirrt mich stark. Generell habe ich ja eine Public class und nur eine pro Programm könnte diese also verwenden, da ich meine Klasse so genannt habe (Satz 1). Aber wie realisiere ich Satz 2? Wie programmiere ich in diesem Fall eine Klasseneigenschaft? Über eine Methode, die irgendwann auf die 7 bzw. 19 % zugreift? Was wäre in diesem Fall das "Erzeugen eines Umsatzsteuerobjektes"? Einfach nur eine Eingabe von willkürlichen Werten?

mfg und danke
 
Ganz einfach: Eine Klasse besteht grob gesagt aus Methoden und Attributen.
Die Attribute sind die Eigenschaften, d.h. du musst innerhalb der Klasse eine Variable Steuersatz initialisieren bzw. zur Verfügung stellen.
Ein Objekt wird durch einen Konstruktor erzeugt
Code:
public class UmsatzSteuer {
  private float steuersatz;
  public UmsatzSteuer() {
    // Ich bin ein Parameterloser Konstruktor
  }
}
Nun hast du eine Klasse UmsatzSteuer von der du unendlich viele Objekte mit new Umsatzsteuer(); erzeugen kannst.
Da du nun den Steuersatz beim Erzeugen mit angeben sollst, brauchst du nun einen Konstruktor der einen Parameter übernimmt.
Um mit dem Wert umsatzsteuer später arbeiten zu können, benutzt du get- und set-Methoden.

Ich hoffe ich konnte dir ein wenig helfen ;)
 
Zuletzt bearbeitet:
Code:
public class UmsatzSteuer {
  private float steuersatz;
  public UmsatzSteuer(float steuersatz) {
    // Ich bin ein Parameterloser Konstruktor
    this->steuersatz = steuersatz;
  }
}
Damit bewirkst Du, dass beim Aufruf des Konstruktors (new UmsatzSteuer(19.0)) mitgegeben wird. Sollte java float nicht unterstützen dann double nehmen.
 
Danke, dieser Quelltext ist mir in dieser Art und Weise bekannt, aber ich hätte es auf dieses Beispiel nicht anwenden können. Es gibt aber trotzdem noch eine Frage:

Wie realisiere ich jetzt die Tatsache, ob ich die 7 % oder die 19 % nehmen muss? Mit dieser Get-Methode? Aber das ist doch keine direkte Eingabe und die 2 Fälle unterscheide ich doch dabei auch nicht oder?

Danke

Müsste das dann so aussehen?
Code:
public float getsteueratz() { return steuersatz; }

EDIT: ich hänge mal noch den letzten Teil de Aufgabenstellung mit ran.
Nachträglich soll er mit setSteuersatz(double wert) geändert werden können. Schreiben Sie auch eine Methode toString(), die den Steuersatz ausgibt.

Die toString-Methode dürfte mir keine Problem bereiten, aber die nachträgliche Änderung...
 
Zuletzt bearbeitet:
indem du eine Super-Klasse "Umsatzsteuer" und 2 spezialisierte Sub-Klassen erzeugst. Die Super-Klasse weist dann alle elementaren Eigenschaften bzw. Methoden auf. Die 2 Sub-Klassen weisen die speziellen Eigenschaften bzw. Methoden des jeweiligen Steuersatzes auf.

Du könntest die Superklasse noch auf "abstract" setzen, damit kein Objekt davon erzeugt werden darf.
 
raffiSSL schrieb:
Nachträglich soll er mit setSteuersatz(double wert) geändert werden können. Schreiben Sie auch eine Methode toString(), die den Steuersatz ausgibt.

Die toString-Methode dürfte mir keine Problem bereiten, aber die nachträgliche Änderung...

Mach einfach eine set-Methode:
Code:
public void setSteuersatz(double newValue) {
 this.steuersatz = newValue; 
}
 
apolyton schrieb:
indem du eine Super-Klasse "Umsatzsteuer" und 2 spezialisierte Sub-Klassen erzeugst. Die Super-Klasse weist dann alle elementaren Eigenschaften bzw. Methoden auf. Die 2 Sub-Klassen weisen die speziellen Eigenschaften bzw. Methoden des jeweiligen Steuersatzes auf.

Du könntest die Superklasse noch auf "abstract" setzen, damit kein Objekt davon erzeugt werden darf.

Also nehme ich meine public abstract class UmsatzSteuer, und schreibe in dieser noch eine Klasse public ermaesigt und eine public normal (als Beipsiel) und setze in der ersten steuersatz = 0.07 und in der zweiten steuersatz = 0.19 ? So in etwa?

Und wie rufe ich diese Sub-Klassen dann auf?
 
Also ich würde das ca so vorschlagen:

Code:
public class UmsatzSteuer {
  private float steuersatz;
  public UmsatzSteuer(double steuersatz) {
    this.steuersatz = steuersatz;
  }

 public void setSteuersatz(double neuerSatz) {
   this.steuersatz = neuerSatz;
 }

 public void toString() {
  // ausgabe hier
 }
}
und dann so in etwa folgendes:
Code:
UmsatzSteuer dieSteuer = new UmsatzSteuer(0.19);
// zum umsetzen dann:
dieSteuer.setSteuersatz(0.07);
 
so kann man's auch machen. Mein Vorschlag ist etwas umfangreicher und bietet zum Weiterprogrammieren mehr Möglichkeiten. So wie das onyxus gemacht hat, kommste am schnellsten zum Ziel.

Beim Programmieren führen viele Wege nach Rom. Für einen musst du dich entscheiden.
 
Zurück
Oben