Bergervei/Java-Objekte
Aus ProgrammingWiki
Wiki-Quelltext dieser Seite.
<language>Java</language>
== Objekte in Java ==
=== Definition eines Objektes ===
Wir definieren das Objekt ''Bruch'':
<code id="51447f58ae7f3">
public Object Bruch() {
private int z;
private int n;
private int ggT(int m, int n) {
if (n == 0)
return m;
else
return ggT(n, m % n);
}
public int Zaehler() {
return z;
}
public int Nenner() {
return n;
}
public double Dezimal() {
return (double)z / n;
}
public void Erzeuge(int z0, int n0) {
z = z0; n = n0;
if (n < 0) {
z = -z; n = Math.abs(n);
}
}
public void Ausgabe() {
System.out.println(z + "/" + n);
}
public void Addition(Object Summand) {
z = z * Summand.Nenner() + n * Summand.Zaehler();
n = n * Summand.Nenner();
}
public void Subtraktion(Object Subtrahend) {
z = z * Subtrahend.Nenner() - n * Subtrahend.Zaehler();
n = n * Subtrahend.Nenner();
}
public void Multiplikation(Object Faktor) {
z = z * Faktor.Zaehler();
n = n * Faktor.Nenner();
}
public void Division(Object Divisor) {
z = z * Divisor.Nenner();
n = n * Divisor.Zaehler();
if (n < 0) {
z = -z; n = Math.abs(n);
}
}
public void Reziprok() {
int h = z; z = n; n = h;
if (n < 0) {
z = -z; n = Math.abs(n);
}
}
public void Kuerzen() {
int teiler = Math.abs(ggT(z, n));
z = z / teiler;
n = n / teiler;
}
return this;
}
</code>
=== Instanzen eines Objektes ===
Zunächst erzeugen wir die Instanzen ''Bruch1'' und ''Bruch2'' des Objektes ''Bruch'' und geben sie mit der Methode ''Ausgabe'' aus:
<code id="513b68d7b788f">
Object Bruch1 = Bruch(); Bruch1.Erzeuge(3, 4);
Object Bruch2 = Bruch(); Bruch2.Erzeuge(1, 2);
</code>
<run id="51447f58ae877">
System.out.print("Bruch1: "); Bruch1.Ausgabe();
System.out.print("Bruch2: "); Bruch2.Ausgabe();
System.out.println("Dezimalbruch2: " + Bruch2.Dezimal());
</run>
=== Kapselung, Eigenschaften und Methoden eines Objektes ===
Eine dritte Instanz ''Bruch3'' soll die Zähler-Eigenschaft <tt>'''z'''</tt> und die Nenner-Eigenschaften <tt>'''n'''</tt> der ersten Instanz ''Bruch1'' erhalten. Diese Eigenschaften sind streng ''gekapselt'', d.h. ein direkter Zugriff ist nicht möglich. Wir müssen deshalb die Methoden ''Zaehler'' und ''Nenner'' benutzen.<br />
Anschließend wird die Methode ''Addition'' mit der Instanz ''Bruch2'' ausgeführt:
<code id="513b68d7b78fd">
Object Bruch3 = Bruch(); Bruch3.Erzeuge(Bruch1.Zaehler(), Bruch1.Nenner());
Bruch3.Addition(Bruch2);
</code>
<run id="513b68d7b7a4e">
System.out.print("Bruch3: "); Bruch3.Ausgabe();
</run>
Abschließend soll das Ergebnis nun vollständig gekürzt werden:
<code id="513b68d7b7976">
Bruch3.Kuerzen();
</code>
<run id="513b68d7b7aa6">
System.out.print("Bruch3: "); Bruch3.Ausgabe();
</run>