Best Practice Unschlüssig ob Vererbung oder Interface

Bela B.

Aktives Mitglied
Nabend zusammen,

ich bin schon seit einer Weile daran, ein von mir geschriebenes Programm noch einmal neu aufzurollen.
Mein bisheriger Ansatz funktioniert und macht genau das, was im Lastenheft gefordert ist, allerdings bin ich mit der Wartbarkeit des Codes nicht wirklich zufrieden. Die Aufteilung der Zuständigkeiten zwischen GUI und Logik ist noch nicht so ganz da, wo ich sie gerne hätte. Auch die einzelnen Komponenten heißen teilweise zu Ähnlich und sind nicht ganz voneinander Abgegrenzt.

Daher mache ich mir jetzt vorab mehr Gedanken, wie ich das Aufziehen kann.
Für die Trennung von GUI und Rest verwende ich dieses mal mvvmFX, damit habe ich jetzt schon einige kleine Beispielprojekte umgesetzt, damit so eine grobe Ahnung davon habe, wie ich damit arbeite.

Doch vorab macht mir die Aufteilung der eigentlichen Logik probleme.
Hoffe ihr könnt mir hier etwas helfen.
Zweck des Programms: Temperaturprofile auswerten

Die Profile bestehen aus einer Excel-Datei, die Maschinell vom Temperaturlogger erstellt wird. Es gibt eine Datumsspalte, die auf die Sekunde genau den Aufzeichnungszeitpunkt beinhaltet, also z.B. alle 10 Sekunden werden neue Werte aus den Temperaturfühlern ausgelesen.

Die Anzahl der Fühler ist variabel, also 1 bis x. Das sind die Spalten danach.

Diese Daten sollen dann je nach Ofen bestimmte Checks durchlaufen. Vorab bestimmt der Prozessverantwortliche die Checks, die gemacht werden sollen.
Es gibt folgende Checks:
  • Temperatur für Zeitraum x im Bereich von y und z
  • Temperaturüberschwinger nicht höher als Temperatur x für Zeitspanne y
  • Steigung des Temperaturanstiegs nicht größer als x im Zeitraum y
  • Abstand zwischen den Temperaturfühlern nicht größer als x Grad
Das Checks können mehrfach definiert sein, so kann z.B. ein Ofen ein Profil fahren, das zwei mal den Plateau erreicht.

Meine Überlegung:
  1. Ein Interface, das die eigentlichen Checks beschreibt. Darin dann eine Methode execute, die den eigentlichen Check ausführt und True/False zurückgibt.
  2. Abstrakte Klasse, von der die konkreten Checks erben.
Die Checks haben gewisse Dinge gemeinsam, so besitzen sie alle einen Namen, haben je Temperaturfühler einen Merker, wann bei dem jeweiligen Temperaturfühler der Check gegriffen hat (also im Falle von Temperatur für Zeitraum x im Bereich von y und z der erste Messpunkt, der die Temperatur y erreicht hat und ggfs. z überschritten hat).

Was spricht eurer Meinung nach für welche Vorgehensweise? Oder würdet ihr ganz was anderes machen?
Und sorry für den längeren Text, aber ich denke da kommen vllt. noch mehr Fragen von mir, dann ist das ganze schon einmal ganz gut überrissen.
 

LimDul

Top Contributor
So aus dem Bauch heraus - beides :)

Grundsätzlich ist ein Interface eine gute Idee. Das mit den entsprechenden Schnittstellen versehen, die es braucht. Die execute Methode z.B. , eine Methode die einen Namen zurückgibt etc.

Davon dann die konkreten Check-Klassen erzeugen. Wenn du dann z.B. bei der 3ten Klasse feststellt, du hast da den gleichen Code wie in den ersten beiden Check-Klassen => Abstrakte Oberklasse draus extrahieren und Logik in die Oberklasse verschieben. So gewinnst du meines Erachtens das beste aus beiden Welten:

- Mit dem Interface (was du überall da verwenden solltest, wo die Checks verwendet werden) stellst du sicher, dass du eine klar definierte API hast und flexibel für Erweiterungen bist. Alles, was du im Interface definierst hast, sind ja Methoden die an anderer Stelle im Programm benötigt werden (Was nicht benötigt wird, wird nicht definiert). Das hält dir z.B. die Flexiblität offen einen "CompositeCheck" zu definieren, der mehrere Checks bündelt. Der hat vielleicht keinen eigenen, gespeicherten Namen sondern einen Namen der sich aus den gebündelten Checks zusammensetzt. Diese Flexibilität hast du nicht bzw. nur eingeschränkt, wenn du nur eine Abstrakte Basisklasse hast. Denn in der abstrakten Klasse hast du Felder und Zustände drin - du machst damit Vorgaben über den internen Zustand, den jeder Check erfüllen müsste. Das schränkt unter Umständen ein.
- Mit der abstrakten Klasse, die zwischen dem Interface und den (meisten/allen) Checks liegt verhinderst du aber dass du Dinge doppelt implementieren musst. Du nutzt diese Klasse aber eben nicht als Vorgabe "Alle Checks müssen diese interne Implementierung und Zustand haben" sondern als "Checks, bei denen diese interne Implementierung und Zustand identisch sind, können diese nutzen." Aus dem Muss wird so ein Soll und lässt dir Raum für Erweiterungen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
imocode Vererbung Problem mit Vererbung Java Basics - Anfänger-Themen 2
M Vererbung - Polymorphie Java Basics - Anfänger-Themen 37
L Java- Vererbung Java Basics - Anfänger-Themen 4
ineedhelpinjava Vererbung Java Basics - Anfänger-Themen 12
ineedhelpinjava Vererbung Java Basics - Anfänger-Themen 1
I JSON / XML Struktur mit Vererbung / Interfaces Java Basics - Anfänger-Themen 0
M Interface oder Vererbung? Java Basics - Anfänger-Themen 12
M Vererbung Java Basics - Anfänger-Themen 6
M Designentscheidung von Attributen/Methoden im Falle von Vererbung Java Basics - Anfänger-Themen 8
M Generics Vererbung Listen Java Basics - Anfänger-Themen 2
A Methoden Vererbung und Interface Java Basics - Anfänger-Themen 14
D Klassen und Vererbung Java Basics - Anfänger-Themen 2
U Vererbung Java Basics - Anfänger-Themen 7
D Vererbung Java Basics - Anfänger-Themen 3
K Schleife berechnet kein Ergebnis (Vererbung) Java Basics - Anfänger-Themen 6
00111010101 Objektorientiertes Programmieren mit Vererbung (Zahlen in Array verschwinden) Java Basics - Anfänger-Themen 3
W Zur Vererbung: Wann und wie? Java Basics - Anfänger-Themen 35
H Datenkapselung, Vererbung und UML Java Basics - Anfänger-Themen 16
districon Super-Stichwort/ Vererbung Java Basics - Anfänger-Themen 3
YaU Vererbung erstellt NullPointerException? Java Basics - Anfänger-Themen 4
1 Vererbung Klassenattribute Java Basics - Anfänger-Themen 9
TimoN11 Frage zu Java-Vererbung (Cast) Java Basics - Anfänger-Themen 5
N Thema Vererbung Java Basics - Anfänger-Themen 31
A Vererbung Vererbung Übung Java Basics - Anfänger-Themen 5
B Vererbung - Sichtbarkeitsmodifikation - protected Java Basics - Anfänger-Themen 10
G Java Vererbung Java Basics - Anfänger-Themen 8
Y Vererbung Konto - Anfangsprobleme Java Basics - Anfänger-Themen 7
A Vererbung Klassen im Bezug auf Auto´s Java Basics - Anfänger-Themen 18
A Klassen Vererbung und zusätzliche Unterklassen Java Basics - Anfänger-Themen 23
M Vererbung mit Enums Java Basics - Anfänger-Themen 8
Kirby.exe Vererbung im Detail erklärt? Java Basics - Anfänger-Themen 9
N Modellierung, vererbung, Java Basics - Anfänger-Themen 163
M Fehlendes Verständnis für dynamische Bindung und Vererbung Java Basics - Anfänger-Themen 13
W OOP Vererbung im Computerspiel Java Basics - Anfänger-Themen 7
J Probleme mit Vererbung Java Basics - Anfänger-Themen 4
I Vererbung Java Basics - Anfänger-Themen 13
W OOP Vererbung und Problem bei Zählschleife in einer Methode Java Basics - Anfänger-Themen 10
W Methoden Verständnisfrage Vererbung von Methoden Java Basics - Anfänger-Themen 14
V Vererbung Java Basics - Anfänger-Themen 2
J Frage zur Vererbung Java Basics - Anfänger-Themen 1
J Vererbung Java Basics - Anfänger-Themen 3
U Was löst meine NullPointerException aus? (Vererbung) Java Basics - Anfänger-Themen 12
O Vererbung Ueben mit kleiner Datenstruktur von Räumen Java Basics - Anfänger-Themen 10
O Umgang mit Vererbung verstehen Java Basics - Anfänger-Themen 4
A Vererbung/Interfaces/Generics Java Basics - Anfänger-Themen 12
O Vererbung änderung des Konstruktors Java Basics - Anfänger-Themen 8
L Vererbung Java Basics - Anfänger-Themen 5
E HashMap+Vererbung Java Basics - Anfänger-Themen 11
E Vererbung super-Methoden Aufruf Java Basics - Anfänger-Themen 3
B Java Vererbung Fragen (zu Code Beispiel) Java Basics - Anfänger-Themen 3
A Objekterstellung bei der Vererbung Java Basics - Anfänger-Themen 7
P Vererbung Warum funktioniert die Vererbung hier nicht Java Basics - Anfänger-Themen 14
S Vererbung Java mehrfach Java Basics - Anfänger-Themen 10
B Objekte zählen/ Vererbung/ Kopplung/ Interface/ Abstract Class Java Basics - Anfänger-Themen 5
A Klassen Vererbung privater Methoden und Member Java Basics - Anfänger-Themen 12
A Konstruktoren Vererbung Java Basics - Anfänger-Themen 3
ReinerCoder Vererbung von JFrame in einer Klasse entfernen Java Basics - Anfänger-Themen 5
W Vererbung, abstract und Konstruktoren Java Basics - Anfänger-Themen 30
J Vererbung und Methodenaufruf Java Basics - Anfänger-Themen 11
G Polymorphie, Vererbung, statischer Typ, Laufzeittyp Java Basics - Anfänger-Themen 2
H Vererbung mit private instanzvariablen Java Basics - Anfänger-Themen 9
S Vererbung Funktionsweise Code zur Vererbung Java Basics - Anfänger-Themen 1
C Methoden Vererbung private Attribute/public Methoden Java Basics - Anfänger-Themen 4
S Verständnis Vererbung Java Basics - Anfänger-Themen 3
D JavaFX Vererbung Java Basics - Anfänger-Themen 2
U Vererbung Generizität und Vererbung Java Basics - Anfänger-Themen 4
A Vererbung bei Klassen mit Objekt der Klasse im Konstruktor Java Basics - Anfänger-Themen 4
K Vererbung Octagon von Circle Java Basics - Anfänger-Themen 0
B Hilfe bei Vererbung Java Basics - Anfänger-Themen 2
D Vererbung Frage zum Klassenaufbau mit Vererbung Java Basics - Anfänger-Themen 1
T Vererbung und interface. Java Basics - Anfänger-Themen 1
S Gehaltsberechnung (Vererbung, abstrakte Methoden) Java Basics - Anfänger-Themen 6
S Vererbung Java Basics - Anfänger-Themen 1
F Vererbung in zwei Richtungen? Java Basics - Anfänger-Themen 14
D Vererbung / Polymorphie Java Basics - Anfänger-Themen 5
O Vererbung Java Basics - Anfänger-Themen 5
MiMa Vererbung Theorie OK, Praxis ?? Java Basics - Anfänger-Themen 4
Arif Vererbung Vererbung Variablen überschreiben Java Basics - Anfänger-Themen 1
C Vererbung - Ausgaben bestimmen Java Basics - Anfänger-Themen 6
S Vererbung Java Basics - Anfänger-Themen 10
L Setter und Getter/Vererbung Java Basics - Anfänger-Themen 6
C Konstruktoren und Vererbung Java Basics - Anfänger-Themen 2
J Kleinere Frage zur Vererbung/Objekterzeugung Java Basics - Anfänger-Themen 2
G Vererbung Java Basics - Anfänger-Themen 12
J Vererbung privater Variablen Java Basics - Anfänger-Themen 7
J Vererbung Vererbung von Methoden Java Basics - Anfänger-Themen 6
B Vererbung Java Basics - Anfänger-Themen 12
K Vererbung (super) Java Basics - Anfänger-Themen 2
A ArrayQueue mit Exceptions und Vererbung Java Basics - Anfänger-Themen 3
J Java: static bei Vererbung Java Basics - Anfänger-Themen 5
C Vererbung Java Basics - Anfänger-Themen 4
L Vererbung Java Basics - Anfänger-Themen 3
J Klassenorganisation | Vererbung Java Basics - Anfänger-Themen 1
B Vererbung Vererbung Java Basics - Anfänger-Themen 2
N Generics Vererbung Wildcard Interface Java Basics - Anfänger-Themen 8
A Benötige Hilfe bei Vererbung Java Basics - Anfänger-Themen 1
M Anfängerprobleme mit Vererbung Java Basics - Anfänger-Themen 27
J Vererbung Java Basics - Anfänger-Themen 9
F Vererbung von Attributen zwischen zwei Klassen Java Basics - Anfänger-Themen 6
J Konstruktor Problem bei Vererbung Java Basics - Anfänger-Themen 1

Ähnliche Java Themen

Neue Themen


Oben