Saarland Abitur Information Systems study materials
Saarland Abitur Information Systems study resources

Saarland Abitur Information Systems: Softwareentwicklung und Programmierung: Modellierung, Algorithmen, Implementierung

Saarland Abitur Information Systems · Work through your exam, one topic at a time.

All guide sections

Softwareentwicklung und Programmierung: Modellierung, Algorithmen, Implementierung

Der Bereich Softwareentwicklung und Programmierung prüft, ob du ein Problem durchgängig bearbeiten kannst: vom Modell über den Algorithmus bis zum lauffähigen Java-Programm. Typische Aufgaben verlangen ein UML-Klassendiagramm aus einer Textbeschreibung, Pseudocode oder ein Struktogramm für einen Algorithmus, die Analyse von Rekursion und Sortierverfahren sowie eine Begründung der Komplexität mit der O-Notation.

Modellierung

  • Klasse als Bauplan (Attribute mit Typ und Sichtbarkeit, Operationen), Objekt als Instanz mit konkreten Werten; Attribut ist keine Methode.
  • Assoziation mit Multiplizität an beiden Enden (1, 0..1, 1..*, *), gerichtete Assoziation, Vererbung als „ist-ein“-Beziehung.
  • Komposition (gefüllte Raute, existenzabhängig) gegen Aggregation (leere Raute, unabhängig) abgrenzen.
  • Dynamisches Verhalten: Zustandsdiagramm (Zustände, Transitionen mit Ereignis/Bedingung/Aktion) oder Aktivitätsdiagramm (Aktionen, Entscheidungsknoten, Parallelisierung).

Algorithmen und Datenstrukturen

  • Lineare Suche O(n) auf beliebigen Feldern, binäre Suche O(log n) nur auf sortierten Feldern.
  • Sortieren: Selection-/Insertion-/Bubble-Sort O(n²), Mergesort O(n log n) mit Hilfsfeld.
  • Rekursion braucht Abbruchbedingung plus Rekursionsschritt; jeder rekursive Abstieg lässt sich mit einem expliziten Stack iterativ nachbauen.
  • Felder haben feste Länge, eine ArrayList wächst dynamisch; Stack (LIFO) und Queue (FIFO) sind abstrakte Datentypen mit klar definierten Operationen.

Implementierung in Java

  • Kapselung: Attribute private, Zugriff über Getter/Setter, public nur für die Schnittstelle.
  • Objektinhalt mit equals vergleichen, Identität mit ==; bei String nie == für den Inhaltsvergleich nutzen.
  • Testen mit Randfällen (leeres Feld, ein Element, Duplikate) und gezielt mit dem Debugger statt mit Vermutungen.

Durchgerechnetes Beispiel

Binäre Suche in feld = [3, 8, 12, 19, 25, 31] nach dem Wert 25: lo = 0, hi = 5, mid = (0+5)/2 = 2, feld[2] = 12 < 25, also lo = 3. Neues mid = (3+5)/2 = 4, feld[4] = 25, gefunden nach zwei Vergleichen. Begründung der Laufzeit: Das Suchintervall halbiert sich pro Schritt, bei n = 6 sind höchstens drei Schritte nötig, allgemein ⌈log₂ n⌉ Vergleiche. Wichtig ist die Angabe der Voraussetzung: Das Feld muss sortiert sein, sonst ist das Verfahren falsch.

Typische Punktverluste

  • Multiplizitäten auf der falschen Seite der Assoziation eingetragen.
  • Rekursion ohne Abbruchbedingung oder mit falschem Rekursionsschritt (Endlosschleife, StackOverflow).
  • Binäre Suche auf unsortierten Daten vorgeschlagen.
  • O-Notation ohne Bezug zum worst case und ohne Begründung angegeben.
  • Struktogramm ohne Anfang/Ende oder mit nicht abgedeckten Fällen.