Externe Logiken möglich?

Status
Nicht offen für weitere Antworten.

Uwoan

Mitglied
Hallo Leute,

ich habe folgendes Problem:

Ich habe ein Programm, bei dem ich verschiedene Zustände (einfach nur ob diverse Sachen geschalten sind oder nicht) speichere. So weit so gut.

Jetzt möchte ich auf diese Zustände Logiken anwenden. ZB wenn Einang1 (E1) && E2 && E3... dann Ausgang A1, A2 = E10 oder sowas die Art. Ansich stellt das auch für mich kein Problem dar. Das Problem ist, dass ich noch nicht alle Logiken kenne, die verwendet werden sollen. Bzw. es sollen Logiken hinzukommen können ohne groß im Progamm rumfuschen zu müssen. Lediglich eine Auswahl über das Programm soll ermöglicht werden, welche logik/logikbaustein verwendet wird.

Deshalb war meine Idee eine Art Logikbausteine zu erstellen, die dann dem Programm "gereicht" werden. Nur habe ich 0 Ahnung wie ich das am einfachsten realisieren kann. Schreib ich da extern was in Java oder einer anderen Sprache? Und wie kann ich das dann meinem Programm beibiegen, dass es da was externes gibt, was es benutzen soll zur Zustandsberechnung.

Wäre sehr erfreut, wenn mir einer von euch weiterhelfen könnte.
 

Landei

Top Contributor
Die Sprache kannst du nicht so ändern. Du kannst Logikbausteine aber als Klassen modellieren:

Java:
interface LogicUnit {
   boolean eval(boolean... inputs);
   int arity();
}

public class NotUnit implements LogicUnit {
   public boolean eval(boolean... inputs) { return ! inputs[0]; }
   int arity() { return 1; }
}

public class AndUnit implements LogicUnit {
   public boolean eval(boolean... inputs) { return inputs[0] & input[1]; }
   int arity() { return 2; }
}

...oder so ähnlich.
 

Uwoan

Mitglied
Danke euch schonmal, aber irgendwie steh ich ein wenig aufm schlauch und versteh es nicht 100%ig.

Ich erstell das Interface und für jede Logik eine Klasse. Aber wie greif ich dann über mein Programm auf die Klasse(n) zu? Bzw. wie kann ich dann eine wenns geht automatische erweiterung der logiken machen in meinem Program, die zur auswahl stehen und kann ich überhaupt dann mehrere logiken (Bausteine) verwenden?

Seh ich es richtig, dass dies dann über die Klassen erfolgt? Oder welche Mechanismen muss ich da verwenden?

Nochmal kurz. Habe ne Visu wo Logiken zur Auswahl gegeben werden. Und diese Liste (Combo-Box) soll erweiterbar sein. Wie verbinde ich Logiken mit der Visu (Aufruf) und wie mach ich das genau erweiterbar? Mehrere Logiken zur Verfügung stellen? Über die Klassennamen?


Vielen Dank für weitere Hilfe.
 
Zuletzt bearbeitet:

Landei

Top Contributor
Dazu müsste man genauer wissen, was du willst. Wer soll die Logik-Einheiten erstellen, der Nutzer selber oder der Programmierer? Dynamisch (zur Laufzeit) oder reicht es statisch (zur Compilierzeit)?

Wenn neue Logikeinheiten programmiert werden sollen, kann man es z.B. so einrichten, dass man nur ein Jar in den ClassPath werfen muss, und über den SPI-Mechanismus alle Logikbaustein-Implementierungen beim Start des Programms "gefunden" werden können.

Aber es gibt x Wege, je nachdem, was du brauchst.
 

Uwoan

Mitglied
Also die Logiken soll der Programmierer erstellen.

Am liebsten wäre es mir dynamisch. Wobei ich das was du sagtest mir schon vernünftig anhört und ausreichend ist. Also das man nur JAR mit jeweiligen Logiken erstellt und das Programm beim Neustart diese selber findet und dem User des Progs zur Auswahl bereit stellt. Das wäre schonmal Klasse. Und mehr als ausreichend für den Anfang und das was ich vorhabe.

Kann du oder wer anderes nen Tip geben wie man das am einfachsten und schnellsten umsetzt bzw. wo ich das nachlesen kann, wie man sowas macht?

Szenario soll sein: Ich habe ein Programm wo ich Logiken auf Visu auswählen kann. Jetzt kann ich weitere Logiken erzeugen (wie am besten?) und diese werden beim Programm-Neustart oder über eine aktualisierung in die Liste der zur auswahl stehenden logiken hinzugefügt. Am liebsten ohne neu-compilierung des Programmes. Wenn es aber die Sache extrem vereinfacht würde ich zur Not neu-compilieren. Aber anderes wäre mir lieber

LG Uwo
 
Zuletzt bearbeitet:

Landei

Top Contributor
Wenn du mit Extra-Jars arbeiten willst, könntest du wie gesagt SPI verwenden. Eigentlich ist die Verwendung ziemlich einfach, aber man findet kaum eine vernünftige Beschreibung. Hier ist ein Beispiel (mit Code zum runterladen): Add MP3 capabilities to Java Sound with SPI - JavaWorld

Wenn du eine Möglichkeit siehst, deine Logikbausteine nur durch "Daten" (z.B. Logiktabellen) zu beschreiben, könntest du auch einfach ein Verzeichnis haben, wo du alle Beschreibungen reinpackst, und wo sie dein Programm beim Neustart finden kann. Vielleicht reicht ja schon ein einfaches Textfile (alternativ böte sich XML an, wenn die Struktur komplizierter ist) mit Logiktabelle:
Code:
Datei And.logic:

x,y,result
T,T,T
T,F,F
F,T,F
F,F,F

Wenn sowas funktionieren würde, kannst du eventuell auch später ein Programm-Modul schreiben, mit dem du solche Dateien bequem bearbeiten/erstellen kannst
 

Uwoan

Mitglied
ich danke dir.

werde mir mal beide Lösungwege anschauen und durch den Kopf gehen lassen, welche von beiden für meine zwecke ausreichend sind, bzw. realisierbar.

Danke für die Hilfe, bei weiteren Fragen komm ich gerne auf dich/euch zurück.

LG Uwo
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
X Java gewerblich nutzen mit externe Bibliothek. Was zu beachten? Allgemeine Java-Themen 18
OSchriever Externe Anwendung beenden Allgemeine Java-Themen 41
T Externe Java Klasen zur Laufzeit einbinden Allgemeine Java-Themen 10
J File in Package erstellen & lesen mit Programmstart in externe Projekt Allgemeine Java-Themen 3
X Threads Externe Variablen in Run Methoden verändern Allgemeine Java-Themen 4
V JTable Externe Lib Allgemeine Java-Themen 2
JavaWolf165 Externe .jar-Dateien in .jar-Datei intigrieren Allgemeine Java-Themen 0
Neumi5694 Externe Skripte Allgemeine Java-Themen 9
L JavaFX JavafX externe FXML laden? Allgemeine Java-Themen 4
S Externe Eclipse Projekte dynamisch einbinden Allgemeine Java-Themen 3
Thallius Externe .jar dynamisch einbinden Allgemeine Java-Themen 5
W Threads Mit Thread und Runtime externe Programme öffnen Allgemeine Java-Themen 0
M Externe Jar sehr langsam Allgemeine Java-Themen 23
C Prozesssteuerung - Speicherhungrige externe Programme werden blockiert Allgemeine Java-Themen 2
F externe module. geht das in Java? Allgemeine Java-Themen 3
G Eclipse Wie mit Ant build.xml externe Jar´s einbinden? Allgemeine Java-Themen 5
M Wie externe System-Ressourcen zwangsweise freigeben Allgemeine Java-Themen 2
B Externe Programme und ProcessBuilder Allgemeine Java-Themen 5
nrg Externe Library Lizenzen Allgemeine Java-Themen 14
D externe programme / Jdesktoppane, ... Allgemeine Java-Themen 6
G externe Properties datei aus Jar File heraus lesen Allgemeine Java-Themen 12
G externe Steuerung von Sprachsoftware Allgemeine Java-Themen 3
C Externe Bilder in Java-Applet blocken? Allgemeine Java-Themen 2
B Eclipse externe Dateien mit einbinden Allgemeine Java-Themen 10
H externe JARs in eigenem Programm-Jar einbinden. Allgemeine Java-Themen 5
N externe Anwendung aktivieren (nicht starten!) Allgemeine Java-Themen 3
H Externe Prozesse und Inputstreams - ausgabe in JTextArea Allgemeine Java-Themen 3
oliver1974 Zugriff auf externe .class Dateien (und resourcen) aus JAR Allgemeine Java-Themen 11
G externe package Allgemeine Java-Themen 7
E externe Anwendung aufrufen und sich selbst beenden Allgemeine Java-Themen 8
W Java und externe Anwendungen Allgemeine Java-Themen 3
J Externe File Emails für JavaMail Allgemeine Java-Themen 4
J Externe .jar bibis in programm .jar einbinden? Allgemeine Java-Themen 9
R externe Libraries in jar-file Allgemeine Java-Themen 16
R Kontrolle über Externe Prozess Allgemeine Java-Themen 5
O Externe Jars in eigene JAr packen in Eclipse Allgemeine Java-Themen 5
M Standardpfad für externe Dateien? Allgemeine Java-Themen 2
R aus Jar auf externe XML-Datei zugreifen Allgemeine Java-Themen 14
I externe Namensliste auslesen Allgemeine Java-Themen 13
M Java2exe Externe Packages einbinden! .JAR und sowas Allgemeine Java-Themen 7
thE_29 Externe (unbekannte) Klasse nutzen Allgemeine Java-Themen 11
J Externe Ansteuerung (Motor,Licht) mit Java? Allgemeine Java-Themen 4
berserkerdq2 SceneBuilder GUI erstellt, nun muss ich noch ein Polygon erstellen, ist die Connection möglich? Allgemeine Java-Themen 3
E Es ist nicht möglich, eine Batch-Anweisung auszuführen. Allgemeine Java-Themen 9
B Arrays von Methoden möglich? Allgemeine Java-Themen 44
D VBA Code mit Java ausführen möglich? Allgemeine Java-Themen 10
R Java Stream: Ist es möglich, einen stream zusammenzufassen Allgemeine Java-Themen 6
M WSDL: Doppelte Typenames (Keine Verwendung möglich) Allgemeine Java-Themen 5
M Keine weitere Eingabe in der Main möglich. Eventueller Ansatz über while. Allgemeine Java-Themen 8
I Eine Anwendung so gut wie möglich beschützen Allgemeine Java-Themen 9
D Java auf Webserver Website möglich Allgemeine Java-Themen 7
I PrinterJob - bestimmtes Druckerfach festlegen möglich? Allgemeine Java-Themen 2
D Eine Forschleife mit Threads abarbeiten um es zu schneller zu machen. Ist das möglich? Allgemeine Java-Themen 20
OnDemand Zeilenumbruch ignorieren möglich? Allgemeine Java-Themen 1
0 Eingabe nicht möglich... Allgemeine Java-Themen 12
FunnyO KeyEvent.VK_ + int i, ausgeben mit Bot möglich? Allgemeine Java-Themen 2
C Programmierung von Fotoeffekten mit Java möglich? Allgemeine Java-Themen 3
B ist es möglich in java keyboardtöne per MIDI kabel aufzunhemen ? Allgemeine Java-Themen 5
F Mehrfachverebung in Java (möglich)? Allgemeine Java-Themen 4
F E-Mail aus JAVA senden nach Umstellung auf Netbean 7.4 mit Java 7U45 nicht mehr möglich Allgemeine Java-Themen 4
E Ermitteln einer eindeutigen ID eines Objekts möglich? Allgemeine Java-Themen 17
R Löschen von Files nicht möglich Allgemeine Java-Themen 11
F Frage zu Regex möglich Allgemeine Java-Themen 4
P Code in Methode auslagern möglich? Allgemeine Java-Themen 9
P Datentypen float mit komma statt punkt möglich? Allgemeine Java-Themen 6
DStrohma Swing Nicht möglich für ein JPanel den Fokus zu bekommen? Allgemeine Java-Themen 9
H JTable per iText in PDF: Größenanpassung möglich? Allgemeine Java-Themen 2
GianaSisters Erste Schritte Debuggen im CMD möglich ? Allgemeine Java-Themen 19
C Strings und JSON Objekte so klein wie möglich im Speicher ablegen Allgemeine Java-Themen 5
P RegEx mit HTML Parser für Java möglich? Allgemeine Java-Themen 10
F Screenshot von gewissen Anwendungen nicht möglich Allgemeine Java-Themen 5
K Serialisierung in Properties-Datei möglich? Allgemeine Java-Themen 3
Haave Audio Device Unavailable: Kein gleichzeitiger Zugriff auf Soundsystem möglich Allgemeine Java-Themen 7
B Arraylist.contains(Klasse) möglich? Allgemeine Java-Themen 19
J Objekt selbst ertellen möglich? Allgemeine Java-Themen 6
J DLL ansteuern möglich? Allgemeine Java-Themen 3
D Double to Integer - ist das möglich? Allgemeine Java-Themen 3
K Test-Code in Java-Klassen verstecken (wie mit Precompiler möglich) Allgemeine Java-Themen 10
S Klassenverfolgung möglich? Allgemeine Java-Themen 18
T Zugriff per Reflection o.ä. möglich? Allgemeine Java-Themen 18
D JOptionPane nur 1 Input möglich? Allgemeine Java-Themen 6
D besseres Klassenkonzept möglich? Allgemeine Java-Themen 9
N Werte Von C++ nach Java über den Stream möglich? Allgemeine Java-Themen 8
J Immutable mit Interfaces möglich? Allgemeine Java-Themen 2
F Code vereinfachen möglich? Allgemeine Java-Themen 18
E Attribute in Interfaces möglich? Allgemeine Java-Themen 17
B Chat öffnen nicht möglich ! Allgemeine Java-Themen 5
L Kein Ausführen möglich Allgemeine Java-Themen 3
S Datei aller möglich encodings generieren Allgemeine Java-Themen 2
P Ist das möglich mit Java - wenn Nein wie sonst? Allgemeine Java-Themen 8
M ist "public abstract class * extends" möglich? Allgemeine Java-Themen 2
S drucken unter j2sdk-1.4 möglich; unter jdk1.5 nicht; warum? Allgemeine Java-Themen 4
M 2 verschiedene LookAndFeels in einem Fenster möglich? Allgemeine Java-Themen 6
P Dynamisch casten - möglich? wie? Allgemeine Java-Themen 5
F POI Library - Graphic in Excel inserten möglich? Allgemeine Java-Themen 2
H Vererbung auch ohne erzeugung einer Instanz möglich? Allgemeine Java-Themen 3
N Graphische Oberfläche dynamisch erweitern möglich? Allgemeine Java-Themen 4
D Buffer Overflow in Java möglich? Allgemeine Java-Themen 5
G Java-1.5 mit Eclipse möglich? Allgemeine Java-Themen 26
B Java-Programm auf Handheld (Windows CE) möglich? Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben