Module sind Funktionsbereiche, der von den anderen Bereichen möglichst entkoppelt sind. Der Name gibt den Funktionsbereich an, und sollte ohne spezielle Prä- oder Postfixe geschrieben werden. Beispiele: _Main, Adressstamm, Debitoren
Das Modul muss eine Haupt-Modelldatei mit dem Namen des Moduls und der Endung .aom
Jedes Modul sollte eine eigene Delphi-Startup-Unit haben, in der die Initialisation des Moduls vorgenommen wird. Diese Datei trägt per Konvention den Namen Init.pas
Referenz eines anderen Moduls, das Elemente in diesem Modul verwendet
Referenz einer anderen Unit, die Elemente in einer Unit in diesem Modul verwendet
Referenz aus einer anderen Unit auf ein Element in einer Unit in diesem Modul
Jedes Modul kann einen eigenen Modulpräfix haben, der die Objekte in einem Modul kennzeichnet. Er sollte 2-4 Buchstaben lang sein, und mit einem Grossbuchstaben anfangen. Der Präfix wird im generierten Code den Namen von im Modul enthalten Units, Klassen und Links vorangestellt.
Beispiele: Adr, Deb, Sys
Der Modul-Präfix muss in der Schnittstellen-Datei ...Intf.aom deklariert werden, wenn das Modul eine solche hat. Sonst in der Hauptdatei .aom. Man kann ihn auch an beiden Orten angeben.
Units gliedern ein Modul in eng zusammenhängende, in eigenen Quell-Dateien verwaltete Teilbereiche. Sie entsprechen direkt den generierten Delphi-Units. Der Name gibt den Teilbereich an, und sollte auch ohne spezielle Prä- oder Postfixe geschrieben werden. Beispiele: Adressen, Kunden, Belege, Nachschlagelisten
Die Modell-Datei zu einer Unit sollte den Namen der Unit mit den Endung .aom
Die Modelldatei muss von einer Haupt-Datei des Moduls include
Durch den oben definierten Modulpräfix Adr
Modell-Klassen definieren Daten-Objekt-Klassen im Atlas-Modell. Sie haben eine direkte Entsprechung in den generierten Delphi-Klassen. Klassennamen sollen in Einzahl stehen und die Art des beschriebenen Objekt-Typs angeben. Beispiele: Adresse, Ort, Anrede.
Warum Singular? Rein praktisch liest sich TFibuKontoObj und TFibuKontoLink besser als TFibuKontenObj. Argumentieren könnte man für TFibuKontenLink, aber aus Gründen der Konsistenz und damit Merkbarkeit verzichten wir hier darauf. Theoretischer: Eine Klasse beschreibt die Struktur der einzelnen Objekte eines Typs, nicht die Struktur der Typ-Menge (z.B. keine Kardinalität - Ausnahmen gibt es natürlich wie Eindeutigkeit von Werten innerhalb der Menge).
erzeugt in der generierten Delphi-Unit folgende Delphi-Klassen (Modul-Präfix ist Adr)
Im Code beim Datenzugriff
In der Implementation von Methoden der generierten Klasse
Modell-Links definieren Relationen zwischen Daten-Objekt-Klassen im Atlas-Modell. Ein Linkname entspricht häufig einfach dem Namen der Klasse, auf die der Link zeigt. Der Name steht im Singular (Einzahl), wenn die Kardinalität des Links eins ist, sonst im Plural (Mehrzahl). Beispiele zu Eins: Beleg hat Adresse, Adresse hat Ort und Anrede Beispiele zu N: Adresse hat Belege und Telefonnummern.
Wir verwenden bewusst die saubere Zahlform und keine speziellen Prä- oder Suffixe. Damit erreichen wir eine saubere Lesbarkeit von Queries und Code in der Anwendung. In Queries sind Links sowieso mit > ausgezeichnet (wie in [>Ort.PLZ] [>Ort.Name]) und im Code mit .l oder .o (wie in adr.oOrt.vName oder adr.lBelege.Count).
erzeugt in der generierten Delphi-Unit folgende Delphi-Klassen (Modul-Präfix ist Adr)
Zeigt eine Klasse über mehrere verschiedene Links auf dieselbe andere Klasse, so müssen die Links unterschiedliche Namen haben. Wir sprechen dann auch von einem Rollennamen. Es macht meist Sinn, den Namen der Zielklasse an den Rollennamen anzufügen:
Schwieriger zu benennen sind in diesem Fall häufig die Umkehr-Relationen. Wir empfehlen
Beispiele: Konto hat BuchungenAlsSoll und
Fehlt noch.
Fehlt noch.
Fehlt noch.
© 2004-2009 Opus Software AG, Switzerland
Zuletzt aktualisiert am 13.02.2009.