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.
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".
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..
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)
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.
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