\documentclass{bschlangaul-aufgabe} \bLadePakete{java,uml} \begin{document} \bAufgabenMetadaten{ Titel = {Aufgabe 2}, Thematik = {OOP/OOD - Reverse Engineering}, Referenz = 66116-2015-F.T2-TA2-A2, RelativerPfad = Examen/66116/2015/03/Thema-2/Teilaufgabe-2/Aufgabe-2.tex, ZitatSchluessel = examen:66116:2015:03, BearbeitungsStand = mit Lösung, Korrektheit = unbekannt, Ueberprueft = {unbekannt}, Stichwoerter = {Klassendiagramm}, EinzelpruefungsNr = 66116, Jahr = 2015, Monat = 03, ThemaNr = 2, TeilaufgabeNr = 2, AufgabeNr = 2, } Leider ist das Klassendiagramm der folgenden Klassen verloren gegangen. Führen Sie ein Reverse Engineering durch und erstellen Sie aus dem Quellcode ein vollständiges UML-Klassendiagramm inklusive aller Klassen, Schnittstellen, Attribute, Methoden, Konstruktoren, Sichtbarkeiten, Assoziationen, Rollennamen, Multiplizitäten, Navigationspfeilen und evtl. Stereotypen. Der Quellcode innerhalb von Methoden und Konstruktoren soll nicht übertragen werden, wohl aber die Methodensignaturen. Assoziationsnamen und deren Leserichtung lassen sich aus dem Quellcode nur schwer erahnen und sollen deshalb ebenfalls weggelassen werden.\index{Klassendiagramm} \footcite{examen:66116:2015:03} \def\j#1{\bJavaExamen{66116}{2015}{03}{reverse/#1}} \j{Display} \j{PixelPainter} \j{HardwareMatrix} \j{DisplayUnion} \j{RGBDisplay} \begin{bAntwort} \begin{tikzpicture} %% % %% \umlclass[y=0,type=interface]{PixelPainter} {} { \~{}set(x : int, y : int, color : Color)\\ \~{}getHeight() : int\\ \~{}getWidth() : int } %% % %% \umlclass[y=-4,type=abstract]{Display} { %\#hardwareMatrix : HardwareMatrix\\ \#lastPaintedX : int \\ \#lastPaintedX : int \\ } { +Display(hardwareMatrix : HardwareMatrix)\\ +getWidth() : int\\ +getHeight() : int\\ +clear()\\ \textit{\#getWidthFactor() : int}\\ \textit{\#getHeightFactor() : int}\\ } \umlimpl{Display}{PixelPainter} %% % %% \umlclass[y=-8,type=abstract]{RGBDisplay} {} { +RGBDisplay(matrix : HardwareMatrix)\\ +set(x : int, y : int, color : Color)\\ \#getWidthFactor() : int\\ \#getHeightFactor() : int\\ } \umlinherit{RGBDisplay}{Display} %% % %% \umlclass[y=-12]{DisplayUnion} { \umlstatic{+MAX\_DISPLAY\_COUNT : int = 50 \{readOnly\}}\\ -currentDisplayCount : int\\ -displays : Display[1..50]\\ } { +DisplayUnion(displays[1..50])\\ +getDisplayCount() : int\\ \#getWidthFactor() : int\\ \#getHeightFactor() : int\\ +set(x : int, y : int, color : Color)\\ } \umlinherit{DisplayUnion}{RGBDisplay} %% % %% \umlclass[x=8,y=-4.1,type=interface]{HardwareMatrix} {} { \~{}set(x : int, y : int, v : int)\\ \~{}getWidth() : int\\ \~{}getHeight() : int\\ } \umlassoc[arg2=\#hardwareMatrix,pos2=0.6]{Display}{HardwareMatrix} \end{tikzpicture} \end{bAntwort} \end{document}