From 19ffdc5c9cb3481896a3a10293e8e246101ad65f Mon Sep 17 00:00:00 2001 From: Martin Goik <goik@hdm-stuttgart.de> Date: Sat, 9 Jul 2022 20:17:08 +0200 Subject: [PATCH] Probeklausur Thomas --- Doc/Sd1/Exam/2022/SummerTest/exam.xml | 300 ++++++++++++++++++++++++++ 1 file changed, 300 insertions(+) create mode 100644 Doc/Sd1/Exam/2022/SummerTest/exam.xml diff --git a/Doc/Sd1/Exam/2022/SummerTest/exam.xml b/Doc/Sd1/Exam/2022/SummerTest/exam.xml new file mode 100644 index 000000000..1021b8bac --- /dev/null +++ b/Doc/Sd1/Exam/2022/SummerTest/exam.xml @@ -0,0 +1,300 @@ +<?xml version="1.0" encoding="UTF-8"?> +<section version="5.0" xml:id="sd1_exam_2022_summerTest" xml:lang="de" + xmlns="http://docbook.org/ns/docbook" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:xila="http://www.w3.org/2001/XInclude/local-attributes" + xmlns:xi="http://www.w3.org/2001/XInclude" + xmlns:trans="http://docbook.org/ns/transclusion" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns:m="http://www.w3.org/1998/Math/MathML" + xmlns:html="http://www.w3.org/1999/xhtml" + xmlns:db="http://docbook.org/ns/docbook"> + <title>SD1 Probeklausur Sommer 2022</title> + + <section xml:id="sd1_exam_2022_summerTest_task1"> + <title>Java Datentypen</title> + + <qandaset defaultlabel="qanda" + xml:id="sd1_exam_2022_summerTest_task1Qanda"> + <qandadiv> + <qandaentry> + <question> + <para>Nennen Sie 10 verschiedene Datentypen in Java und + beschreiben Sie deren Verwendung in eigenen Worten:</para> + + <programlisting language="none">Datentyp 1: Verwendung (Beschreibung in eigenen Worten) + +Datentyp 2: ... +...</programlisting> + + <para>Nutzen Sie bitte das nachfolgende Eingabefeld.</para> + </question> + + <answer> + <programlisting language="none">Primitive Datentypen: + +boolean: Logische Werte +byte: Ganzzahlen von -128 bis 127 +short: Ganzzahlen von -2^15 bis 2^15 - 1 +int: Ganzzahlen von -2^31 bis 2^31 - 1 +long: Ganzzahlen von -2^63 bis 2^63 - 1 +char: Zeichen dargestellt durch 2 bytes +float: 4 Byte IEEE Gleitkommazahlen aus Vorzeichen, Mantisse und Exponent +double: 8 Byte IEEE Gleitkommazahlen aus Vorzeichen, Mantisse und Exponent + +Referenztypen: + +String: Unveränderliche Zeichenketten bestehend aus char Werten +java.util.Scanner: Lesen von Eingabedatenströmen</programlisting> + </answer> + </qandaentry> + </qandadiv> + </qandaset> + </section> + + <section xml:id="sd1_exam_2022_summerTest_task2"> + <title>Fließkommazahlen</title> + + <qandaset defaultlabel="qanda" + xml:id="sd1_exam_2022_summerTest_task2Qanda"> + <qandadiv> + <qandaentry> + <question> + <para>Eignen sich Fließkommazahlen zur genauen Darstellung und + Berechnung von kleinen Werten? Erläutern Sie Ihre Antwort.</para> + </question> + + <answer> + <para>Durch Verwendung von negativen Exponenten können gemäß der + IEEE Spezifikation kleine Werte mit hoher Genauigkeit dargestellt + werden.</para> + </answer> + </qandaentry> + </qandadiv> + </qandaset> + </section> + + <section xml:id="sd1_exam_2022_summerTest_task3"> + <title>Darstellung von Längenangaben</title> + + <qandaset defaultlabel="qanda" + xml:id="sd1_exam_2022_summerTest_task3Qanda"> + <qandadiv> + <qandaentry> + <question> + <para>Implementieren Sie die statische Methode <methodname>String + mmToLength(long mm)</methodname>, welche den Parameter + <code>mm</code> (Millimeter) in die Anzahl von Meter, Zentimeter + und Millimeter umwandelt und die Werte als textuelle + Repräsentation zurückgibt:</para> + + <informaltable border="1"> + <tr> + <th>Länge in mm</th> + + <th>Textuelle Repräsentation</th> + </tr> + + <tr> + <td valign="top">3576</td> + + <td>3m, 57cm, 6mm</td> + </tr> + + <tr> + <td valign="top">14</td> + + <td>0m, 1cm, 4mm</td> + </tr> + </informaltable> + </question> + + <answer> + <para/> + </answer> + </qandaentry> + </qandadiv> + </qandaset> + </section> + + <section xml:id="sd1_exam_2022_summerTest_task4"> + <title>Verwaltung einer Garage</title> + + <qandaset defaultlabel="qanda" + xml:id="sd1_exam_2022_summerTest_task4Qanda"> + <qandadiv> + <qandaentry> + <question> + <para>Implementieren Sie zwei eigene Klassen + <classname>Car</classname> und + <classname>Garage</classname>.</para> + + <glosslist> + <glossentry> + <glossterm><classname>Car</classname>:</glossterm> + + <glossdef> + <itemizedlist> + <listitem> + <para>Definieren Sie drei beliebige Attribute, welche + die Eigenschaften eines Autos beschreiben.</para> + </listitem> + + <listitem> + <para>Definieren Sie mindestens einen Konstruktor, über + welchen alle Attribute initialisiert werden + können.</para> + </listitem> + + <listitem> + <para>Halten Sie sich an die gelernten Best practises + (Zugriffsmodifikatoren, Kapselung).</para> + </listitem> + </itemizedlist> + </glossdef> + </glossentry> + + <glossentry> + <glossterm><classname>Garage</classname>:</glossterm> + + <glossdef> + <itemizedlist> + <listitem> + <para>Eine Instanz der Klasse + <classname>Garage</classname> benötigt für die + Initialisierung die Anzahl der Stellplätze (1...n). + Implementieren Sie den entsprechenden + Konstruktor.</para> + </listitem> + + <listitem> + <para>Folgende Methoden müssen für die Klasse + implementiert werden:</para> + + <itemizedlist> + <listitem> + <para><methodname>boolean isFull()</methodname>: + Liefert <code>true</code>, wenn die Garage voll ist, + also alle Stellplätze belegt sind.</para> + </listitem> + + <listitem> + <para><methodname>boolean park(Car + car)</methodname>: Parkt das übergebene Auto in + einen der Stellplätze, falls möglich. Liefert + <code>false</code>, wenn die Garage bereits voll + besetzt ist.</para> + </listitem> + + <listitem> + <para><methodname>boolean unpark(Car + car)</methodname>: Parkt das übergebene Auto aus. + Gibt <code>false</code> zurück, wenn das übergebene + Auto nicht in der Garage ist.</para> + </listitem> + </itemizedlist> + </listitem> + </itemizedlist> + </glossdef> + </glossentry> + </glosslist> + + <para>Das folgende Beispiel zeigt die beabsichtigte + Verwendung:</para> + + <programlisting language="java">package garage; + +public class Main { + public static void main(String[] args) { + Garage garage = new Garage(2); + + Car c1 = new Car("Audi", "R8", "blue"); + Car c2 = new Car("Volkswagen", "Polo", "black"); + Car c3 = new Car("BMW", "316", "red"); + + System.out.println(garage); + + System.out.println("parking: " + c1); + System.out.println(garage.park(c1)); + + System.out.println("parking: " + c2); + System.out.println(garage.park(c2)); + + System.out.println(garage); + + System.out.println("parking: " + c3); + System.out.println(garage.park(c3)); + + System.out.println(garage); + + System.out.println("unparking: " + c2); + System.out.println(garage.unpark(c2)); + + System.out.println(garage); + + System.out.println("parking: " + c3); + System.out.println(garage.park(c3)); + + System.out.println(garage); + } +}</programlisting> + + <para>Die Ausführung sollte etwa folgende Log Ausgabe + liefern:</para> + + <screen>Garage{slots=[null, null]} +parking: Car{brand='Audi', model='R8', color='blue'} +true +parking: Car{brand='Volkswagen', model='Polo', color='black'} +true +Garage{slots=[Car{brand='Audi', model='R8', color='blue'}, +Car{brand='Volkswagen', model='Polo', color='black'}]} +parking: Car{brand='BMW', model='316', color='red'} +false +Garage{slots=[Car{brand='Audi', model='R8', color='blue'}, +Car{brand='Volkswagen', model='Polo', color='black'}]} +unparking: Car{brand='Volkswagen', model='Polo', color='black'} +true +Garage{slots=[Car{brand='Audi', model='R8', color='blue'}, null]} +parking: Car{brand='BMW', model='316', color='red'} +true +Garage{slots=[Car{brand='Audi', model='R8', color='blue'}, +Car{brand='BMW', model='316', color='red'}]} +</screen> + + <para>Kopieren Sie bitte <emphasis role="red">ALLE</emphasis> + Klassen (visuell getrennt) in das Antwortfeld.</para> + </question> + + <answer> + <para/> + </answer> + </qandaentry> + </qandadiv> + </qandaset> + </section> + + <section xml:id="sd1_exam_2022_summerTest_task5"> + <title>Semantische Gleichheit</title> + + <qandaset defaultlabel="qanda" + xml:id="sd1_exam_2022_summerTest_task5Qanda"> + <qandadiv> + <qandaentry> + <question> + <para>Wahrscheinlich mussten Sie für die Implementierung der + vorherigen Aufgabe Instanzen der Klasse <classname>Car</classname> + auf Gleichheit prüfen. Nachdem es sich um einen referenzierten + Datentyp handelt, vergleichen Sie mit dem Gleichheitsoperator + <quote><code>==</code></quote> 'nur' die Objektidentität. Für + einen semantischen Vergleich müssen Sie <methodname>public boolean + equals(Object o)</methodname> implementieren.</para> + + <para>Wie haben Sie den Vergleich implementiert? Argumentieren Sie + warum!</para> + </question> + </qandaentry> + </qandadiv> + </qandaset> + </section> +</section> -- GitLab