diff options
| author | Florian Fischer <florian.fischer@muhq.space> | 2026-06-18 16:43:51 +0200 |
|---|---|---|
| committer | Florian Fischer <florian.fischer@muhq.space> | 2026-06-18 16:43:51 +0200 |
| commit | ef6e1f3f39e9d42911bc341314868a322b33a279 (patch) | |
| tree | 76e19ef843dcb7ba88e248f3f55baa2d404fb28b /Info/10 | |
| parent | bf4175c1afe58ef68e9bf98274db495d487cc726 (diff) | |
| download | unterricht-ef6e1f3f39e9d42911bc341314868a322b33a279.tar.gz unterricht-ef6e1f3f39e9d42911bc341314868a322b33a279.zip | |
add past 10th grade second version
Diffstat (limited to 'Info/10')
6 files changed, 387 insertions, 0 deletions
diff --git a/Info/10/Leistungsnachweise/2_KA_NS_10b_20260615/Aufgaben/Felder_Besucherstatistik.tex b/Info/10/Leistungsnachweise/2_KA_NS_10b_20260615/Aufgaben/Felder_Besucherstatistik.tex new file mode 100644 index 00000000..08baa54a --- /dev/null +++ b/Info/10/Leistungsnachweise/2_KA_NS_10b_20260615/Aufgaben/Felder_Besucherstatistik.tex @@ -0,0 +1,31 @@ +\renewcommand{\Verteilung}{6} +\begin{Aufg}[Besucherstatistik] +Zur Erstellung von Besucherstatistiken ermittelt das Müllersche Volksbad \underline{zwölf} Mal am Tag die Anzahl der aktuellen Badegäste und speichert diese in einem Feld. \vspace{2mm} + +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. \\[1cm] +\iftoggle{lehrerversion}{\iffalse}{\iftrue} +\small +\texttt{public class Besucherstatistik \{}\\ +\liniert[1cm]{7} +\texttt{\}} +\fi +\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} +\end{enumerate} +\end{Lsg} diff --git a/Info/10/Leistungsnachweise/2_KA_NS_10b_20260615/Aufgaben/Polymorphismus_Beschaeftigte.tex b/Info/10/Leistungsnachweise/2_KA_NS_10b_20260615/Aufgaben/Polymorphismus_Beschaeftigte.tex new file mode 100644 index 00000000..adab9eb7 --- /dev/null +++ b/Info/10/Leistungsnachweise/2_KA_NS_10b_20260615/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_10b_20260615/_test.tex b/Info/10/Leistungsnachweise/2_KA_NS_10b_20260615/_test.tex new file mode 100644 index 00000000..ddd2c804 --- /dev/null +++ b/Info/10/Leistungsnachweise/2_KA_NS_10b_20260615/_test.tex @@ -0,0 +1,31 @@ +\Datum{15.06.2026} +\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 +\input{Aufgaben/Felder_Besucherstatistik} +\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_10b_20260615/test_lehrer.tex b/Info/10/Leistungsnachweise/2_KA_NS_10b_20260615/test_lehrer.tex new file mode 100644 index 00000000..094f5adf --- /dev/null +++ b/Info/10/Leistungsnachweise/2_KA_NS_10b_20260615/test_lehrer.tex @@ -0,0 +1,7 @@ +\documentclass[ +lehrerversion, +erwartungshorizont, +sigfooter, +]{test} + +\input{_test} diff --git a/Info/10/Leistungsnachweise/2_KA_NS_10b_20260615/test_loesung.tex b/Info/10/Leistungsnachweise/2_KA_NS_10b_20260615/test_loesung.tex new file mode 100644 index 00000000..d0bb5cf9 --- /dev/null +++ b/Info/10/Leistungsnachweise/2_KA_NS_10b_20260615/test_loesung.tex @@ -0,0 +1,7 @@ +\documentclass[ +lehrerversion, +sigfooter, +keinlogo, +]{test} + +\input{_test} diff --git a/Info/10/Leistungsnachweise/2_KA_NS_10b_20260615/test_schueler.tex b/Info/10/Leistungsnachweise/2_KA_NS_10b_20260615/test_schueler.tex new file mode 100644 index 00000000..12415c38 --- /dev/null +++ b/Info/10/Leistungsnachweise/2_KA_NS_10b_20260615/test_schueler.tex @@ -0,0 +1,7 @@ +\documentclass[ +sigfooter, +drawborder, +twoside, +]{test} + +\input{_test} |
