OOP_STUDY_NOTES - OnlyCook/abitur-elite-code GitHub Wiki
Alle prüfungsrelevanten Themen der OOP-Ausarbeitungsaufgaben, kompakt und lernfertig aufbereitet.
Fokus: Was das Abitur wirklich abfragt, mit Standardformulierungen und Schlüsselbegriffen.
⚠ Hinweis zur Qualität: Dieser Lernzettel wurde von KI erstellt. Trotz sorgfältiger Prüfung können einzelne Einträge fehlerhaft oder unvollständig sein.
- UML-Anwendungsfalldiagramm (AWD)
- UML-Klassendiagramm (KD)
- OOP-Konzepte — Vererbung, Aggregation, Komposition
- Datenkapselung & Zugriffsmodifizierer
- Client-Server-Architektur
- Threads & Synchronisation
- Datenstrukturen
- Softwareentwicklungsprozess & Qualität
- Operatoren — Was wird erwartet?
Ein AWD modelliert die Anforderungen an ein System aus Benutzersicht. Es beschreibt das Was des Systems, nicht das Wie. Es dient der Absprache zwischen Auftraggeber (Kunde) und Auftragnehmer (Entwickler) und wird in der Analysephase des Softwareentwicklungsprozesses eingesetzt.
| Element | Symbol | Bedeutung |
|---|---|---|
| Akteur | Strichmännchen | Externe Rolle (Person oder System), die mit dem System interagiert |
| Anwendungsfall | Ellipse innerhalb der Systemgrenze | Eine Hauptfunktion des Systems |
| Systemgrenze | Rechteck | Umschließt alle Anwendungsfälle; System-Name steht innen |
| Assoziation | Verbindungslinie | Akteur ist an diesem AF beteiligt oder kann ihn auslösen |
<<include>> |
Gestrichelter Pfeil | Muss-Beziehung (siehe unten) |
<<extend>> |
Gestrichelter Pfeil | Kann-Beziehung (siehe unten) |
| Generalisierung | Hohlpfeil | Vererbung zwischen Akteuren oder Anwendungsfällen |
<<include>> — Muss-Beziehung:
- AF
Ainkludiert AFB→Bwird immer ausgeführt, wennAausgeführt wird - Zweck: Gemeinsame Teilfunktionalität mehrerer Anwendungsfälle auslagern
- Der Pfeil zeigt auf den inkludierten Anwendungsfall (
B) - Beispiel: „Ticket kaufen" inkludiert immer „Anmelden"
<<extend>> — Kann-Beziehung:
- AF
Bextended AFA→Bwird nur bei Erfüllung einer bestimmten Bedingung ausgeführt - Zweck: Optionale Sonderfälle oder Erweiterungen modellieren
- Der Pfeil zeigt auf den erweiterten Anwendungsfall (
A) - Beispiel: „Reservierung stornieren" extended „Zahlung überwachen" — nur wenn keine Zahlung eingegangen ist
Eselsbrücke: include = immer (Muss); extend = eventuell (Kann)
Wenn Akteur B eine Generalisierung von Akteur A ist, kann B alle Anwendungsfälle von A ausführen, zusätzlich zu seinen eigenen. Der Hohlpfeil zeigt auf den allgemeineren Akteur (A).
Beispiel: Akteur „Mitarbeiter" ist Spezialisierung von „Mitglied" → Mitarbeiter kann alles, was ein Mitglied kann, plus „Rechnungen ausstellen".
„Geben Sie den Zweck von UML-Anwendungsfalldiagrammen an. Beschreiben Sie anhand des dargestellten Diagramms die wesentlichen Notationselemente und die Unterschiede zwischen extend- und include-Beziehungen."
Musterantwort-Struktur:
- Zweck in 1–2 Sätzen
- Alle Notationselemente (Akteur, AF, Systemgrenze, Assoziation, ggf. Beziehungstypen) benennen und beschreiben
-
<<include>>erklären + konkretes Beispiel aus dem Diagramm -
<<extend>>erklären + konkretes Beispiel aus dem Diagramm
Wenn eine Klasse verbal beschrieben werden soll, folgt man immer derselben Struktur. Die folgenden Stichworte werden oft explizit in der Aufgabenstellung gefordert und müssen im Text verwendet werden:
Klasse, Objekt, Attribut, Methode, Konstruktor, Assoziation, Navigierbarkeit, Rolle, Multiplizität
Musterstruktur:
- Klasse benennen, Zugriffsrecht, Attribute mit Typ aufzählen
- Statische Attribute (falls vorhanden) und ihren Zweck nennen
- Methoden exemplarisch beschreiben (Parameter + Rückgabetyp)
- Assoziationen mit Richtung, Multiplizität und Rollenname beschreiben
Beispielformulierung:
„Die Klasse
Patientbesitzt die privaten AttributepatientenNr,nameundgeschlechtsowie das statische Attributautowert, das dazu dient, jedem Patienten eine eindeutige Nummer zuzuweisen. Die MethodeindikationMitHoechsterPrioritaet(): Indikationliefert ein Objekt vom Typ Indikation zurück und benötigt keinen Parameter."
Unidirektionale Assoziation:
„Klasse
Akennt KlasseB(Rollenname:b). KlasseBkenntAnicht — die Assoziation ist nicht rückwärts navigierbar."
Bidirektionale Assoziation:
„Zwischen
AundBbesteht eine beidseitig navigierbare Assoziation.AkenntB(Rolle:b) undBkenntA(Rolle:a)."
Multiplizität:
| Notation | Bedeutung | Typ |
|---|---|---|
1 |
Genau ein Objekt | Muss-Beziehung |
0..1 |
Kein oder ein Objekt | Kann-Beziehung |
* oder 0..*
|
Beliebig viele (auch null) | Kann-Beziehung |
1..* |
Mindestens eines | Muss-Beziehung |
Muss-Beziehung: Mindestens 1 — das Objekt muss in dieser Beziehung stehen
Kann-Beziehung: Minimum 0 — das Objekt kann, muss aber nicht in dieser Beziehung stehen
-
Klassenattribut (static): Gehört zur Klasse, nicht zu einzelnen Objekten. Im UML unterstrichen dargestellt. Typischer Zweck: automatische Nummerierung (
autoNr,autowert) - Instanzattribut: Gehört zu jedem Objekt individuell. Normale Darstellung.
| Typ | UML-Notation | Bedeutung |
|---|---|---|
| Einfache Assoziation | Linie (ggf. mit Pfeil) | Allgemeine Beziehung zwischen Klassen |
| Aggregation | Offene Raute am Ganzen | Ganzes-Teile, Teile existieren unabhängig |
| Komposition | Ausgefüllte Raute am Ganzen | Ganzes-Teile, Teile existieren nicht ohne das Ganze |
| Vererbung | Hohlpfeil (Dreieckspitze) zur Superklasse | „ist ein"-Beziehung |
Definition: Neue Klassen werden auf Basis vorhandener Klassen definiert. Es entsteht eine Hierarchie aus Superklassen (Oberklassen) und Subklassen (Unterklassen).
Generalisierung: Gemeinsame Attribute und Methoden mehrerer ähnlicher Klassen werden in eine Superklasse ausgelagert.
Spezialisierung: Eine Subklasse erbt alle Attribute und Methoden der Superklasse und erweitert oder überschreibt diese.
Vorteil: Die Superklasse ist bereits getestet — Fehler können nur noch in den Erweiterungen auftreten. Wiederverwendung von Code.
UML: Hohlpfeil (leere Dreieckspitze) zeigt von der Subklasse auf die Superklasse.
Typische Prüfungsformulierung:
„Erläutern Sie das Konzept der Vererbung allgemein und beschreiben Sie die vorliegende Vererbungsstruktur ausführlich (Stichworte: Spezialisierung, Generalisierung, abstrakte Klassen und Methoden, Zugriffsrecht protected, Polymorphie)."
Da die Stichworte explizit genannt werden, müssen alle im Text vorkommen.
- Eine abstrakte Klasse kann nicht instanziiert werden — es lassen sich keine Objekte direkt von ihr erzeugen.
- Sie stellt eine Schnittstelle (Interface) für ihre Subklassen bereit.
- Abstrakte Methoden haben keinen Methodenrumpf und erzwingen, dass alle konkreten Subklassen diese Methode implementieren (überschreiben).
- Im UML: Klassenname und abstrakte Methoden werden kursiv dargestellt.
Beispielformulierung:
„Die abstrakte Klasse
Personkann nicht instanziiert werden. Die abstrakte MethodeabrechnenMonat()erzwingt, dass sie in den UnterklassenKundeundReinigungskraftüberschrieben werden muss."
Polymorphie bedeutet, dass Methoden in verschiedenen Klassen einer Vererbungshierarchie dieselbe Signatur haben, aber unterschiedlich implementiert sind.
- Welche konkrete Methode für ein Objekt aufgerufen wird, wird erst zur Laufzeit entschieden (dynamisches Binden)
- Vorteil: Objekte unterschiedlicher Subklassen können einheitlich über den Typ der Superklasse angesprochen werden
Beispiel:
„Die Methode
toString()ist in den KlassenRahmenTeil,SchaltElementundEinzelTeilpolymorph — alle haben dieselbe Signatur, aber jede Klasse liefert eine andere Ausgabe. Welche der Methoden für ein konkretes Objekt verwendet wird, wird erst zur Laufzeit bestimmt."
Beide beschreiben eine Ganzes-Teile-Beziehung — ein größeres Ganzes besteht aus Teilen. Der entscheidende Unterschied liegt in der Lebensdauer der Teile.
Aggregation (offene/nicht ausgefüllte Raute):
- Schwache Abhängigkeit — Weak Ownership
- Die Teile können unabhängig vom Ganzen existieren
- Wird das Ganze gelöscht, überleben die Teile
- Beispiel: Eine Abteilung besteht aus Mitarbeitern — wird die Abteilung aufgelöst, existieren die Mitarbeiter weiterhin
Komposition (ausgefüllte Raute):
- Starke Abhängigkeit — Strong Ownership
- Die Teile existieren nicht ohne das Ganze
- Wird das Ganze gelöscht, werden die Teile mitgelöscht
- Beispiel: Eine Bestellung besteht aus Bestellpositionen — ohne die Bestellung ergibt eine Bestellposition keinen Sinn
Merkhilfe: Die Raute befindet sich immer am Ganzen (nicht am Teil).
Datenkapselung (auch: Geheimnisprinzip) bezeichnet in der OOP das Verbergen von Daten vor unkontrolliertem Zugriff von außen. Der direkte Zugriff auf interne Attribute wird unterbunden — der Zugriff erfolgt ausschließlich über definierte Schnittstellen (get- und set-Methoden).
Ziel: Verhindern, dass interne Zustände unkontrolliert oder versehentlich geändert werden. Nur die definierten Methoden entscheiden, wie und wann Daten verändert werden dürfen.
| Modifizierer | UML-Symbol | Zugriff von |
|---|---|---|
public |
+ |
Überall — alle Klassen |
private |
− |
Nur innerhalb der eigenen Klasse |
protected |
# |
Innerhalb der Klasse + Subklassen + gleiches Paket (keine get/set-Methoden nötig innerhalb der Vererbungshierarchie) |
„Beschreiben Sie den Zweck der Datenkapselung und erläutern Sie das Geheimnisprinzip am Beispiel der Attribute
pinundkontostandder KlasseKonto."
Musterantwort:
„Als Datenkapselung wird der kontrollierte Zugriff auf Attribute und Methoden einer Klasse bezeichnet. Klassen sollen den internen Zustand anderer Klassen nicht unkontrolliert lesen oder ändern können — der Zugriff erfolgt nur über definierte Schnittstellen. Die Attribute
pinundkontostandsindprivateund damit von außen nicht direkt zugänglich. Der Kontostand kann nur über die öffentlichen Methodeneinzahlen()undueberweisen()geändert werden — eine direkte Zuweisung von außen ist nicht möglich. Das Attributpinist ausschließlich überlogin()erreichbar."
Das Client-Server-Modell beschreibt die Verteilung von Aufgaben in einem Netzwerk auf zwei Rollen:
Client (aktive Rolle):
- Baut eine Verbindung zum Server auf
- Sendet Anfragen und empfängt Antworten
- Ist der initiierende Teil der Kommunikation
Server (passive Rolle):
- Horcht dauerhaft an einem Port auf eingehende Verbindungsanfragen
- Nimmt Verbindungen entgegen und bearbeitet sie
- Erzeugt für jeden verbundenen Client einen eigenen Thread, damit mehrere Clients parallel bedient werden können
Dienst: Eine festgelegte Aufgabe, die der Server anbietet und der Client nutzt.
Protokoll: Die Regeln der Kommunikation zwischen Client und Server — Kommandos, Bedeutung der übertragenen Daten, Formate.
Socket: Endpunkt einer Netzwerkverbindung. Ermöglicht das bidirektionale Lesen und Schreiben von Daten zwischen Client und Server.
Diese Dreiteilung (Client / Server / Thread) ist das wichtigste Muster im Abitur und taucht in nahezu jedem relevanten Vorschlag auf.
Client:
„Der Client baut über einen Socket eine Verbindung zum Server auf. Er sendet Anfragen an den Server und empfängt dessen Antworten. Der Client übernimmt die aktive Rolle beim Verbindungsaufbau."
Server:
„Der Server horcht an seinem Port und nimmt Verbindungsanfragen von Clients über einen ServerSocket entgegen. Hat er eine Verbindungsanfrage akzeptiert, erzeugt er einen neuen AnfrageThread für diesen Client — damit mehrere Clients gleichzeitig bedient werden können. Der Server erhält bei der Erzeugung eine Referenz auf das Verwaltungsobjekt (z.B.
KinoManager), die er an den Thread weitergibt."
AnfrageThread / ServerThread:
„Der AnfrageThread erbt von der Klasse
Threadund überschreibt die Methoderun(), damit der Dialog mit dem Client in einem nebenläufigen Prozess ausgeführt werden kann. Damitrun()asynchron läuft, muss der Thread über die geerbte Methodestart()gestartet werden — diese ruft internrun()auf. Der Thread erhält im Konstruktor den Socket für die Kommunikation sowie eine Referenz auf das Verwaltungsobjekt. Er ruft dessen Methoden auf (z.B.anmelden(),sucheTicket()) und sendet die Ergebnisse über den Socket zurück an den Client."
Ein sehr häufig gefordertes Muster ist zu erklären, warum der Server einen Thread pro Client erzeugt:
„Da mehrere Clients gleichzeitig Verbindungen aufbauen können, muss für jeden Client ein eigener Thread erzeugt werden. So werden die Anfragen der einzelnen Clients unabhängig voneinander und parallel bearbeitet — kein Client blockiert einen anderen."
„Threads sind leichtgewichtige Prozesse, die sich denselben Adressraum im Speicher teilen. Innerhalb eines Prozesses können mehrere Threads quasi-parallel ablaufen. Im Gegensatz zu eigenständigen Prozessen haben Threads keinen eigenen Speicherbereich — sie teilen sich den Arbeitsspeicher, besitzen aber jeweils einen eigenen Befehlszähler und Stack."
Prozess vs. Thread:
| Prozess | Thread | |
|---|---|---|
| Speicher | Eigener, isolierter Speicherbereich | Teilt Adressraum mit anderen Threads |
| Schwergewicht | Schwergewichtig | Leichtgewichtig |
| Kommunikation | Aufwändig (IPC) | Einfach (gemeinsamer Speicher) |
// Klasse erbt von Thread class MeinThread extends Thread { public void run() { // Code, der nebenläufig ausgeführt wird } } // Starten: MeinThread t = new MeinThread(); t.start(); // ruft run() asynchron auf
Wichtig für die Prüfung:
-
run()wird überschrieben — hier steht der nebenläufige Code - Gestartet wird mit
start(), nicht mitrun()direkt (direkter Aufruf läuft nicht nebenläufig!) - Der Thread endet, sobald
run()vollständig ausgeführt ist
Das ist die häufigste Thread-Aufgabe im Abitur. Immer gleiche Struktur:
Das Problem: Wenn mehrere Threads gleichzeitig auf gemeinsame Daten zugreifen, kann es zu inkonsistenten Zuständen kommen.
Ablauf einer Race Condition:
- Thread A liest den Wert einer gemeinsamen Variable (z.B.
kontostand) - Das Betriebssystem unterbricht Thread A (Kontextwechsel)
- Thread B liest denselben Wert, ändert ihn und schreibt ihn zurück
- Thread A wird fortgesetzt und schreibt seinen veralteten Wert — Thread B's Änderung wird überschrieben
Konkretes Beispiel (E-Banking):
„Wenn zwei Clients gleichzeitig Überweisungen vornehmen, können beide Threads gleichzeitig auf den
kontostandzugreifen. Thread A prüft, ob ausreichend Deckung vorhanden ist — in diesem Moment wird er unterbrochen. Thread B führt ebenfalls eine Überweisung durch und reduziert den Kontostand. Wird Thread A fortgesetzt, führt er seine Überweisung auf Basis des veralteten Kontostands durch — obwohl keine ausreichende Deckung mehr vorliegt."
Die Lösung:
Die betroffene Methode mit synchronized kennzeichnen. Dadurch kann die Methode zu einem Zeitpunkt nur von einem Thread ausgeführt werden — die Ausführung wird nicht unterbrochen, bis die Methode abgeschlossen ist (atomare Ausführung).
public synchronized void ueberweisen(double betrag) {
// Kritischer Abschnitt — nur ein Thread gleichzeitig
}Das Abitur fragt oft nach dem Nutzen von Threads anhand eines konkreten Szenarios:
„Da sowohl die Messung der Fahrdaten als auch die Kommunikation mit der Zentrale nebenläufig ablaufen sollen, ist es sinnvoll, beide Vorgänge als Threads zu realisieren. So kann der Bordcomputer gleichzeitig Fahrdaten erfassen und auf Anfragen der Zentrale reagieren, ohne dass ein Vorgang den anderen blockiert."
Eine dynamische Datenstruktur zur Speicherung beliebig vieler Objekte.
- Jedes Listenelement enthält einen Verweis (Referenz/Pointer) auf das nächste Element
- Es gibt keinen direkten Index-Zugriff — die Liste muss vom Anfang bis zum gesuchten Element durchlaufen werden
- Vorteil gegenüber Array: Einfügen und Löschen ohne Verschieben von Elementen — nur Referenzen werden umgehängt
- Nachteil: Kein direkter Zugriff über Index möglich
Einfach verkettete Liste: Jedes Element kennt nur seinen Nachfolger
Doppelt verkettete Liste: Jedes Element kennt Nachfolger und Vorgänger (z.B. über naechste und vorherige Referenzen)
- Prinzip: LIFO — Last In, First Out
- Das zuletzt hinzugefügte Element wird als erstes wieder entnommen
- Zugriff nur auf das oberste Element möglich
Operationen:
| Operation | Bedeutung |
|---|---|
push(obj) |
Objekt oben auf den Stapel legen |
pop() |
Oberstes Objekt entfernen und zurückgeben |
peek() |
Oberstes Objekt lesen, ohne es zu entfernen |
Umsetzung: Als verkettete Liste — neues Element wird immer am Anfang eingefügt (Listenkopf = Stapelspitze).
- Prinzip: FIFO — First In, First Out
- Das zuerst hinzugefügte Element wird als erstes wieder entnommen
- Zugriff: Einfügen am Ende, Entnahme am Anfang
Operationen:
| Operation | Bedeutung |
|---|---|
enqueue(obj) |
Objekt ans Ende der Schlange stellen |
dequeue() |
Erstes Objekt entnehmen und zurückgeben |
Umsetzung: Als verkettete Liste — Einfügen am Ende (tail), Entnahme am Anfang (head).
| Array | Verkettete Liste | |
|---|---|---|
| Größe | Statisch (bei Erstellung festgelegt) | Dynamisch (beliebig erweiterbar) |
| Index-Zugriff | Direkter Zugriff über Index — schnell | Kein direkter Index-Zugriff — muss durchlaufen werden |
| Einfügen in der Mitte | Alle nachfolgenden Elemente verschieben (aufwändig) | Nur Referenzen umhängen (wenig Aufwand) |
| Einfügen am Ende | Schnell, falls Platz; sonst neues Array + umkopieren | Schnell — nur letzte Referenz anpassen |
| Speicher | Zusammenhängend (effizienter Cache-Zugriff) | Verteilt im Speicher |
1. Analyse & Anforderungsdefinition
- Dienstleistungen, Einschränkungen und Ziele des Systems werden in Zusammenarbeit mit den Benutzern aufgestellt und detailliert definiert
- Produkte: Lastenheft, Pflichtenheft, UML-Anwendungsfalldiagramm, Prototypen, Testdaten
2. Softwareentwurf
- Erkennen und Beschreiben der grundlegenden Softwarestruktur und Beziehungen zwischen Komponenten
- Produkte: UML-Klassendiagramm, UML-Sequenzdiagramm, Datenbankmodell, Schnittstellenspezifikation
3. Implementierung & Komponententests
- Der Entwurf wird in Code umgesetzt; einzelne Einheiten (Klassen, Methoden) werden getestet
- Produkte: Kommentierter Programmcode, Testprotokolle
4. Integration & Systemtests
- Einzelne Komponenten werden zusammengeführt und als Gesamtsystem getestet; anschließend Auslieferung
- Produkte: Benutzerhandbuch, Testprotokoll, Dokumentation
5. Betrieb & Wartung
- Das System wird produktiv eingesetzt; Fehler werden korrigiert, Verbesserungen und Anpassungen vorgenommen
- Produkte: Abnahmeprotokoll, aktualisierte Dokumentation, Versionshistorie
Lastenheft (erstellt vom Auftraggeber):
- Beschreibt die gesamte gewünschte Funktionalität in nicht-technischer Sprache
- Enthält: IST-Zustand, SOLL-Zustand, Schnittstellen, funktionale Anforderungen
- Wird dem Auftragnehmer übergeben
Pflichtenheft (erstellt vom Auftragnehmer):
- Beschreibt technisch, wie die Anforderungen des Lastenhefts umgesetzt werden
- Enthält: konkrete Lösungsschritte, Systemarchitektur, technische Details
- Grundlage für die Implementierung
Merksatz: Der Auftraggeber sagt was er will (Lastenheft) — der Auftragnehmer beschreibt wie er es umsetzt (Pflichtenheft).
| Kriterium | Beschreibung |
|---|---|
| Funktionalität | Die Software erfüllt alle geforderten Funktionen korrekt, sicher und angemessen |
| Zuverlässigkeit | Die Software bewahrt ihr Leistungsniveau über Zeit; beinhaltet Verfügbarkeit, Fehlertoleranz und Wiederherstellbarkeit |
| Benutzbarkeit | Die Software ist verständlich, bedienbar und attraktiv für die Benutzer |
| Wartbarkeit | Änderungen (Korrekturen, Verbesserungen, Anpassungen) können mit vertretbarem Aufwand vorgenommen werden |
| Effizienz | Die Software nutzt Ressourcen (Zeit, Speicher) angemessen |
| Übertragbarkeit | Die Software kann in verschiedenen Umgebungen eingesetzt werden |
Das Abitur verwendet präzise Operatoren, die genau definieren, was und wie viel erwartet wird. Diese Unterschiede können über Punkte entscheiden.
Vollständige, strukturierte Darstellung aller relevanten Merkmale. Sachlich und neutral — kein Werten, kein Begründen.
- Alle wichtigen Eigenschaften nennen
- Vollständige Sätze, strukturiert
- Beispiel: „Beschreiben Sie die Klasse X" → alle Attribute, Methoden, Beziehungen aufführen
Beschreiben plus Verdeutlichung im Kontext oder anhand eines Beispiels. Bezug zum vorliegenden Szenario herstellen.
- Beschreibung + Zusammenhang + Beispiel aus der Aufgabe
- Beispiel: „Erläutern Sie die Aufgaben von Client, Server und Thread" → Funktion + wie sie im konkreten System zusammenarbeiten
Sachverhalte verständlich und nachvollziehbar darstellen, besonders Ursache-Wirkung-Zusammenhänge.
- Mechanismus, Ablauf oder Begründung darlegen
- Typisch für technische Abläufe und Probleme (Race Conditions, Synchronisation)
- Beispiel: „Erklären Sie, wie es zu einer Mehrfachbelegung kommen kann"
Kurze, stichwortartige Aufzählung. Keine Vollständigkeit erforderlich, keine Ausformulierung nötig.
- Nur die geforderte Anzahl an Punkten liefern
- Beispiel: „Nennen Sie drei Passwort-Regeln" → drei knappe Stichpunkte genügen
Gemeinsamkeiten und Unterschiede strukturiert nebeneinanderstellen. Oft tabellarisch sinnvoll.
Aussage mit sachlichen Argumenten stützen — warum gilt etwas?
Wenn in einer Aufgabe steht „Stichworte: Spezialisierung, Generalisierung, abstrakte Klassen, protected, Polymorphie", dann sind das keine Hinweise, sondern Pflichtbegriffe — alle müssen im Text sinnvoll verwendet werden. Fehlende Stichworte bedeuten fehlende Punkte.
| Punktzahl | Erwarteter Umfang | Richtwert Zeit |
|---|---|---|
| 2–3 BE | 3–5 präzise Sätze | ~3–5 Min |
| 4–5 BE | 1–2 Absätze mit konkretem Beispiel | ~6–10 Min |
| 6–7 BE | Mehrteilige, vollständige Beschreibung aller Aspekte | ~10–15 Min |
Grundregel: 1 BE ≈ 1 inhaltlich korrekte, relevante Aussage.
Nicht mehr schreiben als gefordert — irrelevante Aussagen kosten keine Punkte, stehlen aber Zeit. Bei Unsicherheit, kann es jedoch sinvoll sein eine zusätzliche zu erwähnen, falls existent.