Aufruf einer Methode eines Objektes vom Typ „Bruch“ class Bruch class testeBruch int zaehler = 0; int nenner = 1; int v = 3; public void erweitere(int n) { zaehler = zaehler * n; nenner = nenner * n; } b2.erweitere(v);
Eine besondere Methode: der Konstruktor class Bruch Konstruktor Die Konstruktor-Methode besitzt den gleichen Namen wie die Klasse und wird als erste Methode aufgerufen, wenn ein Objekt der betreffenden Klasse mit dem „new“-Befehl erzeugt wird. int zaehler = 0; int nenner = 1; Bruch (int a, int b) { zaehler = a; nenner = b; } class testeBruch Bruch b1 = new Bruch(2,7); public void erweitere(int n) { zaehler = zaehler * n; nenner = nenner * n; } b1.zaehler = 3;
Eine Methode zum Ermitteln des größten gemeinsamen Teilers public int findeGGT(int a, int b) { int z = a; // Waehle den kleineren Wert if (b < a) { z = b; } // Finde die gemeinsamen Teiler von a und b int t = 0; for (int i = 1; i < z + 1; i++) { if ( ((a%i)==0) & ((b%i)==0) ) { t = i; // Gib den groessten gemeinsamen Teiler zurück return t;
Die Klasse Bruch public class Bruch { int zaehler = 0; int nenner = 1; // Konstruktor Bruch(int a, int b) { zaehler = a; if (b!= 0) { nenner = b; } else { nenner = 1; // Nun kommen die restlichen Methoden
public void zeigeDich() { System.out.println("Zaehler = " + zaehler); System.out.println("Nenner = " + nenner); } public void erweitere(int x) { zaehler = zaehler * x; nenner = nenner * x; public void bildeKehrwert() { int dummy = nenner; nenner = zaehler; zaehler = dummy;
public int bildeGGT(int a, int b) { int z = a; // Waehle den kleineren Wert fuer z if (b < a) { z = b; } // Finde die gemeinsamen Teiler von a und b int t = 0; for (int i=1; i < z+1; i++) { if ( ((a%i)==0) & ((b%i)==0) ) { t = i; return t; public void kuerze() { int ggT = bildeGGT(zaehler, nenner); zaehler = zaehler / ggT; nenner = nenner / ggT;
// Im nächsten Abschnitt passiert etwas NEUES. // Beim Aufruf einer Methode wird nicht einfach nur eine // Zahl oder eine Variable übergeben, sondern ein Objekt. // Das sieht so aus: // b3 = b1.multipliziere(b2); // Was passiert hier? // Der Bruch b1 wird mit dem Bruch b2 multipliziert // und das Ergebnis dem Bruch b3 zugewiesen.
public Bruch multipliziere(Bruch multiplikator) { Bruch ergebnis = new Bruch(1,1); ergebnis.zaehler = zaehler * multiplikator.zaehler; ergebnis.nenner = nenner * multiplikator.nenner; ergebnis.kuerze(); return ergebnis; } public Bruch dividiere(Bruch dividend) { ergebnis.zaehler = zaehler * dividend.nenner; ergebnis.nenner = nenner * dividend.zaehler;
public int bildeKGN(int nenner1, int nenner2) { int ergebnis = 1; ergebnis = nenner1 * nenner2; ergebnis = ergebnis / bildeGGT(nenner1, nenner2); return ergebnis; }
public Bruch addiere(Bruch summand) { Bruch ergebnis = new Bruch(1,1); int kgn = 1; int faktor1 = 1; int faktor2 = 1; kgn = bildeKGN(nenner, summand.nenner); faktor1 = kgn / nenner; faktor2 = kgn / summand.nenner; zaehler = zaehler * faktor1; nenner = kgn; summand.zaehler = summand.zaehler * faktor2; summand.nenner = kgn; ergebnis.zaehler = zaehler + summand.zaehler; ergebnis.nenner = kgn; ergebnis.kuerze(); return ergebnis; }
public Bruch subtrahiere(Bruch subtrahend) { Bruch ergebnis = new Bruch(1,1); Bruch dummy _ = new Bruch(-1 * subtrahend.zaehler, subtrahend.nenner); ergebnis = this.addiere(dummy); return ergebnis; }