Home > Informatik > Stufe Q1 > 11. Vokabelliste

Übung 11.1-3

Die Aufgabe

Übung 11-1-3 (PC)

Ergänzen Sie die Klasse Vokabelliste um 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.

Ein Lösungshinweis

    public String englisch(String deutsch)
    // sondierende Methode der Klasse Vokabelliste
    // liefert engl. Uebersetzung des Parameters
    {
       ##############
       
       for (######; ######; ######)
       {
           d = liste[vok].gibDeutsch();
           e = liste[vok].gibEnglisch(); 
           if (######)
              return #####;
       }
       return #####;
    }

Erläuterungen

Hier sehen Sie eine noch nicht ganz lauffähige Lösung der eigentlichen Aufgabe. Die Arrayelemente werden der Reihe nach "auseinandergenommen"; die jeweilige deutsche Vokabel wird in der lokalen Variablend gespeichert, die englische Übersetzung in der lokalen Variablen e. Da die Attribute der Klasse Vokabel als private gekennzeichnet worden sind (Datenkapselung), kann man nur mit Hilfe sondierender Methoden auf diese Attribute zugreifen. Diese sondierenden Methoden sind allerdings noch nicht vorhanden; Sie müssen die Klasse Vokabel entsprechend ergänzen!

Wenn bei einem der Schleifendurchgänge der deutsche String d mit dem Parameter deutsch übereinstimmt, so ist die Vokabel im Array gefunden worden, und die englische Übersetzung e wird mittels return zurückgeliefert. Die Methode wird dadurch automatisch beendet.

Allerdings kann man in Java nicht einfach schreiben

if (deutsch == d) ...

Ein solcher Aufruf würde überprüfen, ob beide Variablen die gleiche Speicheradresse haben, aber nicht, ob die Inhalte der beiden Variablen identisch sind. Wenn beide Variablen an der gleichen Adresse stehen, sollten sie natürlich den gleichen Inhalt haben. Daher funktioniert der obige Aufruf auch manchmal, aber eben nicht immer zuverlässig. Java stellt für das Vergleichen von zwei Strings bessere Methoden zur Verfügung. Eine dieser Methoden heißt equals(), sie wird von der Klasse String bereit gestellt.

Angenommen, aString und bString sind zwei Variablen der Klasse String, dann können Sie zum Beispiel schreiben:

    if aString.equals(bString) 
       System.out.println("aStrein ist gleich bString"); 
    else
       System.out.println("aString ist nicht gleich bString");

Testprogramm

public class Test
{
    private Vokabelliste liste;
    
    public Test()
    {
       liste = new Vokabelliste();
       
       liste.hinzufuegen("Hund"   ,"dog");
       liste.hinzufuegen("Katze"  ,"cat");
       liste.hinzufuegen("Schwein","pig");
       liste.hinzufuegen("Kuh"    ,"cow");
       liste.hinzufuegen("Adler"  ,"eagle");
       liste.hinzufuegen("Spatz"  ,"sparrow");
       liste.hinzufuegen("Igel"   ,"hedgehog");
       liste.hinzufuegen("Zebra"  ,"zebra");
       liste.hinzufuegen("Loewe"  ,"lion");
       liste.hinzufuegen("Tiger"  ,"tiger");
       liste.hinzufuegen("Ratte"  ,"rat");
       liste.hinzufuegen("Falke"  ,"falcon"); 
        
       System.out.println("Übersetzung von Hund ist "  + liste.english("Hund"));
       System.out.println("Übersetzung von Kuh ist "   + liste.english("Kuh"));
       System.out.println("Übersetzung von Igel ist "  + liste.english("Igel"));  
       System.out.println("Übersetzung von Huuund ist "+ liste.english("Huuund"));  
       System.out.println("Übersetzung von Ratte ist " + liste.english("Ratte"));  
    }
}

Mit diesem Testprogramm können Sie die Vokabelliste nun testen, ohne dass Sie in der BlueJ-Umgebung ständig neue Vokabeln eintippen müssen.

Zunächst legt das Testprogramm eine neue leere Vokabelliste an, dann werden zwölf Vokabeln hinzugefügt.

Anschließend erfolgt der eigentliche Test der Übersetzungs-Methode. Bei "Huuund" müsste die Methode eine entsprechende Fehlermeldung ausgeben, da die Vokabel "Huuund" nicht in der Liste vorkommt.

Flussdiagramm

Wenn Sie nicht mehr wissen, wie man ein einfaches Flussdiagramm zeichnet, gehen Sie bitte auf den Lernbaustein "Flussdiagramme".