aboutsummaryrefslogtreecommitdiff
path: root/Info
diff options
context:
space:
mode:
authorFlorian Fischer <florian.fischer@muhq.space>2023-04-27 12:30:48 +0200
committerFlorian Fischer <florian.fischer@muhq.space>2023-04-27 12:30:48 +0200
commitb507489fd50a6193c73ad6693e22c2ba3aa9a54a (patch)
tree2572f300f97528211c76bbcf5dee1c2eb6703985 /Info
parent6d498ffc73443521a8d5a72c955e021bcac225b2 (diff)
downloadunterricht-b507489fd50a6193c73ad6693e22c2ba3aa9a54a.tar.gz
unterricht-b507489fd50a6193c73ad6693e22c2ba3aa9a54a.zip
change to better reflect the lesson progress
* Do not ask about Polymorphism. * Fix solution * Change data type notation in class diagram * A lot of small tweaks
Diffstat (limited to 'Info')
-rw-r--r--Info/10/2/Aufgaben/Polymorphismus_Beschaeftigte.tex128
1 files changed, 62 insertions, 66 deletions
diff --git a/Info/10/2/Aufgaben/Polymorphismus_Beschaeftigte.tex b/Info/10/2/Aufgaben/Polymorphismus_Beschaeftigte.tex
index 585219d5..947160f3 100644
--- a/Info/10/2/Aufgaben/Polymorphismus_Beschaeftigte.tex
+++ b/Info/10/2/Aufgaben/Polymorphismus_Beschaeftigte.tex
@@ -1,5 +1,5 @@
\renewcommand{\AnzahlPunkte}{15} %%Anzahl der Punkte festlegen
-\renewcommand{\Verteilung}{3 + 4 + 4 + 4 BE} %%Anzahl der Punkte festlegen
+\renewcommand{\Verteilung}{3 + 8 + 4 BE} %%Anzahl der Punkte festlegen
\begin{Aufg}
@@ -10,9 +10,9 @@ Für jede Art von Mitarbeiter soll das Monatsgehalt mit der Methode \textit{bere
\textbf{a)} Zusätzlich sollen Festangestellte einen individuellen Jahresbonus erhalten, der prozentual mit dem Monatsgehalt ausbezahlt wird.
Dafür wurde bereits die folgende Klasse \textit{Angestellter} implementiert:
-\vspace{-0.5cm}
+\iftoggle{lehrerversion}{}{\vspace{-0.5cm}}
+
\begin{center}
-\begin{minipage}{0.7\textwidth}
\begin{minted}[]{java}
class Angestellter extends Mitarbeiter {
private double gehalt;
@@ -29,47 +29,53 @@ class Angestellter extends Mitarbeiter {
}
}
\end{minted}
-\end{minipage}
\end{center}
+\iftoggle{lehrerversion}{}{\vspace{-0.5cm}}
+
Erweitere auf dieser Basis das untenstehende Klassendiagramm um die Klasse \textit{Angestellter}, inklusive aller zugehöriger Attribute und Methoden.
Auf die Angabe von Datentypen kann verzichtet werden.
-\vspace{0.5cm}
+\iftoggle{lehrerversion}{}{\vspace{0.6cm}}
% \hspace{-0.25}
+\begin{center}
+\scalebox{0.85}{
\begin{tikzpicture}
-\begin{class}[text width=5.5cm]{Unternehmen}{-0.25,4}
-\attribute{mitarbeiter: Mitarbeiter[]}
+\begin{class}[text width=6cm]{Unternehmen}{-0.25,4}
+\attribute{Mitarbeiter[] mitarbeiter}
+\attribute{int anzahlMitarbeiter}
\operation{einstellen(mitarbeiter)}
-\operation{berechneGehaltsKosten()}
+\operation{double berechneGehaltsKosten()}
\end{class}
-\begin{class}[text width=4cm]{Mitarbeiter}{7, 4}
-\attribute{name: String}
-\operation{gibName()}
-\operation{berechneGehalt()}
+\begin{class}[text width=4.5cm]{Mitarbeiter}{7.5, 4}
+\attribute{String name}
+\operation{String gibName()}
+\operation{double berechneGehalt()}
\end{class}
\association{Unternehmen}{hat >}{1}{Mitarbeiter}{n}{}
-\begin{class}[text width=3.5cm]{Manager}{2,-1}
+\begin{class}[text width=4.5cm]{Manager}{6,-1}
\inherit{Mitarbeiter}
-\operation{berechneGehalt()}
+\operation{double berechneGehalt()}
\end{class}
\begin{class}[text width=4.5cm]{Externer}{11,-1}
\inherit{Mitarbeiter}
-\attribute{stunden: double}
-\attribute{stundenlohn: double}
-\operation{berechneGehalt()}
+\attribute{double stunden}
+\attribute{double stundenlohn}
+\operation{double berechneGehalt()}
\end{class}
\end{tikzpicture}
+}
+\end{center}
\iftoggle{lehrerversion}{}{\newpage}
\textbf{b)} Externe Freiberufler werden pro Stunde mit einem individuellen Stundenlohn bezahlt.
-Manager erhalten pauschal 10 tausend Euro.
+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.
@@ -77,12 +83,12 @@ In die Konstruktoren sollen zu allen Attributen der Klasse Werte als Parameter Ã
% die nach Stunden bezahlt werden,
% \iftoggle{lehrerversion}{\iftrue}{\iffalse}
\iftoggle{lehrerversion}{\iffalse}{\iftrue}
-\begin{minted}[fontsize=\small, bgcolor=white]{java}
+\begin{minted}[fontsize=\normalsize, bgcolor=white]{java}
class Externer extends Mitarbeiter {
- public Externer( ) {
+ public Externer( ) {
@@ -105,13 +111,13 @@ class Manager extends Mitarbeiter {
\end{minted}
\fi
-\textbf{c)} Folgender Programmcode wurde zusätzlich erstellt. Markiere die Stellen an denen das Konzept des Polymorphismus verwendet wird und erkläre kurz dessen konkrete Auswirkung in diesem Programmcode.
+\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.
-\begin{minted}[
- breaklines,
- linenos,
- xleftmargin=1.6em,
-]{java}
+
+\begin{minted}[]{java}
class Unternehmen {
private Mitarbeiter[] mitarbeiter;
private double anzahlMitarbeiter;
@@ -137,30 +143,18 @@ class Unternehmen {
return gesamtGehalt;
}
}
-\end{minted}
-
-\iftoggle{lehrerversion}{}{
- \vspace{-0.5cm}
- \liniert[8mm]{4}
-}
-\vspace{-0.35cm}
-\textbf{d)} Das Programm wurde für eine konkrete Firma erweitert:
-
-\begin{minted}[]{java}
Unternehmen meineFirma = new Unternehmen();
// Angestellte Gabi Neu mit Gehalt 2500€ und Jahresbonus 1200€
meineFirma.einstellen(new Angestellter("Gabi Neu", 2500, 1200));
// Managerin Vanessa Boss
meineFirma.einstellen(new Manager("Vanessa Boss"));
-// Externer Ingo Frei mit 40 Stunden bei einem Stundenlohn von 20€
-meineFirma.einstellen(new Externer("Ingo Frei", 40, 20));
+// Externer Ingo Frei mit 20 Stunden im Monat bei einem Stundenlohn von 20€
+meineFirma.einstellen(new Externer("Ingo Frei", 20, 20));
int gehaltsKosten = meineFirma.berechneGehaltsKosten();
System.out.println("Gesamte Gehaltskosten: " + gehaltsKosten + " Euro");
\end{minted}
\end{Aufg}
-\vspace{-0.5cm}
-Gib die Ausgaben des Programms in der richtigen Reihenfolge an.
\begin{Lsg}
a) Angestellter Klasse mit (gehalt, jahresbonus, berechneGehalt) (1BE); Korrekte Vererbung (1BE); korrektes UML (1BE) \\
@@ -168,70 +162,72 @@ Halbes BE Abzug pro Fehler.
\begin{tikzpicture}
\begin{class}[text width=7cm]{Unternehmen}{5,8}
-\attribute{mitarbeiter: Mitarbeiter[]}
+\attribute{int anzahlMitarbeiter}
\operation{einstellen(mitarbeiter)}
-\operation{berechneGehaltsKosten()}
+\operation{double berechneGehaltsKosten()}
\end{class}
\begin{class}[text width=4cm]{Mitarbeiter}{5,3}
-\attribute{name: String}
-\operation{gibName()}
+\attribute{String name}
+\operation{String gibName()}
\end{class}
\begin{class}[text width=4cm]{Manager}{0,0}
\inherit{Mitarbeiter}
-\operation{berechneGehalt()}
+\operation{double berechneGehalt()}
\end{class}
\begin{class}[text width=4cm]{Externer}{5,0}
\inherit{Mitarbeiter}
-\attribute{stunden: double}
-\attribute{stundenlohn: double}
-\operation{berechneGehalt()}
+\attribute{double stunden}
+\attribute{double stundenlohn}
+\operation{double berechneGehalt()}
\end{class}
\begin{class}[text width=4cm]{Angestellter}{10,0}
\inherit{Mitarbeiter}
-\attribute{gehalt: double}
-\attribute{jahresbonus: double}
-\operation{berechneGehalt()}
+\attribute{double gehalt}
+\attribute{double jahresbonus}
+\operation{double berechneGehalt()}
\end{class}
\association{Unternehmen}{}{1}{Mitarbeiter}{n}{}
\end{tikzpicture}
-b) 1BE pro korrekten Konstruktor; 1BE pro korrekte berechneGehalt Methode
\begin{minted}[baselinestretch=1.2, fontsize=\small]{java}
class EXTERNER extends MITARBEITER {
- public EXTERNER(String n, double s, double l) {
- super(n);
- stunden = s;
- stundenlohn = l;
+ private double stunden; // 0.5 BE private, 0.5 BE double
+ private double stundenlohn; // 0.5 BE private, 0.5 BE double
+
+ public Externer(String n, double s, double l) { // 1.5 BE (0.5 pro korrekten parameter)
+ super(n); // 0.5 BE
+ stunden = s; // 0.5 BE
+ stundenlohn = l; // 0.5 BE
}
- public double GehaltBerechnen() {
- return stunden * stundenlohn;
+ public double berechneGehalt() {
+ return stunden * stundenlohn; // 0.5 BE return 1 BE für Produkt
}
}
class Manager extends Mitarbeiter {
- public Manager(String n) {
- super(n);
+ public Manager(String n) { // 0.5 BE fuer parameter
+ super(n); // 0.5 fuer Konstruktor call
}
public double berechneGehalt() {
- return 10000;
+ return 10000; // 0.5 BE
}
}
\end{minted}
-c) Zeile: 2 Mitarbeiter Array mit Datentyp der Oberklasse (2BE) \\
-Zeile: 18 berechneGehalt wird von der Klasse des konkreten Objekts aufgerufen (2BE)
+% c) Zeile: 2 Mitarbeiter Array mit Datentyp der Oberklasse (2BE) \\
+% Zeile: 18 berechneGehalt wird von der Klasse des konkreten Objekts aufgerufen (2BE)
-d) 1 BE pro korrekter Zeile; halber BE Abzug wenn korrekte Zeile an falscher Stelle
+c) 1 BE pro korrekter Zeile; halber BE Abzug wenn korrekte Zeile an falscher Stelle
\texttt{Name: Gabi Neu, Gehalt 2600 Euro\\
Name: Vanessa Boss, Gehalt: 10000 Euro\\
-Name: Ingo Frei, Gehalt: 800 Euro\\
-Gesamte Gehaltskosten: 13400 Euro}
+Name: Ingo Frei, Gehalt: 400 Euro\\
+Gesamte Gehaltskosten: 13000 Euro}
\end{Lsg}