private Bruch rechenOperation(Bruch zweiterBruch, char operation) {
        boolean echt = false;

        // Beide Brüche unecht machen um das Rechnen zu vereinfachen
        Bruch tmpBruch1 = this.unechterBruch();
        Bruch tmpBruch2 = zweiterBruch.unechterBruch();
        Bruch ergebnisBruch;

        // War einer der beiden Brüche vorher echt?
        if (this.isEcht() || zweiterBruch.isEcht()) {
            echt = true;
        }

        // Aufruf einer Methode um einheitlich den Zähler zu berechnen
        long zaehler = tmpBruch1.neuerZaehler(operation, tmpBruch2);
        long nenner;

        // Die Operation geteilt, wird gesondert behandelt aufgrund des
        // Kehrwertes
        if (operation != ':') {
            nenner = tmpBruch1.nenner * tmpBruch2.nenner;
        } else {
            nenner = tmpBruch1.nenner * tmpBruch2.kehrwert().nenner;
        }
        ergebnisBruch = new Bruch(zaehler, nenner);
        ergebnisBruch = ergebnisBruch.rechenKuerzen();

        if (echt) {
            ergebnisBruch = ergebnisBruch.echterBruch();
        }

        return ergebnisBruch;

    }