polymorphismus:abstractclasses:problems
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
polymorphismus:abstractclasses:problems [2023/03/12 20:52] – angelegt Martin Pabst | polymorphismus:abstractclasses:problems [2023/03/14 10:48] (aktuell) – [Hauptprogramm] Martin Pabst | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | ====== 4.4 Aufgaben zum Kapitel Polymorphismus | + | ====== 4.4 Projekt: Konzerteinladung |
- | ===== 1. | + | ===== Aufgabenstellung ===== |
+ | <WRAP center round todo 80%> | ||
+ | Der Projektchor der Schule veranstaltet ein Sommerkonzert. Dazu wollen die Schülerinnen und Schüler des Chors Eltern, Freunde und Förderer der Schule per Mail einladen. Damit sie sich angesprochen fühlen, soll der Mailtext möglichst individuell und persönlich gestaltet werden. \\ \\ | ||
+ | Wir schreiben im folgenden ein kleines Programm, das die Daten der eingeladenen Gäste in Objekten speichert und damit dann personalisierte Mailtexte generiert. | ||
+ | </ | ||
+ | |||
+ | ===== Die Klasse Textgenerator ===== | ||
+ | <WRAP center round info 80%> | ||
+ | Zur Ausgabe der Mailtexte erstellen wir eine Klasse '' | ||
+ | Die Methoden der Klasse Textgenerator kennzeichnen wir als abstrakt. Sie werden in Unterklassen implementiert, | ||
+ | <code java> | ||
+ | abstract class Textgenerator { | ||
+ | |||
+ | | ||
+ | | ||
+ | |||
+ | } | ||
+ | |||
+ | class Person { | ||
+ | | ||
+ | | ||
+ | char geschlecht; | ||
+ | | ||
+ | |||
+ | | ||
+ | Textgenerator textgenerator) { | ||
+ | this.rufname = rufname; | ||
+ | this.familienname = familienname; | ||
+ | this.weiblich = weiblich; | ||
+ | this.textgenerator = textgenerator; | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | Bei jeder Person wird ein Textgenerator-Objekt gespeichert, | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== Hauptprogramm ====== | ||
+ | < | ||
+ | |||
+ | <div class=" | ||
+ | |||
+ | <script type=" | ||
+ | Textgenerator formell = new TextgeneratorFormell(); | ||
+ | Textgenerator vertraut = new TextgeneratorVertraut(); | ||
+ | |||
+ | Person[] personen = { | ||
+ | new Person(" | ||
+ | new Person(" | ||
+ | new Person(" | ||
+ | new Person(" | ||
+ | }; | ||
+ | |||
+ | |||
+ | for (int i = 0; i < personen.length; | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | <script type=" | ||
+ | abstract class Textgenerator { | ||
+ | |||
+ | | ||
+ | | ||
+ | |||
+ | } | ||
+ | |||
+ | class Person { | ||
+ | | ||
+ | | ||
+ | char geschlecht; | ||
+ | | ||
+ | |||
+ | | ||
+ | Textgenerator textgenerator) { | ||
+ | this.rufname = rufname; | ||
+ | this.familienname = familienname; | ||
+ | this.geschlecht = geschlecht; | ||
+ | this.textgenerator = textgenerator; | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | <script type=" | ||
+ | class TextgeneratorFormell extends Textgenerator { | ||
+ | |||
+ | public void anrede(Person p) { | ||
+ | |||
+ | switch(p.geschlecht) { | ||
+ | case ' | ||
+ | print(" | ||
+ | break; | ||
+ | case ' | ||
+ | print(" | ||
+ | break; | ||
+ | case ' | ||
+ | print(" | ||
+ | break; | ||
+ | | ||
+ | |||
+ | } | ||
+ | |||
+ | } | ||
+ | |||
+ | public void schlusssatz(Person p) { | ||
+ | | ||
+ | |||
+ | } | ||
+ | |||
+ | } | ||
+ | |||
+ | </ | ||
+ | </ | ||
+ | |||
+ | </ | ||
+ | |||
+ | ===== Aufgaben ===== | ||
+ | <WRAP center round todo 80%> | ||
+ | * a) Zeichne ein Klassendiagramm (Klassen mit Methoden, ohne Attribute). | ||
+ | * b) Schreibe die Klasse '' | ||
+ | * c) Ergänze die Textgeneratoren durch eine Methode '' | ||
+ | </ | ||
+ |
polymorphismus/abstractclasses/problems.1678654353.txt.gz · Zuletzt geändert: 2023/03/12 20:52 von Martin Pabst