Tag 26: Programmierung & OOP

IHK-Vorbereitung · Fachinformatiker Systemintegration

Tag 26: Programmierung & OOP

Grundlage · Prüfungsrelevant

Was ist Pseudocode?

Pseudocode ist eine sprachunabhängige, vereinfachte Darstellung eines Algorithmus. Er ist weder korrekte Programmiersprache noch reiner Text – er beschreibt die Logik so, dass sie jeder Entwickler ohne Kenntnis einer konkreten Sprache versteht. In der IHK-Prüfung wird häufig verlangt, einen Algorithmus in Pseudocode zu formulieren oder gegebenen Pseudocode zu analysieren.

💡 Es gibt keinen einheitlichen Pseudocode-Standard – wichtig ist Konsistenz und Verständlichkeit. Die IHK-Prüfung akzeptiert gebräuchliche Konventionen (BEGIN/END, IF/THEN/ELSE, WHILE/DO, FOR/TO usw.).

Typische Pseudocode-Strukturen (mit Beispielen)

Sequenz (lineare Abfolge)

BEGIN eingabe ← LESE("Zahl eingeben") ergebnis ← eingabe * 2 AUSGABE(ergebnis) END

Bedingte Verzweigung (IF / ELSE)

IF alter >= 18 THEN AUSGABE("Volljährig") ELSE AUSGABE("Minderjährig") END IF

Zählschleife (FOR)

FOR i ← 1 TO 10 DO AUSGABE(i) END FOR

Kopfgesteuerte Schleife (WHILE)

WHILE eingabe != "quit" DO eingabe ← LESE() END WHILE

✓ Vorteile

  • Sprachunabhängig, universell verständlich
  • Schnell zu schreiben, kein Syntaxfehler möglich
  • Ideal zur Planung vor der Implementierung
  • Leicht in Struktogramme oder Code übertragbar

✗ Nachteile

  • Kein einheitlicher Standard – Missverständnisse möglich
  • Nicht ausführbar, kein automatischer Test
  • Kann bei komplexen Algorithmen unübersichtlich werden
Testtechnik · Prüfungsklassiker

Schreibtischtest (Trace-Tabelle)

Beim Schreibtischtest wird ein Algorithmus oder Programm manuell auf Papier durchgespielt – also ohne Computer. Für jeden Schritt werden die aktuellen Variablenwerte in einer Tabelle notiert. Ziel: Fehler im Algorithmus finden, bevor Code ausgeführt wird.

Beispiel: Schreibtischtest für folgendes Pseudocode-Fragment

a ← 5 b ← 3 WHILE a > 0 DO b ← b + a a ← a - 2 END WHILE AUSGABE(b)
Schritt a (vor Schleife) Bedingung a > 0 b (nach Zuweisung) a (nach Zuweisung)
Start53
1. Durchlauf5wahr3+5 = 85−2 = 3
2. Durchlauf3wahr8+3 = 113−2 = 1
3. Durchlauf1wahr11+1 = 121−2 = −1
4. Prüfung−1falsch → AbbruchAusgabe: 12

✓ Vorteile

  • Kein Rechner nötig – gut für Prüfungssituation
  • Logikfehler frühzeitig erkennbar
  • Fördert tiefes Verständnis des Algorithmus

✗ Nachteile

  • Zeitaufwendig bei vielen Variablen / langen Schleifen
  • Fehleranfällig durch manuelle Rechenschritte
  • Nicht für komplexe Systeme mit vielen Abhängigkeiten geeignet
💡 Prüfungshinweis: In der IHK-Prüfung wird häufig eine fertige Trace-Tabelle mit Lücken gegeben, die ausgefüllt werden muss – oder es wird der Ausgabewert eines gegebenen Pseudocodes/Codes gefragt.
Softwaretest · Grundkonzepte

Testverfahren: Überblick

In der IHK-Prüfung werden zwei grundlegende Testkategorien unterschieden, die sich darin unterscheiden, ob der interne Aufbau des zu testenden Systems bekannt ist oder nicht.

Blackbox-Test

Der Tester kennt die interne Implementierung nicht. Es wird nur das beobachtbare Verhalten geprüft: Stimmt die Ausgabe bei gegebener Eingabe? Der Test basiert auf den Anforderungen (Spezifikation/Lastenheft).

Typische Methoden: Äquivalenzklassenbildung, Grenzwertanalyse, Zustandsbasiertes Testen

Tester: Kann auch Fachfremde sein (z.B. Kunde, QA ohne Programmierkenntnisse)

Whitebox-Test (auch: Glassbox-Test)

Der Tester kennt den Quellcode vollständig. Es werden gezielt Testfälle entwickelt, um alle Zweige, Pfade und Bedingungen im Code zu durchlaufen und abzudecken.

Typische Methoden: Statement Coverage, Branch Coverage, Pfadüberdeckung, Unit-Tests

Tester: Muss Entwickler oder mit Programmierkenntnissen sein

Direkter Vergleich

Kriterium Blackbox Whitebox
Codekenntnis nötig?NeinJa
Grundlage der TestsSpezifikation / AnforderungenQuellcode / Programmstruktur
Findet man…Abweichungen vom Soll-VerhaltenLogikfehler, tote Code-Pfade
Typischer EinsatzAkzeptanztests, SystemtestsUnit-Tests, Integrationstests
NachteileInterne Fehler bleiben u.U. verborgenNicht alle Anforderungen abgedeckt
Blackbox-Methode · Prüfungsklassiker

Äquivalenzklassenbildung

Eingabewerte werden in Gruppen (Klassen) eingeteilt, die sich gleichartig verhalten. Man testet je einen Repräsentanten pro Klasse, statt alle Werte einzeln zu testen.

Beispiel: Eingabefeld erwartet Alter zwischen 0 und 120.

KlasseBereichTypBeispielwert
ÄK1Alter < 0Ungültig−5
ÄK20 ≤ Alter ≤ 120Gültig25
ÄK3Alter > 120Ungültig150
💡 Grenzwertanalyse ergänzt die Äquivalenzklassen: Teste zusätzlich die Werte genau an den Grenzen (hier: −1, 0, 1, 119, 120, 121), da dort die meisten Fehler lauern.
Whitebox-Konzept

Codeüberdeckung (Coverage)

Whitebox-Tests messen, wie viel des Codes durch Tests tatsächlich ausgeführt wurde:

C0

Anweisungsüberdeckung (Statement Coverage)

Jede Anweisung im Code wird mindestens einmal ausgeführt. Schwächste Form der Überdeckung.

C1

Zweigüberdeckung (Branch Coverage)

Jede mögliche Verzweigung (true / false bei IF-Bedingungen) wird mindestens einmal durchlaufen. Häufigste Anforderung in der Prüfung.

C2

Pfadüberdeckung (Path Coverage)

Alle möglichen Ausführungspfade werden getestet. Vollständigste, aber aufwendigste Form – bei Schleifen praktisch nicht vollständig erreichbar.

Prüfungsrelevant · Python 3

Python – Warum prüfungsrelevant?

Python ist in der IHK-Prüfung Systemintegration eine mögliche Sprache für Codebeispiele und Aufgabenstellungen. Die Prüfung setzt keine vollständige Sprachkenntnis voraus, aber das Lesen und Verstehen von einfachem Python-Code sowie das Schreiben von kurzen Ausschnitten wird erwartet.

Grundlegende Datentypen

TypBeispielBeschreibung
int42Ganzzahl
float3.14Dezimalzahl
str"Hallo"Zeichenkette
boolTrue / FalseWahrheitswert
list[1, 2, 3]Geordnete, veränderliche Sammlung
dict{"key": "val"}Schlüssel-Wert-Paare (HashMap)
tuple(1, 2)Geordnete, unveränderliche Sammlung

Kontrollstrukturen in Python

Wichtig: Python nutzt Einrückung (Indentation) statt geschweifter Klammern zur Strukturierung!

Verzweigung

if alter >= 18: print("Volljährig") elif alter >= 16: print("Fast volljährig") else: print("Minderjährig")

For-Schleife

for i in range(1, 6): # 1 bis 5 print(i)

While-Schleife

zaehler = 0 while zaehler < 5: zaehler += 1 print(zaehler) # Ausgabe: 5

Funktion definieren

def berechne_mwst(netto, satz=0.19): return netto * satz ergebnis = berechne_mwst(100) print(ergebnis) # Ausgabe: 19.0

Listen und Dictionaries – typische Operationen

# Liste zahlen = [10, 20, 30] zahlen.append(40) # [10, 20, 30, 40] print(zahlen[0]) # 10 (Index beginnt bei 0) print(len(zahlen)) # 4 # Dictionary person = {"name": "Anna", "alter": 30} print(person["name"]) # Anna person["stadt"] = "Berlin" # neuen Key hinzufügen

✓ Vorteile Python

  • Einfache, lesbare Syntax – gut für Einstieg
  • Wenig Boilerplate-Code nötig
  • Große Standardbibliothek
  • Plattformunabhängig

✗ Nachteile Python

  • Langsamer als kompilierte Sprachen (C, Java)
  • Dynamische Typisierung → Laufzeitfehler möglich
  • Einrückungsfehler führen zu schwer findbaren Bugs
  • GIL begrenzt echte Parallelität (Threads)
Paradigma · Prüfungsschwerpunkt

Objektorientierte Programmierung (OOP)

OOP ist ein Programmierparadigma, das auf dem Konzept von Objekten basiert. Objekte kapseln Daten (Attribute) und Verhalten (Methoden) zusammen. OOP ist in der IHK-Prüfung ein zentrales Thema – die vier Grundprinzipien müssen sicher erklärt werden können.

Klasse vs. Objekt – der Unterschied

# Klasse = Bauplan class Auto: def __init__(self, marke, ps): self.marke = marke # Attribut self.ps = ps def fahren(self): # Methode print(self.marke + " fährt") # Objekte = konkrete Instanzen der Klasse a1 = Auto("BMW", 150) a2 = Auto("VW", 110) a1.fahren() # Ausgabe: BMW fährt
💡 Klasse = Bauplan / Schablone  |  Objekt = konkrete Instanz dieser Klasse  |  Instanziierung = Erstellen eines Objekts aus einer Klasse

Die vier OOP-Grundprinzipien

Kapselung

Encapsulation

Daten (Attribute) und die darauf operierenden Methoden werden in einem Objekt zusammengefasst. Der direkte Zugriff von außen wird durch Zugriffsmodifikatoren eingeschränkt (private, protected, public). Zugriff von außen erfolgt nur über definierte Getter/Setter-Methoden.

✓ Vorteile

  • Schützt interne Datenkonsistenz
  • Klare Schnittstellen nach außen
  • Interne Implementierung austauschbar

✗ Nachteile

  • Mehr Boilerplate (Getter/Setter)
  • Kann Flexibilität einschränken
Vererbung

Inheritance

Eine Kindklasse (Subklasse) übernimmt Attribute und Methoden einer Elternklasse (Superklasse) und kann sie erweitern oder überschreiben. Fördert Code-Wiederverwendung und modelliert „ist-ein"-Beziehungen.

class Fahrzeug: def __init__(self, ps): self.ps = ps def bewegen(self): print("Fährt") class Auto(Fahrzeug): # erbt von Fahrzeug def hupen(self): print("Huup!")

✓ Vorteile

  • Code-Wiederverwendung (DRY-Prinzip)
  • Klare Hierarchien und Strukturen
  • Erweiterung ohne Originalklasse zu verändern

✗ Nachteile

  • Enge Kopplung – Änderung in Elternklasse kann Subklassen brechen
  • Tiefe Hierarchien schwer nachvollziehbar
  • Mehrfachvererbung kann zu Konflikten führen
Polymorphismus

Polymorphism

Verschiedene Klassen können gleichnamige Methoden mit unterschiedlichem Verhalten besitzen. Ein und derselbe Methodenaufruf verhält sich je nach Objekt unterschiedlich – ermöglicht generischen Code.

class Hund: def sprechen(self): print("Wuff") class Katze: def sprechen(self): print("Miau") for tier in [Hund(), Katze()]: tier.sprechen() # Wuff, dann Miau

✓ Vorteile

  • Generischer, flexibler Code
  • Einfache Erweiterbarkeit (neue Klassen ohne Codeänderung)

✗ Nachteile

  • Schwieriger zu debuggen
  • Laufzeitverhalten weniger vorhersehbar
Abstraktion

Abstraction

Komplexität wird versteckt, indem nur relevante Eigenschaften nach außen sichtbar sind. Abstrakte Klassen / Interfaces definieren eine Schnittstelle, erzwingen aber die konkrete Implementierung in Subklassen. Der Nutzer muss nicht wissen, wie etwas funktioniert – nur was es tut.

✓ Vorteile

  • Reduziert Komplexität für den Nutzer
  • Erzwingt einheitliche Schnittstellen
  • Trennung von Schnittstelle und Implementierung

✗ Nachteile

  • Abstrakte Klassen erhöhen Entwurfsaufwand
  • Kann bei Überabstraktion unleserlich werden

Weitere wichtige OOP-Begriffe

KTR

Konstruktor

Spezielle Methode, die beim Erzeugen (Instanziieren) eines Objekts automatisch aufgerufen wird. In Python: __init__. Dient zur Initialisierung der Attribute.

Attr

Attribut vs. Methode

Attribut = Eigenschaft / Variable eines Objekts (z.B. auto.farbe). Methode = Funktion, die zu einem Objekt gehört und darauf operiert (z.B. auto.starten()).

Übr

Überschreiben (Overriding)

Eine Subklasse definiert eine geerbte Methode neu – mit gleichem Namen, aber eigenem Verhalten. Grundlage des Polymorphismus.

Übld

Überladen (Overloading)

Gleicher Methodenname, aber unterschiedliche Parameter (Signatur). In Python per Default nicht nativ unterstützt – wird über optionale Parameter oder *args realisiert.

Ass

Assoziation, Aggregation, Komposition

Assoziation: Objekte kennen sich (lose Verbindung). Aggregation: „hat-ein"-Beziehung, aber unabhängige Lebenszyklen (Auto hat Räder – Räder existieren auch ohne Auto). Komposition: Starke „besteht-aus"-Abhängigkeit – Teilobjekte existieren nur als Teil des Ganzen (Haus hat Räume – keine Räume ohne Haus).

UML

UML-Klassendiagramm

Standardnotation zur grafischen Darstellung von Klassen, Attributen, Methoden und Beziehungen. In der IHK-Prüfung wird häufig verlangt, ein einfaches Klassendiagramm zu lesen oder zu ergänzen (Vererbungspfeil = hohle Pfeilspitze zur Superklasse).

Merkhilfe · Prüfungsfragen OOP

Typische IHK-Aufgabenstellungen

  • „Nennen Sie die vier Grundprinzipien der OOP und erläutern Sie je eines" → Kapselung, Vererbung, Polymorphismus, Abstraktion
  • „Was ist der Unterschied zwischen Klasse und Objekt?" → Klasse = Bauplan, Objekt = konkrete Instanz
  • „Was versteht man unter Kapselung?" → Zusammenfassung von Attributen und Methoden, Zugriffsbeschränkung nach außen
  • „Was ist Vererbung und welchen Vorteil bietet sie?" → Weitergabe von Attributen/Methoden an Subklassen, Code-Wiederverwendung
  • „Ergänzen Sie das UML-Klassendiagramm um eine erbende Klasse"
  • „Was ist der Unterschied zwischen Aggregation und Komposition?"