Klassen Wie mache ich das "the java way"?

br0nko

Mitglied
Wertes Forum,

nachdem ich nun einige Zeit mit der Einarbeitung verbracht habe und glaube die Grundlagen von Java soweit erstmal halbwegs begriffen zu haben, hab ich eine konzeptionelle Frage. Dazu kurz ein Umriss von dem was ich bisher geschafft habe: Ich programmiere gerade ein kleines tool, welches Midi Daten von einem externen Midi controller abgreift, diese visualisiert und auch ein bisschen Midi output macht. Das klappt alles ganz prima, genau nach meinem Geschmack. Angefangen hatte es ganz furchtbar mit einem dutzend singleton classes, da ich mit dem Kopf noch zu sehr in der prozeduralen Welt hängen geblieben war. Mittlerweile habe ich das ganze brav in Klassen verpackt und glaube zumindest diesen Teil von OO zu verstehen.

Die Klasse kümmert sich um das sensing der hardware, holt aus dem java MidiSystem einen Receiver und einen Transmitter und schon geht's los. Ich empfange Midi Daten in der Klasse und kann diese auf der Konsole ausgeben.

Eine Instanz der Klasse rufe ich aus main auf:

Code:
MyDeviceClass device = new MyDeviceClass();

Im Konstruktor der Klasse wird dann eine interne listen() Methode aufgerufen, die auf den input stream wartet.

Sorry, ganz schön lange Einleitung. Hier meine Frage:

Wie mache ich nun weiter? ???:L Mein Plan ist verschiedene Ereignisse aufgrund von bestimmten Midisignalen auszulösen. Wie leite ich am elegantesten die Daten aus der MyDeviceClass raus um sie anderswo auszuwerten und abhängig von bestimmten Parametern Aktionen zu triggern? Baue ich eine extra "routing" Klasse, die Aufrufe entgegennimmt und weiterleitet? Sollte es lieber sowas wie eventListener geben, die immer am lauschen sind? Baue ich einfach eine handvoll singletons?
Da mein Ziel ist, die Daten in Abhängigkeit von bestimmten Parametern an ständig unterschiedliche Orte zu leiten, tendiere ich zu der routing Methode, quasi eine Klasse, die jedes Signal annimmt und dann entscheidet wo es hin soll. Nur wie soll dieses "hin" überhaupt implementiert sein? Auch eine Klasse? Singletons?

Ihr seht schon, da hakt bei mir ein bisschen das Verständnis für OOP.. vielleicht könnt Ihr mir ja einen Schubs in die richtige Richtung geben. Hoffe ich konnte verständlich machen, was ich meine. Gar nicht so einfach so eine abstrakte Frage in Worte zu giessen :) Wenn es gar nicht verständlich ist versuche ich nochmal nachzulegen :)

Danke & Grüße
 

Marco13

Top Contributor
Schwer zu sagen, auf basis der Beschreibung.

Singletons werden "meistens" falsch verwendet, aber bei so etwas 1:1 an Hardware gekettetem wie einem Midi-Listener könnte ein Singleton sogar angebracht sein. Die entscheidende Frage ist: DARF es IMMER nur GENAU EINE Instanz dieser Klasse geben? Wenn ja, sollte sie ein Singleton sein.

Aber für die "verarbeitenden" Klassen gilt das dann schon nicht mehr. So, wie es bisher klang sollten die in jedem Fall passiv sein. Ganz subjektiv-unfundiert: Ein Konzept bestehend aus Listenern und Events wäre vermutlich angebracht, wenn es "(einzelne) spontan auftretende Ereignisse" gäbe, die an potentiell viele Beobachter weitergemeldet werden sollen. Bei sowas wie Audio- oder Video-Processing gibt es aber auch oft das Konzept von "Sinks", also Datensenken, die einen "Strom" von Daten erhalten können... Was für MIDI mehr passt, weiß ich spontan aber auch nicht... :bahnhof:
 

br0nko

Mitglied
Die entscheidende Frage ist: DARF es IMMER nur GENAU EINE Instanz dieser Klasse geben? Wenn ja, sollte sie ein Singleton sein.

Ich bin nicht böse wenn jemand ein Zweitgerät gleicher Bauart an meinen Rechner anschliesst. Da das MidiSystem mir für diese hardware unbegrenzt Receiver und Transmitter zur Verfügung stellt halte ich es für Sinnvoll, das als Klasse bestehen zu lassen. Insofern bin ich mit der device Klasse auch durchaus zufrieden. Die funktioniert bestens und macht genau das was ich will. Meine Frage zielt eher auf das "danach" ab.

Vielleicht noch etwas konkreter: Die device Klasse enthält die listener() Methode, welche automatisch beim erstellen einer Instanz lauscht. Die Signale die Reinkommen sollen an (bisher) fünf verschiedene virtuelle "modes" geschickt werden. Jeder dieser modes ist den anderen zwar ähnlich, jedoch gibt es auch diverse grundlegende Unterschiede. Wie ich diese "modes" implementieren soll weiss ich nur nicht. Die sollen sich gegenseitig nämlich auch "an und aus" schalten können. So, dass immer nur einer zur Zeit aktiv ist. :bahnhof:
 

Empire Phoenix

Top Contributor
Einen ModeManager wäre meien idee dazu

Enumeration mit allen modes,
activateMode im Modemanger mit enumeration als paramter ruft im derzeit aktiven dann deaktivate auf, und im neuen aktivate.
Mode ist also ein Interface, dass dann alle deine Modes implementieren.
Beim Starten würde ich alle Modes erstellen und im ModeManager ablegen (zb Hashmap<ModeEnumration,Class implementing Mode)
worüber du dann die Modes erreichen kannst ohne jedesmal neu zu erstellen(und evtl wichtiger die die alten werte behalten vom letzten mal als sie aktive waren).
 

br0nko

Mitglied
Einen ModeManager wäre meien idee dazu

War auch mein erster Gedanke dazu. Hatte allerdings die Befürchtung, dass das nicht gerade dem Java Konzept entspricht. Aber mit den Interfaces (ohne jetzt vollständig durchdrungen zu haben wie sie funktionieren) scheint das ein praktikabler Ansatz zu sein. Danke! :toll:

Wenn noch jemand weitere Ideen hat, immer her damit. So lange lese ich mal das Kapitel über interfaces ;)

Gruß, bronko
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
berserkerdq2 sqllite in Java, wenn ich mache select count(*) ..., erhalte ich dann nur die gezählte Anzahl oder werden auch die Tabellen ausgegeben? Java Basics - Anfänger-Themen 2
J Was mache ich falsch in meiner Java Anwendung? Java Basics - Anfänger-Themen 11
G mache aus Test nach sortieren estt oder java aajv Java Basics - Anfänger-Themen 5
F Ich raffs nicht! - Wie mache ich ein einfaches Java-window? Java Basics - Anfänger-Themen 54
U Wie mache ich die Variable xyz eindeutig/unique? Java Basics - Anfänger-Themen 20
berserkerdq2 Spiel hängt sich immer in der 4 Runde auf, obwohl ich jede Runde das gleiche mache Java Basics - Anfänger-Themen 1
O Ich ahbe einen char und diesen soll ich bei .matches prüfen, also ob der char in meiner Zeichenkette vorhanden ist, wie mache ich das? Java Basics - Anfänger-Themen 9
J Erste Schritte Was mache ich in meinem Code falsch. Java Basics - Anfänger-Themen 3
J Kreis soll die gleiche Fläche wie das Rechteck haben wie mache ich das? Java Basics - Anfänger-Themen 3
D Guten Tag mache gerade eine Umschulung zum FiSi war leider jetzt 2 Wochen Krank und wir hatten Prozendurale Programmierung. Java Basics - Anfänger-Themen 3
Z Klassen Error: ';' expected - was mache ich falsch? Java Basics - Anfänger-Themen 4
D Probleme beim Kompelieren mache ich etwas falsch ? Java Basics - Anfänger-Themen 3
D Wenn ich repaint(); mache, flackert es so stark, das man fast nichts erkennen kann. Java Basics - Anfänger-Themen 11
A Arrays addieren- Was mache ich falsch?? Java Basics - Anfänger-Themen 2
Silvascus Was mache ich falsch? Java Basics - Anfänger-Themen 15
L Variable an andere Klasse weitergeben - Was mache ich falsch? Java Basics - Anfänger-Themen 2
J Klassen Fehler Datei kopieren - was mache ich falsch Java Basics - Anfänger-Themen 19
K Erste Schritte Wie mache ich weiter? (Spiel-Menü) Java Basics - Anfänger-Themen 9
T Wie mache ich einen Timer der alle 2 sekunden aufgerufen wird? Java Basics - Anfänger-Themen 5
propra Wie mache ich einem JPanel mein bereits instanziertes Model bekannt Java Basics - Anfänger-Themen 9
A Variablen Was mache Ich falsch? Java Basics - Anfänger-Themen 5
A was mache ich falsch? Java Basics - Anfänger-Themen 3
J Wie mache ich ein JFrame modal Java Basics - Anfänger-Themen 30
D Wie mache ich das? Java Basics - Anfänger-Themen 2
D Muss ein Applet schreiben was Mittelwerte berechnet nur was mache ich falsch? Java Basics - Anfänger-Themen 11
T Was mache ich hier falsch? Java Basics - Anfänger-Themen 3
H Wie mache ich aus pfad\\unterpfad pfad\unterpfad? Java Basics - Anfänger-Themen 3
S Wie mache ich mir eine universelle Timermethode Java Basics - Anfänger-Themen 20
D Brauche mehr Flexibilität bei der Realisierung und weiss nicht wie ich das mache. Java Basics - Anfänger-Themen 10
D Boolean funktioniert nicht, was mache ich falsch? Java Basics - Anfänger-Themen 6
S Deserialisieren: alle Objekte ausgeben - wie mache ich das? Java Basics - Anfänger-Themen 2
M Wie mache ich einen Eventdispatcher? Java Basics - Anfänger-Themen 9
M Counter erstellen - Was mache ich falsch? Java Basics - Anfänger-Themen 17
Q TextArea - wie mache ich einen Absatz? Java Basics - Anfänger-Themen 9
S Fehler in Javaprogramm, was mache ich falsch? Java Basics - Anfänger-Themen 9
T Button Dis/Enablen - Was mache ich falsch? Java Basics - Anfänger-Themen 3
S Was mache ich falsch? Java Basics - Anfänger-Themen 4
D Pascal'sche Drreieck. was mache ich in der ausgabe flasch? Java Basics - Anfänger-Themen 5
D Was mache ich falsch beim ScrollPane ? Java Basics - Anfänger-Themen 2
T Was mache ich falsch? File klasse. Java Basics - Anfänger-Themen 3
G Fehler: Illegal Expression. Was mache ich falsch? Java Basics - Anfänger-Themen 4
W Was mache ich Falsch?? Java Basics - Anfänger-Themen 4
N Womit mache ich ein menue Java Basics - Anfänger-Themen 2
W Java-PRogramm liest als EXE-File Nicht USB, jedoch aus NetBeans Java Basics - Anfänger-Themen 23
W Methoden java map ersatz für c++map Java Basics - Anfänger-Themen 2
M Erste Schritte Java Primzahltester Java Basics - Anfänger-Themen 4
A csv Reader für Java? Java Basics - Anfänger-Themen 27
K Java - Enums Java Basics - Anfänger-Themen 30
tomzen Java Unterstützung für exel dateien installieren. Java Basics - Anfänger-Themen 2
Rookar java.lang.NoClassDefFoundError: org/json/JSONException Java Basics - Anfänger-Themen 2
Rookar Mit Button andere java öffnen Java Basics - Anfänger-Themen 4
F Java Object to Hashmap ? Java Basics - Anfänger-Themen 6
I Backend in Java und Ansicht von Dateien in statische HTML Seiten? Java Basics - Anfänger-Themen 15
R Input/Output Verwendung des Euro-Zeichens in Java Java Basics - Anfänger-Themen 7
I Push Nachrichten von JAVA EE App an Mobile App Java Basics - Anfänger-Themen 3
H .java Dateien in Eclipse einbinden und ausführen Java Basics - Anfänger-Themen 1
onlyxlia Schlüsselworte Was meint man mit "einen Typ" in Java erstellen? Java Basics - Anfänger-Themen 2
O Java Kara geschweifte Klammern Java Basics - Anfänger-Themen 2
richis-fragen Mausrad logitech kann links und rechts klick wie in java abragen. Java Basics - Anfänger-Themen 15
XWing Java Klssenproblem Java Basics - Anfänger-Themen 4
R Umgebungsvariable java -cp gibt immer Java-Hilfe... Java Basics - Anfänger-Themen 3
farbenlos Csv Datei in Java einlesen Java Basics - Anfänger-Themen 18
F TableModelListener: java.lang.ArrayIndexOutOfBoundsException: 132 Java Basics - Anfänger-Themen 3
G Java 8 - Support-Ende Java Basics - Anfänger-Themen 7
T Java Weihnachtsbaum + Rahmen Java Basics - Anfänger-Themen 1
N Will mit Java anfangen Java Basics - Anfänger-Themen 13
Ü Java Array - Buchstaben als Zahlen ausgeben Java Basics - Anfänger-Themen 22
M Java Iterator Verständnisfrage Java Basics - Anfänger-Themen 6
M Java Mail Programm Java Basics - Anfänger-Themen 4
Sniper1000 Java 391 für Windows Java Basics - Anfänger-Themen 37
J Java long- in int-Variable umwandeln Java Basics - Anfänger-Themen 6
JaZuDemNo Java im Studium Java Basics - Anfänger-Themen 7
E Java Programm zur anzeige, ob Winter- oder Sommerzeit herrscht Java Basics - Anfänger-Themen 62
I QR code in Java selber generieren Java Basics - Anfänger-Themen 5
V Java-Ausnahmebehandlung: Behandlung geprüfter Ausnahmen Java Basics - Anfänger-Themen 1
krgewb Java Streams Java Basics - Anfänger-Themen 10
A Überwältigt von der komplexen Java Welt Java Basics - Anfänger-Themen 29
O Mehrfachvererbung auf Spezifikations- und Implementierungsebene in Java. Interfaces Java Basics - Anfänger-Themen 19
John_Sace Homogene Realisierung von Generics in Java ? Java Basics - Anfänger-Themen 19
P Meldung aus Java-Klasse in Thread an aufrufende Klasse Java Basics - Anfänger-Themen 1
R mit Java API arbeiten Java Basics - Anfänger-Themen 9
P JDK installieren Probleme bei der Java-Installation Java Basics - Anfänger-Themen 8
S Java: Wie sortiere ich eine ArrayList benutzerdefinierter Objekte nach einem bestimmten Attribut? Java Basics - Anfänger-Themen 2
Timo12345 JNLP File mit Java öffnen Java Basics - Anfänger-Themen 2
S Video Editierung mit Java.._ Java Basics - Anfänger-Themen 2
F Einstelungen in Java - CursorBlinkRate Java Basics - Anfänger-Themen 10
A PHP $_POST["name"] in Java Java Basics - Anfänger-Themen 3
vivansai21 Is there a oneliner to create a SortedSet filled with one or multiple elements in Java? Java Basics - Anfänger-Themen 9
Athro-Hiro Weißes Bild in Java erstellen Java Basics - Anfänger-Themen 3
Arjunreddy Can someone please tell me how to use a debugger in BlueJ(a Java environment) Java Basics - Anfänger-Themen 1
M Java assoziationen (UML) Java Basics - Anfänger-Themen 8
H Excel-Tabellen mit Java erstellen Java Basics - Anfänger-Themen 4
Simon16 Java ArrayListe von einer Klasse sortieren Java Basics - Anfänger-Themen 2
P Wie kann ich in meinem Java Programm etwas dauerhaft speichern? Java Basics - Anfänger-Themen 5
H Nutzt Eclipse alle CPU-Threads beim Ausführen von Java-Programmen? Java Basics - Anfänger-Themen 4
xXGrowGuruXx Java einstieg, leichte sache 0 verstanden Java Basics - Anfänger-Themen 7
A java.sql.SQLException: Data type mismatch. Java Basics - Anfänger-Themen 1
H Java-Programm zur Ausgabe von Zuständen Java Basics - Anfänger-Themen 80
N Java Spiel Figur auf dem Hintergrundbild bewegen. Java Basics - Anfänger-Themen 11
G Kann Java-Programm nicht als jar aufrufen, auch als EXE nicht Java Basics - Anfänger-Themen 19

Ähnliche Java Themen

Neue Themen


Oben