\documentclass{bschlangaul-aufgabe} \bLadePakete{java,uml} \begin{document} \bAufgabenMetadaten{ Titel = {Aufgabe 3 (Objektorientierte Implementierung)}, Thematik = {Fußballweltmeisterschaft}, Referenz = 46116-2018-F.T1-TA1-A3, RelativerPfad = Examen/46116/2018/03/Thema-1/Teilaufgabe-1/Aufgabe-3.tex, ZitatSchluessel = examen:46116:2018:03, BearbeitungsStand = mit Lösung, Korrektheit = unbekannt, Ueberprueft = {unbekannt}, Stichwoerter = {Klassendiagramm, Implementierung in Java, Feld (Array), main-Methode}, EinzelpruefungsNr = 46116, Jahr = 2018, Monat = 03, ThemaNr = 1, TeilaufgabeNr = 1, AufgabeNr = 3, } \let\j=\bJavaCode Für\footcite{examen:46116:2018:03} die nächste Fußballweltmeisterschaft möchte ein Wettbüro ein Programm zur Verwaltung von Spielern, Vereinen und (National-)Mannschaften entwickeln. Dazu wurde bereits das folgende UML-Klassendiagramm\index{Klassendiagramm} entworfen.\footcite{oomup:pu:4} \begin{center} \begin{tikzpicture} \umlclass{Mannschaft}{ -land: String\\ -anzahlSpieler: Integer }{ +Mannschaft(land: String)\\ +hinzufuegen(s: Spieler)\\ +torschuetzenkoenig():String } \umlclass[right=1.5cm of Mannschaft]{Spieler}{ -name: String -tore: Integer }{ +Spieler(name: String, verein: Verein)\\ +getName(): String\\ +getTore(): Integer\\ +schiesseTor()\\ +wechsleVerein(neuerVerein: Verein) } \umlclass[below=1cm of Spieler]{Verein}{ -name: String }{ +Verein(name:String)\\ +getName():String } \umluniassoc[mult2=0..20,arg2=-team,pos2=0.6]{Mannschaft}{Spieler} \umluniassoc[mult2=0..20,arg2=-team]{Spieler}{Verein} \end{tikzpicture} \end{center} \noindent Es kann angenommen werden, dass die Klasse \j{Verein} bereits implementiert ist. In den folgenden Implementierungsaufgaben\index{Implementierung in Java} können Sie eine objektorientierte Programmiersprache Ihrer Wahl verwenden. Die verwendete Sprache ist anzugeben. Zu beachten sind jeweils die im Klassendiagramm angegebenen Sichtbarkeiten von Attributen, Rollennamen, Konstruktorn und Operationen. \begin{enumerate} %% % a) %% \item Es ist eine Implementierung der Klasse \j{Spieler} anzugeben. Der Konstruktor soll die Instanzvariablen mit den gegebenen Parametern initialisieren, wobei die. Anzahl der Tore nach der Objekterzeugung gleich 0 sein soll. Ansonsten kann die Funktionalität der einzelnen Operationen aus deren Namen geschlossen werden. \begin{bAntwort} \bJavaExamen{46116}{2018}{03}{verein/Spieler} \end{bAntwort} %% % b) %% \item Es ist eine Implementierung der Klasse \j{Mannschaft} anzugeben. Der Konstruktor soll das Land initialisieren, die Anzahl der Spieler auf 0 setzen und das Team mit einem noch „leeren “Array\index{Feld (Array)} der Länge 20 initialisieren. Das Team soll mit der Methode \j{hinzufuegen} um einen Spieler erweitert werden. Die Methode \j{torschuetzenkoenig} soll den Namen eines Spielers aus dem Team zurückgeben, der die meisten Tore für die Mannschaft geschossen hat. Ist das für mehrere Spieler der Fall, dann kann der Name eines beliebigen solchen Spielers zurückgegeben werden. Ist noch kein Spieler im Team, dann soll der String \j{"Kein Spieler vorhanden"} zurückgegeben werden. \begin{bAntwort} \bJavaExamen{46116}{2018}{03}{verein/Mannschaft} \end{bAntwort} %% % c) %% \item Schreiben Sie den Rumpf einer \j{main}-Methode\index{main-Methode}, so dass nach Ausführung der Methode eine deutsche Mannschaft existiert mit zwei Spielern Namens \j{"Hugo Meier"} und \j{"Frank Huber"}. Beide Spieler sollen zum selben Verein \j{"FC Staatsexamen"} gehören. \j{"Hugo Meier"} soll nach Aufnahme in die deutsche Mannschaft genau ein Tor geschossen haben, während \j{"Frank Huber"} noch kein Tor erzielt hat. (Wir abstrahieren hier von der Realität, in der ein 2-er Team noch gar nicht spielbereit ist.) \begin{bAntwort} \bJavaExamen{46116}{2018}{03}{verein/Verein} \end{bAntwort} \end{enumerate} \end{document}