Java Oo: Bruchzahlen

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Java Oo: Bruchzahlen

    Erstellen Sie ein Paket meinMathePaket.zahlen, welches eine Klasse Bruch zum Umgang mit Brüchen enthält, welche mindestens die folgende Funktionalität bereitstellt:
    * Initialisierung mit 0
    * Initialisierung mit Zähler und Nenner
    * Ausgabe des Bruchs in der Form Zähler/Nenner
    * Addition, Multiplikation und Division von Brüchen

    Leiten Sie von der (Basis-)Klasse Bruch aus Aufgabe 1 eine Klasse GekuerzterBruch ab, welche die gleichen Operationen wie Bruch aufweist, aber nach jeder Operation die entstehende Bruchzahl kürzt. Die Klasse GekuerzterBruch soll ebenfalls im Paket meinMathePaket.zahlen enthalten sein. Überladen Sie dazu in der Klasse GekuerzterBruch die Methoden der Klasse Bruch in geeigneter Art und rufen Sie zur Implementierung der überladenen Methoden die geerbten Methoden
    auf. Das Programm...

    Quellcode

    1. package meinMathePaket.zahlen;
    2. public class Bruch {
    3. public int zaehler, nenner;
    4. /**
    5. * Konstruktor
    6. */
    7. public Bruch() {
    8. this.zaehler = 0;
    9. this.nenner = 0;
    10. }
    11. /**
    12. * Konstruktor
    13. */
    14. public Bruch(int zaehler, int nenner) {
    15. this.zaehler = zaehler;
    16. this.nenner = nenner;
    17. }
    18. /**
    19. * Stringkonvertierung
    20. */
    21. public String toString() {
    22. if(this.nenner == 1)
    23. return this.zaehler+"";
    24. return this.zaehler+"/"+this.nenner;
    25. }
    26. /**
    27. * Addition
    28. */
    29. Bruch add(Bruch bruch) {
    30. int nenner=0,xzaehler=0;
    31. if(this.nenner > bruch.nenner) {
    32. nenner = this.nenner;
    33. bruch.zaehler *= this.nenner / bruch.nenner;
    34. xzaehler = this.zaehler;
    35. } else {
    36. nenner = bruch.nenner;
    37. xzaehler = this.zaehler * bruch.nenner / this.nenner;
    38. }
    39. return new Bruch(xzaehler+bruch.zaehler, nenner);
    40. }
    41. /**
    42. * Subtraktion = Addition mit umgekehrtem Vorzeichen
    43. */
    44. Bruch subtraktion(Bruch bruch) {
    45. return this.add(new Bruch(bruch.zaehler*-1, bruch.nenner));
    46. }
    47. /**
    48. * Multiplikation
    49. */
    50. Bruch mul(Bruch bruch) {
    51. return new Bruch(this.zaehler*bruch.zaehler, this.nenner*bruch.nenner);
    52. }
    53. /**
    54. * Division = Multiplikation mit Kehrwert
    55. */
    56. Bruch div(Bruch bruch) {
    57. return this.mul(new Bruch(bruch.nenner, bruch.zaehler));
    58. }
    59. /**
    60. * main
    61. */
    62. public static void main(String[] args) {
    63. GekuerzterBruch a = new GekuerzterBruch(3, 2);
    64. GekuerzterBruch b = new GekuerzterBruch(10, 4);
    65. System.out.println("a : " + a);
    66. System.out.println("b : " + b);
    67. System.out.println("a+b : " + a.add(b));
    68. System.out.println("a*b : " + a.mul(b));
    69. System.out.println("a/b : " + a.div(b));
    70. }
    71. }
    72. class GekuerzterBruch extends Bruch {
    73. public GekuerzterBruch(int zaehler, int nenner) {
    74. Bruch test = shorten(new Bruch(zaehler, nenner));
    75. this.zaehler = test.zaehler;
    76. this.nenner = test.nenner;
    77. }
    78. /**
    79. * Die folgenden Funktionen nutzen die Original Funktionen und kuerzen die Zahl
    80. */
    81. Bruch add(Bruch bruch) {
    82. return shorten(super.add(bruch));
    83. }
    84. Bruch mul(Bruch bruch) {
    85. return shorten(super.mul(bruch));
    86. }
    87. /**
    88. * Kuerzt einen Bruch
    89. */
    90. Bruch shorten(Bruch bruch) {
    91. int ggt = ggt(bruch.zaehler, bruch.nenner);
    92. bruch.zaehler /= ggt;
    93. bruch.nenner /= ggt;
    94. return new Bruch(bruch.zaehler, bruch.nenner);
    95. }
    96. /**
    97. * groesster, gemeinsamer Teiler
    98. */
    99. public static int ggt(int x, int y) {
    100. if(y != 0)
    101. return ggt(y, x%y);
    102. else
    103. return x;
    104. }
    105. }
    Alles anzeigen