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>