AudioPlayer modeln
-
Hallo, ich möchte einen Audioplayer schreiben,
dieser soll:
CDs abspielen
Eine Musikbibliothek verwalten
CDDB Anfrgaen stellen und CDs rippen
Kontext-Anfragen (Cover/liedtext) zu verschiedenen Titeln abfragen
Tags editieren können
...Ich möchte einzelne Teile leicht austauschen können, falls ich zB mal eine andere Lib zum Abspielen nehmen möcht oder so, leider weiß ich nicht wie ich das am geschicktesten aufbaue.
Vielleicht die einzelnen Funktionalitäten als Interface und dann eine große Klasse, die alle Interfaces erfüllt?
Oder eher mehrere kleine Klassen zB CDPlayer die dann in einer anderen zusammengefasst werden?Also
Interface CDPlayer { playCD(); } Interface TagEditor { editTag(); } class AudioSystem implements CDPlayer, TagEditor { } or class AudioSystem { CDPlayer* player; TagEditor* editor; }
Oder ganz anders? Bin noch nicht so erfahren im Modellieren
-
Hab ich etwas falsch formuliert oder so weinig Ahnung vond er Materie, dass ihr gar nicht antworten wollt? ^^
-
Vielleicht die einzelnen Funktionalitäten als Interface und dann eine große Klasse, die alle Interfaces erfüllt?
Oder eher mehrere kleine Klassen zB CDPlayer die dann in einer anderen zusammengefasst werden?Die zweite Möglichkeit ist vorzuziehen, google mal nach "Composition vs Inheritance".
-
fragesteller24 schrieb:
Ich möchte einzelne Teile leicht austauschen können, falls ich zB mal eine andere Lib zum Abspielen nehmen möcht oder so, leider weiß ich nicht wie ich das am geschicktesten aufbaue.
Dann mach dir viele kleine Klassen mit kleiner Schnittstelle. z.B. solltest du einen kompletten Wrapper für alle Funktionen der .lib erstellen. Dann weist du genau, wo du was ändern musst falls du die lib wechseln möchtest.
Und dann: Auf geht's! Man kann auch zu viel planen.
(Du kannst nachher natürlich eine Interface Klasse basteln.)