Software Design



  • Hallo,

    ich hab eine Klasse Signal. Dort kann ich auch setzen ob es ein Input oder ein Output Signal ist. Die Klasse hat noch viele andere Funktionen. Jetzt hab ich festgestellt dass ein InputSignal eine Methode braucht in der man die Input form festlegt. Output braucht das nicht da er von den Inputs abhängt. Output braucht dagegen eine Methode in der festgelegt wird auf welche Inputs er reagieren soll.

    Was denkt ihr soll ich es bei der einen Klasse Signal belassen und die tatsache das ein InputSignal eine Funktion nicht braucht genauso wie eine Output eine Funktion gar nicht bräuchte vernachlässligen . Oder den geschriebenen Code nochmal mühsam umbauen und 2 separate klassen InputSignal und OutputSignal machen???



  • kein Architekt hier 🙂



  • Hallo

    Und was wäre, wenn du di Klasse Signal als Basis Klasse nimmst und 2 Ableitungen davon erstellst. Einmal für Input und einmal für Output, somit Bird auch kein Code dupliziert. Sollten natürlich noch mehr fallunterscheidungen in der Basis-Klasse sein würde ich die entsprechend nach und nach in die Ableitungen schieben.

    Ach und als Tip ich würde Signal als "abstract" definieren damit davon keine Instanz mehr erzeugt werden kann.

    Gruß Marco



  • JapaneseIsland schrieb:

    Hallo,

    ich hab eine Klasse Signal. Dort kann ich auch setzen ob es ein Input oder ein Output Signal ist. Die Klasse hat noch viele andere Funktionen. Jetzt hab ich festgestellt dass ein InputSignal eine Methode braucht in der man die Input form festlegt. Output braucht das nicht da er von den Inputs abhängt. Output braucht dagegen eine Methode in der festgelegt wird auf welche Inputs er reagieren soll.

    Was denkt ihr soll ich es bei der einen Klasse Signal belassen und die tatsache das ein InputSignal eine Funktion nicht braucht genauso wie eine Output eine Funktion gar nicht bräuchte vernachlässligen . Oder den geschriebenen Code nochmal mühsam umbauen und 2 separate klassen InputSignal und OutputSignal machen???

    Problem: Keiner weiß was du wirklich machen willst.



  • genau, entweder wie von " Marc-O" beschrieben, also Basisklasse erstellen mit gemeinsamen Code. Dann davon ableiten, einmal für Eingabe, das andere mal für Ausgabe und dort den Rest ausprogrammieren.

    Alternativ nicht die ganze Logik in eine Klasse stecken, sondern nur eine Klasse für die Signalrepräsentation (z.B. Abtastwerte, Länge sowie Abtastfrequenz) erstellen und dann ganz normale "freie" C++ Funktionen basteln, die irgendwelche Algorithmen auf den Signalen anwenden, z.B. Faltung zweier Signale, Transformation in den Frequenzbereich o.ä.
    Ähnlich wie bei STL: du hast Container (z.B. vector, list) und du hast Algorithmen (z.B. sort).


Anmelden zum Antworten