Let's do the logical design
Projekt mal wieder speichern!
Bis hier sind die Schritte für jedes Bold-Projekt gleich bzw. ähnlich, abhängig zum Beispiel von der Art der Datenspeicherung. Aber nun zum eigentlich Projekt und seiner Logik. Dazu starten wir den Bold
UML-Editor. Der versteckt sich hinter dem Doppelklick auf die TBoldModel (bldModel) Komponente.
In der aktuellsten Version von Bold sind die Kontextmenüs flexibler, als in den Vorgängerversionen. Von daher kann man fast an jeder Stelle jeden Menüpunkt erreichen und sollte der gewählte Punkt im aktuellen Kontext "keinen Sinn machen", sucht Bold die nächste sinnvolle Position, um die Abfrage auszuführen.
In der Grafik habe ich bereits die ersten drei Punkte unserer Aufgaben markiert. Wenn Ihr Euch ein wenig im Editor umgeschaut habt, dann geht jetzt auf die Root-Node (1) und wählt damit das aktuelle Projekt-Modell aus. Geben wir dem mal einen "vernünftigen" Namen (2) "
BoldContacts". Im Feld
Model Root Class (3) geben wir der Basis-Klasse unseres Models auch einen Namen "
ContactsModelRoot". Anschließend noch die Node der Basis-Klasse (4) auswählen und im erscheinenden Dialog (rechte Seite) den gleichen
Namen (5) angeben, den wir auch bei (3) angegeben haben.
Ähnlich wie in Delphi alle Klassen von
TObject abgeleitet werden, müssen in einem Bold-Modell alle Klassen von einer Basisklasse oder deren abgeleiteten Klassen abgeleitet werden. Unterschied ist, daß diese Klasse frei benannt werden kann. Diese Klasse ist letztendlich, wenn das Projekt vollständig kompiliert ist, natürlich auch von TObject abgeleitet.
Unsere Klassen
Unterhalb der Node
Logical View erstellen wir jetzt die drei benötigten Klassen für unser Model. Dazu müsst Ihr einfach mit der rechten Maustaste auf die Node
Logical View klicken und den Menüpunkt
New Class auswählen. In der ersten
UML-Grafik haben wir dafür festgelegt, daß wir die folgenden Klassen benötigen.
- Contact (unsere Basisklasse für Kontaktdaten)
- Company (zusätzlich erforderliche Informationen für Firmendaten)
- Person (zusätzlich erforderliche Informationen für Personendaten)
Nachdem wir die Klassen angelegt haben, müssen wir noch die Vererbung definieren. Dazu muss für die Node (Klasse)
Contact bei der Eigenschaft
Superclass die Klasse
ContactsModelRoot ausgewählt werden. Für die Nodes (Klassen)
Company und
Person muss an gleicher Stelle die Klasse
Contact ausgewählt werden. Zusätzlich speichern wir für die Klasse
Contact, daß diese
abstract ist. Das resultiert darin, daß später kein Kontakt angelegt werden kann, der nicht entweder vom Typ
Company oder vom Typ
Person ist, was sollte das auch für ein Kontakt sein. Ihr Kühlschrank?
Ein Kontakt sollte auch Daten haben
Das bringt uns jetzt zum nächsten Punkt. Wir haben unsere Klassen und diese Klassen können auch genutzt werden. Allerdings sind diese in deren jetzigen Zustand wohl eher nutzlos, da keine Klasse bis jetzt genauere Daten speichert. Nehmen wir dieses mal in Angriff Fangen wir mit der Klasse
Contact, welche die Basis der anderen Kontaktdaten-Klassen ist. Klicken wir dazu mit der rechten Maustaste auf die Node der Klasse
Contact und legen die folgenden Eigenschaften/Attribute an:
- emailAddress
- faxNumber
- phoneNumber
- postalAddress
Der Einfachheit zuliebe belassen wir die Defaultdatentypen und -einstellungen (String, 255 Zeichen). Für die Eigenschaften/Attribute emailAddress, faxNumber, phoneNumber, postalAddress markieren wir noch die Checkbox
Allow null, da nicht jeder alle Informationen zu bieten hat.
Der Klasse
Company geben wir jetzt noch die folgenden Eigenschaften/Attribute
billingAddress, welche auch leer sein darf (
Allow null markieren) und
companyName.
Der Klasse
Person geben wir jetzt noch die folgenden Eigenschaften/Attribute
firstName und
lastName. Beides sind Pflichtangaben (auch wenn es den Nutzer ärgern sollte

)
Aber wer arbeitet wo?
Die Logik ist
fast fertig. Wir müssen Bold nur noch "erklären", daß die Klasse
Company eine 0:n-Beziehung zur Klasse
Person (0:1-Beziehung) hat. Dazu klicken wir mit der rechten Maustaste wieder auf die Node
Logical View und wählen den Menüpunkt
New Association aus.
Anschließend stellt uns der Bold
UML-Editor die neue Association bereit. Diese benennen wir gleich in "
Employment" um.
Mit Hilfe dieser Assoziation können wir jetzt die logische Verbindung zwischen der Klasse
Company und der Klasse
Person herstellen. Dazu benennen wir das erste "Ende der Assoziation" in "
worksFor" (
Name) um. Bei
Multiplicity wählen wir "
0..1" aus und abschließend wählen wir für
Class die Klasse "
Company" aus. Das sollte uns direkt zu dem zweiten Ende der Beziehung (Assoziation) bringen. Dort tragen wir für den
Namen "
employs" ein, für
Multiplicity den Wert "
0..*" und für
Class die Klasse "
Person". Zusätzlich muss in der Verbindung für Klasse
Company sichergestellt werden, daß das Häkchen bei der Checkbox
Embed entfernt ist. Dadurch veranlassen wir, daß die Beziehung "Person <--> Company" auf seiten der Klasse
Person gespeichert wird.
Hinweis: Es kann immer nur ein Ende einer Beziehung diese Speichern. für n:m-Beziehungen muss eine extra Klasse erstellt werden, welche zu jedem der Enden eine 0/1:n-Beziehung hat.
Damit habe wir die Verbindung zwischen Angestellten einer Firma zur Firma definiert, wie eingangs am
UML-Modell (
Grafik) beschrieben.
Spätestens jetzt sollte alles mal wieder gespeichert werden!
...

...