"Problem Objektorientierung"

J90

Aktives Mitglied
Hallo,
ich habe ein Abstraktionsproblem, bei dem ich mit meinen Kenntnissen nicht weiterkomme.
Ich versuche mal das Problem zu schildern:

Ich nutze Projekt A und Projekt B;
Package A.1 invoked Klasse B.1 in Projekt B via Reflection.
Klasse B.1 nutzt Methoden von Klasse A.1.1 in Package A.1, indem der Konstruktor von A.1.1 in die Klasse B.1 übergeben wird.
Ich möchte aber, dass ich die Methoden ohne Übergabe des Konstruktors durch z.B static import löse. Dies stellt kein Problem in diesem Zusammenhang dar.
--> Import static Package A.1.* (automatischer Zugriff auf Methoden)

Allerdings nutze ich per Reflection in Package A.2 in Klasse A.2.1 zu Echtzeit gleichzeitig mehrere Klassen aus B (B.1-B.n).
Dort würde ein statischer Import der Klasse A.1.1 zu Fehlern führen, da bei gleichzeitiger Ausführung keine Abkapselung stattfindet.
Wie lässt sich dieses Problem lösen?

Präziser geht es dort um die Kopierung von der Funktionsweise der Trading-Programme wie Meta Trader 4, NinjaTrader , etc. in welcher eine Ausführung ohne Konstruktor abgekapselt stattfindet (Handelssysteme werden in Programm auf verschiedenen Kurssymbolen gleichzeitig
ausgeführt)

Ich hoffe ich konnte das Problem ein wenig schildern und hoffe, dass mir jemand weiterhelfen kann.. Im Grunde ist das ganze Problem ein "Schönheitsfehler", allerdings wäre ich sehr an einer Lösung interessiert.

Beste Grüße
 

mrBrown

Super-Moderator
Mitarbeiter
Ehrlich gesagt versteh ich nur Bahnhof...

Dort würde ein statischer Import der Klasse A.1.1 zu Fehlern führen, da bei gleichzeitiger Ausführung keine Abkapselung stattfindet.
Statischer Import hat nichts mit gleichzeitiger Ausführung hat nichts mit Abkapslung zu tun?
Das sind 3 Dinge, die kaum was miteinander zu tun haben...

Ausführung ohne Konstruktor abgekapselt
Was ist eine "Ausführung ohne Konstruktor" und was hat das mit Kapselung zu tun?
 

J90

Aktives Mitglied
@mrBrown: Vermutlich lässt sich die gesamte Formulierung nicht sofort nachvollziehen, aber ein Einstellen von den Klassen hätte wohl noch weniger Sinn.
Es geht um das Problem, wenn die Methode aus einer Klasse statisch bezogen wird, dann muss auch
die zugehörige Variable statisch sein. Dies führt zu dem Problem, dass bei gleichzeitiger Ausführung der gleiche statische Wert überschrieben wird von jeweils dem anderen Aufruf.

@stg: Schlecht strukturiert ist an der ganzen Sache rein garnichts;
Ich glaube eher dein Wissen reicht nicht aus, um mir weiterzuhelfen. Für weitere Folgekommentare wäre ich dankbar, wenn sich nur ausreichend hilfsbereite & qualifizierte Leute äußern, habe besseres zu tun..
 

mrBrown

Super-Moderator
Mitarbeiter
@mrBrown: Vermutlich lässt sich die gesamte Formulierung nicht sofort nachvollziehen, aber ein Einstellen von den Klassen hätte wohl noch weniger Sinn.
Es geht um das Problem, wenn die Methode aus einer Klasse statisch bezogen wird, dann muss auch
die zugehörige Variable statisch sein. Dies führt zu dem Problem, dass bei gleichzeitiger Ausführung der gleiche statische Wert überschrieben wird von jeweils dem anderen Aufruf.

Richtig, deshalb vermeidet man statische Variablen (und generell static und benutzt Objekte.
statische Variablen und Nebenläufigkeit geht in Richtung 'Teilen durch 0'

@stg: Schlecht strukturiert ist an der ganzen Sache rein garnichts;
Ich glaube eher dein Wissen reicht nicht aus, um mir weiterzuhelfen. Für weitere Folgekommentare wäre ich dankbar, wenn sich nur ausreichend hilfsbereite & qualifizierte Leute äußern, habe besseres zu tun..
Irgendwie glaube ich, das Wissensgefälle ist da eher andersrum...
(Ich stimme seiner Aussage übrigens vollkommen zu, dein Fehler ist ein Produkt schlechter Struktur)
 

Thallius

Top Contributor
@stg: Schlecht strukturiert ist an der ganzen Sache rein garnichts;
Ich glaube eher dein Wissen reicht nicht aus, um mir weiterzuhelfen. Für weitere Folgekommentare wäre ich dankbar, wenn sich nur ausreichend hilfsbereite & qualifizierte Leute äußern, habe besseres zu tun..

ROFL YMMD

stg ist einer der Top 10 Leute hier die am allermeisten Ahnung haben....
 

J90

Aktives Mitglied
Dass ich momentan Objekte verwende, ist in meinem ersten Post ersichtlich. Nur ist dies eine Art
"Schönheitsfehler" in Java, wenn dies nicht anders zu lösen wäre.
Diverse Software (wie bereits oben genannt) kommt ohne Objekt aus und separiert trotzdem.
Und darauf zielt meine ursprüngliche Frage ab: Wie lässt sich dies umsetzen?

@Thallius: Ohne hier jemanden zu nahe treten zu wollen: Davon merke ich in den obigen Posts nicht besonders viel, und im Zweifelsfall frage ich da lieber jemand qualifiziertes wie meinen Prof beispielsweise;
Foren sind für wissenschaftliches Wissen nicht immer ein guter Aufenthaltsort..
Aber Fragen in einem Forum geht meistens schneller.
 

mrBrown

Super-Moderator
Mitarbeiter
Dass ich momentan Objekte verwende, ist in meinem ersten Post ersichtlich.
Da ist vor allem viel static ersichtlich, von Objekten ist da nicht dir Rede, sonst hättest du wahrscheinlich das Problem auch nicht.
Nur ist dies eine Art
"Schönheitsfehler" in Java, wenn dies nicht anders zu lösen wäre.
Nein, so funktionieren Computer.
Dinge auf der gleichen Speicherstelle (=static in Java) sind nunmal Murks, wenn mehrere Threads gleichzeitig drauf schreiben und alle ihre eigenen Daten haben sollen.
Für sowas braucht man unterschiedliche Speicherstellen (=Objekte in Java (oder selber mit Speicher hantieren, aber das wird immer mehr Code-Smell).

Diverse Software (wie bereits oben genannt) kommt ohne Objekt aus und separiert trotzdem.
Und darauf zielt meine ursprüngliche Frage ab: Wie lässt sich dies umsetzen?
Und oben genannte Software ist in Java geschrieben und Quellcode ist öffentlich (du weißt schließlich, dass sie keine Objekte benutzten)? Dann guck einfach in deren Code ;)
Sind sie nicht in Java, ist es nicht vergleichbar, und ist es nicht öffentlich, woher weißt du dann, dass sie es ohne "Objekte" machen?

@Thallius: Ohne hier jemanden zu nahe treten zu wollen: Davon merke ich in den obigen Posts nicht besonders viel, und im Zweifelsfall frage ich da lieber jemand qualifiziertes wie meinen Prof beispielsweise;
Foren sind für wissenschaftliches Wissen nicht immer ein guter Aufenthaltsort..
Rumhantieren mit Reflection und gegenseitige Abhängigkeiten sind nunmal ein Zeichen für schlechten Stil, da wird dir dein Prof wenig anderes sagen können.
Glaubst du Wirkich, hier ist niemand der an 'ner Uni arbeitet?
 

J90

Aktives Mitglied
Gleich nochmal vorweg: Ich habe in meinem Code überhaupt kein Problem..
Ich bin nur an der Frage interessiert: Wie lösen dies andere Programme ohne ein Objekt (ersichtlich im Code) für den Methodenaufruf zu verwenden?

Mir geht es hier nicht darum die objektorientierte Programmiersprache JAVA neu zu erfinden, allerdings sind mir hier Lösungsantworten verborgen geblieben bzw. ich muss die Antwort: "Es geht nicht" als Antwort aufnehmen.
Vermutlich ist das Problem aber auch einfach etwas meine Abstraktion/Beschreibung.
Machen können diese "diversen Softwares" Das Ganze wie sie wollen,ich bin nur an einer Lösung interessiert.
Das Objekte im "Hintergrund" möglicherweise benutzt werden, aber nicht im Code ersichtlich ist mir klar.

Glauben und Wissen ist eben ein Unterschied; Und wenn hier im jemand mit einem Falschschirm aus dem Flieger hüpft ist für mich eben nicht direkt ersichtlich, dass er 30 Jahre Programmiererfahrung besitzt..

Aber ich denke ich verschiebe die Problemlösung erstmal, ich möchte heute noch etwas schaffen und nicht hier im Forum Krieg spielen..
 

Meniskusschaden

Top Contributor
Gleich nochmal vorweg: Ich habe in meinem Code überhaupt kein Problem..
Woher weißt du das? Wenn du eine Methode kennst, mit der man das sicher feststellen kann, wäre ich daran schon sehr interessiert.
Vermutlich ist das Problem aber auch einfach etwas meine Abstraktion/Beschreibung.
Das vermute ich auch. Es wäre wahrscheinlich hilfreich, wenn du ein einfaches Code-Beispiel konstruieren würdest, damit man hier über etwas Konkretes diskutieren kann.
 

JStein52

Top Contributor
Es wäre wahrscheinlich hilfreich, wenn du ein einfaches Code-Beispiel konstruieren würdest, damit man hier über etwas Konkretes diskutieren kann.
Genau. Mal etwas weniger Polemik und wir könten ja wirklich mal einfach nur versuchen seine Frage zu beantworten ohne sie zu bewerten. Allerdings muss ich zugeben dass ich diese auch nocht nicht verstanden habe.
 

Joose

Top Contributor
Vermutlich lässt sich die gesamte Formulierung nicht sofort nachvollziehen,
Nicht vollständig, aber zum Teil.
aber ein Einstellen von den Klassen hätte wohl noch weniger Sinn.
Versuche das "Problem" auf ein paar simple Klassen runterzubrechen, diese könntest du dann posten.

Es geht um das Problem, wenn die Methode aus einer Klasse statisch bezogen wird, dann muss auch
die zugehörige Variable statisch sein. Dies führt zu dem Problem, dass bei gleichzeitiger Ausführung der gleiche statische Wert überschrieben wird von jeweils dem anderen Aufruf.
Jein, du kannst auch alle benötigten Objekte per Parameter an die Methode übergeben und andere Objekte zurückbekommen. Dann erspart man sich die statischen Variablen
 

J90

Aktives Mitglied
Java:
//Aktuell, alles in Ordnung
public class B1{
   Datenhandler DH;
  
   public void Init(Datenhandler DH){
       this.DH = DH;
   }
  
   public void Start(){
       System.out.println(this.DH.Wetter());
   }
}

Java:
//Statisch
import static DH.Wetter;
public class B1{
   public void Start(){
       System.out.println(Wetter());
   }
}

DH wird allerdings unterschiedlich initialisiert und gibt dementsprechend verschiedene Werte aus; bspw. Das Wetter in Afrika oder Amerika;
static führt aber zu überschreiben der Werte und es wird nur noch Afrika zurückgegeben bei mehrfacher Verwendung von Klassen dieser Form, die alle den
Datenhandler benutzen.
In gennante Software (Sprachen C# (Ninja Trader),C (Meta Trader 4) besteht diese Möglichkeit, ohne dass man jedesmal das Objekt DH aufrufen muss.

Java:
public class B1{
   public void Start(){
       System.out.println(Wetter());
   }
}

Wie lässt sich dies implementieren? Der Datenhandler DH hat noch viele andere Methoden, die in der
Start() Methode verwendet werden.
Wer jetzt meine Frage versteht und eine Antwort weiß, bitte melden.
 
Zuletzt bearbeitet von einem Moderator:

mrBrown

Super-Moderator
Mitarbeiter
[...],C (Meta Trader 4) besteht diese Möglichkeit, ohne dass man jedesmal das Objekt DH aufrufen muss.
Wenig überraschend, C kennt auch keine Objekte.


In Java könnte das mit ThreadLocal möglich sein, aber mir fällt kein Grund ein, warum man das sinnvoller ObjektOrientierung vorziehen sollte...
 
Zuletzt bearbeitet:

Joose

Top Contributor
Wie lässt sich dies implementieren? Der Datenhandler DH hat noch viele andere Methoden, die in der
Start() Methode verwendet werden.
Wer jetzt meine Frage versteht und eine Antwort weiß, bitte melden.

Welche dieser B1 Klassen gehört zu welchen Projekt?
Die Wetter Methode steht im Datenhandler und ist statisch? Woher nimmt die Methode ihre Attribute mit denen sie arbeitet?
 

stg

Top Contributor
Um das was du möchtest zu erreichen, müsstest du vermutlich mit mehreren ClassLoadern herumhantieren.
Alternativ könnten ThreadLocals dem was du suchst nahe kommen. Hier gibt es natürlich wieder andere Fallstricke.
Insgesamt höre ich zwischen den Zeilen aber nur heraus, dass du lediglich ein bisschen Tipparbeit sparen willst. Da helfen aber doch moderne IDEs mit Codevervollständigung usw. Und natürlich programmiert man in Java anders als etwa in C.
Dein "alles in Ordnung"-Beispiel sieht doch vernünftig aus. Du übergibst doch hier auch nirgends einen Konstruktor, sondern eine Referenz auf eine Instanz. Genau so sollte es auch sein.
 

J90

Aktives Mitglied
Im Grunde möchte ich wirklich nur ein wenig Tipparbeit sparen und war eben daran interessiert wie man es denn lösen könnte. Wie anfangs schon geschrieben ist es im Grunde nur ein "Schönheitsfehler", aber praktisch nicht von hoher Wichtigkeit; ich habe mich nur gefragt, ob ich es nicht hätte besser machen müssen, wenn die meisten Programme ohne diesen Zugriff arbeiten. Den Antworten entnehme ich, dass sich der Aufwand in Java nicht lohnt..
Viele Dank ersteinmal ich werde mir das ganze vermerken.
 

mrBrown

Super-Moderator
Mitarbeiter
Im Grunde möchte ich wirklich nur ein wenig Tipparbeit sparen und war eben daran interessiert wie man es denn lösen könnte. Wie anfangs schon geschrieben ist es im Grunde nur ein "Schönheitsfehler", aber praktisch nicht von hoher Wichtigkeit; ich habe mich nur gefragt, ob ich es nicht hätte besser machen müssen, wenn die meisten Programme ohne diesen Zugriff arbeiten.
"Besser" ist die Lösung sicher nicht, dass es in anderen Sprachen anders gemacht wird, liegt eher daran, dass es andere Sprachen sind.
"weniger Tipparbeit" geht hier nur zu Lasten der Codequalität
 

DefconDev

Bekanntes Mitglied
Bei all dem Drama hier :p
Möchte ich nur anmerken dass Methoden-namen, dessen Anfangswort kleingeschrieben wird.

Kein Problem ich helfe gerne weiter :D
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
krgewb Problem mit Umlauten und Eszett bei InputStream Allgemeine Java-Themen 3
Max246Sch Backtracking Problem Box Filler Allgemeine Java-Themen 6
NightVision402 VisualVM Startskript Problem Allgemeine Java-Themen 3
javaBoon86 Email Server Connection Problem Allgemeine Java-Themen 1
F Problem mit PDFBOX Library Allgemeine Java-Themen 1
A Java modul Problem Allgemeine Java-Themen 4
D Read JSON File Problem Allgemeine Java-Themen 9
urmelausdemeis Exception in thread "main" java.lang.Error: Unresolved compilation problem: Allgemeine Java-Themen 7
J Problem mit JasperReports Allgemeine Java-Themen 8
M log4j Problem mit jlink Allgemeine Java-Themen 19
8u3631984 Problem beim Mocken von Record Klassen Allgemeine Java-Themen 4
torresbig Website login Problem - Jsoup, wie bisher, klappt nicht! Allgemeine Java-Themen 31
P Selenium . getText Problem Allgemeine Java-Themen 9
A Jar zu Exe Problem Allgemeine Java-Themen 13
sserio Variablen Liste erstellt und ein Problem mit dem Index Allgemeine Java-Themen 6
S Folgendes Problem bei einem Programm Allgemeine Java-Themen 1
stormyark Problem beim Klassen erstellen Allgemeine Java-Themen 1
A Thread.sleep Problem Allgemeine Java-Themen 2
A Problem bei der Nachbarschafttest Allgemeine Java-Themen 11
Splayfer Problem: no main manifest attribute Allgemeine Java-Themen 3
G javamail Problem beim Empfangen von Nachrichten Allgemeine Java-Themen 3
Splayfer JDA Problem mit MessageCounter Allgemeine Java-Themen 0
Splayfer Problem mit BufferedWriter Allgemeine Java-Themen 3
F Streams als Alternative für dieses Problem ? Allgemeine Java-Themen 15
N Maven Problem mit Datenbanktreiber (H2 Embedded) Allgemeine Java-Themen 12
T Problem beim Umwandeln in eine Jar-Datei Allgemeine Java-Themen 3
B Einfach Elemente zweier Arraylisten kreuz und quer vergleichen, min und max Problem? Allgemeine Java-Themen 16
C ArrayList Problem Allgemeine Java-Themen 3
kev34 nim-Spiel problem Allgemeine Java-Themen 1
D Firebase retrieve data Problem, Child Element wird nicht angesprochen Allgemeine Java-Themen 0
G Welches Problem besteht bei den Typparametern? Allgemeine Java-Themen 5
temi Problem mit Aufrufreihenfolge bei Vererbung Allgemeine Java-Themen 3
Sumo_ow "ArrayIndexOutofBoundsException: 2" Array Problem Allgemeine Java-Themen 6
T PIM basierend auf netbeans via AnyDesk Problem Allgemeine Java-Themen 3
xGh0st2014 Problem mit Java Array Allgemeine Java-Themen 1
Kirby.exe Verständnis Problem bei Rucksack Problem Allgemeine Java-Themen 6
B Eclipse-Lombok-Problem Allgemeine Java-Themen 19
I Input/Output ObjectOutputStream - Problem Allgemeine Java-Themen 7
1 Multiple Choice Knapsack- Problem Allgemeine Java-Themen 2
kodela Problem mit strukturiertem Array Allgemeine Java-Themen 18
E Problem mit Gridlayout und Button Allgemeine Java-Themen 2
A Array Problem Allgemeine Java-Themen 8
bueseb84 Problem Allgemeine Java-Themen 0
S Problem mit Arrays Allgemeine Java-Themen 1
D Nullpointer Exception Problem Allgemeine Java-Themen 5
B Problem mit meinen Klassen Allgemeine Java-Themen 6
A HashMap Methode "get()"-Problem Allgemeine Java-Themen 28
J Problem beim Umstellen auf Java jdk 13 Allgemeine Java-Themen 3
J Problem bei Install java 13 Allgemeine Java-Themen 3
X Profitable Reise Problem Allgemeine Java-Themen 32
A Problem beim öffnen von Java-Installern Allgemeine Java-Themen 1
Dann07 Problem mit JavaMail API Allgemeine Java-Themen 26
J Problem beim Generischen Klassen und Interfaces Allgemeine Java-Themen 2
L Klassen Algorithmus für das folgende Problem entwickeln? Allgemeine Java-Themen 30
J Clear-Problem Allgemeine Java-Themen 10
B Problem zu einem Java Projekt Allgemeine Java-Themen 6
S JFileChooser Problem Allgemeine Java-Themen 4
M Traveling Salesman - MST Heuristik Problem Allgemeine Java-Themen 4
J Traveling Salesman Problem Allgemeine Java-Themen 14
E Java Editor Problem mit 2er Exceptions Allgemeine Java-Themen 12
C code oder Bibliotheken für 2-Center Problem Allgemeine Java-Themen 4
M Salesman Problem - Bruteforce Algorithmus Allgemeine Java-Themen 23
S Methoden Problem mit NullPointerException Allgemeine Java-Themen 9
Javafan02 Problem mit if-clause Allgemeine Java-Themen 17
J Lombok Problem mit Konstruktoren bei Verberbung Allgemeine Java-Themen 1
kodela Event Handling Problem mit der Alt-Taste Allgemeine Java-Themen 16
W Threads Problem Allgemeine Java-Themen 15
D (Verständnis-)Problem mit Unterklasse Allgemeine Java-Themen 4
S Problem mit Generic bei unmodifiableCollection Allgemeine Java-Themen 4
S jserialcomm Problem Allgemeine Java-Themen 1
Flynn Thread-Problem... Allgemeine Java-Themen 2
J Generische Interface - Problem Allgemeine Java-Themen 3
G Problem beim GUI Allgemeine Java-Themen 9
L Applet Problem "security: Trusted libraries list file not found" ? Allgemeine Java-Themen 7
A OOP Problem beim Berechnen der größten Fläche eines Ringes Allgemeine Java-Themen 19
T Problem mit externen Datenbankzugriff über SSH Tunnel Allgemeine Java-Themen 4
F Problem beim Einlesen einer Textdatei Allgemeine Java-Themen 12
S Java OpenOffice Problem mit Windows-Benutzerwechsel Allgemeine Java-Themen 19
K Threads RAM Problem Allgemeine Java-Themen 20
P Operatoren Problem mit Zähler in recursiver Schleife Allgemeine Java-Themen 2
C Int Problem Allgemeine Java-Themen 8
C J2V8 NodeJs Java Bride Problem und Frage!?!? Allgemeine Java-Themen 1
J Problem bei Hashmap Key-Abfrage Allgemeine Java-Themen 4
C Webseiten Programm problem Allgemeine Java-Themen 5
M LocalDate Problem Allgemeine Java-Themen 4
geekex Problem Meldung! Was tun?! Allgemeine Java-Themen 19
T Klassen Override Problem Allgemeine Java-Themen 7
L Unbekanntes Problem Allgemeine Java-Themen 1
FrittenFritze Problem mit einer JComboBox, Event temporär deaktivieren Allgemeine Java-Themen 11
Blender3D Java Swing Programm Windows 10 Autostart Problem Allgemeine Java-Themen 2
F HTTPS Zertifikat Problem Allgemeine Java-Themen 3
M OpenCV KNearest Problem Allgemeine Java-Themen 0
Tommy Nightmare Project Euler: Problem 22 Allgemeine Java-Themen 2
C Abstrakte Klasse, lokale Variable-Problem Allgemeine Java-Themen 1
N Vererbung Design-Problem mit vorhandenen, von der Klasse unabhängigen Methoden Allgemeine Java-Themen 12
P Eclipse Projekt anlegen macht Problem Allgemeine Java-Themen 1
RalleYTN META-INF/services Problem Allgemeine Java-Themen 3
F Java Mail Problem: Authentifizierung wird nicht immer mitgeschickt Allgemeine Java-Themen 1
I Problem beim Aufrufen, von Objektmethoden/ -variablen Allgemeine Java-Themen 6
K Thread Problem Allgemeine Java-Themen 6

Ähnliche Java Themen

Neue Themen


Oben