Eclipse Projekte den BuildPath hinzufügen - Bester Weg?

Volvagia

Top Contributor
Ich weiß nicht, aber ich glaube ich steh gerade tierisch auf dem Schlauch. :/
Ich habe ein Projekt, in dem mehrere andere voneinander unabhängige Teile eingebaut werden können/sollen. Dieser brauchen nur sozusagen als "Eingangsklasse" von einer anderen zu erben. Auf grund der möglichen Größe dieser Teile wollte ich ein eigenes Workset dafür anlegen, und jedes in ein eigenes Projekt legen. Jetzt kann es aber auch sein, dass diese Teile wiederrum wieder mit Klassen für andere Aufgaben kommunizieren müssen. Dadurch müsste ich aber die beiden Projekte sich gegenseitig im Build-Path adden, was aber ja nicht geht.
Die einzige Möglichkeit, die mir sonst noch eingefallen ist, wäre, diese 3. Klassen in ein zusätzliches Projekt zu legen, und dieses wiederrum allen hinzuzufügen.

Gibt es da eventuell noch einen besseren Weg, das zu lösen? :)
 

Wildcard

Top Contributor
Abhängigkeiten dürfen eigentlich immer nur in eine Richtung gehen, von Oben nach Unten. Sprich, die höhere Schicht kennt die tiefere, nicht anders herum. Das gilt sowohl auf Klassen, als auch Package und Projekt Ebene. So verhinderst du zirkuläre Abhängigkeiten.
 

Volvagia

Top Contributor
Ich habe es derzeit in etwa so:

br4twadyyv16yu7tb.jpg


Soll ich es so machen?
Oder gibt es da einen besseren Weg?

br4twyp8v8axayeq7.jpg



Wie meinst du das mit der Abhängigkeit bei Packages?
Wenn ich es jetzt so habe:

Code:
Projekt
------GUI
------------GUI-Logik
------Logik
------Teile
------------Teil 1
------------Teil 2
------------Teil 3

Dann wäre es ja nicht möglich, dass ein Teil tatsächlich auf die Logik zugreift.
Dazu müsste es doch so aussehen:

Code:
Projekt
------GUI
------------GUI-Logik
------Teile
------------Teil 1
------------------Logik
------------Teil 2
------------------Logik
------------Teil 3
------------------Logik

Wodurch wieder die Wiederverwendbarkeit flöten geht. ???:L
 

Paeddah

Mitglied
Hiho und - noch - guten Morgen!

Nach etwas grübeln, habe ich dein Problem verstanden. Auch wenn es mir so vorkommt, als wenn du einen design-technischen Fehler hast. Es kommt mir etwas spanisch vor, dass ein Teil direkt auf die GUI-Logik zugreifen muss. Ggf. solltest du hier über einen Controller oder ähnliches nachdenken.

Sei's drum. Zu deinem ursprünglichen Problem.

Du musst die Abschnitte deines Programmes, die sowohl von den Teilen als auch der restlichen Logik/Implementierung verwendet werden sollen in ein eigenständiges Projekt auslagern.

IMHO verwendest du am Besten in dem "mittleren" Projekt nur Interfaces / ggf. abstrakte Klassen.
Das
Code:
Teil
-Interface erhält dabei set-Methoden für die Interfaces von
Code:
Logik
und
Code:
GUILogik
.

So hast du - grob gesprochen, die drei Projekte:

  • A - Enthält GUI, Programm und die Implementierung von Logik und GUILogik
  • B - Enthält die Interfaces für Teil, Logik und GUILogik
  • C1..n - Enthält die Implementierung von Teil n

Dabei "kennt"
  • A: B und C
  • B: Nichts
  • C: Nur B

Um das eventuell noch deutlicher zu machen noch ein kleines Diagramm - ja nicht 100% konform ich weiss :bae: -:

HelpProjectStructure.png


Grüße

Päddah
 

Volvagia

Top Contributor
Tut mir leid, dachte ich habe es einfach erklärt.
Ich weiß nur nicht, wie ich die Interface benutzen soll. Ich habe sie bisher nur benutzt, um eine beliebige Klasse zu übergeben, um sicherzugehen, dass darin eine Methode existiert.

Ums noch ein wenig zu erklären:

Die GUI sind natürlich GUI-Elemente für das Programm. Die GUI-Logik sind Elemente, die benötigt werden, um die Teile anzuzeigen. Die Mainklasse der Teile erbt von einer abstrakten Klasse, die von JComponent erbt, um sie einzubinden wird eine Instanz erzeugt, und einer Controllerklasse übergeben bzw. durch eine andere Methode wieder ausgeworfen. Die Logik enthält Klassen, die die von den Teilen benutzt werden können, um gewisse Aufgaben zu erfüllen, aber nicht müssen.
 

Paeddah

Mitglied
Hi!

Wie du schon selbst geschrieben hast, sicherst du mit den Interfaces nur ab, dass gewisse Methoden existieren.

Du programmierst in deinen
Code:
Teil
-Implementierungen gegen die Interfaces von
Code:
Logik
und
Code:
GUILogik
. Kümmerst dich also an der Stelle nicht um die konkrete Implementierung.

Kleines Beispiel:

Java:
public class Teil1 implements Teil {

  // .. Kram und Variablen

  @Override
  public void setLogik(Logik logik) {
    this.logik = logik
  }

  @Override
  public void someMagicMethod(Object magicParameter) {
    // Do something magic
    logik.methodOfLogik(magicParameter);
    // More Magic
  }
}

Java:
  public class Programm {
    public void myMethod() {
      Teil t = new Teil1();
      t.setLogik(new LogikImpl);
      Object o ....
      t.someMagicMethod(o);
    }
  }

Java:
public class LogikImpl implements Logik {
 
  @Override
  public String methodOfLogik(magicParameter) {
    // Methode, die durch Logik implementiert werden muss.
  }
}

Der Vorteil ist, dass du die
Code:
Logik
-Implementierung(en) austauschen kannst ohne an den
Code:
Teil
-Implementierungen was ändern zu müssen. Und, deiner Anforderung nach getrennten Projekte wird genüge getan.

Hoffe, dass das den Sachverhalt etwas verdeutlicht hat.

Grüße

Päddah
 

Volvagia

Top Contributor
Vielen Dank. :)
Mir ist jetzt aber noch eingefallen, dass es eigendlich ein Applet werden soll. Deshalb weiß ich nicht, wie ich Bilder aus den ausgelagerten Projekten laden soll. :bahnhof:
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
O Lernen im Team zu arbeiten - Projekte zusammen umsetzen Allgemeine Java-Themen 23
P Projekte entwickeln mit mehreren Personen Allgemeine Java-Themen 1
K Größere Java-Projekte: Struktur Allgemeine Java-Themen 13
M Open Source Projekte => wo herunterladen? Allgemeine Java-Themen 2
M Open Source Projekte / source - binaries Allgemeine Java-Themen 13
S Externe Eclipse Projekte dynamisch einbinden Allgemeine Java-Themen 3
C Open Soure Projekte für parallele Programmierung Allgemeine Java-Themen 6
M Methoden/Klassen für andere Projekte Allgemeine Java-Themen 4
R Welche waren eure ersten Projekte? Allgemeine Java-Themen 10
K Eclipse automatisch Projekte cleanen und builden lassen Allgemeine Java-Themen 5
Hotkey Beispiel für grosse Java Projekte Allgemeine Java-Themen 9
E Subversion 2 Projekte Allgemeine Java-Themen 5
P 2 Projekte Allgemeine Java-Themen 2
T Problem: Ein Package für 2 Projekte? Allgemeine Java-Themen 3
R Eigene Konfigurationsdatei für größere Projekte. Allgemeine Java-Themen 4
C Communication zwischen zwei Projekte - static objects Allgemeine Java-Themen 4
M Classpath und Buildpath Allgemeine Java-Themen 5
V Verständnisproblem Eclipse BuildPath <-> Import Jar Fi Allgemeine Java-Themen 1
R -jar der Windows-Registry hinzufügen Allgemeine Java-Themen 1
N einem Array Objekte hinzufügen die ihr Array position gespeichert haben Allgemeine Java-Themen 34
C Java11+ JavaFX HtmlEditor ContextMenu neue MenuItems hinzufügen Allgemeine Java-Themen 5
Z Mit Java 8+ Streams Zeilen nummern zu Zeilen hinzufügen Allgemeine Java-Themen 17
CodingBerlin Zahlungsmethode hinzufügen in App Allgemeine Java-Themen 2
Y Wie kann ich ein erstelltes JPanel meinem Frame hinzufügen? Allgemeine Java-Themen 1
Y ImagePanel von anderer Klasse in eine MainFrame Klasse hinzufügen. Allgemeine Java-Themen 1
Thallius Zeitzone zu einem LocalDate hinzufügen aber ohne es zu ändern... Allgemeine Java-Themen 2
L Classpath Zur Laufzeit bestimmte Klassen in Classloader hinzufügen? Allgemeine Java-Themen 4
D Methoden Methoden anpassen und fehlende Funktionen hinzufügen Allgemeine Java-Themen 475
A Website zur Ausnahmeliste hinzufügen (Mac) Allgemeine Java-Themen 3
K JDK installieren JavaDoc hinzufügen Allgemeine Java-Themen 10
perlenfischer1984 Reflection : Element in generische Liste hinzufügen Allgemeine Java-Themen 4
4 Swing Durch klicken auf Button Labels einem Panel hinzufügen Allgemeine Java-Themen 4
KaffeeFan Artikel hinzufügen Allgemeine Java-Themen 3
T itext: text in ein textfeld hinzufügen Allgemeine Java-Themen 2
Streeber Probleme mit AWT-EventQueue: ArrayList Elemente hinzufügen Allgemeine Java-Themen 1
X Zeile unter einer bestimmen Zeile hinzufügen(File) Allgemeine Java-Themen 1
B Per Buttonklicks einer Liste Wörter hinzufügen - Wie umsetzen? Allgemeine Java-Themen 11
M Zeilen zu einem DefaultTableModel hinzufügen Allgemeine Java-Themen 1
T Windows-Kontextmenü Eintrag hinzufügen? Allgemeine Java-Themen 3
L Leerzeichen zu string hinzufügen, um eine gerade zahl zu erhalten Allgemeine Java-Themen 9
M lucene suchen/löschen/hinzufügen Allgemeine Java-Themen 4
S Speichern/Laden/Hinzufügen/Löschen der Array-Wörter; unerwartete Ausgabe Allgemeine Java-Themen 6
J Elemente zu einer List hinzufügen? Allgemeine Java-Themen 9
S Java Applikation zu autostart hinzufügen Allgemeine Java-Themen 7
X Dynamisches hinzufügen von Panles Allgemeine Java-Themen 4
S Hinzufügen von Elementen zu Listen Allgemeine Java-Themen 4
D Eintrag im Windows Kontextmenü hinzufügen Allgemeine Java-Themen 4
A PDFs splitten mergen und Seitenzhalen hinzufügen Allgemeine Java-Themen 5
G Anonymen Buttons in for schleife ActionListener hinzufügen Allgemeine Java-Themen 5
B Enums hinzufügen Allgemeine Java-Themen 6
P jfreeChart y- Achsen hinzufügen Allgemeine Java-Themen 2
B EventListener zu einem COM Port hinzufügen Allgemeine Java-Themen 10
MQue Komponenten einem JPanel hinzufügen Allgemeine Java-Themen 9
D UnsupportedOperationException beim Hinzufügen eines Objekts Allgemeine Java-Themen 4
MQue JButton zu JPanel hinzufügen Allgemeine Java-Themen 7
M Problem mit ArrayList und dem hinzufügen Allgemeine Java-Themen 20
S Hinzufügen einer Klasse! Allgemeine Java-Themen 3
E Child in JTree hinzufügen Allgemeine Java-Themen 4
R Hinzufügen von Dateien in einem Verzeichniss Auto. erkennen! Allgemeine Java-Themen 15
K Listener einem Objekt hinzufügen Allgemeine Java-Themen 3
G nichtabstrakte Funktion zu einer Interface hinzufügen Allgemeine Java-Themen 6
K daten in bestehenden array hinzufügen Allgemeine Java-Themen 7
H in JOE die Parameter -xmx256m -xrs hinzufügen Allgemeine Java-Themen 2
G an datei hinzufügen Allgemeine Java-Themen 2
D zu String[] nachträglich hinzufügen? Allgemeine Java-Themen 5
M dateien in einer zip datei hinzufügen - Archiv updaten Allgemeine Java-Themen 11
M in jar eine neue datei per JarOutputStream hinzufügen Allgemeine Java-Themen 2
R Datei einlesen, Strings hinzufügen, abspeichern Allgemeine Java-Themen 4
M Bean Listener hinzufügen und Methode später überschreiben Allgemeine Java-Themen 27
G Zum Datum 30 Tage oder 1 Monat hinzufügen Allgemeine Java-Themen 10
G Einer Datei Text hinzufügen Allgemeine Java-Themen 4
A Dynamisch Attribute hinzufügen Allgemeine Java-Themen 3
F Neue Bibliothek dem JDK hinzufügen Allgemeine Java-Themen 5

Ähnliche Java Themen

Neue Themen


Oben