Klassen und Objekte (3)
Noch mehr Bruchrechnung
Richtig nützlich wird ein Bruchrechenprogramm erst, wenn man damit Brüche auch addieren, subtrahieren, multiplizieren dund dividieren kann. Das wollen wir uns jetzt vornehmen. Dazu schreiben wir erste einmal ein Bruchrechenprogramm, das vom Benutzer zwei Brüche abfragt:
import java.util.*;
public class Bruchrechnung2 {
public static void main(String[] args) {
System.out.println("Bruchrechnung 2\n");
Scanner Eingabe = new Scanner(System.in);
System.out.print("Geben Sie den ersten Bruch in der Form z/n
ein : ");
Bruch b1 = new Bruch(Eingabe.next());
System.out.print("Geben Sie den ersten Bruch in der Form z/n
ein : ");
Bruch b2 = new Bruch(Eingabe.next());
System.out.println(b1.zeigBruch());
System.out.println(b2.zeigBruch());
}
}
Wie Sie an der Zeile sehen, werden Brüche hier als String entgegengenommen und an die Klasse Bruch weitergegeben. Diese braucht dann natürlich einen anderen Konstruktor, der Bruchstrings analysieren kann. Fügen Sie den folgenden Code in die Klasse Bruch ein:
public Bruch(String br) {
int p = br.indexOf('/');
this.zähler = Integer.valueOf(br.substring(0,p));
this.nenner = Integer.valueOf(br.substring(p+1,br.length()));
}
Als Gegenstück sollten wir in die Klasse Bruch auch eine Funktion einbauen, die den jeweiligen Bruch in der Form Zähler/Nenner als Text zurückliefert. Hier ist sie:
public String zeigBruch() {
return zähler+"/"+nenner;
}
Hier zwei Vorschläge, wie man die beiden Brüche multiplizieren kann. Sie müssen ebenfalls in die Klasse Bruch eingebaut werden:
public String mul(Bruch b) {
return zähler*b.getZähler()+"/"+nenner*b.getNenner();
}
public static String produkt(Bruch b1 , Bruch b2) {
return
b1.getZähler()*b2.getZähler()+"/"+b1.getNenner()*b2.getNenner();
}
Die erste Variante bezieht sich auf das aktuelle Objekt. Sie kann (aus
Bruchrechnung2 heraus) folgendermaßen verwendet werden:
Bruch b3 = new Bruch(b2.mul(b1));
Die zweite Variante ist eine statische Funktion, d.h. sie bezieht sich
allgemein auf die Klasse. Sie wird so verwendet:
Bruch b4 = new Bruch(Bruch.produkt(b1,b2));
Hat man das Produkt als neues Objekt erzeugt, dann
kann man es mit System.out.println(b4.zeigBruch());
anzeigen.
Man kann beide Funktionen aber auch verwenden, ohne ein neues Objekt zu
erzeugen: System.out.println(b2.mul(b1));
Nachdem Sie alles, was in den drei Programmfragmenten oben passiert, kapiert und ausprobiert haben, können Sie sich nun den Aufgaben zuwenden.
Aufgaben: