Java: Was ist eine Fraction?

Hallo. Ich bin Anfänger in Java und habe zuvor mit C programmiert. Ich würde nun gerne wissen, was eine Fraction in Java ist. Kommt das in Java allgemein vor oder ist das etwas spezifisches in meinem Programm?

public class Fraction {
  private int denominator, numerator;

  /** Liefert den Wert des Nenners */
  public int getDenominator() {
    return denominator;
  }

  /** Liefert den Wert des Zählers */
  public int getNumerator() {
    return numerator;
  }

  public Fraction(int num, int den) {
    if (num <= 0) {
      throw new IllegalArgumentException("Zähler null oder negativ!");
    }

    if (den <= 0) {
      throw new IllegalArgumentException("Nenner null oder negativ!");
    }

    this.numerator = num;
    this.denominator = den;
  }

  public Fraction add(Fraction b) {
    int den, num;
    num = numerator * b.denominator + b.numerator * denominator;
    den = denominator * b.denominator;

    Fraction result = new Fraction(num, den);
    return result;
  }

  public Fraction sub(Fraction b) {
    int den, num;
    num = numerator * b.denominator - b.numerator * denominator;
    den = denominator * b.denominator;

    Fraction result = new Fraction(num, den);
    return result;
  }

  public Fraction mul(Fraction b) {
    int den, num;
    num = numerator * b.numerator;
    den = denominator * b.denominator;

    Fraction result = new Fraction(num, den);
    return result;
  }

  public Fraction div(Fraction b) {
    int den, num;
    num = numerator * b.denominator;
    den = denominator * b.numerator;

    Fraction result = new Fraction(num, den);
    return result;
  }

  /** Beim modernen euklidischen Algorithmus wird in
   * aufeinanderfolgenden Schritten jeweils eine 
   * Division mit Rest durchgeführt, wobei der Rest 
   * im nächsten Schritt zum neuen Divisor wird. 
   * Der Divisor, bei dem sich Rest 0 ergibt, 
   * ist der größte gemeinsame Teiler der Ausgangszahlen.

   * @param a ganze Zahl
   * @param b ganze Zahl
   * @return größter gemeinsamer Teiler 
   */
  private int greatestCommonDivisor(int a, int b) {
    int h;

    if (a == 0) {
      return Math.abs(b);
    }

    if (b == 0) {
      return Math.abs(a);
    }

    do {
      h = a % b;
      a = b;
      b = h;
    }
    while (b != 0);

    return Math.abs(a);
  }

  public static void main(String[] args) {
    Fraction f = new Fraction(12, 18);
    int gcd = f.greatestCommonDivisor(12, 18);
    System.out.println("" + gcd);

    gcd = f.greatestCommonDivisor(18, 12);
    System.out.println("" + gcd);
  }
}

programmieren, Java
2 Antworten