Wann immer ich ein Projekt erstellen musste, gelang es mir immer, es zu erstellen, nicht bevor ich einen Plan oder Entwurf entwarf, sondern nachdem ich zuerst eine Klasse geschrieben hatte, die benötigt wurde, das gesamte Projekt ausgearbeitet und von unten nach oben aufgebaut hatte. Jetzt weiß ich, dass dies nicht der richtige Weg ist, um Software zu erstellen, aber es fällt mir nicht leicht, mich mit dem zu befassen, was als objektorientierte Analyse und Design bezeichnet wird. Ich kann das prozedurale Design von oben nach unten leichter verstehen, da es darin besteht, Aufgaben lediglich in Unteraufgaben zu zerlegen, Dinge, die ihr Gegenstück im Code haben, Funktionen. Aber objektorientierte Analyse und Design kann ich nicht leicht verstehen, denn ich verstehe nicht, wie man wissen kann, welche Klassen sie benötigen und wie sie interagieren, es sei denn, sie wissen, wie sie sie codieren.
Wenn wir einmal das Konzept von Klassen und Objekten in den Entwurfsprozess einführen, können wir nicht mehr von oben nach unten entwerfen, da wir unsere Probleme nicht mehr in die Dinge aufteilen, die als Prozeduren implementiert werden können. Stattdessen müssen wir gemäß dem, was ich zu diesem Thema gelesen habe, bestimmen, welche Klassen benötigt werden, und verschiedene Artefakte in Unified Modeling Language erstellen, die wir dann bei der Implementierung der Software verwenden können. Aber diese Art von Designprozess verstehe ich nicht. Denn woher weiß man, welche Klassen sie brauchen und wie sie interagieren werden, es sei denn, sie haben bereits das gesamte System konzipiert?
Das ist dann mein Problem. Ich verstehe nicht, wie man ein objektorientiertes System entwirft, obwohl ich die Konzepte der objektorientierten Programmierung verstehe und diese Konzepte in jeder mir bekannten objektorientierten Programmiersprache verwenden kann. Daher muss mir jemand erklären, mit welchem einfachen Prozess ich objektorientierte Systeme so gestalten kann, dass sie für mich sinnvoll sind.