Home > Informatik > Stufe Q1

11.1 Vokabelliste - Zielsetzung und erster Entwurf

Teil 1 - Teil 2

Zielsetzung und erste Schritte

Herzlich Willkommen zum ersten größeren Projekt in der Jahrgangsstufe Q1. In der Stufe EF haben Sie hoffentlich schon viel über Java-Programmierung gelernt. Hier noch einmal die wichtigsten Punkte, von denen Sie nicht nur schon einmal gehört haben sollten, sondern die Sie auch im Schlaf beherrschen sollten.

Das erste Projekt in der neuen Jahrgangsstufe will Ihnen keine neuen Lerninhalte vermitteln, sondern soll die in der EF erworbenen Kenntnisse und Fähigkeiten wiederholen und vertiefen.

Dazu wollen wir ein kleines Programm schreiben, das eine Vokabelverwaltung simulieren soll. Wir gehen dabei in mehreren Schritten vor. Zunächst erstellen wir eine Klasse Vokabel. Anschließend erstellen wir eine Klasse Vokabelliste in der eine endliche Anzahl von Vokabeln gespeichert werden kann. Diese Klasse werden wir dann mit Methoden ausstatten, mit denen man beispielsweise eine Übersetzung für einen deutschen oder englischen Begriff finden kann oder mit denen man die Vokabeln sortieren kann.

Schritt 1 - Die Klasse Vokabel

Attribute der Klasse:

Ein Vokabel-Objekt hat zwei Attribute vom Typ String. Das erste Attribut deutsch steht für den deutschen Begriff, das zweite Attribut englisch für die englische Übersetzung.

Methoden der Klasse:

Eigentlich benötigen wir nur zwei Methoden: Erstens den Konstruktor, der ein neues Objekt der Klasse Vokabel erzeugt, und zweitens eine Methode zum Anzeigen des Wortpaares in der Konsole.

Übung 11.1-1 (PC)

Erstellen Sie eine Klasse Vokabel, die eine solche Vokabel repräsentiert.

Lösungshinweise und Testklasse

Lösungsvorschlag auf den Seiten für Lehrer(innen) / Nähere Infos dazu

UML-Klassendiagramme, Teil 1

Die schriftlichen Kandidaten unter Ihnen müssen sich jetzt mal etwas Neues aneignen. In den Vorgaben zum Informatik-Abitur NRW wird verlangt, dass Sie sich mit UML auskennen. UML ist eine Methode, komplexe informatorische Zusammenhänge graphisch darzustellen - wenn man UML wirklich beherrschen will, ist das schon eine Wissenschaft für sich. Für das Informatik-Abitur bzw. für Klausuren reichen aber ein paar kleinere Dinge schon aus. An dieser Stelle beginnen wir einfach mal mit UML-Klassendiagrammen.

Wenn wir die Klasse Vokabel als UML-Klassendiagramm darstellen wollen, zeichnen wir einen Kasten und unterteilen diesen mit waagerechten Strichen in drei Abschnitte. In den oberen Abschnitt schreiben wir den Namen der Klasse. In den mittleren Abschnitt die wichtigen Attribute der Klasse, und in den unteren Abschnitt die wichtigen Methoden der Klasse. Für die Klasse Vokabel mit ihren beiden Attributen und Methoden sieht das UML-Klassendiagramm noch ganz einfach aus:

asdf

Die beiden String-Attribute heißen hier deutsch und englisch. Das Minus-Zeichen vor den beiden Namen bedeutet: Die Attribute wurden als private deklariert. Von außerhalb der Klasse können die beiden Attribute also nicht gesehen werden. Das verhindert versehentliche Veränderungen der Attributwerte.

Der Konstruktor ist mit einem Plus-Zeichen gekennzeichnet. Das heißt, er ist von außerhalb der Klasse sichtbar (public) Eigentlich ist es in UML üblich, Konstruktoren mit einem davorgestellten C zu markieren. Aber in den Abituraufgaben NRW von 2017 und 2018 wurden die Konstruktoren in UML-Diagrammen immer mit einem Plus gekennzeichnet, und diesen Stil übernehmen wir hier einfach mal, damit Sie sich an die Abiturvorgaben gewöhnen.

Die Methode zum Anzeigen in der Konsole heißt hier anzeigen, und der Plus-Operator zeigt an, dass man die Methode von außerhalb der Klasse (zum Beispiel aus der BlueJ-Umgebung oder aus einer anderen Klasse heraus) aufrufen kann.

Die UML-Syntax weicht von der Java-Syntax stark ab. Das liegt daran, dass UML keine Programmiersprache ist, sondern eine programmiersprachen-unabhängige Beschreibung darstellt. Ein UML-Diagramm kann man in jede beliebige Programmiersprache übersetzen. In Java würde das Attribut deutsch zum Beispiel so deklariert:

private String deutsch;

Im UML-Klassendiagramm dagegen sieht die Deklaration so aus:

- deutsch: String

Wenn Sie genau hinschauen, werden Ihnen sicherlich noch weitere Unterschiede zu Java auffallen.

Schritt 2 - Eine Vokabelliste

Wie bereits angedeutet, ist der nächste Schritt die Erzeugung einer Klasse, welche in der Lage ist, viele Vokabeln zu speichern.

Die einfachste Lösung dafür ist sicherlich ein Array, der in der Lage ist, 100 oder 200 Objekte der Klasse Vokabel zu speichern. Wenn Sie meinen, dass Ihre Vorkenntnisse zum Thema "Arrays" dazu nicht ausreichen, sollten Sie die Folge 7 im Schnelldurchgang erarbeiten. Oder Sie gehen auf den Lernbaustein "Arrays", der einige wertvolle Tipps enthält, die Sie auch für die Vokabelliste verwenden können.

Übung 11.1-2 (PC)

Erstellen Sie eine neue Klasse Vokabelliste, die bis zu 100 solcherVokabel-Objekte in einem Array speichern kann.

Die Klasse sollte neben dem Konstruktor zwei Methoden besitzen: Eine Methode zum Hinzufügen einer neuen Vokabel und eine Methode zum Ausgeben der gesamten Liste.

Lösungshinweise mit einer Testklasse

Lösungsvorschlag auf den Seiten für Lehrer(innen) / Nähere Infos dazu

UML-Klassendiagramme, Teil 2

Jetzt haben wir bereits drei verschiedene Klassen in unserem kleinen Java-Projekt. In BlueJ sieht das dann so aus:

asdf

Klassendiagramm in der BlueJ-Umgebung

Die Klasse Vokabelliste greift über eine HAT-Beziehung auf Objekte der Klasse Vokabel zu, und die Klasse TestKlasse wiederum greift über eine weitere HAT-Beziehung auf Objekte der Klasse VokabelListe zu. Diese Anzeige ist schon mal ganz hilfreich, mehr Informationen enthält aber nur ein UML-Klassendiagramm. Das könnte jetzt für diesen konkreten Fall so aussehen:

asdf

Ein Klassendiagramm zum aktuellen Projekt

Am besten, man fängt unten an, wenn man das Klassendiagramm lesen bzw. verstehen will. Es gibt da also eine Testklasse mit einem Attribut liste, das ein Objekt der Klasse Vokabelliste ist. Neben dem Konstruktor hat diese Testklasse keine weiteren Methoden.

Die Klasse Vokabelliste hat zwei Attribute. Einmal ein Attribut liste, das offensichtlich ein Array aus Vokabel-Objekten ist, wie man an den eckigen Klammern sehen kann, und einmal das int-Attribut anzahl. Wozu diese beiden Attribute dienen, geht aus dem Klassendiagramm natürlich nicht hervor.

Die beiden dicken Pfeile in dem Klassendiagramm stehen für HAT-Beziehungen. Es gibt noch eine andere Sorte von Pfeilen, auf die wir hier aber nicht eingehen müssen, weil wir uns noch nicht über das Konzept der Vererbung unterhalten haben.

Schritt 3 - Übersetzung suchen

Wir wollen jetzt eine Funktion zum Suchen einer Übersetzung programmieren. Gegeben ist der deutsche Begriff, gesucht wird die englische Übersetzung.

Prinzipielles Vorgehen
  1. Eingabe: Wir geben den deutschen Begriff als String ein.
  2. Die Vokabeln der Liste werden der Reihe nach durchsucht. Wenn die Eingabe mit dem deutschen String-Attribut einer Vokabel übereinstimmt, ist die Suche beendet.
  3. In diesem Fall wird das englische String-Attribut der gefundenen Vokabel ausgegeben. Andernfalls wird mit der Suche weitergemacht.
  4. Sind wir mit der Suche bei der letzten Vokabel des Arrays angekommen und haben die Vokabel nicht gefunden, wird eine entsprechende Fehlermeldung erzeugt.
Implementierung

Die nun folgende Übung 11.1-3 ist sehr wichtig. Sie sollen hier eine sondierende Methode implementieren, die das oben Gesagte leistet.

Übung 11-1-3 (PC)

Ergänzen Sie die KlasseVokabellisteum eine entsprechende sondierende Methode.

Parameter:

Der einzige Parameter dieser Methode soll ein String sein, der für die deutsche Vokabel steht.

Rückgabewert:

Der Rückgabewert dieser sondierenden Methode ist der gefundene englische Begriff. Sollte die Vokabel nicht im Array enthalten sein, soll "nicht vorhanden" als String-Wert zurückgeliefert werden.

Zu einer solchen schon recht aufwendigen Implementierung gehört natürlich auch eine entsprechende Dokumentation. Stellen Sie den oben beschriebenen Ablauf ("prinzipielles Vorgehen") als Flussdiagramm graphisch dar.

Lösungshinweise

Lösungsvorschlag auf den Seiten für Lehrer(innen) / Nähere Infos dazu

Schritt 4 - Vokabeln sortieren

Die Methode zum Anzeigen der Vokabeln funktioniert schon ganz gut, nur leider werden die Vokabeln in der Reihenfolge angezeigt, in der sie in den Array aufgenommen wurden - völlig ungeordnet also.

Übung 11-1-4 (PC)

Schreiben Sie zwei Methoden

public void sortierenDeutsch()

public void sortierenEnglisch()

die den Array der Vokabel-Objekte nach den deutschen bzw. englischen Begriffen aufsteigend sortieren.

Lösungshinweise

Lösungsvorschlag auf den Seiten für Lehrer(innen) / Nähere Infos dazu

Seitenanfang -
Teil 2 dieser Folge...