Kurs 20022 objektorientiertes Programmieren

Einsendeaufgaben zu Lerneinheit 4


Programmieraufgabe mit BlueJ: (15 Punkte)

Entwickeln Sie bitte ein Programm zum Extrahieren von Initialen aus einem Namen, der als Zeichenkette eingegeben wird. Das Programm soll mit Hilfe einer Eingabeaufforderung den Namen einlesen. Der Name soll folgendes Format haben:

[Dr.] Vorname ZweiterVorname DritterVorname .... Familienname

[]- heißt optional, d. h. der eingeklammerte Ausdruck kann vorhanden sein oder auch nicht!

'....' heißt, dass Sie nicht im Vorhinein wissen können, aus wie vielen Namensteilen sich dieser Name zusammensetzt!

Das Programm würde bei dem oberen Beispiel Folgendes ausgeben:

V. Z. D. F. !

Hinweise:

Verwenden Sie bitte zum Einlesen der Zeichenkette die Methode readString():

/**
* read a string from the console. The string is
* terminated by a newline
* @return the input string (without the newline)
*/

static String readString()
{ int ch;
String r = "";
boolean done = false;
while (!done)
{ try
{ ch = System.in.read();
if (ch < 0 || (char)ch == '\n')
done = true;
else if ((char)ch != '\r') // weird--it used to do \r\n translation
r = r + (char) ch;
}
catch(java.io.IOException e)
{ done = true;
}
}
return r;
}


Sichtbarkeitsregeln (5 Punkte)

Geben Sie an, welche Variablen, formalen Parameter und Methoden der Klasse A innerhalb der dort definierten Methoden sichtbar sind! Welche Instanzvariablen und Methoden der Klasse A sind in den Klassen B und C sichtbar?

 


Semantiküberprüfung: (5 Punkte)

Bitte überprüfen Sie die folgende Methode auf semantische Fehler! (4 Fehler!)

Diese Methode bekommt zwei einstellige Integer-Werte, addiert sie und gibt das Ergebnis in textueller Form aus. Beispielsweise wird ein Durchlauf für die zwei Werte 5 und 7 wie folgt aussehen:

Ergebnis der Addition ist: Fuenf plus Sieben ergibt: Zwölf

Bitte beachten Sie auch:

  • die Gruppen der switch-Anweisungen sind jeweils gleich aufgebaut, d. h. wenn ein Fehler vorhanden ist, kommt er in der ganzen Gruppe vor.

String stringAddition(int ersterWert, int zweiterWert){
       String wert1=null, wert2=null;

       if (ersterWert > 9 || ersterWert < 0 || zweiterWert > 9 || zweiterWert < 0){ 
            System.out.println("Bitte Zahlen zwischen 0 und 9 angeben!");     
       }
       else{
       switch (ersterWert){
             case 0: wert1 = new String("null ");
             case 1: wert1 = new String("eins");
             case 2: wert1 = new String("zwei ");
             case 3: wert1 = new String("drei ");
             case 4: wert1 = new String("vier ");
             case 5: wert1 = new String("fuenf ");
             case 6: wert1 = new String("sechs ");
             case 7: wert1 = new String("sieben ");
             case 8: wert1 = new String("acht ");
             case 9: wert1 = new String("neun ");
       }
       switch (zweiterWert){
             case 0: wert2 = new String("null ");
             case 1: wert2 = new String("eins");
             case 2: wert2 = new String("zwei ");
             case 3: wert2 = new String("drei ");
             case 4: wert2 = new String("vier ");
             case 5: wert2 = new String("fuenf ");
             case 6: wert2 = new String("sechs ");
             case 7: wert2 = new String("sieben ");
             case 8: wert2 = new String("acht ");
             case 9: wert2 = new String("neun ");
       }

       String ergebnis;
       switch (ersterWert+zweiterWert){
             case 0: 
                      ergebnis = new String("Ergebnis der Addition ist: ") + wert1 + new String(" plus ") + wert2 + new String("ergibt: Null");
                      return (ergebnis);
                      break;  
             case 1: 
                      ergebnis = new String("Ergebnis der Addition ist: ") + wert1 + new String(" plus ") + wert2 + new String("ergibt: Eins");
                      return (ergebnis);
                      break;  
             case 2: 
                      ergebnis = new String("Ergebnis der Addition ist: ") + wert1 + new String(" plus ") + wert2 + new String("ergibt: Zwei");
                      return (ergebnis);
                      break;  
             case 3: 
                      ergebnis = new String("Ergebnis der Addition ist: ") + wert1 + new String(" plus ") + wert2 + new String("ergibt: Drei");
                      return (ergebnis);
                      break;  
             case 4: 
                      ergebnis = new String("Ergebnis der Addition ist: ") + wert1 + new String(" plus ") + wert2 + new String("ergibt: Vier");
                      return (ergebnis);
                      break;  
             case 5: 
                      ergebnis = new String("Ergebnis der Addition ist: ") + wert1 + new String(" plus ") + wert2 + new String("ergibt: Fuenf");
                      return (ergebnis);
                      break;  
             case 6: 
                      ergebnis = new String("Ergebnis der Addition ist: ") + wert1 + new String(" plus ") + wert2 + new String("ergibt: Sechs");
                      return (ergebnis);
                      break;  
             case 7: 
                      ergebnis = new String("Ergebnis der Addition ist: ") + wert1 + new String(" plus ") + wert2 + new String("ergibt: Sieben");
                      return (ergebnis);
                      break;  
             case 8:  
                      ergebnis = new String("Ergebnis der Addition ist: ") + wert1 + new String(" plus ") + wert2 + new String("ergibt: Acht");
                      return (ergebnis);
                      break;  
             case 9:
                      ergebnis = new String("Ergebnis der Addition ist: ") + wert1 + new String(" plus ") + wert2 + new String("ergibt: Neun");
                      return (ergebnis);
                      break;  
             case 10:
                      ergebnis = new String("Ergebnis der Addition ist: ") + wert1 + new String(" plus ") + wert2 + new String("ergibt: Zehn");
                      return (ergebnis);
                      break;  
             case 11:
                      ergebnis = new String("Ergebnis der Addition ist: ") + wert1 + new String(" plus ") + wert2 + new String("ergibt: Elf");
                      return (ergebnis);
                      break;  
             case 12:
                      ergebnis = new String("Ergebnis der Addition ist: ") + wert1 + new String(" plus ") + wert2 + new String("ergibt: Zwölf");
                      return (ergebnis);
                      break;  
             case 13:
                      ergebnis = new String("Ergebnis der Addition ist: ") + wert1 + new String(" plus ") + wert2 + new String("ergibt: Dreizehn");
                      return (ergebnis);
                      break;  
             case 14:
                      ergebnis = new String("Ergebnis der Addition ist: ") + wert1 + new String(" plus ") + wert2 + new String("ergibt: Vierzehn");
                      return (ergebnis);
                      break;  
             case 15:
                      ergebnis = new String("Ergebnis der Addition ist: ") + wert1 + new String(" plus ") + wert2 + new String("ergibt: Fuenfzehn");
                      return (ergebnis);
                      break;  
             case 16:
                      ergebnis = new String("Ergebnis der Addition ist: ") + wert1 + new String(" plus ") + wert2 + new String("ergibt: Sechszehn");
                      return (ergebnis);
                      break;  
             case 17:
                      ergebnis = new String("Ergebnis der Addition ist: ") + wert1 + new String(" plus ") + wert2 + new String("ergibt: Siebzehn");
                      return (ergebnis);
                      break;  
             case 18:
                      ergebnis = new String("Ergebnis der Addition ist: ") + wert1 + new String(" plus ") + wert2 + new String("ergibt: Achtzehn");
                      return (ergebnis);
                      break;  
             default: return("");
       }
   }
}