\documentclass{bschlangaul-aufgabe} \bLadePakete{syntax,uml,java} \begin{document} \bAufgabenMetadaten{ Titel = {Aufgabe 5}, Thematik = {Webshop}, Referenz = 66116-2021-F.T2-TA1-A5, RelativerPfad = Examen/66116/2021/03/Thema-2/Teilaufgabe-1/Aufgabe-5.tex, ZitatSchluessel = examen:66116:2021:03, BearbeitungsStand = TeX-Fehler, Korrektheit = unbekannt, Ueberprueft = {unbekannt}, Stichwoerter = {Implementierung in Java, Sequenzdiagramm}, EinzelpruefungsNr = 66116, Jahr = 2021, Monat = 03, ThemaNr = 2, TeilaufgabeNr = 1, AufgabeNr = 5, } \begin{enumerate} %% % a) %% \item Nennen Sie vier Programmierparadigmen. \index{Implementierung in Java} \footcite{examen:66116:2021:03} \begin{bAntwort} \begin{itemize} \item Imperative Programmierung \item Prozedurale Programmierung \item Funktionale Programmierung \item Objektorientiere Programmierung \end{itemize} \bFussnoteUrl{https://de.wikipedia.org/wiki/Programmierparadigma\#Strukturierte\_Programmierung} \end{bAntwort} %% % b) %% \item Erläutern Sie die Begriffe \emph{Overloading} und \emph{Overriding}, sowie deren Unterschiede. \begin{bAntwort} \begin{itemize} \item Beim Überladen muss die Methode eine andere Signatur haben, beim Überschreiben dieselbe Signatur. \item Die Intention beim Überladen ist, Methode zu erweitern, beim Überschreiben die Methode vollständig zu ersetzen. \item Überladen der Methode wird verwendet, um den Polymorphismus der Kompilierzeit zu erreichen. Das Überschreiben der Methode wird verwendet, um einen Laufzeit-Polymorphismus zu erreichen. Bei der Methodenüberladung weiß der Compiler, welches Objekt welcher Klasse zum Zeitpunkt der Kompilierung zugewiesen wurde. In der Methodenüberschreibung sind diese Informationen jedoch erst zur Laufzeit bekannt. \item Das Überladen von Methoden findet in derselben Klasse statt, während das Überschreiben in einer von einer Basisklasse abgeleiteten Klasse stattfindet.\footcite[Seite 27-28]{oomup:fs:3} \end{itemize} \bFussnoteUrl{https://gadget-info.com/difference-between-method-overloading} \end{bAntwort} %% % c) %% \item Erläutern Sie, wie sich zentrale und dezentrale Versionsverwaltung unterscheiden. \begin{bAntwort} Beim der dezentralen Versionsverwaltung hat jede/r EntwicklerIn das komplette Repository mit seiner kompletten History lokal gespeichert und kann diese dann mit anderen Repositories abgleichen. Bei der zentralen Versionsverwaltung gibt es einen zentralen Server, der die komplette History vorhält. \end{bAntwort} %% % d) %% \item Erstellen Sie ein Sequenzdiagramm zur Methode \bJavaCode{main} der Klasse Webshop. \index{Sequenzdiagramm} Hinweise: \begin{itemize} \item Arithmetische Operationen müssen nicht weiter aufgelöst werden. \item Listenoperationen müssen nicht explizit dargestellt werden. \item Auf das Zeichnen einer passiven Lebenslinie muss nicht geachtet werden. \item Übertragen Sie das untenstehende Diagramm als Ausgangspunkt in Ihren Bearbeitungsbogen. \end{itemize} \end{enumerate} \bJavaExamen{66116}{2021}{03}{webshop/Webshop} \bJavaExamen{66116}{2021}{03}{webshop/Artikel} \bJavaExamen{66116}{2021}{03}{webshop/Bestellung} \newpage \begin{bAntwort} \begin{tikzpicture}[scale=0.5,transform shape] \begin{umlseqdiag} \umlobject[class=Webshop]{w} \umlcreatecall[class=Bestellung]{w}{b1} \umlcreatecall[class=Artikel]{w}{a1} \begin{umlcall}[op=setName("Taschenrechner")]{w}{a1} \end{umlcall} \begin{umlcall}[op=setPrice(10)]{w}{a1} \end{umlcall} \begin{umlcall}[op=addArticle(a1)]{w}{b1} \begin{umlcall}[op=getPrice(),return=10]{b1}{a1} \end{umlcall} \end{umlcall} \umlcreatecall[class=Bestellung]{w}{b2} \umlcreatecall[class=Artikel]{w}{a2} \begin{umlcall}[op=setName("Lineal")]{w}{a2} \end{umlcall} \begin{umlcall}[op=setPrice(2.5)]{w}{a2} \end{umlcall} \umlcreatecall[class=Artikel]{w}{a3} \begin{umlcall}[op=setName("Bleistift")]{w}{a3} \end{umlcall} \begin{umlcall}[op=setPrice(0.7)]{w}{a3} \end{umlcall} \begin{umlcall}[op=addArticle(a3)]{w}{b2} \begin{umlcall}[op=getPrice(),return=0.7]{b2}{a3} \end{umlcall} \end{umlcall} \begin{umlcall}[op=addArticle(a2)]{w}{b1} \begin{umlcall}[op=getPrice(),return=2.5]{b1}{a2} \end{umlcall} \end{umlcall} \begin{umlcall}[op=getSize(),return=2]{w}{b1} \end{umlcall} \begin{umlcall}[op=getPrice(),return=0.7]{w}{b2} \end{umlcall} \end{umlseqdiag} \end{tikzpicture} \end{bAntwort} \end{document}