PRÜFUNG | APRIL 2026
QUICKNAVI
Funktionale und objektorientierte Programmierkonzepte

Programmierparadigmen gehören zu den wiederkehrenden Themen in der IHK-Abschlussprüfung für Fachinformatiker Anwendungsentwicklung oder Systemintegration. Sowohl in der AP1 (Teil 1 der gestreckten Abschlussprüfung) als auch in der AP2 wird erwartet, dass Prüflinge die Unterschiede zwischen funktionaler und objektorientierter Programmierung kennen, erklären und anwenden können. Dieser Beitrag fasst die relevanten Konzepte zusammen, stellt sie gegenüber und liefert Pseudocode-Beispiele zum Üben. Für eine optimale Vorbereitung auf die Abschlussprüfung Teil 1 und 2 empfehlen wir dir unsere Vorbereitungskurse für Fachinformatiker Anwendungsentwicklung und Systemintegration, in denen wir intensiv die relevanten Inhalte wiederholen und dich gezielt auf die Prüfung vorbereiten.

QUICKNAVI
Objektorientierte Programmierung
Funktionale Programmierung
Gegenüberstellung
Gleiches Problem, zwei Lösungen
Prüfungsvorbereitung

Was sind Programmierparadigmen?


Ein Programmierparadigma beschreibt die grundlegende Denkweise, mit der ein Programm strukturiert wird. Es legt fest, wie Daten verarbeitet und Abläufe organisiert werden. Die beiden in der Prüfung relevantesten Paradigmen sind die objektorientierte Programmierung (OOP) und die funktionale Programmierung (FP).


Daneben existieren weitere Paradigmen wie die prozedurale und die logische Programmierung. Für die Abschlussprüfung ist es wichtig, alle genannten Paradigmen benennen und voneinander abgrenzen zu können. Der Fokus liegt in der Praxis und in der AP2 aber klar auf OOP und FP.

Objektorientierte Programmierung (OOP)

Die objektorientierte Programmierung bildet reale oder abstrakte Konzepte als Objekte ab. Ein Objekt besteht aus Daten (Attribute) und Verhalten (Methoden). Die Blaupause für ein Objekt ist die Klasse.


Die vier Grundprinzipien


OOP basiert auf vier Prinzipien, die in der IHK-Prüfung regelmäßig abgefragt werden.
 

PrinzipErklärungBeispiel
Kapselung (Encapsulation)Daten und Methoden werden in einer Klasse gebündelt. Der Zugriff wird über Sichtbarkeiten (public, private, protected) gesteuert.Ein Attribut "kontostand" ist private. Der Zugriff erfolgt nur über eine Methode "getKontostand()".
Vererbung (Inheritance)Eine Klasse (Unterklasse) übernimmt Attribute und Methoden einer anderen Klasse (Oberklasse). Gemeinsame Logik wird nicht doppelt geschrieben.Klasse "Elektroauto" erbt von Klasse "Auto" und ergänzt das Attribut "akkuKapazitaet".
Polymorphie (Polymorphism)Objekte unterschiedlicher Klassen können über dieselbe Schnittstelle angesprochen werden. Die konkrete Implementierung unterscheidet sich.Methode "berechneFlaeche()" liefert bei einem Kreis ein anderes Ergebnis als bei einem Rechteck, obwohl der Aufruf identisch ist.
AbstraktionNur die für den Anwendungsfall relevanten Eigenschaften werden modelliert. Komplexität wird verborgen.Eine Klasse "Kunde" enthält Name und Kundennummer, aber nicht die Schuhgröße.


Pseudocode-Beispiel: OOP


Das folgende Beispiel zeigt eine Klassenhierarchie mit Vererbung und Polymorphie.

KLASSE Fahrzeug

  PRIVATE marke : Text

  PRIVATE geschwindigkeit : Ganzzahl = 0

 

  KONSTRUKTOR(marke : Text)

    DIESE.marke = marke
 

  METHODE beschleunigen(wert : Ganzzahl)

    geschwindigkeit = geschwindigkeit + wert
 

  METHODE beschreibung() : Text

    RÜCKGABE marke + " fährt " + geschwindigkeit + " km/h"

ENDE KLASSE
 

KLASSE Elektroauto ERBT VON Fahrzeug

  PRIVATE akkuStand : Ganzzahl = 100
 

  KONSTRUKTOR(marke : Text)

    SUPER(marke)
 

  METHODE beschleunigen(wert : Ganzzahl)  // Überschreibung

    akkuStand = akkuStand - wert

    SUPER.beschleunigen(wert)
 

  METHODE beschreibung() : Text  // Polymorphie

    RÜCKGABE SUPER.beschreibung() + " | Akku: " + akkuStand + "%"

ENDE KLASSE

 

Das Beispiel zeigt drei Prinzipien gleichzeitig: Kapselung (private Attribute), Vererbung (Elektroauto erbt von Fahrzeug) und Polymorphie (beschreibung() liefert je nach Klasse ein anderes Ergebnis).


Weitere prüfungsrelevante OOP-Begriffe

  • Klasse vs. Objekt: Die Klasse ist der Bauplan, das Objekt ist die konkrete Instanz. Ein Bauplan für ein Auto ist nicht dasselbe wie das fertige Auto.
  • Konstruktor: Spezielle Methode, die beim Erzeugen eines Objekts automatisch aufgerufen wird. Initialisiert die Attribute.
  • Sichtbarkeiten: public (überall sichtbar), private (nur innerhalb der Klasse), protected (innerhalb der Klasse und ihrer Unterklassen).
  • Überladen (Overloading): Mehrere Methoden mit gleichem Namen, aber unterschiedlichen Parametern innerhalb einer Klasse.
  • Überschreiben (Overriding): Eine Unterklasse ersetzt die Implementierung einer Methode der Oberklasse.
  • Schnittstelle (Interface): Definiert Methodensignaturen ohne Implementierung. Klassen, die ein Interface implementieren, müssen alle definierten Methoden umsetzen.
  • Abstrakte Klasse: Kann nicht direkt instanziiert werden. Enthält mindestens eine abstrakte Methode ohne Implementierung, die von Unterklassen umgesetzt werden muss.

Funktionale Programmierung (FP)

Die funktionale Programmierung basiert auf dem mathematischen Konzept des Lambda-Kalküls. Anstatt Zustände zu verändern, werden Berechnungen als Auswertung von Funktionen beschrieben. Die theoretische Grundlage stammt von Alonzo Church (1930er Jahre).


Kernkonzepte
 

KonzeptErklärungBedeutung
Reine Funktionen (Pure Functions)Liefern für die gleichen Eingabewerte immer dasselbe Ergebnis. Haben keine Seiteneffekte, ändern also keinen Zustand außerhalb der Funktion.Erleichtert das Testen und die Fehlersuche erheblich.
Unveränderlichkeit (Immutability)Einmal erstellte Daten werden nicht verändert. Stattdessen entstehen neue Datenstrukturen.Verhindert unerwartete Zustandsänderungen, besonders in parallelen Programmen.
Funktionen höherer Ordnung (Higher-Order Functions)Funktionen, die andere Funktionen als Parameter entgegennehmen oder als Ergebnis zurückgeben.Ermöglicht flexible und wiederverwendbare Programmlogik.
Lambda-AusdrückeAnonyme, namenlose Funktionen, die direkt definiert und übergeben werden.Verkürzen den Code bei einfachen Operationen.
RekursionFunktionen rufen sich selbst auf, um Probleme schrittweise zu lösen. Ersetzt klassische Schleifen.Zentrales Mittel zur Iteration in rein funktionalen Sprachen.


Pseudocode-Beispiel: Funktionale Programmierung
 

Das folgende Beispiel zeigt typische funktionale Konzepte am Beispiel einer Listenverarbeitung.

// Reine Funktion: keine Seiteneffekte

FUNKTION verdopple(x : Ganzzahl) : Ganzzahl

  RÜCKGABE x * 2

 

// Higher-Order Function: nimmt eine Funktion als Parameter

FUNKTION wendeAn(liste : Liste<Ganzzahl>, f : Funktion) : Liste<Ganzzahl>

  ergebnis = LEERE LISTE

  FÜR JEDES element IN liste:

    ergebnis = ergebnis + [f(element)]  // neue Liste, keine Änderung der alten

  RÜCKGABE ergebnis
 

// Aufruf

zahlen = [1, 2, 3, 4, 5]

ergebnis = wendeAn(zahlen, verdopple)

// ergebnis = [2, 4, 6, 8, 10]

// zahlen bleibt unverändert [1, 2, 3, 4, 5] (Immutability)
 

// Rekursion statt Schleife

FUNKTION summe(liste : Liste<Ganzzahl>) : Ganzzahl

  WENN liste LEER:

    RÜCKGABE 0

  SONST:

    RÜCKGABE liste[0] + summe(liste[1..Ende])

 

// Lambda-Ausdruck

ergebnis = wendeAn(zahlen, LAMBDA x: x * 3)

// ergebnis = [3, 6, 9, 12, 15]
 

Typische funktionale Operationen auf Listen, die in Prüfungen vorkommen:

  • map: Wendet eine Funktion auf jedes Element an und liefert eine neue Liste.
  • filter: Wählt nur die Elemente aus, die eine Bedingung erfüllen.
  • reduce (fold): Fasst alle Elemente einer Liste zu einem einzelnen Wert zusammen.

Gegenüberstellung: OOP vs. FP

Die folgende Tabelle fasst die Unterschiede zusammen. Genau diese Gegenüberstellung wird in IHK-Prüfungen regelmäßig abgefragt.
 

KriteriumOOPFP
GrundideeModellierung durch Objekte (Daten + Verhalten)Berechnung durch Auswertung von Funktionen
ZustandObjekte haben veränderlichen Zustand (mutable)Daten sind unveränderlich (immutable)
Daten und VerhaltenIn Klassen gebündeltGetrennt: Daten und Funktionen existieren unabhängig
WiederverwendungVererbung und PolymorphieKomposition von Funktionen
IterationSchleifen (for, while)Rekursion und Higher-Order Functions (map, filter, reduce)
ParallelisierungSchwieriger durch veränderlichen ZustandEinfacher durch Zustandslosigkeit
Typische SprachenJava, C#, C++, PythonHaskell, Erlang, Clojure, F#
Multiparadigmen-SprachenPython, JavaScript, Kotlin, ScalaPython, JavaScript, Kotlin, Scala

 

In der Praxis schließen sich OOP und FP nicht gegenseitig aus. Die meisten modernen Sprachen wie Java (seit Version 8), Python, JavaScript und Kotlin unterstützen beide Paradigmen. Java kennt beispielsweise Lambda-Ausdrücke und Streams, obwohl es eine primär objektorientierte Sprache ist.

Gleiches Problem, zwei Lösungen

Um die Unterschiede greifbar zu machen, lösen wir dasselbe Problem mit beiden Ansätzen: Aus einer Liste von Produkten sollen alle Produkte mit einem Preis über 50 Euro gefiltert und deren Namen ausgegeben werden.
 

OOP-Ansatz

KLASSE Produkt

  PRIVATE name : Text

  PRIVATE preis : Dezimalzahl

 

  KONSTRUKTOR(name : Text, preis : Dezimalzahl)

    DIESE.name = name

    DIESE.preis = preis
 

  METHODE getName() : Text

    RÜCKGABE name

 

  METHODE getPreis() : Dezimalzahl

    RÜCKGABE preis
 

  METHODE istTeuer() : Wahrheitswert

    RÜCKGABE preis > 50

ENDE KLASSE
 

// Anwendung

produkte = [Produkt("Tastatur", 45), Produkt("Monitor", 250), Produkt("Maus", 30)]

teure = LEERE LISTE

FÜR JEDES p IN produkte:

  WENN p.istTeuer():

    teure.hinzufügen(p.getName())

// teure = ["Monitor"]

 

FP-Ansatz

produkte = [("Tastatur", 45), ("Monitor", 250), ("Maus", 30)]
 

teure = map(

  filter(produkte, LAMBDA p: p.preis > 50),

  LAMBDA p: p.name

)

// teure = ["Monitor"]
 

Der OOP-Ansatz kapselt die Logik im Objekt (istTeuer() als Methode). Der FP-Ansatz arbeitet mit Funktionen (filter und map), die von außen auf die Daten angewendet werden. Beide Wege führen zum gleichen Ergebnis.

Prüfungsvorbereitung: Darauf kommt es an

Die IHK-Prüfung fragt Programmierparadigmen auf verschiedenen Ebenen ab. Die folgenden Hinweise basieren auf der Analyse bisheriger Prüfungsaufgaben.


Häufige Aufgabentypen

  • Zuordnungsaufgaben: Konzepte einem Paradigma zuordnen (z. B. "Welches Prinzip beschreibt das Verbergen interner Daten?")
  • Vergleichsaufgaben: Unterschiede zwischen OOP und FP tabellarisch darstellen
  • Pseudocode lesen und erklären: Gegebenen Code analysieren und das verwendete Paradigma erkennen
  • Begriffe erklären: Definitionen von Kapselung, Polymorphie, Pure Functions usw. Formulieren
  • Klassendiagramme lesen: UML-Klassendiagramme mit Vererbung und Beziehungen interpretieren

Begriffe, die sitzen müssen


Die folgende Tabelle listet die Fachbegriffe auf, die in der Prüfung erwartet werden.
 

OOP-BegriffeFP-Begriffe
Klasse, Objekt, InstanzReine Funktion (Pure Function)
Attribut, MethodeUnveränderlichkeit (Immutability)
Konstruktor, DestruktorSeiteneffektfreiheit
Kapselung, SichtbarkeitenHigher-Order Function
Vererbung, Oberklasse, UnterklasseLambda-Ausdruck
Polymorphie, Überladen, ÜberschreibenRekursion
Interface, Abstrakte Klassemap, filter, reduce
UML-KlassendiagrammKomposition von Funktionen

 

Typische Prüfungsfragen zum Üben

  • Erklären Sie den Unterschied zwischen einer Klasse und einem Objekt.
  • Nennen Sie die vier Grundprinzipien der objektorientierten Programmierung und erläutern Sie eines davon an einem Beispiel.
  • Was versteht man unter einer reinen Funktion? Nennen Sie zwei Vorteile.
  • Erklären Sie den Begriff "Polymorphie" anhand eines Pseudocode-Beispiels.
  • Warum ist Unveränderlichkeit (Immutability) bei der parallelen Programmierung vorteilhaft?
  • Ordnen Sie die folgenden Konzepte dem passenden Paradigma zu: Vererbung, Lambda-Ausdruck, Kapselung, Rekursion, Konstruktor, Higher-Order Function.
  • Vergleichen Sie die objektorientierte und die funktionale Programmierung anhand von drei Kriterien.
  • Erklären Sie den Unterschied zwischen Überladen und Überschreiben von Methoden.

Zusammenfassung


OOP und FP sind zwei unterschiedliche Ansätze, Programme zu strukturieren. OOP organisiert Code um Objekte mit Zustand und Verhalten. FP organisiert Code um zustandslose Funktionen ohne Seiteneffekte.


Für die IHK-Abschlussprüfung gilt:

  • Die vier OOP-Prinzipien (Kapselung, Vererbung, Polymorphie, Abstraktion) mit eigenen Worten erklären können
  • Die FP-Kernkonzepte (Pure Functions, Immutability, Higher-Order Functions, Rekursion) benennen und abgrenzen können
  • Beide Paradigmen gegenüberstellen und Vor- sowie Nachteile nennen können
  • Pseudocode lesen und dem richtigen Paradigma zuordnen können
  • Typische Sprachen den Paradigmen zuordnen können


In unseren Prüfungvorbereitungskursen wiederholen wir die Inhalte aus deiner Ausbildung intensiv und bereiten dich so optimal auf die Abschlussprüfung Teil 1 und 2 für Fachinformatiker Anwendungsentwicklung oder Systemintegration vor. 


P.S.: Mit dem Bildungsscheck 2.0 kannst du dir bis zu 50 % der Kursgebühr, maximal aber 500 € fördern lassen. 


Du hast Fragen zur Prüfungsvorbereitung? Dann melde dich gerne bei uns!