Objekt in der objektorientierter Programmierung        zurück ]      [ Index ]     

Objektorientiert heisst eine Programmierung, die mit einem terminologisch gebundenen Konzept eines Objektes arbeitet. Aion ist der Produktname einer objektorientierten Softwareentwicklungsumgebung, die wir für die Realisierung von MailTack verwenden.

Allgemeine (nicht Aion spezifische) Vereinbarungen

Es gibt Entitäten und Prozesse.

Entitäten

Unter der objektorientierten Prespektive sind Entitäten Instanzen.
Instanzen sind Instanzen von Objekten.
Objekte sind Beschreibungen ihrer Instanzen.
Natürlich sind Objekte auch Entitäten, weil Beschreibungen auch Gegenstände sind.

Anschauliches Beispiel (ohne explizite Konstruktion der Entität)

Ein konkretes Mehrfamilienhaus ist eine Instanz, die durch das Objekt "Mehrfamilienhaus" beschrieben ist.
Das Objekt "Mehrfamilienhaus" ist eine sprachliche, textliche Abbildung der Instanz "Mehrfamilienhaus", etwa der Text "Ein Gebäude in welchem mehrere Familien wohnen".
In der Instanz des Hauses kann man wohnen, sie "ist" ein Haus.
Das Objekt beschreibt, was ein Haus ist, also welche Attribute ein Haus hat.
Von jedem Objekt kann es beliebig viele Instanzen geben, die Instanzen tragen deshalb spezifische Eigennamen, zB Strassennammen und Hausnummer.
Eine Instanz des Objektes Haus heisst beispielsweise "Musterstrasse 11"
.

Objekte in Programmiersprachen

Eine "Programmiersprache" ist eine bestimmte Konfiguration einer Steuerungsmechanik, die zur Steuerung sprachhaft angeordnete Zeichenkörper verlangt, so dass diese sekundär lesbar sind.
Ein ''Programm'' ist ein Gegenstand, der zur Steuerung von programmgesteuerten Maschinen (Automaten) hergestellt wurde. Programme sind physische Maschinenteile (Material, Hardware), sie haben in Abhängigkeit der Steuerung verschiedene Formen. Ein Programm wird benutzt, um den Automaten in verschiedene (Schaltungs)-Zustände (Struktur) zu versetzen. Im primitivsten Falle ist das Programm beispielsweise eine Lochkarte, im entwickelteren Falle ist ein Programm eine Menge von eingescannten Zeichenkörpern (Text), die als Schalter fungieren.

Ein Programm beschreibt die Steuerung jener Maschine, von welcher es Teil ist.
Die Entitäten der Programmiersprachen sind Schalter, im gängigen Falle binäre Schalter. Im Programm kann man nachlesen, in welchem Zustand die Maschine zu einem bestimmten Prozess-Zeitpunkt ist, wenn sie durch das Programm gesteuert wird.

Ein Programm kann als Objekt aufgefasst werden. Jeder Maschinenprozess, der durch das Programm gesteurt ist, ist dann eine Instanz des Programmes. Wir nennen diese Instanzen Funktion oder Applikation.

Anschauliches Beispiel

In einem Computer wird ein programmierter Prozessor benutzt, um (Funktion) unter bestimmten Umständen (zB Tastatur-Konfigurationen) eine bestimmte Zeichenkette am Bildschirm anzuzeigen.
Das Programm sieht wie folgt aus:
.... read (Tastatur) ... write (Bildschirm),
wobei read und write Operationen sind, Tastatur und Bildschirm Objekte mit variablen Zuständen.

Das Objekt "Bildschirm" besteht aus eine Menge angeordneten Objekten "Pixel"
Das Objekt "Pixel" hat das Attribut "Schaltzustand" mit denn Werten "ein, aus" Eine Instanz des Objektes "Bildschirm" ist ein physischer Bildschirm in einem bestimmten Zustand.

Wenn das "Programm gestartet" (run) wird, wird die Maschine ein Instanz des Programmes. Die jeweilige Instanz des Programmes verändert dann den Bildschirm in Abhängigkeit der im Programm beschriebenen Bedingungen, zB der Tastatur..

Instanzen und Objekte in der real world

Der User interessiert sich natürlich nicht für Bildschirmzustände, sondern für "Informationen". "Informationen" sind "repräsentiertes Wissen" über die wirkliche Welt.

Anschauliches Beispiel

Ein Liegenscahftsverwalter will wissen, wer in welchem Mehrfamilienhaus wohnt.
Ein Mailtacker will wissen, wer wann eine Mail zum Thema xy geschrieben hat.

Die Instanz "Mehrfamilienhaus.Musterstrasse 11" des Objektes "Mehrfamilienhaus" in der wirklichen Welt wird repräsentiert durch den Inhalt des Datenbankfeldes "Musterstrasse 11" im File "Mehrfamilienhaus".
Dieser Datenbankeintrag wird manipuliert durch eine Instanz des Programmes "Liegenschaftsverwaltung". Dieses Programm ist in mehreren Kopien in verschiedenen Liegenschaftsverwaltungen im Einsatz.
Jede dieser Kopien ist eine Kopie des Objektes (Liegenschaftsverwaltung-Programm). Kopie und Original sind nicht unterscheidbar, in diesem Sinne gibt es nur identische Originale.

In Analogie könnte man sagen: Die Instanz "Mail xy" des Objektes "Mail" in der wirklichen Welt wird repräsentiert durch den Inhalt des Datenbankfeldes "Mail xy" im File "Mail". Aber natürlich ist die Mail selbst Inhalt des Datenbankfeldes. Man kann sich in diesem Sinne eine im Computer abgebildete konventionelle Briefpost vorstellen, damit die Analogie aufrecht erhalten wird. Sowieso kann man aber auch die Refenten in der wirklichen Welt einfach weglassen, weil sie für den hier interessierende Prozess unerheblich sind. Hier geht es in jedem Fall um die Manipulation einer Datenbank, was immer diese Daten repräsentieren sollen/wolen.
Immer wenn das Programm gestartet wird, wird eine Instanz des Programmes erzeugt, die einen Eintrag in der Datenbank verändert.

"Informationen" im Sinne von Daten sind Maschinenzustände. In den Programmen werden also Maschinenzustände als Output von Funktionen oder Applikationen beschrieben. Dass die Maschinenzstände etwas in der wirklichen Welt repräsentieren, ist eine unerhebliche Sicht des Benutzers (und des Programmieres, der das Original des Benutzers ist)

Prozess und Methode

Jede Veränderung eines Objektes ist ein Prozess. Wenn ein Objekt als Entität beschrieben wird, dann ist durch die Attribute definitiv bestimmt, welche Veränderungen möglich sind, deshalb können die Veränderungsprozesse dem Objekt zugeordnet werden.

Die Veränderungsprozesse die zulässig sind, werden als Methoden bezeichnet. Die Methoden enthalten auch die Bedingungen, die erfüllt sein müssen, damit sie ausgeführt werden.

Objekte reagieren auf "ihre" Methoden. Beispiel

Ein Objekt (zB eine Integer-Variable), das eine Zahl enthält, kann Prozessen unterworfen werden, die diese Zahl verändern, also etw dem Prozess "Verdoppeln", oder dem Prozess "addiere 4". Die für das Objekt zulässigen Prozesse sind seine Methoden.

Die Methode wird unter besimmten Bedingungen aktiviert. Enthält das Objekt den Wert 5, wird das Objekt nach der Methode "Verdoppeln" den Wert 10 enthalten.

Instanzen und Objekte als Refernet und Definition

Entitäten sind durch Werte auf Eigenschaftsdomänen, also durch Eigenschaften bestimmt

Instanzen "Attrribute" (Eigenschaftsräume der Entitäten) bestimmt

Erläuterung

Diese Terminologie entspricht der semiotischen Pragmatik. Dort wird ein Begriff durch Oberbegriff und Kriterium definiert, ein Tiger etwa ist eine Katze mit gestreiftem Fell. Eine Katze ist ein Raubtier usw.
Die Ausdrücke (Begriffe) stehen nur für Abstrakta. Konkreta sind Instanzen der Begriffe. "Die" Katze gibt es nicht, es gibt aber ganz viele Instanzen der Katze, die alle Katzen sind, weil sie durch den Begriff "Katze" adäquat beschrieben sind.

Ein Objekt ist ein Begriff, eine Objektklasse ein Oberbegriff. Instanzen der Objekte sind Referenten der Begriffe.

Objekte reagieren auf Methoden
Methoden heissen die Prozesse, die die Attribute eines Objektes verändern. Jede Methode bezieht sich auf ein Objekt.

Beispiel

Ein Haus kann gebaut, gestrichen, renoviert, abgerissen werden.

Das umfassenste Objekt heisst Applikation (Aion IDE)
es reagiert auf die Methode "Run *.exe"

Die hier interessierenden Applikationen dienen der Bildschirmsteuerung (im Unterschied zu Applikationenen, die etwa in Waschmaschinen vervendet werden)
Applikationen sind Programme (und mithin durch Programme sebstrefentiell beschrieben)

Die Methode "Run *.exe" erzeugt eine Instanz der Applikation Aion, die u.a. eine Methode "New/Open" und eine Methode "Run" enthält.

Die Methode "New" erzeugt eine spezifische Applikation (Objekt), die mit einem Applikationsnamen identifiziert wird. Standardmässig enthält eine spezifische Applikation Instanzen der Standard-Libraries und Standard-Objekte und die beiden Objekte "AppWindow" und "Main", die Instanzen der Objektklassen "Windows und Dialogs" und "User Objects" sind.

Hinweis:Wenn Applikationen innerhalb anderer Applikationen verwendet werden, erben sie die Libraries, so dass sie diese selbst nicht enthalten müssen und natürlich brauchen sie dann auch kein AppWindow.

Die Methode "Run" einer Appikation ist eine Verknüpfung zur Methode "Start" des Objektes "Main" (bei Marco umbenannt zur Methode "Install" des Objektes "Systemmanager")

Die Methode "Start" (resp die "Entry-Methode) erzeugt eine Instanz des Applikations-Hauptfensters AppWindow (das man natürlich auch benennen kann (bei Marco etwa "Output" oder "Import Window")) und öffnet sie.

Kritische Anmerkung

Eine Methode erzeugt nichts, der Anwender der Methode erzeugt das Objekt oder die Veränderung des Objektes mittels der Methode.
Die verkürzte Redeweise mag effizient sein, aber sie erzeugt viele semantische Probleme. Möglicherweise so viele, dass sie nicht effektiv ist: Das Geschwätz von intelligenten Agenten ist auch im KnowNet-Projekt nicht sehr förderlich.

Der Anwender einer Applikation (Runtime-System) kann in sogenannten "Consultationen" Methoden wählen, typischerweise durch Anklicken eines Buttons. Natürlich sind Buttons auch Objekte mit Attributten und Methoden, typischerweise erscheinen Button aber als Attribute eines Objekts Windows, das in einer Methode festhält, was nach Anklicken des Button geschieht.

Objekte, die mehrfach verwendet werden, werden in Objektklassen definiert. Die Objekte sind dann Elemente der Objektklasse und verfügen über deren Attribute und Methoden. Sie können zusätzlich noch weiter spezifiziert werden

Beispiel

Das Objekt "Haus" ist ein Element der Objektklasse "Gebäude"
Das Objekt "Mehrfamilienhaus" ist ein Element der Objektklasse "Haus"
- es hat den Attributwertebereich ("ist Wohnblock", "ist kein Wohnblock")
- es hat den Attributwertebereich (Strasse, Nr) wobei Strasse in string ist, Nr ein Integer

Eine Instanz des Objektes Mehrfamilienhaus ist der "Wohnblock Musterstrasse 11"

************* noch ein Beispiel********************

Adressverwaltung (applikation)

Das Objekt "Adressverwaltung" ist ein File mit "Adressen"
- es hat die Methode "File erstellen"
- es hat die Methode "Adresse hinzufügen"
- es hat die Methode "Adresse löschen"

Das Objekt "Adresse" ist ein Record
- es hat das Attribut "Name"
- es hat das Attribut "Strasse"
- es hat das Attribut "Ort"
- es hat die Methode "mutieren/überschreiben"

Eine Instanz der Adressverwaltung ist die Adressverwaltung des Turnvereins
sie enthält Instanzen des Objektes "Adresse"
Eine Instanz des Objektes "Adresse" ist "Peter Muster, Baslerstrasse 11, Zürich"

************* Ende (ab hier Ideen) ********************
Window heisst ein begrenzter Raum auf dem Bildschirm mit einigen Standard-Methoden wie "Schliessen des Winows", "Verändern des Inhaltes (Oeffnen, Editieren)"

Die Benutzung einer Applikation heisst Consultation (= Prozess)
Instanzen sind Objekte einer Objektklasse (class)
Objekte (und Classes) Applikationen bestehen aus Funktionen.
Funktionen sind Programme (=Objekte), werden verädert durch

Libraries
Instances
Classes zB Main
Beispiel Loans (Runtime)
Application-Window (Grundfenster wie TB)
darin: Application Loans
darin: Libraries
Instances

Classes
darin: Applicant
darin: Main (="Entry"-Klasse, enthält classMehtode Start)
darin: Start( ) // Create and open the application window
pApp = AppWindow.Create()
//Instanz von AppWindow
pApp.OpenApp()
//öffnet die Instanz

Herstellen einer Applikation

1. New (macht eine namen.app - Datei plus einen namen.bin-Folder) erzeugt Librarises, AppWindow und Main - wird nur im MainProjekt gebraucht

2. Erzeugen von Classes (Logic -> New -> Class ) oberste Klasse (BaseClass) ist _object

3. Erzeugen von Instance-Attributes (Zuordnung von Variablen und Werten: (zB Blutdruck, 70,80,90) eine Instanz hat dann einen Wert im Attribut

4. Specializing inherited Attributes (Die Instance-Attribute werden auf subclasssen-Niveau spezialisiert) zB Frauen habe spezifische Wert bei Blutdruck

5. Erzeugen von Class-Attributes

6. Erzeugen von static instances

************* Das ist eine Aion-Applikation, die in andern Aion-Applikationen verwendet wird ******************

*************ein weitere Applikation ********************

1. New

2. Erzeugen von Classes (zB UnderwritingAgent)

3. Erzeugen von Methods to Represent Tasks

4. Erzeugen von Instance-Attributes

5. Including Libraries

************************************************************

Implementation (Funktionsweise) Alle Components ( = Objekte ??) haben spezifische Editors was sind Querry classes ? (im Menu starten (Beispiel: Employee: Process)) Interference = Anlass für Prozess clause = (Teil-)Satz