aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Fischer <florian.fischer@muhq.space>2023-05-07 16:57:33 +0200
committerFlorian Fischer <florian.fischer@muhq.space>2023-05-07 16:57:33 +0200
commitb73b6c509905b095e9316996cafa6350675d37c4 (patch)
treefaf9bc631eceec867e67ed189944c21121f2054b
parent268215a4e51cf35d49d81decc109c786b7b252de (diff)
downloadunterricht-b73b6c509905b095e9316996cafa6350675d37c4.tar.gz
unterricht-b73b6c509905b095e9316996cafa6350675d37c4.zip
last adjustment suggested by ECK
-rw-r--r--Info/10/2/Aufgaben/Datenkapselung_Microblogging.tex4
-rw-r--r--Info/10/2/Aufgaben/Polymorphismus_Beschaeftigte.tex71
-rw-r--r--Info/2023/10D/2_Kurzarbeit/_test.tex2
3 files changed, 55 insertions, 22 deletions
diff --git a/Info/10/2/Aufgaben/Datenkapselung_Microblogging.tex b/Info/10/2/Aufgaben/Datenkapselung_Microblogging.tex
index f3f97028..2757d60d 100644
--- a/Info/10/2/Aufgaben/Datenkapselung_Microblogging.tex
+++ b/Info/10/2/Aufgaben/Datenkapselung_Microblogging.tex
@@ -5,7 +5,9 @@
\textbf{a)} Beschreibe in eigenen Worten die beiden Aspekte des Grundsatzes der Datenkapselung und wie dies in der Programmiersprache Java umgesetzt wird.
-\noindent \textbf{b)} Markiere in folgendem Programmcode die Stellen, an denen der Grundsatz der Datenkapselung nicht umgesetzt wurde und begründe kurz warum.
+\iflehrer{}{\liniert[8mm]{5}}
+
+\noindent \textbf{b)} Markiere in folgendem Programmcode die Stellen, an denen der Grundsatz der Datenkapselung \underline{nicht} umgesetzt wurde und begründe kurz warum.
\begin{minted}[linenos, xleftmargin=1.6em]{java}
public class Benutzeraccount {
diff --git a/Info/10/2/Aufgaben/Polymorphismus_Beschaeftigte.tex b/Info/10/2/Aufgaben/Polymorphismus_Beschaeftigte.tex
index 5bac8e4d..310bc1cf 100644
--- a/Info/10/2/Aufgaben/Polymorphismus_Beschaeftigte.tex
+++ b/Info/10/2/Aufgaben/Polymorphismus_Beschaeftigte.tex
@@ -5,9 +5,9 @@
Du wurdest beauftragt die Gehaltsabrechnung eines Unternehmens in Java zu implementieren.
Das Unternehmen beschäftigt externe Freiberufler, Festangestellte, sowie Manager.
-Für jede Art von Mitarbeiter soll das Monatsgehalt mit der Methode \textit{berechneGehalt()} errechnet und als Rückgabewert zurückgegeben werden.
+Für jede Art von Mitarbeiter soll das Monatsgehalt mit der Methode \\ \textit{berechneGehalt()} errechnet und als Rückgabewert zurückgegeben werden.
-\textbf{a)} Zusätzlich sollen Festangestellte einen individuellen Jahresbonus erhalten, der prozentual mit dem Monatsgehalt ausbezahlt wird.
+\textbf{a)} Festangestellte erhalten einen individuellen Jahresbonus, der prozentual mit dem Monatsgehalt ausbezahlt wird.
Dafür wurde bereits die folgende Klasse \textit{Angestellter} implementiert:
\iftoggle{lehrerversion}{}{\vspace{-0.5cm}}
@@ -33,7 +33,7 @@ class Angestellter extends Mitarbeiter {
\iftoggle{lehrerversion}{}{\vspace{-0.5cm}}
-Erweitere auf dieser Basis das untenstehende Klassendiagramm um die Klasse \textit{Angestellter}, inklusive aller zugehöriger Attribute und Methoden.
+Erweitere auf dieser Basis das untenstehende Klassendiagramm um die Klasse \\ \textit{Angestellter}, mit allen zugehörigen Attribute und Methoden.
Auf die Angabe von Datentypen kann verzichtet werden.
\iftoggle{lehrerversion}{}{\vspace{0.6cm}}
@@ -41,11 +41,11 @@ Auf die Angabe von Datentypen kann verzichtet werden.
% \hspace{-0.25}
\begin{center}
\scalebox{0.85}{
-\begin{tikzpicture}
+\begin{tikzpicture}[umlcd style inherit line/.style={color=\umldrawcolor, {Triangle[open, angle'=60, scale=3]}-}]
\begin{class}[text width=6cm]{Unternehmen}{-0.25,4}
\attribute{Mitarbeiter[] mitarbeiter}
\attribute{int anzahlMitarbeiter}
-\operation{einstellen(mitarbeiter)}
+\operation{void einstellen(mitarbeiter)}
\operation{double berechneGehaltsKosten()}
\end{class}
@@ -76,46 +76,64 @@ Auf die Angabe von Datentypen kann verzichtet werden.
\textbf{b)} Externe Freiberufler werden pro Stunde mit einem individuellen Stundenlohn bezahlt.
Manager erhalten pauschal 10000 Euro.
-Implementiere die Klassen \textit{Externer} und \textit{Manager} mit geeignete Konstruktoren, sowie entsprechenden Methoden \textit{berechneGehalt()}.
-In die Konstruktoren sollen zu allen Attributen der Klasse Werte als Parameter übergeben und zuwiesen werden.
+Vervollständige den untenstehenden Quelltext der Klassen \textit{Externer} und \textit{Manager}.
+Deklariere die jeweiligen Attribute unter Angabe eines sinnvollen Zugriffsmodifikators und ergänze die Konstruktoren um Parameter zur Initialisierung \underline{aller} Attribute (auch die der Oberklasse). Implementiere die Konstruktoren anschließend sowie die jeweiligen Methoden \textit{berechneGehalt()} gemäß der beschriebenen Funktionalität.
+Hinweis: Beachte die Angaben im Klassendiagramm.
% , die mit einem Pauschalbetrag von 10 tausend Euro vergütet werden
% die nach Stunden bezahlt werden,
% \iftoggle{lehrerversion}{\iftrue}{\iffalse}
\iftoggle{lehrerversion}{\iffalse}{\iftrue}
-\begin{minted}[fontsize=\normalsize, bgcolor=white]{java}
+\begin{minted}[fontsize=\normalsize, bgcolor=white, escapeinside=??]{java}
class Externer extends Mitarbeiter {
-
-
+ ?\tikzmark{l1start}? ?\tikzmark{l1end}?
+ ?\tikzmark{l2start}? ?\tikzmark{l2end}?
- public Externer( ) {
-
-
-
+ public Externer(?\tikzmark{l3start}? ?\tikzmark{l3end}?) {
+ ?\tikzmark{l4start}? ?\tikzmark{l4end}?
+ ?\tikzmark{l5start}? ?\tikzmark{l5end}?
+ ?\tikzmark{l6start}? ?\tikzmark{l6end}?
}
public double berechneGehalt() {
-
+ ?\tikzmark{l7start}? ?\tikzmark{l7end}?
+ ?\tikzmark{l8start}? ?\tikzmark{l8end}?
+ ?\tikzmark{l9start}? ?\tikzmark{l9end}?
}
}
class Manager extends Mitarbeiter {
- public Manager( ) {
-
+ public Manager(?\tikzmark{l10start}? ?\tikzmark{l10end}?) {
+ ?\tikzmark{l11start}? ?\tikzmark{l11end}?
}
public double berechneGehalt() {
-
+ ?\tikzmark{l12start}? ?\tikzmark{l12end}?
}
}
\end{minted}
+
+\begin{tikzpicture}[remember picture, overlay]
+ \draw ($(pic cs:l1start) - (0, 0.3)$) -- ($(pic cs:l1end) - (0, 0.3)$);
+ \draw ($(pic cs:l2start) - (0, 0.3)$) -- ($(pic cs:l2end) - (0, 0.3)$);
+ \draw ($(pic cs:l3start) - (0, 0.1)$) -- ($(pic cs:l3end) - (0, 0.1)$);
+ \draw ($(pic cs:l4start) - (0, 0.3)$) -- ($(pic cs:l4end) - (0, 0.3)$);
+ \draw ($(pic cs:l5start) - (0, 0.3)$) -- ($(pic cs:l5end) - (0, 0.3)$);
+ \draw ($(pic cs:l6start) - (0, 0.3)$) -- ($(pic cs:l6end) - (0, 0.3)$);
+ \draw ($(pic cs:l7start) - (0, 0.3)$) -- ($(pic cs:l7end) - (0, 0.3)$);
+ \draw ($(pic cs:l8start) - (0, 0.3)$) -- ($(pic cs:l8end) - (0, 0.3)$);
+ \draw ($(pic cs:l9start) - (0, 0.3)$) -- ($(pic cs:l9end) - (0, 0.3)$);
+ \draw ($(pic cs:l10start) - (0, 0.1)$) -- ($(pic cs:l10end) - (0, 0.1)$);
+ \draw ($(pic cs:l11start) - (0, 0.3)$) -- ($(pic cs:l11end) - (0, 0.3)$);
+ \draw ($(pic cs:l12start) - (0, 0.3)$) -- ($(pic cs:l12end) - (0, 0.3)$);
+\end{tikzpicture}
\fi
\iftoggle{lehrerversion}{}{\newpage}
-\textbf{c)} Folgender Programmcode wurde zusätzlich erstellt. Das Konzept des Polymorphismus besagt, dass bei einem Methodenaufruf durch eine Referenzvariable mit dem Datentyp einer Oberklasse die Methode, wie sie in der konkreten Unterklasse bekannt ist, ausgeführt wird.
-Gib die Ausgaben des Programms in der richtigen Reihenfolge an.
+\textbf{c)} Folgender Programmcode wurde zusätzlich erstellt.
+\iflehrer{}{\vspace{-0.3cm}}
\begin{minted}[]{java}
class Unternehmen {
@@ -143,7 +161,16 @@ class Unternehmen {
return gesamtGehalt;
}
}
+\end{minted}
+\iflehrer{}{\vspace{-0.3cm}}
+
+\noindent Das Konzept des Polymorphismus besagt, dass bei einem Methodenaufruf durch ein Referenzattribut vom Datentyp einer Oberklasse die Methode so ausgeführt wird, wie sie in der konkreten Unterklasse implementiert ist.
+Es werden nun die folgenden Anweisungen ausgeführt.
+
+\iflehrer{}{\vspace{-0.3cm}}
+
+\begin{minted}[]{java}
Unternehmen meineFirma = new Unternehmen();
// Angestellte Gabi Neu mit Gehalt 2500€ und Jahresbonus 1200€
meineFirma.einstellen(new Angestellter("Gabi Neu", 2500, 1200));
@@ -154,6 +181,10 @@ meineFirma.einstellen(new Externer("Ingo Frei", 20, 20));
int gehaltsKosten = meineFirma.berechneGehaltsKosten();
System.out.println("Gesamte Gehaltskosten: " + gehaltsKosten + " Euro");
\end{minted}
+
+\iflehrer{}{\vspace{-0.2cm}}
+
+\noindent Gib die Ausgaben des Programms in der richtigen Reihenfolge an.
\end{Aufg}
\begin{Lsg}
diff --git a/Info/2023/10D/2_Kurzarbeit/_test.tex b/Info/2023/10D/2_Kurzarbeit/_test.tex
index a92c191c..7cd47ef4 100644
--- a/Info/2023/10D/2_Kurzarbeit/_test.tex
+++ b/Info/2023/10D/2_Kurzarbeit/_test.tex
@@ -33,7 +33,7 @@
\input{Aufgaben/Datenkapselung_Microblogging}
\begin{Bearbeitung}
-\liniert[8mm]{10}
+\liniert[8mm]{5}
\end{Bearbeitung}
\clearpage