Zunächst einmal müssen Sie erkennen, dass OOAD ("Object-oriented analysis and design") ein Werkzeug und kein Mittel zum Zweck ist. Das Ergebnis dieses Prozesses ist ein Modell und keine echte Darstellung dessen, was man modelliert. Dieses Modell geht von bestimmten Annahmen aus. Der Zweck dieses Modells ist es, ein Problem zu lösen, das Sie haben.
Woher wissen Sie also, wie man Objekte gestaltet? Woher weiß man, ob man es richtig gemacht hat? Durch das Endergebnis: Hat es Ihr Problem gelöst?
In einigen Modellen kann die Anzahl der Fahrzeuge einfach eine ganze Zahl sein, z. B. die Anzahl der Fahrzeuge, die eine Kreuzung in einem Verkehrsmodell passieren. In einem solchen Modell interessiert man sich selten für die Marke, das Modell oder die Bauart der Autos, sondern nur für die Anzahl. Sie könnten sich für die Art des Fahrzeugs interessieren, z. B. ob es sich um einen Lkw oder einen Pkw handelt. Modellieren Sie das als ein Fahrzeug-Objekt mit dem Typ Car oder Truck? Oder nur getrennte carCount- und truckCount-Tabellen?
Die kurze Antwort lautet: je nachdem, was am besten funktioniert.
Der normale Test, ob etwas ein Objekt ist oder nicht, besteht darin, ob es ein Verhalten hat. Denken Sie daran, dass Objekte letztendlich Daten + Verhalten sind.
Man könnte also sagen, dass Autos den folgenden Zustand haben:
-
der Räder;
-
Höhe der Aufhängung;
-
Antrieb links oder rechts;
-
Farbe;
-
Breite;
-
Gewicht;
-
Länge;
-
Höhe;
-
von Türen;
-
Ob er ein Schiebedach hat;
-
Ob es eine Stereoanlage, einen CD-Spieler, einen MP3-Spieler und/oder ein Satellitennavigationssystem hat;
-
Größe des Benzintanks;
-
Anzahl der Zylinder;
-
von Turbolader und/oder Kraftstoffeinspritzung;
-
Maximales Drehmoment;
-
Maximale Bremsleistung;
-
und so weiter.
Wahrscheinlich interessiert Sie nur ein kleiner Teil davon: Wählen Sie das aus, was relevant ist. In einem Rennspiel könnte man mehr Details über die Räder erfahren, z.B. wie heiß sie sind, wie abgenutzt, die Breite und die Art des Profils und so weiter. In einem solchen Fall könnte man sagen, dass ein Rad-Objekt eine Sammlung all dieser Zustände ist (aber wenig Verhalten), weil ein Auto eine Reihe von Rädern hat und die Räder austauschbar sind.
Damit sind wir beim zweiten Punkt über Objekte: Ein Objekt kann aufgrund einer Beziehung existieren, so dass das Objekt einen vollständigen Datensatz darstellt. Ein Rad kann also ein Profil, eine Breite, eine Temperatur und so weiter haben. Man kann das nicht aufteilen und sagen, ein Auto hat ein Profil, aber keine Radbreite, also macht es Sinn, dass ein Rad ein Objekt ist, da ein Rad in seiner Gesamtheit austauschbar ist.
Aber noch einmal: Ist das für das, was wir tun, sinnvoll? Das ist die entscheidende Frage.