Organisation von Klassen

MiMa

Top Contributor
Hallo,

seit einiger Zeit sitze ich da und überlege mir, wie man am besten Klassen im Projekt organisiert.
Man kann das ja machen, wie mal möchte, aber den Überblick nicht verlieren.

Einfach gesagt, ist aber nicht ganz einfach um zu setzen.

In meinem Beispiel möchte ich Dateien mit ISBN Nummern organisieren und habe es wie folgt aufgebaut.

Abstrakte Klasse für "Datei"
Instanzvariablen die nur auf Dateien zutreffen, wie Dateiname, Änderungsdatum usw.
Methoden wie, Dateinamen holen, Änderungsdatum holen, usw. (Get und Set Methoden)

Eine weitere Klasse habe ich erzeugt, die ich "Buch" genannt habe und dort sind alle
Instanzvariablen die auf Bücher zutreffen wie ISBN, Verlag, .... und erben von der klasse "Datei".
Methoden, getISBN, setISBN, .....

So jetzt kommt es.
Für die Variable ISBN habe ich mehrere Methoden für das manipulieren der ISBN Nummer geschrieben, wie ISBN Prüfen, Verlag finden, Sprache, .....

Ich habe dafür eine weitere Klasse gemacht, die ich "ISBNoperationen" genannt habe und die erbt von "Buch".

Die Frage ist nur, wären die Methoden besser in der Klasse "Buch aufgehoben" oder war es korrekt eine eigene Klasse dafür zu machen.

Wenn ich einerseits alles in die Buch Klasse schreibe, habe ich nachher eine Unmenge von Methoden drin, da ich ja auch nicht nur Manipulationen von ISBN vornehmen wollte.

Ich würde gerne wissen, wie man das richtig Organisiert, so das man nachher auch noch die Übersicht nicht verliert.

Danke

Mi
 
M

Marcinek

Gast
Die Methoden sind auf keinen Fall in einer Klasse "ISBNOperations" zu implementieren. Klassen beschreiben Dinge und tuen nix.

Ich würde die Methoden in einer klasse ISBN oder so implementieren.
 

MiMa

Top Contributor
Ich hatte die Klasse "ISBNoperationen" genannt, weil dort keine Instanzvariablen enthalten sind sondern nur Methoden zum manipulieren der Instanzvariable.

Aus der ISBN werden Informationen generiert, wie pruefeISBN13, getISBN10, getVerlag, getSprache, usw. die in der Klasse Buch gespeichert werden sollten.

Wenn ich jetzt eine Klasse mache die "ISBN" heisst, und neben den Methoden auch noch die Instanzvariablen da mit hineinpacke wie ISBN13 und ISBN10, dann würden die Instanzvariablen in der Klasse "Buch" ja nicht mehr benötigt!?!

Wenn jetzt ISBN von Klasse Buch erbt, würde beim erstellen eines Objektes ISBN mit samt den Variablen Buch Verwendung finden.

Was aber wenn ich dann für Verlag auch mehrere Dinge anstellen möchte und auch diese Variable dort entziehe und eine eigene Klasse mache und die ebenfalls von buch erbt, dann wird die Klasse Buch immer kleiner und der Sinn dieser Klasse scheint mir dann völlig unsinnig ???

Mi
 

turtle

Top Contributor
Instanzvariablen die auf Bücher zutreffen wie ISBN, Verlag, .... und erben von der klasse "Datei".

Klingt für mich schräg. Was hat ein Buch mit einer Datei zu tun? Wieso erbt Buch von Datei?

Überdenke dies noch einmal.

Eine Vererbung sagt aus das ein Buch eine Datei ist IS-A) und alle Operationen, die auf Datei zulässig sind auch auf einem Buch möglich sind. Dieses, ohne genauer hinzuschauen, bezweifle ich doch arg. Diese Art der Denkweise kenne ich aus meinen Anfängen in der OO ebenfalls, als ich dachte, man müsste grosse Codeteile weiterverwenden, indem man diese vererbt. Das ist aber ein grosser Denkfehler und wenn man sich seine Verwandten anschaut, sieht man, dass man nicht von Mensch erbt sondern von Vater/Mutter. Also sehe ich diese Vererberei eher kritisch. Stattdessen wird häufig Aggregation verwendet, also HAT (HAS-A ein Buch vielleicht eine Datei und benutzt diese.

Instanzvariablen schreibt man übrigens klein, Klassennamen beginnen mit einem Grossbuchstaben.
 

MiMa

Top Contributor
Ja danke, das was Du da schreibst erinnert mich stark daran, was ich derzeit durch mache.
Auch ich überlege wie man Klassen organisiert und die Schnittstellen erzeugt, damit diese weiterverwendet werden können.

Allerdings ist es wirklich so, das Buch von Datei erbt. Dabei bezieht es sich auf PDF und ePub Dateien, womit ich mit Hilfe von TIKA die ISBN Nummer heraus lese und diese dann mit einem eigenen Parser die ISBN mit einer Datenbank Online abgleiche und die zurückgegebenen Metadaten in die Klasse Buch schreibe.

Mittlerweile habe ich aber den Überblick verloren und überlege, ob die Klassen vielleicht anders Strukturiert werden sollten.

Vererbung setze ich auch nur gewzielt ein und zwar nur dort wo es auch nötig ist.

Mi
 

Timothy Truckle

Top Contributor
Ich hatte die Klasse "ISBNoperationen" genannt, weil dort keine Instanzvariablen enthalten sind sondern nur Methoden zum manipulieren der Instanzvariable.
Welche Instanzvariable? die ISBN in
Code:
Buch
?
Besser wäre die Variable aus
Code:
Buch
in die Klasse
Code:
Isbn
(Ja: nicht so viele Grosbuchstaben anhäufen) zu verschieben und Buch hält dann eine Instanz von
Code:
Isbn
.

bye
TT
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
slawaweis Artikel zu Projektumstrukturierung und -organisation Softwareentwicklung 7
J IntelliJ - Debugging funktioniert nur in manchen Klassen Softwareentwicklung 1
S Darstellung "globaler" Klassen/Libraries im Klassendiagramm Softwareentwicklung 3
T Wie die Multiplizität zweier bidirektionaler Klassen umsetzen? Softwareentwicklung 4
N UML Komponenten als Java-Klassen abbilden Softwareentwicklung 4
P [UML] Klassen als Attribute = Assoziationen? Softwareentwicklung 14
C innere klassen auslagern Softwareentwicklung 12
S Design Pattern für zwei abhängige Klassen Softwareentwicklung 8
E Von Use-Case nach Klassen Diagramm Softwareentwicklung 3
F Control und Interface Klassen Softwareentwicklung 7
D Java in KLassen, schon vorhanden? Softwareentwicklung 3
G Klassen trennen zur verbesserung der Übersicht? Softwareentwicklung 9
W Frage zu a)Innere Klassen und b)OO Design Softwareentwicklung 13
S Dynamisches Einbinden von Klassen Softwareentwicklung 3
W Statische Klassen oder neue Instanz einer Klasse nutzen? Softwareentwicklung 11
A Iterato-Pattern und Innere Klassen Softwareentwicklung 9
V 2 Klassen arbeiten am selben Objekt? Softwareentwicklung 2
V alle abgeleiten Klassen eines Interfaces finden? Softwareentwicklung 2
H aus allgemeinem array auf methoden abgeleiteter klassen zugr Softwareentwicklung 5
S Wieviele Klassen sind sinnvoll? Softwareentwicklung 3
K auf Attribute aus anderen Klassen zugreifen*help* Softwareentwicklung 3
P Projekt und Klassen Verwaltung (Wiederverwendung) Softwareentwicklung 4
L Aufgabenverteilung in zwei Klassen? Softwareentwicklung 6
L Frage zu Beziehungen zwischen Klassen und UML Softwareentwicklung 10
R klassen vererbung Softwareentwicklung 3

Ähnliche Java Themen


Oben