Informatik

Modularisierung

Modularisierung heißt: ein großes Problem in kleinere, benannte Teilprobleme zerlegen, jedes davon einzeln lösen und die Lösungen zusammensetzen. Sie ist eine Problemlösestrategie – kein Programmiertrick.

Überladen

Zwei Methoden dürfen denselben Namen tragen, solange sie sich in ihrer Parameterliste unterscheiden. Das nennt man Überladen.

Java entscheidet anhand der Anzahl und der Typen der Argumente, welche Methode gemeint ist. Der Rückgabetyp zählt dabei nicht – zwei Methoden, die sich nur darin unterscheiden, sind ein Fehler.

Beachte die dritte Methode: Sie ruft die zweite auf. Methoden dürfen und sollen einander benutzen.

Warum ist es sinnvoll, dass begruesse(String, int) die Methode begruesse(String) aufruft, statt die Ausgabe selbst zu schreiben?

Auflösung

Damit die Begrüßungsformel nur an einer Stelle steht. Soll aus „Hallo“ ein „Guten Tag“ werden, ändert man eine Zeile – und alle drei Varianten ziehen mit.

Das ist dasselbe Argument wie beim Baum in der ersten Lektion. Es gilt auf jeder Ebene.

Ein größeres Problem zerlegen

Ein Programm soll eine Notenstatistik ausgeben. Es liest fünf Notenpunkte ein und gibt aus:

  • die Einzelnoten mit der zugehörigen Note in Worten
  • den Durchschnitt
  • die beste und die schlechteste Punktzahl
  • ob der Kurs bestanden ist (Durchschnitt mindestens 5 Punkte)

Zerlege dieses Problem auf Papier in Teilaufgaben, bevor du eine Zeile Code schreibst. Notiere für jede Teilaufgabe:

  • einen Methodennamen
  • die Parameter
  • den Rückgabetyp
Auflösung: ein möglicher Entwurf
Methode Parameter Rückgabe Aufgabe
punkteInNote int pPunkte String wandelt Punkte in „sehr gut“, „gut“, … um
durchschnitt fünf int double berechnet den Mittelwert
maximum fünf int int größter Wert
minimum fünf int int kleinster Wert
istBestanden double pSchnitt boolean Durchschnitt mindestens 5

Fünf einzelne Parameter sind unschön – das merkst du selbst. In Kapitel 5 lernst du Felder kennen, und dann wird aus maximum(int, int, int, int, int) ein sauberes maximum(int[]).

Dass ein Entwurf einen solchen Schwachpunkt hat, ist normal. Wichtig ist, ihn zu erkennen und zu benennen.

Tipp 1: punkteInNote

Eine else if-Kette wie bei den Noten in Kapitel 3 – nur dass du diesmal nicht ausgibst, sondern zurückgibst.

Achte auf die Reihenfolge der Grenzen.

Tipp 2: durchschnitt

Aufpassen bei der Division: Die Summe ist ein int, aber der Rückgabetyp ist double. Ohne Typumwandlung schneidest du die Nachkommastellen ab.

Tipp 3: maximum bei drei Werten

Das Muster aus Kapitel 3: Merke dir den bisher größten Wert und vergleiche ihn nacheinander mit den übrigen.

Oder du rufst zweimal eine Zwei-Werte-Version auf – auch das ist Modularisierung.

Lösung. Erfrage das Passwort bei deiner Lehrkraft.

Aufgabe: Das Programm zusammensetzen

Setze die geprüften Methoden jetzt zu einem vollständigen Programm zusammen: Es liest drei Notenpunkte ein und gibt die vollständige Statistik aus.

Beachte: Du hast die Methoden einzeln getestet. Wenn das Gesamtprogramm trotzdem nicht stimmt, liegt der Fehler im Zusammensetzen – nicht in den Bausteinen. Genau das ist der Vorteil dieses Vorgehens.

Lösung. Erfrage das Passwort bei deiner Lehrkraft.

Zusatzaufgabe

Nimm dir ein Programm vor, das du in einem früheren Kapitel geschrieben hast – zum Beispiel den Zeitrechner oder das Zahlenraten.

a) Zerlege es nachträglich in Methoden. Welche Teilaufgaben stecken darin?

b) Schreibe zu mindestens zwei deiner Methoden eine Testklasse.

c) Beurteile: Ist das Programm dadurch besser geworden? Begründe – und sei ehrlich, wenn du findest, dass es für ein so kleines Programm übertrieben ist.


Selbsttest

Modularisierung

Teilbare URL erstellen

Abschnitte auswählen