Unterteilen von Klassen

MiMa

Top Contributor
Hallo,
derzeit beschäftig mich die Frage in wie weit man Klassen unterteilen soll und ob es auch Sinn macht?
Ich schreibe ein Programm zum Verwalten von Bücher und da ist eine Klasse "Buch" sinnvoll, die alle Informationen zu einem Buch (Titel, Untertitel, Autor, Verlag, ISBN, Preis, ...) hat.
Wenn ich jetzt all die Informationen in einer Klasse "Buch" implementieren würde, dann wird es angefangen von den Instanzvariablen, den Get -und Set Methoden auch noch die Methoden zur Verarbeitung von deren Inhalten, riesen Gross. Die Frage die ich mich schon seit einiger Zeit stelle, ist es sinnvoll weitere Klassen zu erstellen um Informationen zu bearbeiten? Zum Beispiel habe ich einige Methoden zum Verarbeiten der ISBN Nummer, aus der ich weitere Informationen extrahiere und Verarbeite.
Allerdings habe ich gelesen, das man Klassen wie eine Blackbox mit Schnittstelle schreiben soll, so das man diese überall einsetzen kann. Würde ich die Klasse "Buch" aufteilen müsste ich ja viel mehr mitschleppen, damit die Klasse Buch wieder funktioniert.

Jetzt Frage ich mal wie man das am besten angeht.
Danke
Mi
 
Hallo,

die objektorientierte Entwicklung kann man etwas mit der realen Welt vergleichen. Der große Unterschied ist dabei nur, dass uns oft nur ein kleiner Ausschnitt interessiert.

Ich nehme einmal Dein Buch. Was interessiert Dich an dem Buch? Es kann eine einfache Applikation sein, mit der Du einfach nur Deine Bücher verwalten willst. Dann interessiert Dich relativ wenig. Dann hast Du evtl. einen Titel, Autoren und ISBN und das war es vielleicht schon. ISBN ist dann evtl. auch nur ein einfacher String, denn irgendwelche Prüfungen interessieren Dich nicht. Dann hast Du evtl. nur eine simple Klasse mit dem Titel als String, den Autoren als Collection von Strings und der ISBN wieder als String.

Das kann in der ersten Version Deine Anforderungen ja schon erfüllen.

Wenn aber nun weitere Anforderungen gibt, wie z.B. bei der ISBN eine Verifikation oder eine korrekte Formatierung, dann muss der Code natürlich genau dahin, wo er hin gehört. In diesem Fall wäre dies wohl eine Klasse ISBN, die bei setzen der Nummer diese verifizieren kann. Und bei toString() wird die Nummer auf eine bestimmte Art ausgegeben. Wichtig ist hier, dass dieser Code ja nicht zu einem Buch gehört sondern wirklich zur ISBN.

Ebenso liesse sich der Autor erweitern. Das ist nicht nur ein String, sondern Name, Vorname, Geburtsdatum, mehrere Adressen u.s.w. Das würde dann ggf. eine entsprechende Klasse. Wenn Du dann die Adresse verifizierst, dann hat das ja mit einem Autor nichts zu tun sondern würde wieder eine eigene Klasse ergeben.

Also aus meiner Sicht es ist es wichtig, immer zu überlegen, wo etwas wirklich hin gehört. So ergibt sich recht schnell ein gutes Objektmodell.

Konrad
 

Zurück
Oben