Inhaltsverzeichnis
4.4 Projekt: Konzerteinladung
Aufgabenstellung
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
Zur Ausgabe der Mailtexte erstellen wir eine Klasse Textgenerator
mit Methoden zur Ausgabe der Anrede (z.B. "Sehr geehrter Herr …"), des Schlusssatzes (z.B. "Mit freundlichen Grüßen…") und im weiteren Verlauf dann auch noch anderer Textpassagen. Diese Methoden bekommen als Parameter ein Person-Objekt übergeben, das ihnen die Daten zur eingeladenen Person liefert.
Die Methoden der Klasse Textgenerator kennzeichnen wir als abstrakt. Sie werden in Unterklassen implementiert, die für die verschiedenen Arten der Anrede (formell, vertraut, …) zuständig sein werden.
abstract class Textgenerator { abstract void anrede(Person p); abstract void schlusssatz(Person p); } class Person { String rufname; String familienname; char geschlecht; // Werte 'm', 'w' oder 'd' Textgenerator textgenerator; Person(String rufname, String familienname, boolean weiblich, Textgenerator textgenerator) { this.rufname = rufname; this.familienname = familienname; this.weiblich = weiblich; this.textgenerator = textgenerator; } }
Bei jeder Person wird ein Textgenerator-Objekt gespeichert, das ihr passt.
Hauptprogramm
Aufgaben
- 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 KlasseTextgenerator
immer wieder auftauchen. Überlege, wo Du diese Textteile geeignet speichern könntest, damit sie in allen Unterklassen vonTextgenerator
zur Verfügung stehen.