D-Book-Wiki · Ereignisartikel

Simula und objektorientierte Modellierung

Simula verbindet Programmiersprache und Simulation: Klassen und Objekte werden als Mittel sichtbar, um modellierte Gegenstände mit Zustand und Verhalten in einem Programm darzustellen.

Kernsatz

Simula wird für die E3-Perspektive bedeutsam, weil Objektorientierung hier aus einem Modellierungsproblem entsteht: Programme sollen nicht nur Abläufe beschreiben, sondern Gegenstände, Zustände, Beziehungen und Verhalten einer modellierten Welt strukturieren.

Kurzüberblick

Simula entsteht in den 1960er-Jahren im Kontext von Simulationen. In solchen Programmen müssen nicht nur einzelne Rechenschritte ausgeführt werden; es müssen Akteure, Ereignisse, Zustände und Abläufe einer modellierten Welt beschrieben werden. Dafür werden Klassen und Objekte zu zentralen Strukturmitteln. Eine Klasse beschreibt gemeinsame Eigenschaften und Verhalten einer Gruppe von Objekten, ein Objekt ist eine konkrete Ausprägung mit eigenem Zustand. Für E3 ist Simula wichtig, weil Java-Klassen dadurch nicht als willkürliche Syntax erscheinen, sondern als spätere Materialisierung einer älteren Modellierungsidee.

Überblick

Simula ist eine zentrale Vorlinie objektorientierter Programmierung. Die Sprache entsteht nicht aus dem Wunsch, Java-Syntax vorwegzunehmen, sondern aus einem fachlichen Problem der Simulation: Reale oder gedachte Systeme bestehen aus Gegenständen, Akteuren, Prozessen und Zuständen, die sich über die Zeit verändern. Ein Programm soll solche Strukturen nicht nur als lange Folge einzelner Befehle beschreiben, sondern als modellierte Einheiten mit Verhalten und Zustand.

Der entscheidende Beitrag von Simula liegt in der Verbindung von Klassen und Objekten mit Modellierung. Eine Klasse beschreibt gemeinsame Merkmale und Operationen einer Gruppe ähnlicher Dinge. Ein Objekt ist eine konkrete Ausprägung dieser Klasse. Es besitzt Zustand und kann Verhalten ausführen. Damit entsteht eine neue Perspektive auf Programme: Sie bestehen nicht nur aus Anweisungen, sondern aus strukturierten Einheiten, die Sachverhalte repräsentieren.

Für die E3-Lineage ist Simula deshalb der Übergang von Hochsprachenabstraktion zu objektorientierter Modellierung. FORTRAN zeigt, dass Programmiersprachen problemnäher und mathematischer formuliert werden können als Maschinenbefehle. Simula ergänzt: Manche Probleme lassen sich besser verstehen, wenn man modellierte Gegenstände und ihre Interaktionen beschreibt. Objektorientierung entsteht damit als Antwort auf Komplexität, nicht als dekoratives Sprachmerkmal.

Diese Herkunft ist didaktisch wichtig. Lernende begegnen Klassen in Java oft zunächst als Pflichtform: class, public static void main, Attribute, Methoden, Objekte. Ohne Modellierungsperspektive wirkt das leicht formal und äußerlich. Simula hilft, die tiefere Idee zu erkennen: Eine Klasse ist ein Bauplan für gleichartige Objekte; ein Objekt ist ein konkreter Zustandsträger; Methoden beschreiben Verhalten; Programme können dadurch eine kleine Welt modellieren.

Simula ist nicht identisch mit Java und auch nicht die gesamte Objektorientierung. Spätere Sprachen wie Smalltalk und Java entwickeln andere Akzente. Trotzdem markiert Simula einen historischen und fachlichen Schlüsselpunkt: Objektorientierung ist nicht nur eine Programmiertechnik, sondern eine Art, Sachverhalte in ausführbare Modelle zu übersetzen. Genau diese Einsicht trägt die E3-Perspektive auf Klassen, Objekte und Methoden.

Abgrenzung

Der Artikel behandelt Simula als Vorlinie objektorientierter Modellierung. Er erklärt nicht die vollständige Simula-Syntax, nicht die gesamte Geschichte der Simulation und nicht Java selbst. Java, Smalltalk, Software Engineering und Unterrichtsprogrammierung werden als Anschlusskontexte geführt.

D-Book-Relevanz

Der Artikel ist für E3 die Modellierungswurzel der Objektorientierung. E3 bahnt Klassen, Objekte, Attribute und Methoden an, vertieft sie aber erst später systematisch. Simula erklärt, warum Objekte Zustand und Verhalten modellieren.

Sachanalyse

Objekte entstehen aus einem Simulationsproblem

Porträt von Kristen Nygaard
Kristen Nygaard steht mit Ole-Johan Dahl für Simula und damit für eine zentrale Entwicklungslinie objektorientierter Modellierung.Jorge Stolfi / Wikimedia Commons | Public Domain | Wikimedia Commons | Simula und objektorientierte ModellierungBildquelle | Lizenz

Simula wird in dieser Lineage als Ursprungspunkt objektorientierter Modellierung gelesen. Die Sprache entsteht aus dem Problem, komplexe Abläufe und Systeme zu simulieren. In einer Simulation reicht es oft nicht, nur einzelne Rechenschritte zu notieren. Man muss modellierte Dinge, Akteure, Zustände, Ereignisse und Verhaltensweisen beschreiben.

Genau hier werden Klassen und Objekte fachlich bedeutsam. Eine Klasse beschreibt eine Art von Gegenstand oder Akteur. Ein Objekt ist eine konkrete Ausprägung mit eigenem Zustand. Methoden beschreiben Verhalten. Dadurch kann ein Programm eine modellierte Welt strukturieren, statt nur eine lange Liste von Anweisungen auszuführen.

Für E3 ist dieser Ursprung wichtig. Java-Klassen wirken im Unterricht manchmal wie eine formale Hülle. Simula zeigt die tiefere Idee: Klassen und Objekte sind Mittel, um Sachverhalte als ausführbare Modelle zu beschreiben.

Kontext: Von Hochsprache zu Modellierungssprache

Historisches FORTRAN-Codierformular mit Spaltenraster für Programmeingabe.
FORTRAN-Codierformular als Bildanker für Programmierung in der Lochkartenära.Arnold Reinhold / Wikimedia Commons | CC BY 2.5 / CC BY-SA 3.0 / GFDL | Wikimedia Commons | FORTRAN und höhere ProgrammiersprachenBildquelle | Lizenz

Simula steht im Kontext der Entwicklung höherer Programmiersprachen. FORTRAN macht Programmierung problemnäher und löst sie ein Stück von Maschinenbefehlen. Simula geht einen anderen Schritt: Programme sollen nicht nur Berechnungen formulieren, sondern modellierte Systeme ausdrücken können. Damit verschiebt sich der Fokus von Rechnung zu Modellierung.

Simulationen verlangen besondere Strukturmittel. Ein System kann aus vielen ähnlichen, aber unterscheidbaren Einheiten bestehen. Diese Einheiten besitzen Zustände, verändern sich und reagieren auf Ereignisse. Eine Sprache, die solche Strukturen ausdrücken soll, braucht Begriffe für gemeinsame Baupläne und konkrete Ausprägungen. Klassen und Objekte beantworten genau dieses Problem.

Für die E3-Lineage bedeutet das: Objektorientierung erscheint nicht plötzlich mit Java. Sie entsteht aus dem Bedarf, komplexe Sachverhalte so zu strukturieren, dass sie im Programm als Gegenstände mit Zustand und Verhalten bearbeitbar werden.

Technische Struktur: Klasse, Objekt, Zustand und Verhalten

CADR Lisp Machine im MIT Museum.
Eine Lisp Machine zeigt symbolische KI- und Programmiersprachenkultur als eigene Hardware- und Softwarelinie.Daderot / MIT Museum / Wikimedia Commons | CC0 1.0 | Wikimedia Commons | LISP und symbolische KIBildquelle | Lizenz

Technisch lässt sich Simulas Bedeutung über vier Begriffe erschließen: Klasse, Objekt, Zustand und Verhalten. Eine Klasse beschreibt gemeinsame Merkmale und Operationen. Ein Objekt ist eine konkrete Instanz dieser Klasse. Zustand meint gespeicherte Werte eines Objekts. Verhalten meint Operationen, die ein Objekt ausführen kann oder die auf sein Verhalten im Modell bezogen sind.

Diese Struktur verbindet Daten und Operationen enger als rein prozedurale Programme. Statt Daten irgendwo zu speichern und Funktionen getrennt darauf anzuwenden, kann ein modellierter Gegenstand als Einheit gedacht werden. In späteren objektorientierten Sprachen wird daraus die verbreitete Vorstellung: Objekte besitzen Attribute und Methoden.

Für E3 ist diese technische Struktur unmittelbar anschlussfähig. Wenn Lernende in Java eine Klasse, Attribute, Konstruktoren oder Methoden verwenden, arbeiten sie mit einer späteren Form dieser Denkweise. Simula erklärt die fachliche Herkunft: Objektorientierung ist ein Strukturmodell für Programme, nicht nur eine andere Schreibweise für Befehle.

Materialisierung: Simulation als Programmentwurf

Alan Kay mit einem Dynabook-Prototyp.
Smalltalk, Dynabook und objektorientierte Interaktion verbinden Programmierung, Modellierung und Benutzeroberfläche.Marcin Wichary / Wikimedia Commons | CC BY 2.0 | Wikimedia Commons | Smalltalk, Dynabook und interaktive ObjekteBildquelle | Lizenz

Simulas Materialisierung liegt darin, Simulation als Programmentwurf ernst zu nehmen. Eine Simulation beschreibt nicht nur eine Formel oder einen einzelnen Ablauf, sondern ein System von Einheiten, Zuständen und Ereignissen. Die Sprache bietet dafür Strukturmittel, mit denen solche Einheiten im Programm repräsentiert werden können.

Damit wird eine neue Form von Programmentwurf sichtbar. Man fragt nicht nur: Welche Anweisung kommt als Nächstes? Man fragt: Welche Gegenstände gibt es im Modell? Welche Eigenschaften besitzen sie? Welche Operationen können sie ausführen? Wie verändern sich ihre Zustände? Diese Fragen führen direkt zu Klassen, Objekten und Methoden als Modellierungsmitteln.

Für spätere Sprachen wie Smalltalk und Java ist diese Materialisierung anschlussfähig. Sie übernehmen nicht einfach Simula unverändert, aber sie führen die Idee weiter, Programme über miteinander verbundene Objekte und Klassen zu strukturieren. Dadurch entsteht eine Linie von Simulation zu moderner objektorientierter Programmierung.

Bedeutung: Objektorientierung als Modellierungslogik

Die Bedeutung von Simula liegt darin, Objektorientierung als Modellierungslogik sichtbar zu machen. Objekte sind nicht nur Speicherbehälter, und Klassen sind nicht nur syntaktische Hüllen. Sie helfen, Sachverhalte in einer Form zu beschreiben, die ausgeführt werden kann. Ein Programm wird dadurch zu einem Modell aus Zuständen, Operationen und Beziehungen.

Diese Bedeutung ist für den Unterricht besonders wichtig. Viele E3-Aufgaben beginnen mit kleinen, überschaubaren Problemen. Trotzdem steckt auch dort Modellierung: Welche Daten müssen gespeichert werden? Welche Operationen verändern sie? Wann ist eine Methode sinnvoll? Wann beschreibt eine Klasse einen fachlichen Gegenstand? Simula liefert eine historische Tiefenschicht für diese Fragen.

Für die Programmiergeschichte ist Simula damit ein Bindeglied. Frühere Hochsprachen machen Programme abstrakter und problemnäher. Simula zeigt, dass Programmiersprachen auch Gegenstandsbereiche modellieren können. Java wird später eine verbreitete Unterrichts- und Industriesprache, in der diese Idee praktisch erfahrbar wird.

Abgrenzung: Simula ist nicht Java und nicht OOP insgesamt

Simula darf nicht mit Java gleichgesetzt werden. Java ist eine spätere Sprache mit eigenem Ökosystem, eigener Laufzeitumgebung, eigenen Bibliotheken und eigener Unterrichtsrolle. Simula ist eine historische Vorlinie, die objektorientierte Modellierung aus dem Kontext der Simulation heraus sichtbar macht.

Ebenso ist Simula nicht die gesamte Objektorientierung. Smalltalk entwickelt eine andere, interaktivere und stärker durchgängige Objektperspektive. Spätere Sprachen übernehmen, verändern oder begrenzen objektorientierte Ideen. Objektorientierung ist daher keine einzelne Sprache, sondern eine Familie von Konzepten: Klasse, Objekt, Zustand, Verhalten, Nachricht, Methode, Vererbung oder Kapselung können je nach Sprache unterschiedlich ausgestaltet sein.

Für E3 ist diese Abgrenzung hilfreich. Lernende arbeiten meist mit Java. Der Wiki-Artikel erklärt nicht, dass Java einfach Simula sei, sondern dass Java in einer längeren Entwicklung steht. Simula liefert die Modellierungswurzel, Java die moderne Unterrichtsmaterialisierung.

Quellen

Weitere Quellen

Bedeutungsschichten im D-BookLineages, Concepts, Ort und Statistik als nachgeordnete Kontextdimensionen.4 Bezüge

Bedeutungsschichten im D-Book

Verbindungen im D-Book

Die folgenden Fachbegriffe ordnen das Ereignis relational in das D-Book-Wissensnetz ein. Die Beziehungsbeschreibungen stammen aus den kuratierten Concept-Zuordnungen des Ereignisdatensatzes.

Fachliche Concepts

Concepts binden das Ereignis an den fachlichen Begriffskern und fuehren bei vorhandenen Ankern ins Glossar.

Concept-Artikel | Kontext

Modell

objektorientierte Modellierung

Concept-Artikel | Kontext

Programm

Programme als modellierte Objekte und Prozesse

Concept-Artikel | Kontext

Sprache

Sprachmittel für Simulation und Objekte


Räumliche Verortung

Die folgenden Orte, Institutionen und räumlichen Kontexte sind relational mit diesem Geschichtsereignis verbunden. Die genaue räumliche Rolle stammt aus den kuratierten Ereignis-Orts-Beziehungen.

Geografischer Kontext

Orte markieren raeumliche Entstehungs-, Institutions- oder Infrastrukturbezuege und fuehren weiter zum GeoAsset.

Ort | laboratory | Oslo | NO | Anker

Norwegian Computing Center, Oslo

wurde hier entwickelt [developed_at] – Norwegian Computing Center — Simula wird dem Norwegian Computing Center / Oslo-Kontext zugeordnet.


Bedeutungsschichten im D-Book

Simula ist im D-Book die Modellierungswurzel der objektorientierten E3-Anbahnung. Die E3-Seite arbeitet zunächst überwiegend prozedural: Datentypen, Ausdrücke, Kontrollstrukturen, Arrays, Strings und Methoden stehen im Vordergrund. Zugleich werden Klassen, Objekte, Attribute und GUI-Komponenten bereits angebahnt.

Der Wiki-Artikel erklärt, warum diese Begriffe nicht bloße Java-Formalien sind. Simula zeigt Klassen und Objekte als Mittel, Gegenstände mit Zustand und Verhalten zu modellieren. Diese Tiefenschicht wird später in Q1.1 systematisch vertieft.

Die Konsistenzregel lautet: E3 nutzt Klassen zunächst als Java-Rahmen und erste Objektanbahnung; die vollständige Objektorientierung ist Anschluss, nicht Zentrum der E3-Inhaltsseite.


Curriculare Programmierkette

Simula und objektorientierte Modellierung ist in der curricularen Programmierkette mit E3, Q1.1, Q1.4 verbunden. Die zugehörigen Entwicklungslinien sind: E3: Von Hochsprachen zu objektorientierter Programmierung | Q1.1: Von Objekten zu Softwaremodellen | Q1.4: Von Listen zu abstrakten Datenstrukturen. Damit wird das Ereignis nicht als isolierte historische Notiz geführt, sondern als Teil eines curricularen historischen Clusters. Die Inhaltsseiten bleiben die Ebene der Lernhandlung und Operationalisierung; das Wiki erklärt historische Entwicklung, fachliche Relationen und Tiefenstruktur.

Medien und ZusatzassetsPrimärmedium, Atlas-Preview, Statistikansichten und kuratierte Asset-Abschnitte.6 Assets

Medien und Zusatzassets

Atlas-/Geo-AssetNorwegian Computing Center, OsloNorwegian Computing Centerlaboratory | Oslo | NO | city
Datenpfad und RelationenRelationale Vorlinien, Fortsetzungen und Kontextpfade aus den History-Daten.7 Relationen

Relationspfade

Vorlinien

  1. FORTRAN und höhere Programmiersprachen1957bereitet_vor

    Hochsprachenabstraktion führt zur Frage, wie Programme modellierte Gegenstände ausdrücken können. Von mathematisch-technischer Hochsprache zur objektorientierten Modellierung. FORTRAN steht für höhere, problemnähere Programmierung; Simula erweitert diese Linie um modellierende Objekte und Klassen.

Fortsetzungen

  1. Smalltalk, Dynabook und interaktive Objekte1972bereitet vor

    Simula bereitet zentrale objektorientierte Ideen für Smalltalk vor.

  2. Java und plattformübergreifende Programmausführung1995bereitet vor

    Objektorientierte Modellierung wird später in Java breit wirksam.

  3. Smalltalk, Dynabook und interaktive Objekte1972beeinflusst

    Simula und Smalltalk bilden die objektorientierte Tiefenschicht. Objektorientierung wird von Simulation zur allgemeinen Programmier- und Lernumgebung weitergeführt. Simula bereitet objektorientierte Modellierung vor; Smalltalk verbindet Objekte, Interaktion und Lernumgebung stärker.

  4. C++ und objektorientierte Systemprogrammierungab 1983beeinflusst

    C++ ergänzt die systemnahe objektorientierte Perspektive. Objektorientierung wird mit systemnaher Softwareentwicklung verbunden. C++ übernimmt objektorientierte Strukturierung in einen systemnahen Sprachkontext.

  5. Abstrakte Datentypen und Schnittstellenidee1974bereitet_vor

    Objektmodellierung und Kapselung bereiten ADTs vor. Von Objektmodellierung zu Operationen-vor-Implementierung. Objektorientierung und Kapselung bereiten abstrakte Datentypen als Schnittstellen- und Geheimnisprinzip vor.

Kontext

  1. LISP und symbolische KI1958kontext_zu

    Listen- und Objektperspektive bilden Grundlagen höherer Datenstrukturen. Datenstruktur und Objektstruktur werden als Anschlussfelder verbunden. Listenstrukturen und Objektmodellierung liefern zwei Grundlagen höherer Datenstrukturen: Referenzen und Objekte.