{"beispielaufgaben":[{"artefakt_id":"artefakt.diagramm.uml.klassendiagramm","aufgabe":[{"text":"Ausgangssituation","typ":"ueberschrift"},{"text":"Die Firnkant Sportverleih GmbH vermietet an vier Talstationen Wintersportausrüstung an Tagesgäste. Sie absolvieren Ihre Ausbildung in der IT-Abteilung des Unternehmens und wirken an der neuen Verleihsoftware mit.","typ":"absatz"},{"text":"Für die Abrechnung an der Ausgabetheke soll eine Klasse LeihpreisRechner entstehen, die den Endpreis eines Verleihvorgangs bestimmt.","typ":"absatz"},{"text":"Die Klasse LeihpreisRechner soll die folgenden Attribute besitzen:","typ":"absatz"},{"eintraege":["tagessatzSki: Mietpreis pro Tag für ein Paar Ski in EUR.","tagessatzBoard: Mietpreis pro Tag für ein Snowboard in EUR.","helmpauschale: Einmalbetrag für einen Leihhelm in EUR.","wochenfaktor: Nachlass ab dem siebten Leihtag als Faktor.","kaution: Sicherheitsleistung je Ausrüstung in EUR."],"typ":"liste"},{"text":"Alle Attribute sind vom Datentyp double. Die öffentlich sichtbare Methode berechneLeihpreis ist bereits eingetragen.","typ":"absatz"},{"text":"Ergänzen Sie das folgende Klassendiagramm um den Klassennamen, die Attribute und deren Datentypen. Die Sichtbarkeit aller Attribute soll private sein.","typ":"absatz"},{"text":"6 Punkte","typ":"punktzeile"},{"text":"Vorgegebenes Klassendiagramm:","typ":"ueberschrift"},{"text":"  Klassenname:  ...\n  Attribute:    ...\n  Methoden:     + berechneLeihpreis(vorgang : Verleihvorgang) : double","typ":"code"},{"text":"Hinweis: Notieren Sie Attribute in der Form Sichtbarkeit Attributname : Typ.","typ":"absatz"}],"aufgabe_diagramm":{"beziehungen":[],"klassen":[{"art":"klasse","attribute":[],"kopf_verdeckt":true,"methoden":[{"name":"berechneLeihpreis","parameter":[{"name":"vorgang","typ":"Verleihvorgang"}],"rueckgabe":"double","sicht":"+"}]}],"modus":"uml_klasse"},"beispiel_id":"bsp-uml-klassendiagramm-ergaenzen-diagramm-uml-klassendiagramm-01","freigabeart":"maschinell","loesung":[{"text":"1. Aufgabe (6 Punkte)","typ":"ueberschrift"},{"text":"Ergänztes Klassendiagramm:","typ":"ueberschrift"},{"text":"  LeihpreisRechner\n  - tagessatzSki : double\n  - tagessatzBoard : double\n  - helmpauschale : double\n  - wochenfaktor : double\n  - kaution : double\n  + berechneLeihpreis(vorgang : Verleihvorgang) : double","typ":"code"},{"text":"Punkteverteilung:","typ":"ueberschrift"},{"typ":"punkteverteilung","zeilen":[{"punkte":"1 Punkt","text":"Klassenname LeihpreisRechner im Kopfabschnitt"},{"punkte":"5 Punkte","text":"je 1 Punkt für ein Attribut mit korrektem Bezeichner, Datentyp double und der Sichtbarkeit private (-)"}]},{"text":"Der Punkt für ein Attribut wird nur vergeben, wenn Bezeichner, Datentyp und Sichtbarkeit gemeinsam korrekt notiert sind. Eine abweichende, aber durchgängig verwendete Schreibweise des Bezeichners (z. B. tagessatz_ski) ist zu akzeptieren.","typ":"absatz"},{"text":"Die vorgegebene Methode berechneLeihpreis wird nicht bewertet. Werden zusätzliche Attribute oder Methoden eingetragen, führt dies nicht zu Abzug, solange die geforderten fünf Attribute vollständig und korrekt vorhanden sind.","typ":"absatz"}],"loesung_diagramm":{"beziehungen":[],"klassen":[{"art":"klasse","attribute":[{"name":"tagessatzSki","sicht":"-","typ":"double"},{"name":"tagessatzBoard","sicht":"-","typ":"double"},{"name":"helmpauschale","sicht":"-","typ":"double"},{"name":"wochenfaktor","sicht":"-","typ":"double"},{"name":"kaution","sicht":"-","typ":"double"}],"id":"K1","methoden":[{"name":"berechneLeihpreis","parameter":[{"name":"vorgang","typ":"Verleihvorgang"}],"rueckgabe":"double","sicht":"+"}],"name":"LeihpreisRechner"}],"modus":"uml_klasse"},"operator_id":"operator.ergaenzen","pruefungszuordnung":{"berufe":["FIAE","FIDP"],"teil":"AP2"},"punkte":6,"punkterahmen":{"max":17,"min":2},"quellen":["ap1-2026-fruehjahr-gesamt-a04-b-ba","ap2-fiae-2022-sommer-ae1-a03-b-ba","ap2-fiae-2022-sommer-ae1-a03-b-bb","ap2-fiae-2024-winter-ae1-a03-a","ap2-fiae-2025-sommer-ae1-a04-c","ap2-fiae-2026-sommer-ae2-a02-a"]},{"artefakt_id":"artefakt.diagramm.uml.klassendiagramm","aufgabe":[{"text":"Ausgangssituation","typ":"ueberschrift"},{"text":"Die Musikschule Klangbogen e. V. unterrichtet an drei Standorten rund 900 Schülerinnen und Schüler. Die bisherige Belegungsplanung auf Papier soll durch ein eigenes Programm abgelöst werden. Sie arbeiten als Auszubildender im Entwicklungsteam der Musikschule mit.","typ":"absatz"},{"text":"Der Entwurf des Programms soll objektorientiert erfolgen. Verwaltet werden zwei Unterrichtsarten: Einzelstunden mit festem Termin und Ensembleproben, die in einem festen Rhythmus wiederkehren. Weitere Unterrichtsarten sollen später ohne Änderung der Verwaltung ergänzt werden können.","typ":"absatz"},{"text":"Jeder Unterricht trägt einen Titel als Text und eine höchstzulässige Teilnehmerzahl als ganze Zahl. Eine Einzelstunde speichert zusätzlich ihren Termin als Datum. Eine Ensembleprobe speichert ihren Rhythmus im Datentyp Probenrhythmus.","typ":"absatz"},{"text":"Jede Unterrichtsart bietet zwei Methoden an:","typ":"ueberschrift"},{"text":"- kurzfassung: liefert einen Text aus Titel und höchstzulässiger Teilnehmerzahl.\n- findetStatt: prüft für einen übergebenen Tag, ob an diesem Tag unterrichtet wird, und liefert einen Wahrheitswert. Die Prüfung fällt je Unterrichtsart unterschiedlich aus und wird zur Laufzeit passend zum Objekt aufgerufen.","typ":"absatz"},{"text":"Der folgende Ausschnitt des Klassendiagramms ist bereits eingetragen:","typ":"absatz"},{"text":"  Belegungsplan\n  - einheiten : List<Unterricht>\n  + aufnehmen(e : Unterricht) : void\n  + planFuerTag(tag : Date) : List<Unterricht>","typ":"code"},{"text":"Ergänzen Sie das Klassendiagramm um die fehlenden Klassen und Beziehungen. Tragen Sie bei jeder ergänzten Klasse die Attribute und Methoden mit vollständiger Signatur und Sichtbarkeit ein. Kardinalitäten sind nicht einzutragen.","typ":"absatz"},{"text":"12 Punkte","typ":"punktzeile"},{"text":"Hinweis: Kennzeichnen Sie abstrakte Bestandteile mit {abstract}.","typ":"absatz"}],"aufgabe_diagramm":{"beziehungen":[],"klassen":[{"art":"klasse","attribute":[{"name":"einheiten","sicht":"-","typ":"List<Unterricht>"}],"id":"K1","methoden":[{"name":"aufnehmen","parameter":[{"name":"e","typ":"Unterricht"}],"rueckgabe":"void","sicht":"+"},{"name":"planFuerTag","parameter":[{"name":"tag","typ":"Date"}],"rueckgabe":"List<Unterricht>","sicht":"+"}],"name":"Belegungsplan"}],"modus":"uml_klasse"},"beispiel_id":"bsp-uml-klassendiagramm-ergaenzen-diagramm-uml-klassendiagramm-02","freigabeart":"maschinell","loesung":[{"text":"2. Aufgabe (12 Punkte)","typ":"ueberschrift"},{"text":"Ergänztes Klassendiagramm:","typ":"ueberschrift"},{"text":"  Belegungsplan                                        (vorgegeben)\n  - einheiten : List<Unterricht>\n  + aufnehmen(e : Unterricht) : void\n  + planFuerTag(tag : Date) : List<Unterricht>","typ":"code"},{"text":"  Unterricht {abstract}\n  - titel : String\n  - maxTeilnehmer : int\n  + kurzfassung() : String\n  + findetStatt(tag : Date) : bool {abstract}","typ":"code"},{"text":"  Einzelstunde\n  - termin : Date\n  + findetStatt(tag : Date) : bool","typ":"code"},{"text":"  Ensembleprobe\n  - rhythmus : Probenrhythmus\n  + findetStatt(tag : Date) : bool","typ":"code"},{"text":"Beziehungen:","typ":"ueberschrift"},{"text":"  Belegungsplan aggregiert Unterricht (Aggregation, Ganzes = Belegungsplan)\n  Einzelstunde erbt von Unterricht (Vererbung)\n  Ensembleprobe erbt von Unterricht (Vererbung)","typ":"code"},{"text":"Punkteverteilung:","typ":"ueberschrift"},{"typ":"punkteverteilung","zeilen":[{"punkte":"1 Punkt","text":"Klasse Unterricht vorhanden und als abstrakt gekennzeichnet ({abstract})"},{"punkte":"2 Punkte","text":"je 1 Punkt für titel : String und maxTeilnehmer : int, jeweils mit Sichtbarkeit private (-)"},{"punkte":"2 Punkte","text":"Methoden der Klasse Unterricht mit vollständiger Signatur und Sichtbarkeit public (+): 1 Punkt kurzfassung() : String, 1 Punkt findetStatt(tag : Date) : bool als abstrakte Methode"},{"punkte":"2 Punkte","text":"Klasse Einzelstunde: 1 Punkt Klasse mit Attribut termin : Date (private), 1 Punkt überschriebene Methode findetStatt(tag : Date) : bool"},{"punkte":"2 Punkte","text":"Klasse Ensembleprobe: 1 Punkt Klasse mit Attribut rhythmus : Probenrhythmus (private), 1 Punkt überschriebene Methode findetStatt(tag : Date) : bool"},{"punkte":"2 Punkte","text":"je 1 Punkt für eine korrekt gerichtete Vererbungsbeziehung von Einzelstunde bzw. Ensembleprobe zur Klasse Unterricht"},{"punkte":"1 Punkt","text":"Teil-Ganzes-Beziehung zwischen Belegungsplan und Unterricht"}]},{"text":"Hinweise für die Korrektur: Eine Komposition statt der Aggregation ist gleichwertig zu bewerten. Die Verwendung einer Schnittstelle anstelle der abstrakten Klasse ist nur dann voll zu werten, wenn titel und maxTeilnehmer weiterhin einmalig modelliert bleiben; werden sie in beiden Unterklassen wiederholt, ist die geforderte Erweiterbarkeit nicht erfüllt (1 Punkt Abzug). Abweichende, aber durchgängige Bezeichner sowie andere gebräuchliche Typnamen (z. B. Boolean statt bool, LocalDate statt Date) sind zu akzeptieren. Kardinalitäten sind laut Aufgabenstellung nicht gefordert und werden nicht bewertet.","typ":"absatz"}],"loesung_diagramm":{"beziehungen":[{"a":"Belegungsplan","art":"aggregation","b":"Unterricht"},{"a":"Einzelstunde","art":"vererbung","b":"Unterricht"},{"a":"Ensembleprobe","art":"vererbung","b":"Unterricht"}],"klassen":[{"art":"klasse","attribute":[{"name":"einheiten","sicht":"-","typ":"List<Unterricht>"}],"id":"K1","methoden":[{"name":"aufnehmen","parameter":[{"name":"e","typ":"Unterricht"}],"rueckgabe":"void","sicht":"+"},{"name":"planFuerTag","parameter":[{"name":"tag","typ":"Date"}],"rueckgabe":"List<Unterricht>","sicht":"+"}],"name":"Belegungsplan"},{"art":"abstrakt","attribute":[{"name":"titel","sicht":"-","typ":"String"},{"name":"maxTeilnehmer","sicht":"-","typ":"int"}],"id":"K2","methoden":[{"name":"kurzfassung","parameter":[],"rueckgabe":"String","sicht":"+"},{"abstrakt":true,"name":"findetStatt","parameter":[{"name":"tag","typ":"Date"}],"rueckgabe":"bool","sicht":"+"}],"name":"Unterricht"},{"art":"klasse","attribute":[{"name":"termin","sicht":"-","typ":"Date"}],"id":"K3","methoden":[{"name":"findetStatt","parameter":[{"name":"tag","typ":"Date"}],"rueckgabe":"bool","sicht":"+"}],"name":"Einzelstunde"},{"art":"klasse","attribute":[{"name":"rhythmus","sicht":"-","typ":"Probenrhythmus"}],"id":"K4","methoden":[{"name":"findetStatt","parameter":[{"name":"tag","typ":"Date"}],"rueckgabe":"bool","sicht":"+"}],"name":"Ensembleprobe"}],"modus":"uml_klasse"},"operator_id":"operator.ergaenzen","pruefungszuordnung":{"berufe":["FIAE","FIDP"],"teil":"AP2"},"punkte":12,"punkterahmen":{"max":17,"min":2},"quellen":["ap1-2026-fruehjahr-gesamt-a04-b-ba","ap2-fiae-2022-sommer-ae1-a03-b-ba","ap2-fiae-2022-sommer-ae1-a03-b-bb","ap2-fiae-2024-winter-ae1-a03-a","ap2-fiae-2025-sommer-ae1-a04-c","ap2-fiae-2026-sommer-ae2-a02-a"]},{"artefakt_id":"artefakt.diagramm.uml.klassendiagramm","aufgabe":[{"text":"Ausgangssituation","typ":"ueberschrift"},{"text":"Das Klinikum am Lindenhang befördert Blutproben, Medikamente und Befunde über eine hausinterne Rohrpostanlage. Die Steuersoftware der Anlage wird neu entwickelt. Sie sind im Projektteam für die Modellierung der Anlagenstruktur zuständig.","typ":"absatz"},{"text":"Zur Veranschaulichung dient ein vereinfachter Ausschnitt der Anlage.","typ":"absatz"},{"text":"Sendestellen: Notaufnahme, Labor, Blutdepot, Station Nord, OP-Schleuse, Apotheke.\nDirekte Rohrverbindungen bestehen zwischen Notaufnahme und Labor, Labor und Blutdepot, Blutdepot und\nStation Nord, Labor und Apotheke, Notaufnahme und OP-Schleuse, OP-Schleuse und Apotheke sowie\nApotheke und Station Nord.\nDie Route R2 führt von der Notaufnahme über Labor und Blutdepot bis Station Nord.","typ":"absatz"},{"text":"Im Klassendiagramm sollen Sendestellen, Abschnitte, Routen und Transporte abgebildet werden. Dabei gelten folgende Sachverhalte:","typ":"absatz"},{"text":"- Eine Sendestelle trägt eine Bezeichnung, liegt in einer Etage und benötigt eine Beladedauer.\n- Ein Abschnitt verbindet genau zwei Sendestellen unmittelbar miteinander. Zu jedem Abschnitt wird eine Laufzeit hinterlegt. Im Ausschnitt entspricht jede aufgezählte Rohrverbindung einem Abschnitt.\n- Eine Route trägt eine Kennung und ist als geordnete Folge von Abschnitten festgelegt. Die Route R2 umfasst die Abschnitte Notaufnahme-Labor, Labor-Blutdepot und Blutdepot-Station Nord.\n- Ein Transport läuft über eine ganze Route oder über einen Teil davon. Er hat eine Quelle, eine Abgangszeit und ein Ziel. Beispiel: Ein Transport auf der Route R2 startet um 08:15 Uhr am Labor und endet am Blutdepot.","typ":"absatz"},{"text":"Geben Sie zu jeder Klasse die Attribute mit ihren Datentypen an. Methoden sind nicht einzutragen. Alle Beziehungen sind mit Multiplizitäten zu versehen.","typ":"absatz"},{"text":"Ergänzen Sie das Klassendiagramm um die fehlenden Klassen und Beziehungen.","typ":"absatz"},{"text":"17 Punkte","typ":"punktzeile"},{"text":"Der folgende Ausschnitt des Klassendiagramms ist bereits eingetragen:","typ":"absatz"},{"text":"Sendestelle","typ":"ueberschrift"},{"eintraege":["bezeichnung : String","etage : Integer","beladedauer : Integer"],"typ":"liste"}],"aufgabe_diagramm":{"beziehungen":[],"klassen":[{"art":"klasse","attribute":[{"name":"bezeichnung","sicht":"-","typ":"String"},{"name":"etage","sicht":"-","typ":"Integer"},{"name":"beladedauer","sicht":"-","typ":"Integer"}],"id":"K1","methoden":[],"name":"Sendestelle"}],"modus":"uml_klasse"},"beispiel_id":"bsp-uml-klassendiagramm-ergaenzen-diagramm-uml-klassendiagramm-03","freigabeart":"maschinell","loesung":[{"text":"3. Aufgabe (17 Punkte)","typ":"ueberschrift"},{"text":"Ergänztes Klassendiagramm:","typ":"ueberschrift"},{"text":"Sendestelle                                          (vorgegeben)","typ":"absatz"},{"eintraege":["bezeichnung : String","etage : Integer","beladedauer : Integer"],"typ":"liste"},{"text":"Abschnitt","typ":"ueberschrift"},{"eintraege":["laufzeit : Integer"],"typ":"liste"},{"text":"Route","typ":"ueberschrift"},{"eintraege":["kennung : String"],"typ":"liste"},{"text":"Transport","typ":"ueberschrift"},{"eintraege":["abgangszeit : DateTime"],"typ":"liste"},{"text":"Beziehungen:","typ":"ueberschrift"},{"text":"  Abschnitt  *  ------  2   Sendestelle          (ein Abschnitt verbindet genau zwei Sendestellen)\n  Route      *  ------  1..* Abschnitt {ordered} (geordnete Folge; ein Abschnitt kann in mehreren\n                                                  Routen liegen)\n  Transport  *  ------  1   Route\n  Transport  *  ------  1   Sendestelle           Rolle: quelle\n  Transport  *  ------  1   Sendestelle           Rolle: ziel","typ":"code"},{"text":"Punkteverteilung:","typ":"ueberschrift"},{"typ":"punkteverteilung","zeilen":[{"punkte":"1 Punkt","text":"Klasse Abschnitt vorhanden"},{"punkte":"1 Punkt","text":"Attribut laufzeit : Integer mit Sichtbarkeit private (-)"},{"punkte":"3 Punkte","text":"Beziehung zwischen Abschnitt und Sendestelle: 1 Punkt Beziehung eingetragen, 1 Punkt Multiplizität 2 auf der Seite der Sendestelle, 1 Punkt Multiplizität * (bzw. 0..*) auf der Seite des Abschnitts"},{"punkte":"1 Punkt","text":"Klasse Route vorhanden"},{"punkte":"1 Punkt","text":"Attribut kennung : String mit Sichtbarkeit private (-)"},{"punkte":"3 Punkte","text":"Beziehung zwischen Route und Abschnitt: 1 Punkt Beziehung eingetragen, 1 Punkt Multiplizitäten 1..* auf der Seite des Abschnitts und * auf der Seite der Route, 1 Punkt Kennzeichnung der Reihenfolge, z. B. {ordered} oder eine eigene Klasse Routenschritt mit Positionsnummer"},{"punkte":"1 Punkt","text":"Klasse Transport vorhanden"},{"punkte":"1 Punkt","text":"Attribut abgangszeit : DateTime mit Sichtbarkeit private (-)"},{"punkte":"2 Punkte","text":"Beziehung zwischen Transport und Route: 1 Punkt Beziehung eingetragen, 1 Punkt Multiplizitäten 1 auf der Seite der Route und * auf der Seite des Transports"},{"punkte":"3 Punkte","text":"Anbindung von Quelle und Ziel des Transports an die Klasse Sendestelle: je 1 Punkt für die beiden getrennten Beziehungen mit Multiplizität 1 auf der Seite der Sendestelle, 1 Punkt für die unterscheidende Benennung der beiden Beziehungen (Rollennamen quelle und ziel oder gleichwertige Beschriftung)"}]},{"text":"Hinweise für die Korrektur: Quelle und Ziel dürfen alternativ als zwei Attribute vom Typ Sendestelle innerhalb der Klasse Transport modelliert werden; die drei Punkte sind dann für zwei korrekt typisierte, unterscheidbar benannte Attribute zu vergeben. Statt der Assoziation zwischen Abschnitt und Sendestelle sind zwei gerichtete Beziehungen mit den Rollen von und nach ebenfalls voll zu bewerten. Andere gebräuchliche Typnamen (z. B. Time statt DateTime, int statt Integer) sind zu akzeptieren. Methoden werden nicht bewertet; eingetragene Methoden führen nicht zu Abzug. Ein Fehler an einer Klasse wirkt sich nicht doppelt auf die zugehörige Beziehungsbewertung aus (Folgefehler).","typ":"absatz"}],"loesung_diagramm":{"beziehungen":[{"a":"Abschnitt","art":"assoziation","b":"Sendestelle","multA":"*","multB":"2"},{"a":"Route","art":"assoziation","b":"Abschnitt","multA":"*","multB":"1..*","name":"{ordered}"},{"a":"Transport","art":"assoziation","b":"Route","multA":"*","multB":"1"},{"a":"Transport","art":"assoziation","b":"Sendestelle","multA":"*","multB":"1","rolleB":"quelle"},{"a":"Transport","art":"assoziation","b":"Sendestelle","multA":"*","multB":"1","rolleB":"ziel"}],"klassen":[{"art":"klasse","attribute":[{"name":"bezeichnung","sicht":"-","typ":"String"},{"name":"etage","sicht":"-","typ":"Integer"},{"name":"beladedauer","sicht":"-","typ":"Integer"}],"id":"K1","methoden":[],"name":"Sendestelle"},{"art":"klasse","attribute":[{"name":"laufzeit","sicht":"-","typ":"Integer"}],"id":"K2","methoden":[],"name":"Abschnitt"},{"art":"klasse","attribute":[{"name":"kennung","sicht":"-","typ":"String"}],"id":"K3","methoden":[],"name":"Route"},{"art":"klasse","attribute":[{"name":"abgangszeit","sicht":"-","typ":"DateTime"}],"id":"K4","methoden":[],"name":"Transport"}],"modus":"uml_klasse"},"operator_id":"operator.ergaenzen","pruefungszuordnung":{"berufe":["FIAE","FIDP"],"teil":"AP2"},"punkte":17,"punkterahmen":{"max":17,"min":2},"quellen":["ap1-2026-fruehjahr-gesamt-a04-b-ba","ap2-fiae-2022-sommer-ae1-a03-b-ba","ap2-fiae-2022-sommer-ae1-a03-b-bb","ap2-fiae-2024-winter-ae1-a03-a","ap2-fiae-2025-sommer-ae1-a04-c","ap2-fiae-2026-sommer-ae2-a02-a"]},{"artefakt_id":"artefakt.diagramm.uml.klassendiagramm","aufgabe":[{"text":"Ausgangssituation","typ":"ueberschrift"},{"text":"Die Rheinkai Umschlag GmbH betreibt einen Binnenhafen für Stückgut. Die Entgelte für die gelagerten Ladeeinheiten werden bisher in Tabellen gepflegt, was bei Nachfragen der Reedereien regelmäßig zu Verzögerungen führt. Dafür soll eine objektorientierte Anwendung entstehen, an deren Entwurf Sie mitarbeiten. Für die Ladeeinheiten Kühlcontainer und Gefahrgutcontainer sollen eigene Klassen entworfen werden, weil beide Arten unterschiedlich abgerechnet werden.","typ":"absatz"},{"text":"Die Klasse Kühlcontainer hat die Eigenschaften:\n- Frachtnummer\n- Bruttogewicht\n- Stellplatz\n- Solltemperatur\n- Aggregatnummer\nund Methoden:\n- entgeltBerechnen()\n- etikettDrucken()","typ":"absatz"},{"text":"Die Klasse Gefahrgutcontainer hat die Eigenschaften:\n- Frachtnummer\n- Bruttogewicht\n- Stellplatz\n- Gefahrklasse\n- Schutzabstand\nund Methoden:\n- entgeltBerechnen()\n- getGefahrklasse()\n- etikettDrucken()","typ":"absatz"},{"text":"Aufgabe: Erstellen Sie eine sinnvolle Klassenhierarchie. Die gemeinsame Oberklasse soll den Namen Ladeeinheit tragen.","typ":"absatz"},{"text":"8 Punkte","typ":"punktzeile"},{"text":"Hinweise:","typ":"ueberschrift"},{"eintraege":["Das Umschlagentgelt wird für die beiden Containerarten unterschiedlich ermittelt.","Konstruktoren, Datentypen und Sichtbarkeiten müssen Sie nicht angeben."],"typ":"liste"}],"beispiel_id":"bsp-uml-klassendiagramm-erstellen-diagramm-uml-klassendiagramm-01","freigabeart":"maschinell","loesung":[{"text":"Erwartungshorizont","typ":"ueberschrift"},{"text":"8 Punkte\nJe Klasse 2 Punkte, 2 Punkte für die Vererbung.","typ":"absatz"},{"text":"Lösungsvorschlag (UML-Klassendiagramm):","typ":"ueberschrift"},{"text":"Ladeeinheit\n  frachtnummer\n  bruttogewicht\n  stellplatz\n  entgeltBerechnen()   *\n  etikettDrucken()","typ":"code"},{"text":"Kühlcontainer\n  solltemperatur\n  aggregatnummer\n  entgeltBerechnen()","typ":"code"},{"text":"Gefahrgutcontainer\n  gefahrklasse\n  schutzabstand\n  entgeltBerechnen()\n  getGefahrklasse()","typ":"code"},{"text":"Beziehungen:\n  Kühlcontainer      -- Vererbung -->  Ladeeinheit\n  Gefahrgutcontainer -- Vererbung -->  Ladeeinheit","typ":"code"},{"text":"Bewertung im Einzelnen:","typ":"ueberschrift"},{"text":"Oberklasse Ladeeinheit (2 Punkte)\nDie in beiden Ausgangsklassen gleichlautenden Eigenschaften frachtnummer,\nbruttogewicht und stellplatz werden in der Oberklasse zusammengeführt. Die für\nbeide Containerarten gleich arbeitende Methode etikettDrucken() gehört ebenfalls\ndorthin und wird von beiden Unterklassen geerbt.","typ":"absatz"},{"text":"Kühlcontainer (2 Punkte)\nVerbleiben die für die Kühlung spezifischen Eigenschaften solltemperatur und\naggregatnummer sowie die eigene Ausprägung von entgeltBerechnen().","typ":"absatz"},{"text":"Gefahrgutcontainer (2 Punkte)\nVerbleiben gefahrklasse und schutzabstand, die eigene Ausprägung von\nentgeltBerechnen() sowie getGefahrklasse(), das nur hier benötigt wird.","typ":"absatz"},{"text":"Vererbung (2 Punkte)\nBeide Containerklassen sind über eine Vererbungsbeziehung mit Ladeeinheit\nverbunden.","typ":"absatz"},{"text":"* Da das Umschlagentgelt je Containerart unterschiedlich ermittelt wird, muss entgeltBerechnen() in beiden Unterklassen stehen. Zusätzlich darf die Methode in der Klasse Ladeeinheit geführt werden, dort dann als abstrakte Methode, die in den Unterklassen überschrieben wird (Polymorphie). Diese Variante ist gleichwertig und ebenfalls mit voller Punktzahl zu bewerten.","typ":"absatz"},{"text":"Sichtbarkeiten, Datentypen und Konstruktoren waren nicht gefordert; werden sie angegeben, dürfen sie nicht zu Punktabzug führen, solange sie fachlich stimmig sind.","typ":"absatz"}],"loesung_diagramm":{"beziehungen":[{"a":"Kühlcontainer","art":"vererbung","b":"Ladeeinheit"},{"a":"Gefahrgutcontainer","art":"vererbung","b":"Ladeeinheit"}],"klassen":[{"art":"abstrakt","attribute":[{"name":"frachtnummer"},{"name":"bruttogewicht"},{"name":"stellplatz"}],"id":"K1","methoden":[{"abstrakt":true,"name":"entgeltBerechnen","parameter":[]},{"name":"etikettDrucken","parameter":[]}],"name":"Ladeeinheit"},{"art":"klasse","attribute":[{"name":"solltemperatur"},{"name":"aggregatnummer"}],"id":"K2","methoden":[{"name":"entgeltBerechnen","parameter":[]}],"name":"Kühlcontainer"},{"art":"klasse","attribute":[{"name":"gefahrklasse"},{"name":"schutzabstand"}],"id":"K3","methoden":[{"name":"entgeltBerechnen","parameter":[]},{"name":"getGefahrklasse","parameter":[]}],"name":"Gefahrgutcontainer"}],"modus":"uml_klasse"},"operator_id":"operator.erstellen","pruefungszuordnung":{"berufe":["FIAE","FIDP"],"teil":"AP2"},"punkte":8,"punkterahmen":{"max":9,"min":7},"quellen":["ap1-2023-fruehjahr-gesamt-a04-c","ap2-fiae-2021-winter-ae1-a03-b","ap2-fiae-2022-sommer-ae1-a03-a","ap2-fiae-2023-sommer-ae1-a02-b-bb","ap2-fiae-2026-sommer-ae2-a02-a"]},{"artefakt_id":"artefakt.diagramm.uml.klassendiagramm","aufgabe":[{"text":"Ausgangssituation","typ":"ueberschrift"},{"text":"Die Kletterhalle Steilwand Nord in Kassel verleiht Sicherungsgeräte an ihre Gäste. Der Verleih und die wiederkehrende Sicherheitsprüfung der Geräte werden bisher handschriftlich festgehalten. Dabei kommt es an der Ausgabetheke immer wieder zu Rückfragen, weil der Prüfstand eines Gerätes nicht schnell genug erkennbar ist. Eine neue Anwendung soll den Bestand deshalb künftig digital verwalten. Zunächst soll eine Klasse für die einzelnen Leihgeräte modelliert werden.","typ":"absatz"},{"text":"Die Klasse Sicherungsgerät soll Folgendes beinhalten:","typ":"ueberschrift"},{"text":"- Zwei nur klassenintern sichtbare Instanzvariablen: geraeteNummer für die Inventarnummer und pruefdatum für die letzte Sicherheitsprüfung.\n- Einen paketübergreifend sichtbaren Konstruktor zur Initialisierung beider Instanzvariablen.\n- Für das Prüfdatum eine paketübergreifend sichtbare Get- und Set-Methode.\n- Eine nur innerhalb des Pakets sichtbare Methode istVerleihbar, die meldet, ob das Gerät ausgegeben werden darf.","typ":"absatz"},{"text":"Erstellen Sie das Klassendiagramm für die Klasse Sicherungsgerät.","typ":"absatz"},{"text":"7 Punkte","typ":"punktzeile"},{"text":"Hinweis: Geben Sie auch sinnvolle Datentypen an.","typ":"absatz"}],"beispiel_id":"bsp-uml-klassendiagramm-erstellen-diagramm-uml-klassendiagramm-02","freigabeart":"maschinell","loesung":[{"text":"Erwartungshorizont","typ":"ueberschrift"},{"text":"7 Punkte","typ":"punktzeile"},{"text":"Lösungsvorschlag (UML-Klassendiagramm):","typ":"ueberschrift"},{"text":"Sicherungsgerät\n  - geraeteNummer : String\n  - pruefdatum : Date\n  + Sicherungsgerät(geraeteNummer : String, pruefdatum : Date)\n  + getPruefdatum() : Date\n  + setPruefdatum(pruefdatum : Date) : void\n  ~ istVerleihbar() : Boolean","typ":"code"},{"text":"Bewertung im Einzelnen:","typ":"ueberschrift"},{"text":"Klassenname Sicherungsgerät im Kopf des Klassenrahmens, Attribut- und Methodenteil getrennt (1 Punkt).","typ":"absatz"},{"text":"Instanzvariable geraeteNummer, privat und mit sinnvollem Datentyp (1 Punkt).","typ":"absatz"},{"text":"Instanzvariable pruefdatum, privat und mit sinnvollem Datentyp (1 Punkt).","typ":"absatz"},{"text":"Konstruktor, öffentlich, mit beiden Parametern samt Datentyp (1 Punkt).","typ":"absatz"},{"text":"Get-Methode für das Prüfdatum, öffentlich, mit passendem Rückgabetyp (1 Punkt).","typ":"absatz"},{"text":"Set-Methode für das Prüfdatum, öffentlich, mit Parameter und Rückgabetyp void (1 Punkt).","typ":"absatz"},{"text":"Methode istVerleihbar mit Paketsichtbarkeit und logischem Rückgabetyp (1 Punkt).","typ":"absatz"},{"text":"Hinweise zur Bewertung:\n- Für die Datentypen sind gleichwertige Bezeichnungen der jeweils gewählten Sprache zulässig, etwa string statt String, DateTime oder LocalDate statt Date sowie bool statt Boolean.\n- Für die Inventarnummer ist auch ein ganzzahliger Typ anzuerkennen, sofern er durchgehend verwendet wird.\n- Die geforderten Sichtbarkeiten sind: klassenintern sichtbar entspricht privat (-), paketübergreifend sichtbar entspricht öffentlich (+), nur innerhalb des Pakets sichtbar entspricht Paketsichtbarkeit (~).\n- Ein ausgeschriebenes public, private beziehungsweise package statt der Kurzzeichen ist gleichwertig.\n- Weitere sinnvolle Methoden führen nicht zu Punktabzug, ersetzen aber keine der geforderten Bestandteile.","typ":"absatz"}],"loesung_diagramm":{"beziehungen":[],"klassen":[{"art":"klasse","attribute":[{"name":"geraeteNummer","sicht":"-","typ":"String"},{"name":"pruefdatum","sicht":"-","typ":"Date"}],"id":"K1","methoden":[{"name":"Sicherungsgerät","parameter":[{"name":"geraeteNummer","typ":"String"},{"name":"pruefdatum","typ":"Date"}],"sicht":"+"},{"name":"getPruefdatum","parameter":[],"rueckgabe":"Date","sicht":"+"},{"name":"setPruefdatum","parameter":[{"name":"pruefdatum","typ":"Date"}],"rueckgabe":"void","sicht":"+"},{"name":"istVerleihbar","parameter":[],"rueckgabe":"Boolean","sicht":"~"}],"name":"Sicherungsgerät"}],"modus":"uml_klasse"},"operator_id":"operator.erstellen","pruefungszuordnung":{"berufe":["FIAE","FIDP"],"teil":"AP2"},"punkte":7,"punkterahmen":{"max":9,"min":7},"quellen":["ap1-2023-fruehjahr-gesamt-a04-c","ap2-fiae-2021-winter-ae1-a03-b","ap2-fiae-2022-sommer-ae1-a03-a","ap2-fiae-2023-sommer-ae1-a02-b-bb","ap2-fiae-2026-sommer-ae2-a02-a"]},{"artefakt_id":"artefakt.diagramm.uml.klassendiagramm","aufgabe":[{"text":"Ausgangssituation","typ":"ueberschrift"},{"text":"Das Tagungshotel Ahornhof in Trier plant die Zimmerreinigung bisher auf Papier. Ein Programm soll die Reinigungsaufträge künftig verwalten. Der Entwurf erfolgt objektorientiert; Sie arbeiten am Klassendiagramm mit.","typ":"absatz"},{"text":"Es gibt eine allgemeine Klasse Auftrag und Klassen für besondere Auftragsarten:\n- AuftragAbreise\n- AuftragTurnus\nWeitere Auftragsarten sollen später hinzugefügt werden können, ohne dass die\nbestehenden Klassen geändert werden müssen.","typ":"absatz"},{"text":"Attribute der Klasse Auftrag:\n- Die Zimmernummer wird als ganze Zahl gespeichert.\n- Der geschätzte Zeitbedarf in Minuten wird ebenfalls als ganze Zahl hinterlegt. Bei Aufträgen nach einer Abreise gehört die Abreisezeit in das Attribut abreisezeit. Bei Aufträgen im festen Turnus ist die Anzahl der Tage zwischen zwei Reinigungen zu erfassen.","typ":"absatz"},{"text":"Methoden der Auftragsklassen:\n- auftragBeschreiben: Liefert einen Text aus Zimmernummer und Zeitbedarf.\n- jetztFaellig: Prüft, ob der Auftrag zum Aufrufzeitpunkt zu erledigen ist. Zur Laufzeit soll jeweils die zur Klasse gehörende Fassung ausgeführt werden.","typ":"absatz"},{"text":"Die Klasse Reinigungsplan verwaltet alle Aufträge.\nAttribut: List<Auftrag> auftraege\nMethoden:","typ":"absatz"},{"eintraege":["auftragHinzufuegen: Nimmt ein Objekt der Klasse Auftrag auf.","auftraegeJetzt: Gibt eine Liste der fälligen Aufträge zurück."],"typ":"liste"},{"text":"Aufgabe:","typ":"ueberschrift"},{"eintraege":["Erstellen Sie ein Klassendiagramm mit den vier genannten Klassen.","Tragen Sie die benötigten Attribute und Methoden mit vollständiger Signatur ein.","Kennzeichnen Sie deren Sichtbarkeiten.","Zeichnen Sie außerdem die Beziehungen zwischen den Klassen ein.        9 Punkte"],"typ":"liste"},{"text":"Hinweis: Kardinalitäten sind nicht einzutragen.","typ":"absatz"}],"beispiel_id":"bsp-uml-klassendiagramm-erstellen-diagramm-uml-klassendiagramm-03","freigabeart":"maschinell","loesung":[{"text":"Erwartungshorizont","typ":"ueberschrift"},{"text":"9 Punkte\n1 Punkt je Klasse, 1 Punkt für die Vererbung, 1 Punkt für die Teil-Ganzes-\nBeziehung, 3 Punkte für die vollständigen Signaturen einschließlich der\nSichtbarkeiten.","typ":"absatz"},{"text":"Lösungsvorschlag (UML-Klassendiagramm):","typ":"ueberschrift"},{"text":"Reinigungsplan\n  - auftraege : List<Auftrag>\n  + auftragHinzufuegen(a : Auftrag) : void\n  + auftraegeJetzt() : List<Auftrag>","typ":"code"},{"text":"Auftrag {abstract}\n  - zimmernummer : int\n  - zeitbedarf : int\n  + auftragBeschreiben() : String\n  + jetztFaellig() : bool {abstract}","typ":"code"},{"text":"AuftragAbreise\n  - abreisezeit : DateTime\n  + jetztFaellig() : bool","typ":"code"},{"text":"AuftragTurnus\n  - turnusTage : int\n  + jetztFaellig() : bool","typ":"code"},{"text":"Beziehungen:\n  Reinigungsplan  -- Aggregation --  Auftrag\n  AuftragAbreise  -- Vererbung -->   Auftrag\n  AuftragTurnus   -- Vererbung -->   Auftrag","typ":"code"},{"text":"Bewertung im Einzelnen:","typ":"ueberschrift"},{"text":"Klassen (4 Punkte)\nJe 1 Punkt für Reinigungsplan, Auftrag, AuftragAbreise und AuftragTurnus mit\nzutreffendem Namen und getrenntem Attribut- und Methodenteil.","typ":"absatz"},{"text":"Vererbung (1 Punkt)\nAuftragAbreise und AuftragTurnus erben von Auftrag. Nur dadurch lassen sich\nweitere Auftragsarten ergänzen, ohne die bestehenden Klassen zu ändern.","typ":"absatz"},{"text":"Teil-Ganzes-Beziehung (1 Punkt)\nReinigungsplan hält die Aufträge in der Liste auftraege; die Beziehung ist als\nAggregation zu zeichnen. Eine Komposition ist ebenfalls zu akzeptieren, wenn sie\nkonsistent dargestellt ist.","typ":"absatz"},{"text":"Signaturen und Sichtbarkeiten (3 Punkte)\nAlle Attribute sind privat, alle beschriebenen Methoden sind öffentlich. Die\nMethoden tragen Parameter mit Datentyp und einen Rückgabetyp. Für jede der drei\nAuftragsklassen sowie den Reinigungsplan wird die Vollständigkeit gewertet;\nje Klasse ohne vollständige Signaturen ist 1 Punkt abzuziehen, höchstens jedoch\n3 Punkte.","typ":"absatz"},{"text":"Hinweise zur Bewertung:\n- Da jetztFaellig für beide Auftragsarten verschieden entschieden wird und zur Laufzeit die passende Fassung auszuführen ist, muss die Klasse Auftrag abstrakt sein und die Methode dort abstrakt deklariert werden. Die Unterklassen überschreiben sie. Eine Lösung, die jetztFaellig ausschließlich in den Unterklassen führt, verliert den Punkt für die Signaturen der Oberklasse.\n- Gleichwertige Datentypbezeichnungen sind zulässig, etwa string statt String, boolean statt bool, Date oder LocalDateTime statt DateTime sowie Auftrag[] statt List<Auftrag>.\n- Andere sinnvolle Attributnamen sind anzuerkennen, sofern die geforderten Bezeichner abreisezeit und auftraege übernommen wurden.\n- Kardinalitäten waren nicht gefordert; angegebene Kardinalitäten führen weder zu Zusatzpunkten noch zu Abzug.","typ":"absatz"}],"loesung_diagramm":{"beziehungen":[{"a":"Reinigungsplan","art":"aggregation","b":"Auftrag"},{"a":"AuftragAbreise","art":"vererbung","b":"Auftrag"},{"a":"AuftragTurnus","art":"vererbung","b":"Auftrag"}],"klassen":[{"art":"klasse","attribute":[{"name":"auftraege","sicht":"-","typ":"List<Auftrag>"}],"id":"K1","methoden":[{"name":"auftragHinzufuegen","parameter":[{"name":"a","typ":"Auftrag"}],"rueckgabe":"void","sicht":"+"},{"name":"auftraegeJetzt","parameter":[],"rueckgabe":"List<Auftrag>","sicht":"+"}],"name":"Reinigungsplan"},{"art":"abstrakt","attribute":[{"name":"zimmernummer","sicht":"-","typ":"int"},{"name":"zeitbedarf","sicht":"-","typ":"int"}],"id":"K2","methoden":[{"name":"auftragBeschreiben","parameter":[],"rueckgabe":"String","sicht":"+"},{"abstrakt":true,"name":"jetztFaellig","parameter":[],"rueckgabe":"bool","sicht":"+"}],"name":"Auftrag"},{"art":"klasse","attribute":[{"name":"abreisezeit","sicht":"-","typ":"DateTime"}],"id":"K3","methoden":[{"name":"jetztFaellig","parameter":[],"rueckgabe":"bool","sicht":"+"}],"name":"AuftragAbreise"},{"art":"klasse","attribute":[{"name":"turnusTage","sicht":"-","typ":"int"}],"id":"K4","methoden":[{"name":"jetztFaellig","parameter":[],"rueckgabe":"bool","sicht":"+"}],"name":"AuftragTurnus"}],"modus":"uml_klasse"},"operator_id":"operator.erstellen","pruefungszuordnung":{"berufe":["FIAE","FIDP"],"teil":"AP2"},"punkte":9,"punkterahmen":{"max":9,"min":7},"quellen":["ap1-2023-fruehjahr-gesamt-a04-c","ap2-fiae-2021-winter-ae1-a03-b","ap2-fiae-2022-sommer-ae1-a03-a","ap2-fiae-2023-sommer-ae1-a02-b-bb","ap2-fiae-2026-sommer-ae2-a02-a"]},{"artefakt_id":"artefakt.freitextantwort","aufgabe":[{"text":"Ausgangssituation","typ":"ueberschrift"},{"text":"Sie sind Mitarbeiter der Tierklinik Silberbach GmbH. Die Klinik ersetzt ihre Papierakten durch eine eigene Verwaltungssoftware.","typ":"absatz"},{"text":"Ein Auszug aus dem Klassendiagramm liegt vor:","typ":"ueberschrift"},{"text":"Halter\n- halterNr : Integer\n+ getTiere() : List<Tier>","typ":"absatz"},{"text":"Tier\n- chipNr : String\n+ getBehandlungen() : List<Behandlung>","typ":"absatz"},{"text":"Behandlung","typ":"ueberschrift"},{"eintraege":["datum : Date"],"typ":"liste"},{"text":"Beziehungen:\nHalter zu Tier, Assoziation, Multiplizität 1 an Halter und 1..* an Tier\nTier zu Behandlung, Assoziation, Multiplizität 1 an Tier und 0..* an Behandlung","typ":"absatz"},{"text":"Erläutern Sie, welche Aussage die Multiplizität 1..* an der Klasse Tier und die Multiplizität 0..* an der Klasse Behandlung jeweils über den Datenbestand der Klinik treffen. Gehen Sie dabei auch auf den Unterschied der beiden unteren Grenzen und seine Folgen für die Datenerfassung in der Klinik ein.","typ":"absatz"},{"text":"3 Punkte","typ":"punktzeile"}],"beispiel_id":"bsp-uml-klassendiagramm-erlaeutern-freitextantwort-01","freigabeart":"maschinell","loesung":[{"text":"Erwartungshorizont (3 Punkte)","typ":"ueberschrift"},{"text":"Multiplizität 1..* an der Klasse Tier (1 Punkt)\nZu jedem gespeicherten Halter gehört mindestens ein Tier, es dürfen auch\nbeliebig viele sein. Ein Halter, dem kein Tier zugeordnet ist, kann nach\ndiesem Modell nicht geführt werden.","typ":"absatz"},{"text":"Multiplizität 0..* an der Klasse Behandlung (1 Punkt)\nZu einem Tier können beliebig viele Behandlungen gespeichert sein, ebenso\nkeine einzige. Ein neu aufgenommenes Tier ist damit auch ohne bereits\ndokumentierte Behandlung ein gültiger Datensatz.","typ":"absatz"},{"text":"Unterschied der beiden Untergrenzen und Folgen für die Datenerfassung (1 Punkt) Der Unterschied liegt in der Untergrenze: Die 1 erzwingt einen Eintrag, die 0 lässt ihn offen. Die Klinik kann deshalb ein Tier vor seiner ersten Behandlung anlegen, einen Halter dagegen erst zusammen mit seinem ersten Tier.","typ":"absatz"},{"text":"Hinweis für die Bewertung: Die obere Grenze * ist in beiden Fällen gleich und allein nicht punktwürdig. Sinngemäß gleichwertige Formulierungen, etwa \"mindestens eins\" und \"keins oder mehrere\", sind zu akzeptieren.","typ":"absatz"}],"operator_id":"operator.erlaeutern","pruefungszuordnung":{"berufe":["FIAE"],"teil":"AP2"},"punkte":3,"punkterahmen":{"max":3,"min":3},"quellen":["ap2-fiae-2022-sommer-ae1-a03-b-ba","ap2-fiae-2022-sommer-ae1-a03-b-bc","ap2-fiae-2024-winter-ae1-a03-b-bb","ap2-fiae-2024-winter-ae1-a03-b-bc"]},{"artefakt_id":"artefakt.freitextantwort","aufgabe":[{"text":"Ausgangssituation","typ":"ueberschrift"},{"text":"Die Nordkai Terminal GmbH verwaltet die Stellplätze ihres Containerlagers künftig mit einer eigenen Anwendung. Sie erhalten den Auftrag, den vorliegenden Entwurf zu prüfen.","typ":"absatz"},{"text":"Ein Auszug aus dem Klassendiagramm liegt vor:","typ":"ueberschrift"},{"text":"Lagerblock\n- blockKennung : String\n+ getStellplaetze() : List<Stellplatz>","typ":"absatz"},{"text":"Stellplatz","typ":"ueberschrift"},{"eintraege":["reihe : Integer","ebene : Integer"],"typ":"liste"},{"text":"Beziehungen:\nLagerblock (Ganzes) zu Stellplatz, Aggregation, Multiplizität 1 an Lagerblock\nund 1..* an Stellplatz","typ":"absatz"},{"text":"Hinweis: Jeder Stellplatz gehört genau einem Lagerblock. Wird ein Lagerblock zurückgebaut, entfallen seine Stellplätze ersatzlos.","typ":"absatz"},{"text":"Erläutern Sie, ob die Beziehung zwischen Lagerblock und Stellplatz statt als Aggregation besser als Komposition modelliert werden sollte.","typ":"absatz"},{"text":"3 Punkte","typ":"punktzeile"}],"beispiel_id":"bsp-uml-klassendiagramm-erlaeutern-freitextantwort-02","freigabeart":"maschinell","loesung":[{"text":"Erwartungshorizont (3 Punkte)","typ":"ueberschrift"},{"text":"Erwartetes Ergebnis: Die Komposition ist hier die passendere Modellierung.","typ":"absatz"},{"text":"Merkmal der Komposition (1 Punkt)\nBei einer Komposition ist das Teil vom Ganzen existenzabhängig und gehört zu\ngenau einem Ganzen. Wird das Ganze gelöscht, verschwinden seine Teile\nzwangsläufig mit. Die Aggregation fordert das nicht: Ihr Teil kann auch ohne\ndas Ganze weiterbestehen und von mehreren Ganzen genutzt werden.","typ":"absatz"},{"text":"Übertragung auf den Entwurf (1 Punkt)\nEin Stellplatz ist genau einem Lagerblock zugeordnet und wird beim Rückbau des\nBlocks ersatzlos gestrichen. Beide Bedingungen der Komposition sind damit\nerfüllt.","typ":"absatz"},{"text":"Schlussfolgerung (1 Punkt)\nDie Aggregation drückt diese Bindung zu schwach aus; sie ließe verwaiste\nStellplätze ohne Lagerblock zu. Die Beziehung ist deshalb als Komposition zu\nzeichnen, mit der ausgefüllten Raute am Lagerblock als dem Ganzen. Die\nMultiplizitäten 1 und 1..* bleiben unverändert.","typ":"absatz"},{"text":"Hinweis für die Bewertung: Eine begründete Gegenposition ist zu akzeptieren, wenn sie die Existenzabhängigkeit ausdrücklich prüft und nachvollziehbar verneint, etwa mit einer geplanten Weiterverwendung freigeräumter Stellplätze. Eine Antwort ohne Bezug auf den Rückbau erhält höchstens 1 Punkt.","typ":"absatz"}],"operator_id":"operator.erlaeutern","pruefungszuordnung":{"berufe":["FIAE"],"teil":"AP2"},"punkte":3,"punkterahmen":{"max":3,"min":3},"quellen":["ap2-fiae-2022-sommer-ae1-a03-b-ba","ap2-fiae-2022-sommer-ae1-a03-b-bc","ap2-fiae-2024-winter-ae1-a03-b-bb","ap2-fiae-2024-winter-ae1-a03-b-bc"]},{"artefakt_id":"artefakt.freitextantwort","aufgabe":[{"text":"Ausgangssituation","typ":"ueberschrift"},{"text":"Sie sind Mitarbeiter der Kulturbühne Ahrensfelde GmbH. Für den Kartenverkauf entsteht eine Anwendung, in der jede Karte ihren Rabatt selbst berechnet.","typ":"absatz"},{"text":"Ein Auszug aus dem Klassendiagramm liegt vor:","typ":"ueberschrift"},{"text":"<<interface>> Rabattfaehig\n+ berechneRabatt(grundpreis : Double) : Double","typ":"absatz"},{"text":"Ticket\n- platzNr : String\n+ berechneRabatt(grundpreis : Double) : Double","typ":"absatz"},{"text":"Schuelerticket","typ":"ueberschrift"},{"eintraege":["schulnachweis : String"],"typ":"liste"},{"text":"Abonnementticket","typ":"ueberschrift"},{"eintraege":["laufzeitMonate : Integer"],"typ":"liste"},{"text":"Beziehungen:\nTicket zu Rabattfaehig, Implementierung\nSchuelerticket zu Ticket, Vererbung\nAbonnementticket zu Ticket, Vererbung","typ":"absatz"},{"text":"Erläutern Sie, was die Implementierungsbeziehung von Ticket für die beiden abgeleiteten Kartenarten bedeutet.","typ":"absatz"},{"text":"3 Punkte","typ":"punktzeile"}],"beispiel_id":"bsp-uml-klassendiagramm-erlaeutern-freitextantwort-03","freigabeart":"maschinell","loesung":[{"text":"Erwartungshorizont (3 Punkte)","typ":"ueberschrift"},{"text":"Bedeutung der Implementierungsbeziehung für Ticket (1 Punkt) Ticket verpflichtet sich mit der Implementierung der Schnittstelle Rabattfaehig, die dort nur deklarierte Methode berechneRabatt mit einem eigenen Rumpf bereitzustellen. Die Schnittstelle gibt die Signatur vor, Ticket liefert das Verhalten.","typ":"absatz"},{"text":"Wirkung auf Schuelerticket und Abonnementticket (1 Punkt)\nBeide Klassen erben von Ticket und übernehmen damit sowohl die Methode als\nauch die Zusage an die Schnittstelle. Sie sind ebenfalls vom Typ Rabattfaehig,\nohne dass die Implementierungsbeziehung erneut gezeichnet werden muss, und\nsind ohne eigenen Code bereits vollständig verwendbar.","typ":"absatz"},{"text":"Folgen für die Anwendung (1 Punkt)\nDer Kartenverkauf kann alle Kartenarten einheitlich über den Typ Rabattfaehig\nansprechen und berechneRabatt aufrufen, ohne die konkrete Klasse zu kennen.\nJede abgeleitete Klasse darf die geerbte Methode überschreiben und so ihre\neigene Rabattregel einsetzen; der Aufruf bleibt derselbe.","typ":"absatz"},{"text":"Hinweis für die Bewertung: Der dritte Punkt wird auch vergeben, wenn statt der einheitlichen Behandlung ausschließlich das Überschreiben mit eigener Rabattregel erläutert wird. Die bloße Nennung des Begriffs Polymorphie ohne Erläuterung genügt nicht.","typ":"absatz"}],"operator_id":"operator.erlaeutern","pruefungszuordnung":{"berufe":["FIAE"],"teil":"AP2"},"punkte":3,"punkterahmen":{"max":3,"min":3},"quellen":["ap2-fiae-2022-sommer-ae1-a03-b-ba","ap2-fiae-2022-sommer-ae1-a03-b-bc","ap2-fiae-2024-winter-ae1-a03-b-bb","ap2-fiae-2024-winter-ae1-a03-b-bc"]},{"artefakt_id":"artefakt.freitextantwort","aufgabe":[{"text":"Ausgangssituation","typ":"ueberschrift"},{"text":"Sie absolvieren Ihre Ausbildung bei der Nordwind Wassersport GmbH. Der Betrieb verleiht am Kranichsee Segelboote, Kanus und Stand-up-Boards. Für die Vermietung soll eine neue Software entstehen; Sie arbeiten im Projekt mit.","typ":"absatz"},{"text":"Ein Mietvertrag fasst mehrere Mietpositionen zusammen. Jede Mietposition hält genau ein Sportgerät mit seiner Mietdauer fest. Der Entwurf des Klassendiagramms sieht wie folgt aus:","typ":"absatz"},{"text":"Mietvertrag\n- vertragsnummer : String\n- ausgabezeitpunkt : DateTime\n+ endpreisBerechnen() : Double","typ":"absatz"},{"text":"Mietposition\n- geraetenummer : String\n- mietstunden : Integer\n+ positionspreisBerechnen() : Double","typ":"absatz"},{"text":"Beziehungen:\nMietvertrag zu Mietposition: Komposition, Multiplizität 1 zu 1..*","typ":"absatz"},{"text":"a) Begründen Sie anhand von zwei Aspekten, warum die Komposition hier gegenüber einer Aggregation sinnvoller ist.","typ":"absatz"},{"text":"4 Punkte","typ":"punktzeile"}],"beispiel_id":"bsp-uml-klassendiagramm-begruenden-freitextantwort-01","freigabeart":"maschinell","loesung":[{"text":"3. Aufgabe (4 Punkte) — Erwartungshorizont","typ":"ueberschrift"},{"text":"a) 4 Punkte","typ":"ueberschrift"},{"text":"Erwartete Lösung","typ":"ueberschrift"},{"text":"Die Komposition ist die strenge Form der Ganzes-Teil-Beziehung: Das Teil ist vom Ganzen existenzabhängig. Genau das trifft hier zu, und darin liegt der Unterschied zur Aggregation, die lediglich eine lose Zusammensetzung ohne Existenzabhängigkeit ausdrückt.","typ":"absatz"},{"text":"Aspekt 1 — Existenzabhängigkeit und gemeinsame Lebensdauer","typ":"ueberschrift"},{"text":"Eine Mietposition hat außerhalb ihres Mietvertrags keine Bedeutung; sie hält allein fest, welches Sportgerät innerhalb dieses einen Vorgangs für wie viele Stunden überlassen wurde. Sie entsteht mit dem Mietvertrag und muss mit ihm gelöscht werden. Die Komposition schreibt genau dieses Verhalten fest: Wird ein stornierter Mietvertrag entfernt, verschwinden seine Positionen mit. Bei einer Aggregation blieben sie als verwaiste Objekte im System zurück und müssten gesondert aufgeräumt werden.","typ":"absatz"},{"text":"Aspekt 2 — Ausschließliche Zuordnung und Verantwortung für die Teile","typ":"absatz"},{"text":"Eine Mietposition gehört zu genau einem Mietvertrag; sie wird nicht von mehreren Verträgen gemeinsam genutzt. Die Aggregation lässt eine solche Mehrfachnutzung ausdrücklich zu und wäre damit zu schwach modelliert. Die Komposition legt die Verantwortung für Erzeugung und Löschung der Positionen eindeutig beim Mietvertrag ab. Nur deshalb kann endpreisBerechnen() den Gesamtpreis verlässlich aus den Positionen bilden: Die Summe kann von keinem anderen Objekt verändert oder mitbenutzt werden.","typ":"absatz"},{"text":"Bewertungsvorschlag (4 Punkte)","typ":"ueberschrift"},{"text":"  Aspekt 1 benannt (Existenzabhängigkeit / gemeinsame Lebensdauer,\n    Löschung der Teile mit dem Ganzen)                                        1 Punkt\n  Aspekt 1 am Szenario belegt (Mietposition ohne Mietvertrag fachlich\n    sinnlos bzw. verwaist)                                                    1 Punkt\n  Aspekt 2 benannt (Zugehörigkeit zu genau einem Ganzen, keine\n    gemeinsame Nutzung; Aggregation ließe sie zu)                             1 Punkt\n  Aspekt 2 am Szenario belegt (eindeutige Verantwortung des Mietvertrags,\n    verlässliche Preisbildung über die eigenen Positionen)                     1 Punkt","typ":"code"},{"text":"Hinweise zur Korrektur","typ":"ueberschrift"},{"text":"- Gefordert sind zwei Aspekte. Werden mehr genannt, werden die beiden am besten begründeten gewertet; ein Überschreiten der Höchstpunktzahl ist nicht möglich.\n- Gleichwertig statt Aspekt 2 sind: die stärkere Kapselung (Zugriff auf die Positionen nur über den Mietvertrag), die Multiplizität 1 auf der Seite des Ganzen als Ausdruck der ausschließlichen Zuordnung sowie die Sicherung der Datenkonsistenz, weil keine Position ohne gültigen Vertrag bestehen kann.\n- Die Fachbegriffe „Komposition“ und „Aggregation“ müssen nicht verwendet werden, wenn der Sachverhalt inhaltlich zutreffend beschrieben wird (etwa „das Teil kann ohne das Ganze nicht existieren“).\n- Eine reine Wiedergabe der Definition ohne Bezug zu Mietvertrag und Mietposition erhält je Aspekt nur den ersten Punkt.\n- Eine Antwort, die die Aggregation für richtig hält, ist nicht zu werten; die Aufgabe gibt die Komposition als gewählte Modellierung vor.","typ":"absatz"}],"operator_id":"operator.begruenden","pruefungszuordnung":{"berufe":["FIAE"],"teil":"AP2"},"punkte":4,"punkterahmen":{"max":4,"min":4},"quellen":["ap2-fiae-2022-sommer-ae1-a03-b-bc"]},{"artefakt_id":"artefakt.freitextantwort","aufgabe":[{"text":"Ausgangssituation","typ":"ueberschrift"},{"text":"Sie sind Mitarbeiter der Lichtblick Eventtechnik GmbH. Der Betrieb vermietet Bühnen- und Tontechnik und plant Veranstaltungen. Für die Auftragsplanung soll eine neue Software entstehen; Sie arbeiten im Projekt mit.","typ":"absatz"},{"text":"Geplant werden bisher Konzerte und Tagungen, später auch weitere Veranstaltungsarten. Jede Art ermittelt ihren Personalbedarf nach eigenen Regeln. Der Entwurf des Klassendiagramms sieht wie folgt aus:","typ":"absatz"},{"text":"Veranstaltung {abstract}\n- titel : String\n- beginn : DateTime\n+ personalbedarf() : Integer {abstract}","typ":"code"},{"text":"Konzert\n- buehnenflaeche : Double\n+ personalbedarf() : Integer","typ":"absatz"},{"text":"Tagung\n- raumanzahl : Integer\n+ personalbedarf() : Integer","typ":"absatz"},{"text":"Beziehungen:\nVeranstaltung zu Konzert: Vererbung\nVeranstaltung zu Tagung: Vererbung","typ":"absatz"},{"text":"a) Begründen Sie anhand von zwei Aspekten, warum die abstrakte Oberklasse mit Vererbung hier sinnvoller ist als zwei getrennte Klassen.","typ":"absatz"},{"text":"4 Punkte","typ":"punktzeile"}],"beispiel_id":"bsp-uml-klassendiagramm-begruenden-freitextantwort-02","freigabeart":"maschinell","loesung":[{"text":"3. Aufgabe (4 Punkte) — Erwartungshorizont","typ":"ueberschrift"},{"text":"a) 4 Punkte","typ":"ueberschrift"},{"text":"Erwartete Lösung","typ":"ueberschrift"},{"text":"Konzert und Tagung sind beide Veranstaltungen und teilen sich sowohl Daten als auch eine Aufgabe. Die abstrakte Oberklasse fasst diese Gemeinsamkeit an einer Stelle zusammen, ohne selbst instanziierbar zu sein — eine Veranstaltung ohne konkrete Art gibt es im Betrieb nicht.","typ":"absatz"},{"text":"Aspekt 1 — Gemeinsame Merkmale nur einmal, dadurch bessere Wartbarkeit","typ":"absatz"},{"text":"Titel und Beginn treffen auf jede Veranstaltungsart zu. Ohne gemeinsame Oberklasse müsste jede Klasse diese Attribute erneut führen; jede spätere Änderung, etwa eine zusätzliche Angabe zum Veranstaltungsort, wäre in allen Klassen nachzuziehen. Das ist fehleranfällig und erzeugt Redundanz. Mit der Vererbung wird eine solche Erweiterung genau einmal in der Klasse Veranstaltung vorgenommen und steht allen Arten zur Verfügung.","typ":"absatz"},{"text":"Aspekt 2 — Einheitlicher Typ, Polymorphie und Erweiterbarkeit","typ":"absatz"},{"text":"Die Auftragsplanung kann alle Aufträge in einer einzigen Liste vom Typ Veranstaltung verwalten und für jeden Eintrag personalbedarf() aufrufen, ohne die konkrete Art zu kennen; zur Laufzeit wird die Methode der jeweiligen Unterklasse ausgeführt. Da personalbedarf() in der Oberklasse abstrakt ist, wird jede Unterklasse zur eigenen Umsetzung gezwungen. Kommt später eine weitere Art wie Stadtfest hinzu, genügt eine neue Unterklasse; der bestehende Planungscode bleibt unverändert. Zwei getrennte Klassen ohne gemeinsamen Obertyp würden dagegen an jeder Aufrufstelle eine Fallunterscheidung erzwingen, die bei jeder neuen Art zu erweitern wäre.","typ":"absatz"},{"text":"Bewertungsvorschlag (4 Punkte)","typ":"ueberschrift"},{"text":"  Aspekt 1 benannt (gemeinsame Attribute bzw. gemeinsames Verhalten nur\n    einmal definiert, keine Redundanz)                                        1 Punkt\n  Aspekt 1 am Szenario belegt (titel und beginn gelten für jede Art;\n    Änderungen nur an einer Stelle)                                           1 Punkt\n  Aspekt 2 benannt (gemeinsamer Obertyp erlaubt polymorphen Aufruf von\n    personalbedarf(); abstrakte Methode erzwingt die Umsetzung)               1 Punkt\n  Aspekt 2 am Szenario belegt (Planung verarbeitet alle Arten einheitlich;\n    weitere Arten ohne Änderung des vorhandenen Codes)                        1 Punkt","typ":"code"},{"text":"Hinweise zur Korrektur","typ":"ueberschrift"},{"text":"- Gefordert sind zwei Aspekte. Werden mehr genannt, werden die beiden am besten begründeten gewertet; ein Überschreiten der Höchstpunktzahl ist nicht möglich.\n- Gleichwertig ist die Begründung über die Erweiterbarkeit als eigener zweiter Aspekt (neue Veranstaltungsarten als zusätzliche Unterklassen, ohne bestehende Klassen zu ändern), ebenso der Hinweis, dass die Oberklasse abstrakt bleibt, weil ein Objekt ohne konkrete Art fachlich nicht sinnvoll ist.\n- Die Fachbegriffe „Polymorphie“, „späte Bindung“ oder „Redundanz“ müssen nicht verwendet werden, wenn der Sachverhalt inhaltlich zutreffend beschrieben wird.\n- Eine reine Aufzählung von Vorteilen der objektorientierten Programmierung ohne Bezug auf Veranstaltung, Konzert und Tagung erhält je Aspekt nur den ersten Punkt.","typ":"absatz"}],"operator_id":"operator.begruenden","pruefungszuordnung":{"berufe":["FIAE"],"teil":"AP2"},"punkte":4,"punkterahmen":{"max":4,"min":4},"quellen":["ap2-fiae-2022-sommer-ae1-a03-b-bc"]},{"artefakt_id":"artefakt.freitextantwort","aufgabe":[{"text":"Ausgangssituation","typ":"ueberschrift"},{"text":"Sie arbeiten in der Rheinhardt Recycling GmbH, einem Entsorgungsbetrieb mit drei Wertstoffhöfen. Für die Tourenplanung soll eine neue Software entstehen; Sie arbeiten im Projekt mit.","typ":"absatz"},{"text":"Vor jeder Abfahrt wird gewogen: die Sammelcontainer ebenso wie die Transportfahrzeuge. Darüber hinaus haben beide fachlich nichts gemeinsam. Der Entwurf des Klassendiagramms sieht wie folgt aus:","typ":"absatz"},{"text":"<<interface>> Wiegbar\n+ leergewichtLesen() : Double\n+ ladungWiegen() : Double","typ":"absatz"},{"text":"Sammelcontainer\n- standplatz : String\n+ leergewichtLesen() : Double\n+ ladungWiegen() : Double","typ":"absatz"},{"text":"Transportfahrzeug\n- kennzeichen : String\n+ leergewichtLesen() : Double\n+ ladungWiegen() : Double","typ":"absatz"},{"text":"Beziehungen:\nSammelcontainer zu Wiegbar: Implementierung\nTransportfahrzeug zu Wiegbar: Implementierung","typ":"absatz"},{"text":"a) Begründen Sie anhand von zwei Aspekten, warum die Schnittstelle hier sinnvoller ist als eine gemeinsame Oberklasse.","typ":"absatz"},{"text":"4 Punkte","typ":"punktzeile"}],"beispiel_id":"bsp-uml-klassendiagramm-begruenden-freitextantwort-03","freigabeart":"maschinell","loesung":[{"text":"3. Aufgabe (4 Punkte) — Erwartungshorizont","typ":"ueberschrift"},{"text":"a) 4 Punkte","typ":"ueberschrift"},{"text":"Erwartete Lösung","typ":"ueberschrift"},{"text":"Die Schnittstelle beschreibt eine Fähigkeit, die Vererbung dagegen eine Ist-ein-Beziehung. Sammelcontainer und Transportfahrzeug können beide gewogen werden, sie sind aber fachlich nicht dasselbe. Deshalb ist die Implementierungsbeziehung zu Wiegbar hier die zutreffende Modellierung.","typ":"absatz"},{"text":"Aspekt 1 — Keine fachliche Ist-ein-Beziehung, kein gemeinsamer Zustand","typ":"absatz"},{"text":"Ein Sammelcontainer steht auf einem Wertstoffhof, ein Transportfahrzeug fährt und trägt ein Kennzeichen; außer der Wiegbarkeit haben beide nichts gemeinsam. Eine gemeinsame Oberklasse würde eine Verallgemeinerung behaupten, die es im Betrieb nicht gibt, und hätte weder sinnvolle gemeinsame Attribute noch gemeinsamen Code zu vererben. Sie wäre eine künstliche Konstruktion, die das Modell nur schwerer verständlich macht. Die Schnittstelle sagt genau das aus, was zutrifft: Beide Klassen können gewogen werden.","typ":"absatz"},{"text":"Aspekt 2 — Nur Signaturen vorgegeben, Umsetzung frei, mehrere Schnittstellen möglich","typ":"absatz"},{"text":"Wiegbar legt allein die Signaturen von leergewichtLesen() und ladungWiegen() fest. Das ist hier ausreichend, denn ein Container wird auf der Hofwaage gewogen, ein Fahrzeug auf der Brückenwaage; die Umsetzung unterscheidet sich vollständig, eine geerbte Implementierung brächte keinen Nutzen. Anders als bei einer Oberklasse bleibt zudem die Vererbungsbeziehung für die eigentliche Fachlichkeit frei: Ein Transportfahrzeug kann später von einer Klasse Fahrzeug erben und trotzdem weitere Schnittstellen umsetzen. Die Tourenplanung arbeitet gegen den Typ Wiegbar und kann ohne Änderung um weitere wiegbare Objekte ergänzt werden.","typ":"absatz"},{"text":"Bewertungsvorschlag (4 Punkte)","typ":"ueberschrift"},{"text":"  Aspekt 1 benannt (Schnittstelle beschreibt eine Fähigkeit, Vererbung\n    eine Ist-ein-Beziehung; hier liegt keine Ist-ein-Beziehung vor)           1 Punkt\n  Aspekt 1 am Szenario belegt (Container und Fahrzeug haben außer dem\n    Wiegen keine gemeinsamen Attribute; Oberklasse wäre künstlich)            1 Punkt\n  Aspekt 2 benannt (Schnittstelle gibt nur Signaturen vor, Umsetzung je\n    Klasse eigen; mehrere Schnittstellen sind möglich, Mehrfachvererbung\n    in der Regel nicht)                                                       1 Punkt\n  Aspekt 2 am Szenario belegt (unterschiedliche Wiegevorgänge; Fahrzeug\n    bleibt für eine eigene Oberklasse frei bzw. Tourenplanung arbeitet\n    einheitlich gegen Wiegbar)                                                1 Punkt","typ":"code"},{"text":"Hinweise zur Korrektur","typ":"ueberschrift"},{"text":"- Gefordert sind zwei Aspekte. Werden mehr genannt, werden die beiden am besten begründeten gewertet; ein Überschreiten der Höchstpunktzahl ist nicht möglich.\n- Gleichwertig als eigener zweiter Aspekt sind die lose Kopplung der Tourenplanung an den Typ Wiegbar und die daraus folgende Erweiterbarkeit um weitere wiegbare Klassen sowie der Hinweis, dass eine gemeinsame Oberklasse ihre Unterklassen an eine Vererbungshierarchie bindet, die hier fachlich nicht gebraucht wird.\n- Die Begriffe „Interface“, „Implementierungsbeziehung“ und „Schnittstelle“ sind gleichwertig zu werten.\n- Eine reine Gegenüberstellung von Schnittstelle und abstrakter Klasse ohne Bezug auf Sammelcontainer und Transportfahrzeug erhält je Aspekt nur den ersten Punkt.\n- Der Verweis auf fehlende Mehrfachvererbung ist auch dann zu werten, wenn keine konkrete Programmiersprache genannt wird.","typ":"absatz"}],"operator_id":"operator.begruenden","pruefungszuordnung":{"berufe":["FIAE"],"teil":"AP2"},"punkte":4,"punkterahmen":{"max":4,"min":4},"quellen":["ap2-fiae-2022-sommer-ae1-a03-b-bc"]},{"artefakt_id":"artefakt.freitextantwort","aufgabe":[{"text":"Ausgangssituation","typ":"ueberschrift"},{"text":"Sie entwickeln die Einsatzplanung der Nordlicht Bühnentechnik GmbH.","typ":"absatz"},{"text":"Auszug aus dem Klassendiagramm:","typ":"ueberschrift"},{"text":"Einsatzteam\n- techniker : List<Techniker>\n+ teamgroesse() : Integer","typ":"absatz"},{"text":"Techniker\n- personalNr : Integer\n+ getPersonalNr() : Integer","typ":"absatz"},{"text":"Beziehungen:\nAggregation zwischen Einsatzteam (Ganzes, Multiplizität 1) und Techniker (Teil, 1..*).","typ":"absatz"},{"text":"Beschreiben Sie die Bedeutung der eingetragenen Aggregation zwischen den beiden Klassen. Gehen Sie dabei auch auf die Existenz der Techniker beim Auflösen eines Einsatzteams ein.","typ":"absatz"},{"text":"2 Punkte","typ":"punktzeile"}],"beispiel_id":"bsp-uml-klassendiagramm-beschreiben-freitextantwort-01","freigabeart":"maschinell","loesung":[{"text":"Erwartungshorizont","typ":"ueberschrift"},{"text":"2 Punkte","typ":"punktzeile"},{"text":"Bedeutung der Aggregation (1 Punkt)","typ":"ueberschrift"},{"text":"Die Aggregation modelliert eine Teil-Ganzes-Beziehung: Das Einsatzteam ist das Ganze und fasst die ihm zugeordneten Techniker als seine Teile zusammen. Laut Multiplizität besteht ein Einsatzteam aus mindestens einem, in der Regel mehreren Technikern; ein Techniker ist genau einem Einsatzteam zugeordnet.","typ":"absatz"},{"text":"Existenz der Techniker beim Auflösen eines Einsatzteams (1 Punkt)","typ":"absatz"},{"text":"Die Teile sind nicht existenzabhängig vom Ganzen. Wird ein Einsatzteam aufgelöst, bleiben seine Technikerobjekte bestehen und können einem anderen Einsatzteam zugeordnet werden. Genau darin unterscheidet sich die Aggregation von der Komposition, bei der die Teile mit dem Ganzen gelöscht würden.","typ":"absatz"},{"text":"Hinweis für die Korrektur: Die beiden Punkte entsprechen den beiden Sätzen der Aufgabenstellung und werden getrennt vergeben. Der erste Punkt setzt die Benennung als Teil-Ganzes-Beziehung mit korrekter Zuordnung von Ganzem (Einsatzteam) und Teil (Techniker) voraus; die Multiplizität darf auch sinngemäß wiedergegeben werden. Der zweite Punkt setzt die Aussage voraus, dass der Techniker das Auflösen seines Einsatzteams überdauert; die Begründung darf über die fehlende Existenzabhängigkeit, über die Abgrenzung zur Komposition oder über die Weiterverwendung des Technikers in einem anderen Team erfolgen. Eine Antwort, die lediglich „1 zu n\" oder „Techniker gehören zum Einsatzteam\" wiedergibt, ohne die Teil-Ganzes-Semantik zu benennen, erhält für den ersten Teil keinen Punkt. Wird das Auflösen des Einsatzteams mit dem Löschen der Techniker gleichgesetzt, ist der zweite Punkt nicht zu vergeben.","typ":"absatz"}],"operator_id":"operator.beschreiben","pruefungszuordnung":{"berufe":["FIAE"],"teil":"AP2"},"punkte":2,"punkterahmen":{"max":2,"min":2},"quellen":["ap2-fiae-2024-winter-ae1-a03-b-ba"]},{"artefakt_id":"artefakt.freitextantwort","aufgabe":[{"text":"Ausgangssituation","typ":"ueberschrift"},{"text":"Sie sind Mitarbeiter der Klangwerkstatt Ohlendorf e. V. und entwickeln die Kursverwaltung mit.","typ":"absatz"},{"text":"Auszug aus dem Klassendiagramm:","typ":"ueberschrift"},{"text":"Kurs\n- termine : List<Kurstermin>\n+ terminAnlegen() : Kurstermin","typ":"absatz"},{"text":"Kurstermin\n- beginn : DateTime\n+ getBeginn() : DateTime","typ":"absatz"},{"text":"Beziehungen:\nKomposition zwischen Kurs (Ganzes) und Kurstermin, Multiplizität 1 an Kurs und 0..* an Kurstermin.","typ":"absatz"},{"text":"Beschreiben Sie die Bedeutung der eingetragenen Komposition zwischen den beiden Klassen.","typ":"absatz"},{"text":"2 Punkte","typ":"punktzeile"}],"beispiel_id":"bsp-uml-klassendiagramm-beschreiben-freitextantwort-02","freigabeart":"maschinell","loesung":[{"text":"Erwartungshorizont","typ":"ueberschrift"},{"text":"2 Punkte","typ":"punktzeile"},{"text":"Die Komposition modelliert eine strenge Teil-Ganzes-Beziehung: Der Kurs ist das\nGanze und setzt sich aus seinen Kursterminen als Teilen zusammen. Ein Kurs kann\nlaut Multiplizität keinen, einen oder mehrere Termine enthalten; ein Kurstermin\ngehört zu genau einem Kurs.\n(1 Punkt)","typ":"absatz"},{"text":"Die Teile sind existenzabhängig vom Ganzen: Ein Kurstermin kann ohne den zugehörigen Kurs nicht bestehen. Mit dem Löschen des Kursobjekts werden auch seine Termine gelöscht, und ein Termin kann nicht an einen anderen Kurs weitergegeben oder von mehreren Kursen gemeinsam genutzt werden. (1 Punkt)","typ":"absatz"},{"text":"Hinweis für die Korrektur: Beide Punkte werden getrennt vergeben. Der erste Punkt setzt die Benennung als Teil-Ganzes-Beziehung mit korrekter Zuordnung von Ganzem (Kurs) und Teil (Kurstermin) voraus; der zweite Punkt die Existenzabhängigkeit des Teils. Sinngemäß gleichwertige Formulierungen sind zulässig, ebenso Antworten, die den zweiten Punkt über das kaskadierende Löschen oder über die Abgrenzung zur Aggregation begründen. Wird die Beziehung lediglich als Aggregation oder als einfache Assoziation beschrieben, ist der zweite Punkt nicht zu vergeben.","typ":"absatz"}],"operator_id":"operator.beschreiben","pruefungszuordnung":{"berufe":["FIAE"],"teil":"AP2"},"punkte":2,"punkterahmen":{"max":2,"min":2},"quellen":["ap2-fiae-2024-winter-ae1-a03-b-ba"]},{"artefakt_id":"artefakt.freitextantwort","aufgabe":[{"text":"Ausgangssituation","typ":"ueberschrift"},{"text":"Sie arbeiten in der Weserfracht Tammen KG und modellieren die Flottenverwaltung.","typ":"absatz"},{"text":"Auszug aus dem Klassendiagramm:","typ":"ueberschrift"},{"text":"Wasserfahrzeug\n- rumpflaenge : Double\n+ tiefgangPruefen() : Double","typ":"absatz"},{"text":"Schubleichter\n- ladeflaeche : Double\n+ tiefgangPruefen() : Double","typ":"absatz"},{"text":"Beziehungen:\nSchubleichter erbt von Wasserfahrzeug.","typ":"absatz"},{"text":"Beschreiben Sie die Bedeutung der eingetragenen Vererbungsbeziehung zwischen den beiden Klassen.","typ":"absatz"},{"text":"2 Punkte","typ":"punktzeile"}],"beispiel_id":"bsp-uml-klassendiagramm-beschreiben-freitextantwort-03","freigabeart":"maschinell","loesung":[{"text":"Erwartungshorizont","typ":"ueberschrift"},{"text":"2 Punkte","typ":"punktzeile"},{"text":"Die Vererbung modelliert eine Generalisierung beziehungsweise Spezialisierung:\nWasserfahrzeug ist die Oberklasse, Schubleichter die Unterklasse. Ein\nSchubleichter ist ein spezielles Wasserfahrzeug („ist ein\"-Beziehung), sodass ein\nSchubleichter-Objekt überall dort verwendet werden kann, wo ein Wasserfahrzeug\nerwartet wird.\n(1 Punkt)","typ":"absatz"},{"text":"Die Unterklasse übernimmt die Merkmale der Oberklasse und erweitert sie: Der Schubleichter erbt das Attribut rumpflaenge und ergänzt das eigene Attribut ladeflaeche. Die geerbte Methode tiefgangPruefen() wird in der Unterklasse überschrieben, weil der Tiefgang eines Schubleichters anders zu ermitteln ist. Der gemeinsame Anteil wird dadurch nur einmal in der Oberklasse gepflegt. (1 Punkt)","typ":"absatz"},{"text":"Hinweis für die Korrektur: Beide Punkte werden getrennt vergeben. Der erste Punkt setzt die Benennung als Generalisierung/Spezialisierung mit korrekter Richtung (Schubleichter erbt von Wasserfahrzeug) voraus; der zweite Punkt eine Aussage zur Übernahme geerbter Attribute und Methoden. Sinngemäß gleichwertige Formulierungen sind zulässig, ebenso Antworten, die den zweiten Punkt über das Überschreiben von tiefgangPruefen(), über Polymorphie oder über die Vermeidung redundanten Codes begründen. Eine vertauschte Vererbungsrichtung führt zum Verlust des ersten Punktes.","typ":"absatz"}],"operator_id":"operator.beschreiben","pruefungszuordnung":{"berufe":["FIAE"],"teil":"AP2"},"punkte":2,"punkterahmen":{"max":2,"min":2},"quellen":["ap2-fiae-2024-winter-ae1-a03-b-ba"]}],"konzept_id":"fachkonzept.uml-klassendiagramm","schema_version":3}