Umsetzung von verschiedenen Anweisungen

Status
Nicht offen für weitere Antworten.

Skull

Aktives Mitglied
Ich habe mal ne Frage wie ich eurer Meinung nach das folgende Problem umsetzen sollte:
Angenommen es gibt drei verschiedene Anweisungen für Teilnehmer.

Einmal eine Abbruch-Anweisung eine Auftrags-Anweisung und eine Statusanweisung.

Die Abbruchanweisung enthält nur eine laufende Nummer und den Identifikator der Person die die Anweisung ausgestellt hat. Auftragsanweisungen haben zusätzlich zu den beiden genannten Feldern einen String der den Auftrag beschreibt und Statusanweisungen haben ebenfalls zusätzlich einen String Auftragsanweisung + ein weiteren beliebigen String.

Meine Frage ist, wie ich das hierarchisch am besten implementiere (Über-Interface Anweisung und dann jeweils Sub-Interfaces?!), so dass auch später möglichst weitere Anweisungen hinzugefügt werden können, ohne dass viel geändert werden muss und Gemeinsamkeiten sinnvoll ausgelagert werden.
 

mr-gurke

Mitglied
Definiere dir drei verschiedene Interfaces, die jeweils die Funktionalität, enthalten, die die einzelnen Tickets brauchen. Dann kannst du eine Klasse schreiben, die alle drei Interfaces implementiert und hast keinen doppelten Code. Bei der Verwendung musst du dann ein Objekt der Klasse anlegen und es gleich auf das entsprechende Interface casten.
 

Skull

Aktives Mitglied
Ich hatte vor ein Interface Anweisung zu machen (hier lagere ich dann Gemeinsamkeiten aus), und für jede Unter-Art per extends ein Sub-Interface. Für jedes Sub-Interface hätte ich dann eine eigene Klasse geschrieben. Deine Variante klingt aber auch gut, verstehe das aber leider nicht ganz, fürchte ich. Kannst du mir ein Minimal-Beispiel zeigen wie ich das ganze in der Praxis verwende?

Jeder Unter-Art hat ja unterschiedliche Parameter, d.h. ich mache dann für jede Unter-Art einen eigenen Konstruktor, ja? Aber woher weiss derjenige der die klasse verwendet denn welchen Konstruktor er für welche Anweisung nehmen soll in deinem Beispiel?
 
Zuletzt bearbeitet:

mr-gurke

Mitglied
Die Interfaces:
[highlight=Java]
public interface IAbbruchAnweisung {
public int getNummer();
public String getPerson();
}

public interface IAuftragsAnweisung extends IAbbruchAnweisung{
public String getAuftrag();
}

public interface IStatusAnweisung extends IAuftragsAnweisung {
public String getStatus();
}
[/highlight]

Die Klasse:
[highlight=Java]
public class Anweisung implements IAbbruchAnweisung, IAuftragsAnweisung, IStatusAnweisung {
// Klassenattribute

// jetzt alle Methoden implementieren, die in den Interfaces stehen
}
[/highlight]
Verwendung der Klasse:
[highlight=Java]
...
Anweisung anweisung1 = new Anweisung();
IAbbruchAnweisung abbrAnweisung1 = (IAbbruchAnweisung) anweisung1;
// jetzt kann abbrAnweisung1 nur noch getNummer und Person. anweisung1 kann aber immer noch alle Methoden ausführen
[/highlight]


Edit: Wichtig ist bei der Sache, dass du nicht folgendest tust:
[highlight=Java]
...
IAbbruchAnweisung abbrAnweisung = (IAbbruchAnweisung) new Anweisung();
IAuftragsAnweisung auftrAnweisung = (IAuftragsAnweisung) new Anweisung();...
[/highlight]
Dann hast du nämlich zwei verschiedene Objekte und kannst die AbbrAnweisung sooft "abbrechen" wie du willst, der Auftrag würde immer noch bestehen.
 
Zuletzt bearbeitet:

Skull

Aktives Mitglied
Habe es wie oben von dir beschrieben umgesetzt. Ich habe jetzt jeweils einen Konstruktor für jede Anweisungsart. Das Problem ist, dass der Test mit instanceof jetzt immer (also für jede implements Art) true ergibt....lässt sich das irgendwie ändern? Ich würde instanceof ggf. später gerne noch verwenden um rauszubekommen welches Object hier tatsächlich vorliegt.
 
Zuletzt bearbeitet:

mr-gurke

Mitglied
Ich denke du willst die selbe Anweisung von verschiedenen Rollen aus sehen und steuern?
Dann darfst du sie nur einmal anlegen, sonst arbeitet jeder mit einem anderen Objekt.
Code:
this instanceof IAbbruchAnweisung
sollte aber gehen.
 

Skull

Aktives Mitglied
Es kann beliebig viele Anweisungen geben. Ich habe ein Interface IAnweiszung gemacht in dem alle Gemeinsamkeiten sind und jedes Sub-Interface erweitert IAnweisung um die zugehörigen Parameter. Jetzt möchte ich einer Methode nach Möglichkeit einfach ein IAnweisung Object übergeben und es soll selbst gucken, welche Art Anweisung es jetzt genau ist. Da ich aber alles in einer Klasse habe (wie von dir beschrieben), die alle Interfaces implementiert kriege ich jetzt logischerweise für jeden instanceof-Test auf eines der Sub-Interfaces true....das lässt sich wohl nur lösen indem ich für jedes Sub-Interface ne eigene Implementierung mache oder?
 

Skull

Aktives Mitglied
Ich habs jetzt so gelöst, dass das Interface Anweisung von einer abstrakten Klasse implementiert wird. Alle anderen Sub-Interfaces haben jetzt wiederum eine eigene Klasse ,wobei jeder der Klassen zusätzlich von der abstrakten Klasse erbt...auf diese Art habe ich etwas mehr Klassen, aber wenigstens auch keine Code-Duplikation + instanceof funktioniert (hoffe ich jedenfalls).
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
R Umsetzung von Formel Java Basics - Anfänger-Themen 2
D Budget Manager fragen zur Umsetzung Java Basics - Anfänger-Themen 9
E Umsetzung von Mehrfachvererbung in Java Java Basics - Anfänger-Themen 8
D [Concurrency/Threads] Code Umsetzung Schriftlich Java Basics - Anfänger-Themen 2
C Hilfe bei der Umsetzung Java Basics - Anfänger-Themen 1
R Tipps zur umsetzung eines Musters mit for-schleife Java Basics - Anfänger-Themen 1
kaoZ Input/Output Umsetzung einer Klasse Java Basics - Anfänger-Themen 8
U Serialisierung Probleme bei Umsetzung Java Basics - Anfänger-Themen 26
Z Switch umsetzung Java Basics - Anfänger-Themen 6
C OOP Umsetzung des MVC Java Basics - Anfänger-Themen 3
A Grafische Umsetzung von Aktienkursen Java Basics - Anfänger-Themen 2
eXistenZ Java-Boon kommt nicht zurrecht mit der Umsetzung einer Aufgabe... Java Basics - Anfänger-Themen 7
M JavaSpiel ohne grafische Umsetzung Java Basics - Anfänger-Themen 3
sliwalker Ratschläge zur Umsetzung einer Lizenzsierung Java Basics - Anfänger-Themen 10
A Grafik2d Objekte drehen, Idee da, Problem in Umsetzung Java Basics - Anfänger-Themen 3
P Lagerverwaltung umsetzung Java Basics - Anfänger-Themen 10
L Falsche Umsetzung von MVC, brauche Hilfe Java Basics - Anfänger-Themen 6
MoxMorris Einige Methoden aus verschiedenen Klassen nacheinander auszuführen läuft seltsam Java Basics - Anfänger-Themen 2
C Parameter in verschiedenen Anzahl und Typen Java Basics - Anfänger-Themen 6
I Verschiedenen WebApp kommunizieren lassen Java Basics - Anfänger-Themen 1
Bademeister007 Elemente aus zwei verschiedenen Arrays miteinander vergleichen und gegeben falls entfernen Java Basics - Anfänger-Themen 14
S Arraylist<Object> mit verschiedenen Objects ausgeben Java Basics - Anfänger-Themen 3
P Arrays mit verschiedenen Längen miteinander dividieren. Java Basics - Anfänger-Themen 1
W Mehrfach das gleiche Attribut für ein Objekt erzeugen (mit verschiedenen Werten) Java Basics - Anfänger-Themen 2
T Java Swing - Dreieck zeichnen mit verschiedenen Variablen Java Basics - Anfänger-Themen 8
A Methoden Array aus verschiedenen Methoden bearbeiten bzw. öffnen Java Basics - Anfänger-Themen 18
B Automatisch Objekte erzeugen mit verschiedenen Namen Java Basics - Anfänger-Themen 4
L Dynamische Anzahl an Arrays mit verschiedenen Namen erzeugen Java Basics - Anfänger-Themen 6
J Gleiche Methode in 2 verschiedenen Klassen - Lösung ? Java Basics - Anfänger-Themen 8
scratchy1 Argumente mit verschiedenen Schleifen ausgeben Java Basics - Anfänger-Themen 3
R OOP Instanzierung in verschiedenen Klassen Java Basics - Anfänger-Themen 8
S Daten aus zwei Verschiedenen Tabellen in eine ArrayListe Java Basics - Anfänger-Themen 4
K die Source eines Events bei verschiedenen Quellen herausfinden Java Basics - Anfänger-Themen 1
T Classpath Zwei gleiche Dateinamen in verschiedenen Projekten möglich? Java Basics - Anfänger-Themen 13
S generische methode mit verschiedenen datentypen Java Basics - Anfänger-Themen 3
I Brauche Denkanstoß: Weitergabe von Kontaktinfos aus verschiedenen Kontaktformularen von Webseiten Java Basics - Anfänger-Themen 2
D Objekte mit verschiedenen Attributen erstellen Java Basics - Anfänger-Themen 3
B OOP Summe aus verschiedenen Instanzen einer Klasse berechnen Java Basics - Anfänger-Themen 2
A Eine Variable in verschiedenen Ereignisprozeduren benutzen Java Basics - Anfänger-Themen 7
N Verweise auf Variablen in verschiedenen Threads Java Basics - Anfänger-Themen 4
J JLabels in schleife erzeugen mit verschiedenen namen? Java Basics - Anfänger-Themen 5
H Java auf verschiedenen Plattformen Java Basics - Anfänger-Themen 3
I Ausgabe in verschiedenen Entwicklungsumgebungen anders Java Basics - Anfänger-Themen 6
L Threads Thread aus verschiedenen Klassen ansprechen Java Basics - Anfänger-Themen 11
J Probleme mit verschiedenen Private Klassen Java Basics - Anfänger-Themen 3
A Methode aus verschiedenen Klassen aufrufen Java Basics - Anfänger-Themen 8
T Dynamisches abarbeiten von statischen Methode aus verschiedenen Klassen. Java Basics - Anfänger-Themen 5
B Threads Geschwindigkeit der Befehle auf verschiedenen PCs gleich machen Java Basics - Anfänger-Themen 3
U Objekte in Array erstellen und Methode in verschiedenen klassen aufrufen Java Basics - Anfänger-Themen 5
M Anwendung in verschiedenen JREs Java Basics - Anfänger-Themen 42
C jar Datei auf verschiedenen Systemen ausführen Java Basics - Anfänger-Themen 7
SheldoN Töne abspielen auf verschiedenen Buttons Java Basics - Anfänger-Themen 17
J verschiedene Anweisungen bei verschiedenen Zuständen Java Basics - Anfänger-Themen 9
G String mit verschiedenen Zeichen analysieren Java Basics - Anfänger-Themen 5
K Datentypen Gleiche Zufallszahlen in verschiedenen Datenstrukturen Java Basics - Anfänger-Themen 6
T ArrayList mit verschiedenen Datentypen verhindern Java Basics - Anfänger-Themen 8
R Array aus verschiedenen Datentypen Java Basics - Anfänger-Themen 29
A JButtons dynamisch generieren mit verschiedenen actionhandlern Java Basics - Anfänger-Themen 6
K Collections Wie kann Ich eine Hashmap mit verschiedenen Hashsets füllen. Java Basics - Anfänger-Themen 4
K OOP Variablen aus verschiedenen Klassen Java Basics - Anfänger-Themen 4
E Auf Variablen in verschiedenen Klassen zugreifen? Java Basics - Anfänger-Themen 4
J OOP Ausgabe verschiedener Variabeln aus verschiedenen Subclasses Java Basics - Anfänger-Themen 2
Z Geschwindigkeitsunterschied bei verschiedenen Schreibweisen Java Basics - Anfänger-Themen 4
F Gleiche JUnit-Tests automatisert mit verschiedenen Methoden ausführen Java Basics - Anfänger-Themen 6
4 OOP Problem beim Speichern verschiedener Klassen in verschiedenen Dateien Java Basics - Anfänger-Themen 25
Hamstinator Design und Listener in verschiedenen Klassen Java Basics - Anfänger-Themen 6
B Teil eines Bild kopieren bei verschiedenen Zoomstufen Java Basics - Anfänger-Themen 3
M Sets:Ein Set aus zwei verschiedenen bilden Java Basics - Anfänger-Themen 13
babel ein Vector mit verschiedenen Werten auslesen und berechnen Java Basics - Anfänger-Themen 34
braindump Packages in verschiedenen Unterverzeichnissen Java Basics - Anfänger-Themen 3
A Frage zu verschiedenen Klassen Java Basics - Anfänger-Themen 11
C Auf ProgressBar von zwei verschiedenen .class Dateien zugrei Java Basics - Anfänger-Themen 2
A MainClass not Found auf verschiedenen Rechnern Java Basics - Anfänger-Themen 2
JohnMurdoch Methoden von verschiedenen Objekten in Liste aufrufen Java Basics - Anfänger-Themen 3
R Dateizugriff auf verschiedenen OS Java Basics - Anfänger-Themen 3
B LayoutManager Anorden von verschiedenen JPanels Java Basics - Anfänger-Themen 5
Q Labels auf verschiedenen Ebenen? Java Basics - Anfänger-Themen 5
G Jar-File erzuegen, das Code a verschiedenen Java Versionen? Java Basics - Anfänger-Themen 4
B JTextArea mit verschiedenen Fonts Java Basics - Anfänger-Themen 4
Bierhumpen Array gefüllt mit verschiedenen Werten Java Basics - Anfänger-Themen 7
C Programm mit verschiedenen wechselbaren Sprachen Java Basics - Anfänger-Themen 6
T arrays: Anzahl der verschiedenen Werte bestimmen Java Basics - Anfänger-Themen 7
C Globale Variablen und Array mit verschiedenen Typen Java Basics - Anfänger-Themen 3
G Aus verschiedenen Formaten ein Date-Objekt machen Java Basics - Anfänger-Themen 3
G Text aus verschiedenen Dateien in JTextArea laden Java Basics - Anfänger-Themen 3
S Sind unten stehende Anweisungen kompilierbar? Java Basics - Anfänger-Themen 7
M Java Anweisungen Java Basics - Anfänger-Themen 4
S Anweisungen verstehen System.out.print/println Java Basics - Anfänger-Themen 2
D Können if Anweisungen aufeinander aufbauen? Java Basics - Anfänger-Themen 1
H ERGÄNZUNGSFRAGE: Klammersetzung bei if-else Anweisungen und Schleifen Java Basics - Anfänger-Themen 2
P Java Verketten von Stream - Bedeutung der Anweisungen? Java Basics - Anfänger-Themen 3
J 2 "while"-Anweisungen in einer do-Schleife? Java Basics - Anfänger-Themen 4
V Einem JButton anweisungen geben Java Basics - Anfänger-Themen 4
S Erste Schritte Verkettung von Anweisungen Java Basics - Anfänger-Themen 4
T Java verschiedene Anweisungen Java Basics - Anfänger-Themen 23
R else if anweisungen Java Basics - Anfänger-Themen 2
O Erste Schritte Eingabe anweisungen eliminieren Java Basics - Anfänger-Themen 3
J Mehrere IF Anweisungen und dazugehörige ELSE Java Basics - Anfänger-Themen 6
J BlueJ und import-Anweisungen, wie geht das? Java Basics - Anfänger-Themen 4
A instanceof-if-else-Anweisungen eleganter lösen Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben