FI-23Wi-FIA-2E
Lösung zur Aufgabe Winter 2023 Anwendungsentwickler Entwicklung und Umsetzung von Algorithmen.
Leider kann ich hier nicht die Prüfungsaufgabe dazu veröffentlichen, verlinken, wer das ändern will hier mitmachen:
[Bildungsgerechtigkeit statt privater Profit: Alte Prüfungsaufgaben digital & frei zugänglich machen!]
Aufgabe 1

Hinweise:
Ich habe die Aufgabe ein wenig modifiziert:
-kein Versenden an E-Mailadresse.
Überschrift „Kita Stuttgart Onlineanmeldung“ ist <h2>
Die Felder für Vorname, Nachname und Email müssen 35 Zeichen aufnehmen können.
Das Textfeld „Zusätzlich sind folgende Personen berechtigt das Kind abzuholen “ muss zwei Textzeilen haben und das Textfeld „Weitere Mitteilungen“ 4 Textzeilen.
Das Formular wird an kitastuttgart.com/anmeldung.php gesendet.
Die Startseite hat die Adresse kitastuttgart.com.
Lösung mit Tabelle
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Kita Stuttgart Anmeldung</title>
</head>
<body>
<form method="post" action="kitastuttgart.com/anmeldung.php">
<h2>Kita Stuttgart Onlineanmeldung</h2>
<table>
<tr>
<td><label for="Vorname">Vorname:</label></td>
<td><input type="text" name="Vorname" id="Vorname" size="35"></td>
</tr>
<tr>
<td><label for="Nachname">Nachname:</label></td>
<td><input type="text" name="Nachname" id="Nachname" size="35"></td>
</tr>
<tr>
<td><label for="Email">Email:</label></td>
<td><input type="email" name="Email" id="Email" size="35"></td>
</tr>
<tr>
<td><label for="Geburtsdatum">Geburtsdatum: </label></td>
<td><input type="date" name="Geburtsdatum" id="Geburtsdatum"></td>
</tr>
</table>
<br>
<label for="Essen">Mein Kind ernährt sich:</label><br>
<select size="3" name="Essen" id="Essen">
<option value="Vollkost">Vollkost</option>
<option value="Vegan">Vegan</option>
<option value="Vegetarisch">Vegetarisch</option>
</select>
<br>
<p>Folgende Personen sind berechtigt das Kind abzuholen: <br>
(Mehrfachauswahl möglich)</p>
<input type="checkbox" id="Mutter" name="Mutter">
<label for="Mutter">Mutter</label>
<input type="checkbox" id="Vater" name="Vater">
<label for="Vater">Vater</label>
<input type="checkbox" id="Geschwister" name="Geschwister">
<label for="Geschwister">Geschwister ab 12 Jahre</label>
<br>
<br>
<label for="zusatz">Zusätzlich sind folgende Personen berechtigt das Kind abzuholen</label>
<br>
<textarea name="zusatz" id="zusatz" cols="60" rows="2"></textarea>
<br>
<br>
<label for="Stunden">Wie viele Betreuungsstunden benötigen Sie täglich? <br> (nur eine Auswahl möglich)</label>
<br>
<br>
<input type="radio" name="Stunden" id="6" value="6">
<label for="6">6</label><br>
<input type="radio" name="Stunden" id="8" value="8">
<label for="8">8</label><br>
<input type="radio" name="Stunden" id="10" value="10">
<label for="10">10</label><br>
<br>
<label for="Mitteilungen">Weitere Mitteilungen</label><br>
<textarea name="Mitteilungen" id="Mitteilungen" cols="60" rows="4"></textarea>
<br>
<br>
<button type="submit">Anmeldung Versenden</button><br>
<br>
</form>
<a href="kitastuttgart.com">Zurück zur Statseite Kita Stuttgart</a>
</body>
</html>
Lösung ohne Tabelle
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Kita Stuttgart Anmeldung</title>
<style>
.leftl {
float: left;
width: 100px;
}
</style>
</head>
<body>
<form method="post" action="kitastuttgart.com/anmeldung.php">
<h2>Kita Stuttgart Onlineanmeldung</h2>
<label class="leftl" for="Vorname">Vorname:</label>
<input type="text" name="Vorname" id="Vorname"><br>
<label class="leftl" for="Nachname">Nachname:</label>
<input type="text" name="Nachname" id="Nachname"><br>
<label class="leftl" for="Email">Email:</label>
<input type="email" name="Email" id="Email"><br>
<label class="leftl" for="Geburtsdatum">Geburtsdatum: </label>
<input type="date" name="Geburtsdatum" id="Geburtsdatum"><br>
<label for="Essen">Kind ernährt sich:</label><br>
<select size="3" name="Essen" id="Essen">
<option value="Vollkost">Vollkost</option>
<option value="Vegan">Vegan</option>
<option value="Vegetarisch">Vegetarisch</option>
</select>
<br>
<p>Folgende Personen sind berechtigt das Kind abzuholen: <br>
(Mehrfachauswahl möglich)</p>
<input type="checkbox" id="Mutter" name="Mutter">
<label for="Mutter">Mutter</label>
<input type="checkbox" id="Vater" name="Vater">
<label for="Vater">Vater</label>
<input type="checkbox" id="Geschwister" name="Geschwister">
<label for="Geschwister">Geschwister ab 12 Jahre</label>
<br>
<br>
<label for="zusatz">Zusätzlich sind folgende Personen berechtigt das Kind abzuholen</label>
<br>
<textarea name="zusatz" id="zusatz" cols="60" rows="2"></textarea>
<br>
<br>
<label for="Stunden">Wie viele Betreuungsstunden benötigen Sie täglich? <br> (nur eine Auswahl möglich)</label>
<br>
<br>
<input type="radio" name="Stunden" id="6" value="6">
<label for="6">6</label><br>
<input type="radio" name="Stunden" id="8" value="8">
<label for="8">8</label><br>
<input type="radio" name="Stunden" id="10" value="10">
<label for="10">10</label><br>
<br>
<label for="Mitteilungen">Weitere Mitteilungen</label><br>
<textarea name="Mitteilungen" id="Mitteilungen" cols="60" rows="4"></textarea>
<br>
<br>
<button type="submit">Anmeldung Versenden</button><br>
<br>
</form>
<a href="kitastuttgart.com">Zurück zur Statseite Kita Stuttgart</a>
</body>
</html>
Aufgabe 2.1
Aufgabe 2.2
Polymorphie oder Polymorphismus (griechisch für Vielgestaltigkeit) ist ein Konzept in der objektorientierten Programmierung, das ermöglicht, dass ein Bezeichner abhängig von seiner Verwendung Objekte unterschiedlichen Datentyps annimmt.
- Bei statischer Polymorphie, Überladen von Operationen, werden in der selben Klasse Operationen mit dem selben Namen aber unterschiedlichen Parameterdatentypen-Listen mehrfach definiert, z.B: plus(int, int); plus(double, double). Die Entscheidung welche Operation verwendet wird erfolgt schon zur Compilezeit, ist daher statisch.
- Bei dynamischer Polymorphie, Überschreiben von Operationen, werden in Unterklassen Operationen re-definiert, also in einer Unterklasse gibt es die Operation nochmal mit der selben Signatur wie in der Oberklasse. Die Entscheidung welche Operation ausgeführt wird kann erst zur Laufzeit, dynamisch, erfolgen.
- Die Signatur ist der Name der Operation mit der Liste der Parameterdatentypen, z.B.: plus(int, int); plus(double, double).
Aufgabe 2.3.1
public abstract class Person{
private String nachname;
public void setNachname(String n){
nachname = n;
}
public String getNachname(){
return nachname;
}
public abstract boolean istGut();
}
Aufgabe 2.3.2
public class Kind extends Person{
private double noteVorschultest;
public void setNote(double n){
noteVorschultest = n;
}
public double getNote(){
return noteVorschultest;
}
public boolean istGut(){
return noteVorschultest<2.5;
}
}
Aufgabe 2.3.3
public class Erzieherin extends Person{
private int anzahlBerufsjahre;
public void setBerufsjahre(int n){
anzahlBerufsjahre = n;
}
public int getBerufsjahre(){
return anzahlBerufsjahre;
}
public boolean istGut(){
return anzahlBerufsjahre > 7;
}
}
Aufgabe 2.3.4
public class Test{
public static String input(){ // Konsoleneingabe-Hilfsfunktion
return new java.util.Scanner(System.in).next();
}
public static void main(String args[]){
Person[] personenListe= new Person[10];
System.out.print("\f"); // Konsole löschen
String eingabe;
for(int i=0; i<personenListe.length;i++){
System.out.println("Kind oder Erzieherin? (k/e)");
eingabe = input();
if (eingabe.equals("k")){
personenListe[i]= new Kind();
System.out.println("Name des Kindes?");
personenListe[i].setNachname(input());
System.out.println("Note im Vorschultest?");
((Kind)personenListe[i]).setNote(Double.parseDouble(input())); // Pervers!
}
if (eingabe.equals("e")){
Erzieherin e = new Erzieherin(); // gegen perversen Typecast
personenListe[i]= e;
System.out.println("Name der Erzieherin?");
personenListe[i].setNachname(input());
System.out.println("Anzahl der Berufsjahre?");
e.setBerufsjahre(Integer.parseInt(input()));
}
System.out.println("Weitere Personen aufnehmen? (j/n)");
if(!input().equals("j")) break;
}
for(int i=0; i< personenListe.length; i++){
if(personenListe[i]==null) break; // Liste zu Ende
System.out.printf("%2d. %-15s %s\n",i+1,personenListe[i].getNachname(),personenListe[i].istGut()?"<- ist gut":"");
}
}
}