IHK-Vorbereitung · Fachinformatiker Systemintegration
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.
Sequenz (lineare Abfolge)
Bedingte Verzweigung (IF / ELSE)
Zählschleife (FOR)
Kopfgesteuerte Schleife (WHILE)
✓ Vorteile
✗ Nachteile
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
| Schritt | a (vor Schleife) | Bedingung a > 0 | b (nach Zuweisung) | a (nach Zuweisung) |
|---|---|---|---|---|
| Start | 5 | — | 3 | — |
| 1. Durchlauf | 5 | wahr | 3+5 = 8 | 5−2 = 3 |
| 2. Durchlauf | 3 | wahr | 8+3 = 11 | 3−2 = 1 |
| 3. Durchlauf | 1 | wahr | 11+1 = 12 | 1−2 = −1 |
| 4. Prüfung | −1 | falsch → Abbruch | Ausgabe: 12 | |
✓ Vorteile
✗ Nachteile
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
| Kriterium | Blackbox | Whitebox |
|---|---|---|
| Codekenntnis nötig? | Nein | Ja |
| Grundlage der Tests | Spezifikation / Anforderungen | Quellcode / Programmstruktur |
| Findet man… | Abweichungen vom Soll-Verhalten | Logikfehler, tote Code-Pfade |
| Typischer Einsatz | Akzeptanztests, Systemtests | Unit-Tests, Integrationstests |
| Nachteile | Interne Fehler bleiben u.U. verborgen | Nicht alle Anforderungen abgedeckt |
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.
| Klasse | Bereich | Typ | Beispielwert |
|---|---|---|---|
| ÄK1 | Alter < 0 | Ungültig | −5 |
| ÄK2 | 0 ≤ Alter ≤ 120 | Gültig | 25 |
| ÄK3 | Alter > 120 | Ungültig | 150 |
Whitebox-Tests messen, wie viel des Codes durch Tests tatsächlich ausgeführt wurde:
Anweisungsüberdeckung (Statement Coverage)
Jede Anweisung im Code wird mindestens einmal ausgeführt. Schwächste Form der Überdeckung.
Zweigüberdeckung (Branch Coverage)
Jede mögliche Verzweigung (true / false bei IF-Bedingungen) wird mindestens einmal durchlaufen. Häufigste Anforderung in der Prüfung.
Pfadüberdeckung (Path Coverage)
Alle möglichen Ausführungspfade werden getestet. Vollständigste, aber aufwendigste Form – bei Schleifen praktisch nicht vollständig erreichbar.
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.
| Typ | Beispiel | Beschreibung |
|---|---|---|
int | 42 | Ganzzahl |
float | 3.14 | Dezimalzahl |
str | "Hallo" | Zeichenkette |
bool | True / False | Wahrheitswert |
list | [1, 2, 3] | Geordnete, veränderliche Sammlung |
dict | {"key": "val"} | Schlüssel-Wert-Paare (HashMap) |
tuple | (1, 2) | Geordnete, unveränderliche Sammlung |
Wichtig: Python nutzt Einrückung (Indentation) statt geschweifter Klammern zur Strukturierung!
Verzweigung
For-Schleife
While-Schleife
Funktion definieren
✓ Vorteile Python
✗ Nachteile Python
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.
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
✗ Nachteile
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.
✓ Vorteile
✗ Nachteile
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.
✓ Vorteile
✗ Nachteile
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
✗ Nachteile
Konstruktor
Spezielle Methode, die beim Erzeugen (Instanziieren) eines Objekts automatisch aufgerufen wird. In Python: __init__. Dient zur Initialisierung der Attribute.
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()).
Überschreiben (Overriding)
Eine Subklasse definiert eine geerbte Methode neu – mit gleichem Namen, aber eigenem Verhalten. Grundlage des Polymorphismus.
Überladen (Overloading)
Gleicher Methodenname, aber unterschiedliche Parameter (Signatur). In Python per Default nicht nativ unterstützt – wird über optionale Parameter oder *args realisiert.
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-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).