ScholarGate
Assistent

Imperative und objektorientierte Programmierung

Imperative Programmierung drückt Berechnungen als Sequenzen von zustandsändernden Befehlen aus; objektorientierte Programmierung organisiert diesen Zustand und dieses Verhalten in gekapselten, nachrichtenübermittelnden Objekten.

Thema finden mit PaperMindDemnächstFind papers & topics
Tools & resources
Folien herunterladen
Learn & explore
VideoDemnächst

Definition

Imperative Programmierung beschreibt Berechnungen als eine Abfolge von Anweisungen, die den Programmzustand durch Zuweisung und Kontrollfluss ändern; objektorientierte Programmierung ist eine Strukturierungsdisziplin, bei der Zustand und Operationen in Objekten gebündelt werden, die durch Methodenaufrufe interagieren.

Scope

Dieses Thema behandelt das imperative Berechnungsmodell, das auf veränderlichen Variablen, Zuweisungen und explizitem Kontrollfluss aufbaut, sowie die objektorientierte Disziplin, die imperative Programme um Objekte, Klassen, Vererbung, Kapselung und dynamische Dispatching strukturiert. Es umfasst Subtyping und Verhaltenssubstituierbarkeit, Entwurfsmuster und die Beziehung zwischen Objekten und abstrakten Datentypen.

Core questions

  • Wie kontrolliert Kapselung die Komplexität des veränderlichen Zustands?
  • Was bedeutet es, dass ein Typ ein Verhaltens-Subtyp eines anderen ist?
  • Wann hilft Vererbung und wann erzeugt sie eine fragile Kopplung?
  • Wie verhalten sich Objekte zu abstrakten Datentypen und Modulen?

Key theories

Verhaltens-Subtyping (Liskovsches Substitutionsprinzip)
Liskov und Wing formalisieren, wann Objekte eines Subtyps sicher für Objekte eines Supertyps eingesetzt werden können, wobei Subtypen das erwartete beobachtbare Verhalten und die Invarianten des Supertyps bewahren müssen.
Strukturierte Programmierung
Dahl, Dijkstra und Hoare etablierten disziplinierten Kontrollfluss und schrittweise Verfeinerung als Grundlage für verständliche imperative Programme und verdrängten die uneingeschränkte Goto-basierte Steuerung.
Entwurfsmuster
Gamma und Kollegen katalogisierten wiederkehrende Lösungen für objektorientierte Entwurfsprobleme und schufen ein gemeinsames Vokabular für die Organisation zusammenarbeitender Objekte.

Clinical relevance

Objektorientiertes Design ist die Grundlage eines Großteils der industriellen Software, da Kapselung und Polymorphismus eine modulare Entwicklung und Code-Wiederverwendung in großem Maßstab unterstützen. Das Liskovsche Substitutionsprinzip und Entwurfsmuster bleiben praktische Leitfäden für den Aufbau wartbarer Klassenhierarchien und Schnittstellen.

History

Die imperative Programmierung entstand mit den frühesten speicherprogrammierbaren Maschinen und Sprachen wie Fortran und Algol. Simula 67 führte Klassen und Vererbung ein; Smalltalk popularisierte in den 1970er und 1980er Jahren die reine Objektorientierung und Nachrichtenübermittlung. C++ und später Java brachten die Objektorientierung in die Mainstream-Industrie, während Liskovs Arbeit zur Datenabstraktion und das Buch „Design Patterns“ von 1994 die objektorientierte Methodik systematisierten.

Debates

Vererbung versus Komposition
Designer diskutieren, ob Implementierungsvererbung oder Objektkomposition die Wiederverwendung und Flexibilität besser fördert, wobei ein Großteil der späteren Praxis die Komposition und das schnittstellenbasierte Design bevorzugt.

Key figures

  • Barbara Liskov
  • Ole-Johan Dahl
  • Kristen Nygaard
  • Alan Kay
  • Edsger Dijkstra

Related topics

Seminal works

  • goldberg1983
  • liskov1994
  • dahl1972
  • gamma1994

Frequently asked questions

Was ist das Liskovsche Substitutionsprinzip?
Es besagt, dass Objekte eines Subtyps überall dort verwendet werden können sollten, wo Objekte des Supertyps erwartet werden, ohne die Korrektheit des Programms zu beeinträchtigen, was einschränkt, wie Unterklassen Verhalten überschreiben dürfen.
Ist objektorientierte Programmierung von Natur aus imperativ?
Klassische objektorientierte Programmierung basiert auf veränderlichem Objektzustand und ist daher eine Form der imperativen Programmierung, obwohl objektorientierte Merkmale auch mit funktionalen und unveränderlichen Stilen kombiniert werden können.

Methods for this concept

Related concepts