Benutzer-Werkzeuge

Webseiten-Werkzeuge


polymorphismus:abstractclasses:problems

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
polymorphismus:abstractclasses:problems [2023/03/13 07:44] Martin Pabstpolymorphismus:abstractclasses:problems [2023/03/14 10:48] (aktuell) – [Hauptprogramm] Martin Pabst
Zeile 21: Zeile 21:
    String rufname;    String rufname;
    String familienname;    String familienname;
-   boolean weiblich;+   char geschlecht                // Werte 'm', 'w' oder 'd'
    Textgenerator textgenerator;    Textgenerator textgenerator;
  
Zeile 33: Zeile 33:
 } }
 </code> </code>
 +Bei jeder Person wird ein Textgenerator-Objekt gespeichert, das ihr passt.
 </WRAP> </WRAP>
 +
 +
 +===== Hauptprogramm ======
 +<HTML>
 +
 +<div class="java-online" style="height: 70vh; width: 100%" data-java-online="{'withBottomPanel': true, 'id': 'Konzerteinladung1'}">
 +
 +<script type="text/plain" title="Hauptprogramm.java">
 +Textgenerator formell = new TextgeneratorFormell();
 +Textgenerator vertraut = new TextgeneratorVertraut();
 +
 +Person[] personen = {
 +   new Person("Luise", "Lohengrin", 'w', formell),
 +   new Person("Max", "Müller", 'm', vertraut),
 +   new Person("Dieter", "Denkmal", 'm', formell),
 +   new Person("Bettina", "Berger", 'w', formell)
 +};
 +
 +
 +for (int i = 0; i < personen.length; i++) {
 +   Person p = personen[i];
 +   p.textgenerator.anrede(p);
 +   println("...");
 +   p.textgenerator.schlusssatz(p);
 +   println();
 +}
 +</script>
 +
 +<script type="text/plain" title="Textgenerator, Person.java">
 +abstract class Textgenerator {
 +
 +   abstract void anrede(Person p);
 +   abstract void schlusssatz(Person p);
 +   
 +}
 +
 +class Person {
 +   String rufname;
 +   String familienname;
 +   char geschlecht;        // Werte: 'm', 'w', 'd'
 +   Textgenerator textgenerator;
 +
 +   Person(String rufname, String familienname, char geschlecht,
 +      Textgenerator textgenerator) {
 +      this.rufname = rufname;
 +      this.familienname = familienname;
 +      this.geschlecht = geschlecht;
 +      this.textgenerator = textgenerator;
 +   }
 +}
 +</script>
 +<script type="text/plain" title="Textgenerator formell">
 +class TextgeneratorFormell extends Textgenerator {
 +   
 +  public void anrede(Person p) {
 +      
 +      switch(p.geschlecht) {
 +         case 'm'
 +            print("Sehr geehrter Herr " + p.familienname + ", "); 
 +            break;
 +         case 'w'
 +            print("Sehr geehrte Frau "+ p.familienname + ", ");
 +            break;
 +         case 'd'
 +            print("Guten Tag, " + p.rufname + " " + p.familienname + ", ");             
 +            break;
 +         default : 
 +             
 +      }
 +      
 +  }
 +
 +  public void schlusssatz(Person p) {
 +      println("Mit freundlichen Grüßen");
 +
 +  }
 +
 +}
 +
 +</script>
 +</div>
 +
 +</HTML>
 +
 +===== Aufgaben =====
 +<WRAP center round todo 80%>
 +  * a) Zeichne ein Klassendiagramm (Klassen mit Methoden, ohne Attribute).
 +  * b) Schreibe die Klasse ''TextgeneratorVertraut'', die den Text so ausgibt, wie Du ihn einer anderen Schülerin/einem anderen Schüler schreiben würdest.
 +  * c) Ergänze die Textgeneratoren durch eine Methode ''hauptteil(Person p)'', die den Hauptteil des Briefes ausgibt. Dabei wird es Teile geben, die in jeder Textform gleich sind (z.B. Datum und Uhrzeit des Konzertes). Sie sollen natürlich nicht in redundanter Weise in allen Unterklassen der Klasse ''Textgenerator'' immer wieder auftauchen. Überlege, wo Du diese Textteile geeignet speichern könntest, damit sie in allen Unterklassen von ''Textgenerator'' zur Verfügung stehen.
 +</WRAP>
 +
  
polymorphismus/abstractclasses/problems.1678693470.txt.gz · Zuletzt geändert: 2023/03/13 07:44 von Martin Pabst

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki