Workshop zum Programmingwiki/Objektorientierte Programmierung (Java)

Aus ProgrammingWiki

Wiki-Quelltext dieser Seite.

<language>Java</language>
== Objektorientierte Programmierung ==

=== Technische Voraussetzungen ===

Zur Objektorientierten Programmierung in Java ist die Policy-Datei
* <tt>JavaPolicy.class</tt>
erforderlich. Entsprechende Hinweise findet man unter: [[JavaPolicy]]

=== Definition der Klasse ''Bruch''===

<code id="5143a88bf2d62">
public class Bruch {

 protected int z;
 protected int n;

 public Bruch(int z, int n) {
  if (n < 0) {
   z = -z; n = Math.abs(n);
  }
  this.z = z;
  this.n = n;
 }

 public int Zaehler() {
  return z;
 }

 public int Nenner() {
  return n;
 }

 public double Dezimal() {
  return (double)z / n;
 }

 public void Reziprok() {
  int h = z; z = n; n = h;
  if (n < 0) {
   z = -z; n = Math.abs(n);
  }
 }

 public void Ausgabe() {
  System.out.println(z + "/" + n);
 }
}
</code>
 
=== Instanz der Klasse ''Bruch''===

<run id="5145e11c18596">
Bruch Bruch1 = new Bruch(3, 7);
System.out.print("Bruch1: "); Bruch1.Ausgabe();
System.out.println("Bruch1 als Dezimalbruch: " + Bruch1.Dezimal());
</run>

=== Vererbung ===
 
<code id="5143a88bf2dc4">
public class GekuerztBruch extends Bruch {

 public GekuerztBruch(int z, int n) {
  super(z, n);
 }

 private int ggT(int m, int n) {
  if (n == 0)
   return m;
  else
   return ggT(n, m % n);
 }

 public void Kuerzen() {
  int teiler = ggT(z, n);
  z = z / teiler;
  n = n / teiler;
 }
}
</code>

<run id="5145e11c185f5">
Bruch Bruch2 = new GekuerztBruch(10, 8);
System.out.print("Bruch2, ungekürzt: "); Bruch2.Ausgabe();
Bruch2.Kuerzen();
System.out.print("Bruch2, gekürzt  : "); Bruch2.Ausgabe();
</run>

=== Polymorphie ===

<code id="5158294b1b878">
public class GemischtBruch extends GekuerztBruch {

 public GemischtBruch(int z, int n) {
  super(z, n);
 }

 public void Ausgabe() {
  int g; int z0; int n0;
  double quotient = z / n;
  if (quotient < 0)
   g = (int)Math.ceil(quotient);
  else
   g = (int)Math.floor(quotient);
  if (g == 0)
   System.out.println(z + "/" + n);
  else {
   z0 = Math.abs(z % n);
   n0 = n;
   System.out.println(g + "_" + z0 + "/" + n0);
  }
 } 
}

public void BruchAusgabe(Bruch MyBruch) {
 System.out.print(MyBruch.Zaehler() + "/" + MyBruch.Nenner() + " = ");
 MyBruch.Kuerzen();
 MyBruch.Ausgabe();
}

Bruch Bruch3 = new GekuerztBruch(24, 16);
Bruch Bruch4 = new GemischtBruch(24, 16);
</code>

<run id="5157f1dec3629">
BruchAusgabe(Bruch3);
BruchAusgabe(Bruch4);
</run>

Zurück zum [[Workshop zum Programmingwiki]].