Fragen zur richtigen Objektorientierten-Modellierung
-
Hallo!
Ich habe einige fragen zur richtigen Objektorientierten-Modellierung und hoffe hier einige antworten zu bekommen.
Ich versuche meine Probleme an einem Beispiel klar zu machen.
Es soll zum Beispiel ein Programm erstellt werden, welches Audiodateien einliest und aus den eingelesenen Abtastwerten die FFT berechnet. Dazu werden die Abtastwerte in Segmente aufgeteilt, diese mit einer Fensterfunktion multipliziert und diese dann Transformiert. Zusätzlich sollen die Ergebnisse auch gespeichert werden. Und zwar so, dass der Benutzer sich aussuchen kann ob er es als XML oder TXT (vielleicht auch in einer Datenbank) speichern kann. Ich habe versucht das ganz mal in einem Klassendiagramm unterzubringen.
http://www.gmx.de/mc/qA1J9uZdasqQTcYfVtVCIx1hIPNFBM
Ich finde das ganze Gebilde nicht wirklich gelungen, weiß aber auch nicht wie ich es besser machen soll.
Was ich auch nicht verstehe sind folgende Aussagen bzw. ihre Widersprüchlichkeit:
„Entity-Klassen haben nur eine Aufgabe: Sie speichern eine ganz bestimmte Information.“
„Nach dem objektorientierten Programmierparadigma werden Objekte mit Daten und den darauf arbeitenden Routinen zu Einheiten zusammengefasst.“
Sollte nun eine Funktion die Daten eines Objektes füllen oder gibt eine Funktion ein neues Objekt mit Daten als Rückgabewert zurück???
Es wäre schön wenn mir jemand den einen oder anderen Zusammenhang erklären könnte.
Leider basiert die Literatur die ich bis jetzt gefunden habe nur auf Geschäftsprozessen wie Banken, Restaurants oder ähnlichem.
Mit freundlichen Grüßen
Oliver
[html]
-
Wieso nicht einfach einen Stream implementieren?
class FFTStream extends Stream { // liest die Daten aus dem inputStream ein // inputStream kann dann z.B. ein FileInputStream sein. FFTStream(Stream inputStream); // liest length bytes ab offset Position aus dem unterliegenden Stream // transformiert ihn nach FFT und schreibt die Daten in buffer. int read(byte[] buffer, int offset, int length); }
Das waehre der IMHO richtigere und generischerer Ansatz. Der unterliegende Stream kann dann ein BufferStream, ein FileStream, ein XXStream sein. Die Daten aus dem FFTStream kann man dann in einen beliebigen anderen Stream speichern.