aboutsummaryrefslogtreecommitdiff
path: root/Info/10
diff options
context:
space:
mode:
authorFlorian Fischer <florian.fischer@muhq.space>2024-06-15 12:17:55 +0200
committerFlorian Fischer <florian.fischer@muhq.space>2024-06-15 12:17:55 +0200
commitae86b6a35868c122f0199190cc60eca4f1017272 (patch)
tree575b2bdd000d86ce568ebcf59aba962dde1686ac /Info/10
parentbc024bb8e7f8332f16e88f4978ee5aeab910e474 (diff)
downloadunterricht-ae86b6a35868c122f0199190cc60eca4f1017272.tar.gz
unterricht-ae86b6a35868c122f0199190cc60eca4f1017272.zip
add apostil for the last exam in 10B
Diffstat (limited to 'Info/10')
-rw-r--r--Info/10/Leistungsnachweise/2_KA_NS_20240611/Aufgaben/Felder_Besucherstatistik.tex47
-rw-r--r--Info/10/Leistungsnachweise/2_KA_NS_20240611/Aufgaben/Polymorphismus_Beschaeftigte.tex304
-rw-r--r--Info/10/Leistungsnachweise/2_KA_NS_20240611/_test.tex36
-rw-r--r--Info/10/Leistungsnachweise/2_KA_NS_20240611/test_lehrer.tex7
-rw-r--r--Info/10/Leistungsnachweise/2_KA_NS_20240611/test_loesung.tex7
-rw-r--r--Info/10/Leistungsnachweise/2_KA_NS_20240611/test_schueler.tex7
6 files changed, 408 insertions, 0 deletions
diff --git a/Info/10/Leistungsnachweise/2_KA_NS_20240611/Aufgaben/Felder_Besucherstatistik.tex b/Info/10/Leistungsnachweise/2_KA_NS_20240611/Aufgaben/Felder_Besucherstatistik.tex
new file mode 100644
index 00000000..269cb8c8
--- /dev/null
+++ b/Info/10/Leistungsnachweise/2_KA_NS_20240611/Aufgaben/Felder_Besucherstatistik.tex
@@ -0,0 +1,47 @@
+\renewcommand{\Verteilung}{6 + 3}
+\begin{Aufg}[Besucherstatistik]
+Zur Erstellung von Besucherstatistiken ermittelt die Therme Beach Palm \underline{zwölf} Mal am Tag die Anzahl der aktuellen Badegäste und speichert diese in einem Feld. \vspace{2mm}
+
+\textbf{a)} Implementiere die Klasse \mintinline{java}{Besucherstatistik}.
+Die Klasse besitzt sowohl ein Attribut für den Wochentag der Datenerhebung als auch ein Feld zur Speicherung der zwölf Besucherzahlen.
+Der Konstruktor weist einer Besucherstatistik bei ihrer Erzeugung einen vom Benutzer übergebenen Wochentag zu.
+Des Weiteren wird im Konstruktor das deklarierte Feld geeignet initialisiert. \\[0.1cm]
+\iftoggle{lehrerversion}{\iffalse}{\iftrue}
+\small
+\texttt{public class Besucherstatistik \{}\\
+\liniert[0.8cm]{7}
+\texttt{\}}
+\fi
+
+\textbf{b)} Die Besucherstatistik soll mit dem Kassenprogramm verknüpft werden.
+Damit der Code der Kasse die Besucherstatistik verwenden kann, muss folgende Schnittstelle erfüllt werden:
+\begin{minted}{java}
+interface Statistik {
+ double gibDurchschnitt();
+ int gibMax();
+ int gibMin();
+}
+\end{minted}
+\underline{Beschreibe knapp}, worum es sich bei einem \mintinline{java}{interface} in Java handelt, sowie was an der Klasse Besucherstatistik ergänzt werden müsste, um das \mintinline{java}{interface Statistik} zu erfüllen.
+\end{Aufg}
+
+\begin{Lsg}
+\begin{enumerate}[a)]
+\item \begin{minted}[escapeinside=$$]{java}
+public class Besucherstatistik {
+ String$\Halfpoint$ wochentag;$\Halfpoint$
+ int$\Halfpoint$[]$\Halfpoint$ besucher;$\Halfpoint$
+ public Besucherstatistik$\Halfpoint$(String neuerWochentag$\Halfpoint$) {
+ besucher$\Halfpoint$ = new$\Halfpoint$ int[12$\Halfpoint$]$\Halfpoint$;
+ wochentag = neuerWochentag;$\Halfpoint$
+ }
+}
+\end{minted}
+% \BE{6}
+\item \begin{itemize}
+\item Ein interface ist ein \textit{Vertrag} über die, bzw. eine Vorgabe der zu implementierenden Methoden\Point
+\item \mintinline{java}{implements Statistik} ergänzen\Point
+\item Vorgegebenen Methoden implementieren\Point
+\end{itemize}
+\end{enumerate}
+\end{Lsg}
diff --git a/Info/10/Leistungsnachweise/2_KA_NS_20240611/Aufgaben/Polymorphismus_Beschaeftigte.tex b/Info/10/Leistungsnachweise/2_KA_NS_20240611/Aufgaben/Polymorphismus_Beschaeftigte.tex
new file mode 100644
index 00000000..adab9eb7
--- /dev/null
+++ b/Info/10/Leistungsnachweise/2_KA_NS_20240611/Aufgaben/Polymorphismus_Beschaeftigte.tex
@@ -0,0 +1,304 @@
+\renewcommand{\Verteilung}{3 + 8 + 4} %%Anzahl der Punkte festlegen
+
+\begin{Aufg}[Angestelltenverwaltung]
+
+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.
+
+\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}}
+
+\begin{center}
+\begin{minted}[]{java}
+class Angestellter extends Mitarbeiter {
+ private double gehalt;
+ private double jahresbonus;
+
+ public Angestellter(String n, double g, double j) {
+ super(n);
+ gehalt = g;
+ jahresbonus = j;
+ }
+
+ public double berechneGehalt() {
+ return gehalt + jahresbonus / 12;
+ }
+}
+\end{minted}
+\end{center}
+
+\iftoggle{lehrerversion}{}{\vspace{-0.5cm}}
+
+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}}
+
+% \hspace{-0.25}
+\begin{center}
+\scalebox{0.85}{
+\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{void einstellen(mitarbeiter)}
+\operation{double berechneGehaltsKosten()}
+\end{class}
+
+\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=4.5cm]{Manager}{1,-1}
+\inherit{Mitarbeiter}
+\operation{double berechneGehalt()}
+\end{class}
+
+\begin{class}[text width=4.5cm]{Externer}{11,-1}
+\inherit{Mitarbeiter}
+\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 einfach immer 7000 Euro.
+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, escapeinside=??]{java}
+class Externer extends Mitarbeiter {
+ ?\tikzmark{l1start}? ?\tikzmark{l1end}?
+ ?\tikzmark{l2start}? ?\tikzmark{l2end}?
+
+ 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(?\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.
+
+\iflehrer{}{\vspace{-0.3cm}}
+
+\begin{minted}[]{java}
+class Unternehmen {
+ private Mitarbeiter[] mitarbeiter;
+ private double anzahlMitarbeiter;
+
+ public Unternehmen() {
+ mitarbeiter = new Mitarbeiter[100];
+ anzahlMitarbeiter = 0;
+ }
+
+ public void einstellen(Mitarbeiter neuer) {
+ mitarbeiter[anzahlMitarbeiter] = neuer;
+ anzahlMitarbeiter = anzahlMitarbeiter + 1;
+ }
+
+ public double berechneGehaltsKosten() {
+ double gesamtGehalt;
+ for (int i = 0; i < anzahlMitarbeiter; i++) {
+ double gehalt = mitarbeiter[i].berechneGehalt();
+ System.out.println("Name: " + mitarbeiter[i].gibName()
+ + ", Gehalt: " + gehalt + " Euro");
+ gesamtGehalt = gesamtGehalt + gehalt;
+ }
+ 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 3000€ und Jahresbonus 1200€
+meineFirma.einstellen(new Angestellter("Gabi Neu", 3000, 1200));
+// Managerin Vanessa Boss
+meineFirma.einstellen(new Manager("Vanessa Boss"));
+// Externer Ingo Frei mit 20 Stunden im Monat bei einem Stundenlohn von 20€
+meineFirma.einstellen(new Externer("Ingo Frei", 30, 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}
+a)
+% \begin{itemize}
+ % \item Korrekte Vererbung \BE{1}
+ % \item korrektes UML \BE{1}
+% \end{itemize}
+\iftoggle{erwartungshorizont}{Halbes BE Abzug pro Fehler.}{}
+
+\begin{tikzpicture}[umlcd style inherit line/.style={color=\umldrawcolor, {Triangle[open, angle'=60, scale=3]}-}]
+\begin{class}[text width=7cm]{Unternehmen}{5,8}
+\attribute{int anzahlMitarbeiter}
+\operation{einstellen(mitarbeiter)}
+\operation{double berechneGehaltsKosten()}
+\end{class}
+
+\begin{class}[text width=4cm]{Mitarbeiter}{5,3}
+\attribute{String name}
+\operation{String gibName()}
+\end{class}
+
+\begin{class}[text width=4.5cm]{Manager}{-1,0}
+\inherit{Mitarbeiter}
+\operation{double berechneGehalt()}
+\end{class}
+
+\begin{class}[text width=4.5cm]{Externer}{5,0}
+\inherit{Mitarbeiter}
+\attribute{double stunden}
+\attribute{double stundenlohn}
+\operation{double berechneGehalt()}
+\end{class}
+
+\begin{class}[text width=4.5cm]{Angestellter}{11,0}
+\inherit{Mitarbeiter}
+\attribute{double gehalt}
+\attribute{double jahresbonus}
+\operation{double berechneGehalt()}
+\end{class}
+\node[above right=of Angestellter, xshift=-6.5cm, yshift=-1cm] {\Halfpoint}; %Vererbung
+\node[above right=of Angestellter, xshift=-1cm, yshift=-1cm] {\Halfpoint}; %UML
+\node[above right=of Angestellter, xshift=-1.5cm, yshift=-1.8cm] {\Halfpoint};
+\node[above right=of Angestellter, xshift=-2cm, yshift=-2.45cm] {\Halfpoint};
+\node[above right=of Angestellter, xshift=-2cm, yshift=-3cm] {\Halfpoint};
+\node[above right=of Angestellter, xshift=-1cm, yshift=-3.75cm] {\Halfpoint};
+
+\association{Unternehmen}{}{1}{Mitarbeiter}{n}{}
+\end{tikzpicture}
+
+\textbf{b)}
+\BE{8} \iftoggle{erwartungshorizont}{Verteilung siehe code.}{}
+\iftoggle{erwartungshorizont}{\iftrue}{\iffalse}
+\begin{minted}[baselinestretch=1.2, fontsize=\small]{java}
+class EXTERNER extends MITARBEITER {
+ 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 berechneGehalt() {
+ return stunden * stundenlohn; // 0.5 BE return 1 BE für Produkt
+ }
+}
+
+class Manager extends Mitarbeiter {
+ public Manager(String n) { // 0.5 BE fuer parameter
+ super(n); // 0.5 fuer Konstruktor call
+ }
+
+ public double berechneGehalt() {
+ return 7000; // 0.5 BE
+ }
+}
+\end{minted}
+\else
+\begin{minted}[baselinestretch=1.2, fontsize=\small]{java}
+class EXTERNER extends MITARBEITER {
+ private double stunden;
+ private double stundenlohn;
+
+ public Externer(String n, double s, double l) {
+ super(n);
+ stunden = s;
+ stundenlohn = l;
+ }
+
+ public double berechneGehalt() {
+ return stunden * stundenlohn;
+ }
+}
+
+class Manager extends Mitarbeiter {
+ public Manager(String n) {
+ super(n);
+ }
+
+ public double berechneGehalt() {
+ return 7000;
+ }
+}
+\end{minted}
+\fi
+
+% c) Zeile: 2 Mitarbeiter Array mit Datentyp der Oberklasse (2BE) \\
+% Zeile: 18 berechneGehalt wird von der Klasse des konkreten Objekts aufgerufen (2BE)
+
+\textbf{c)} \iftoggle{erwartungshorizont}{1 BE pro korrekter Zeile; halber BE Abzug wenn korrekte Zeile an falscher Stelle}{} \\
+\texttt{Name: Gabi Neu, Gehalt 3100 Euro} \BE{1} \\
+\texttt{Name: Vanessa Boss, Gehalt: 7000 Euro} \BE{1} \\
+\texttt{Name: Ingo Frei, Gehalt: 600 Euro} \BE{1} \\
+\texttt{Gesamte Gehaltskosten: 10700 Euro} \BE{1}
+\end{Lsg}
diff --git a/Info/10/Leistungsnachweise/2_KA_NS_20240611/_test.tex b/Info/10/Leistungsnachweise/2_KA_NS_20240611/_test.tex
new file mode 100644
index 00000000..5d6039bb
--- /dev/null
+++ b/Info/10/Leistungsnachweise/2_KA_NS_20240611/_test.tex
@@ -0,0 +1,36 @@
+\Datum{\phantom{11.06.2024}}
+\TestNummer{Nachschrift 2}
+\TestArt{Kurzarbeit}
+\Klasse{10B}
+\Fach{Informatik}
+
+\renewcommand{\baselinestretch}{1.2}
+\usepackage{minted}
+\setminted{baselinestretch=1.2, fontsize=\footnotesize, bgcolor=gray!10}
+\geometry{top=20mm, bottom=20mm, headsep=5mm, footskip=10mm}
+
+% %Reset default header
+% \fancyfoot[RO]{Bitte umblättern!}
+
+\fancypagestyle{ErsteSeite}{%
+ \fancyhf{}%
+ \fancyhead[L]{\Schule \newline Schuljahr 2023/24}
+ \fancyhead[R]{Name: \hspace{6cm}}
+}
+
+\begin{document}
+\thispagestyle{ErsteSeite}
+\Intro
+%% Felder
+% \vspace{-0.3cm}
+\input{Aufgaben/Felder_Besucherstatistik}
+\begin{Bearbeitung}
+\liniert[0.8cm]{6}
+\end{Bearbeitung}
+\iflehrer{}{\clearpage}
+\input{Aufgaben/Polymorphismus_Beschaeftigte} %% Polymorphismus
+\begin{Bearbeitung}
+\vspace{-0.5cm}
+\liniert[8mm]{4}
+\end{Bearbeitung}
+\end{document}
diff --git a/Info/10/Leistungsnachweise/2_KA_NS_20240611/test_lehrer.tex b/Info/10/Leistungsnachweise/2_KA_NS_20240611/test_lehrer.tex
new file mode 100644
index 00000000..094f5adf
--- /dev/null
+++ b/Info/10/Leistungsnachweise/2_KA_NS_20240611/test_lehrer.tex
@@ -0,0 +1,7 @@
+\documentclass[
+lehrerversion,
+erwartungshorizont,
+sigfooter,
+]{test}
+
+\input{_test}
diff --git a/Info/10/Leistungsnachweise/2_KA_NS_20240611/test_loesung.tex b/Info/10/Leistungsnachweise/2_KA_NS_20240611/test_loesung.tex
new file mode 100644
index 00000000..d0bb5cf9
--- /dev/null
+++ b/Info/10/Leistungsnachweise/2_KA_NS_20240611/test_loesung.tex
@@ -0,0 +1,7 @@
+\documentclass[
+lehrerversion,
+sigfooter,
+keinlogo,
+]{test}
+
+\input{_test}
diff --git a/Info/10/Leistungsnachweise/2_KA_NS_20240611/test_schueler.tex b/Info/10/Leistungsnachweise/2_KA_NS_20240611/test_schueler.tex
new file mode 100644
index 00000000..12415c38
--- /dev/null
+++ b/Info/10/Leistungsnachweise/2_KA_NS_20240611/test_schueler.tex
@@ -0,0 +1,7 @@
+\documentclass[
+sigfooter,
+drawborder,
+twoside,
+]{test}
+
+\input{_test}