Interaktion von Objekten verschiedener Klassen...

fhs14647

Mitglied
Werte Java Profis
Ich habe eine Sache, bei der ich in Java nicht ganz durchblicke. Konkret ist es die Interaktion von Objekten verschiedener Klassen. Konkret geht es, glaube ich, um Aggregationen, also das Einbauen von komplexen Objektvariablen in Klassen. Wenn ich mehrere Klassen habe und diese in der public static void main instanziiere, ist für mich alles logisch. Wann ich aber bei einem Klassenkonstruktor andere komplexe Datentypen als Parameter mitübergeben muss, wann ich im Konstruktor direkt ein Objekt instanziieren muss, das ist sehr verwirrend für mich..

Meine Fragen: wer kennt hier ein gutes, verständliches Tutorial, bei der genau diese Thematik erklärt wird.

Vielleicht ein Beispiel: es sollen die Klassen Lehrer, Unterrichtsfächer, Schüler und Schulklassen angelegt werden. Mit einem Lehrer wird auch dessen Unterrichtsfach angelegt, mit dem Schüler wird auch dessen Schulklassen angelegt. Wie würde man so was machen??

Danke vorab
FHS
 
X

Xyz1

Gast
Ein Klassendiagramm wäre hier hilfreich...

sk.png
Java:
    public static void main(String[] args) {
        List<Schueler> schueler = new ArrayList<Schueler>();
        schueler.add(new Schueler());
        List<Lehrer> lehrer = new ArrayList<Lehrer>();
        lehrer.add(new Lehrer());
        Schulklasse sk = new Schulklasse(schueler);
        Unterrichtsfach uf = new Unterrichtsfach(lehrer);
    }

hoffentlich verwechsele ich nix mit Aggregation.
 
Zuletzt bearbeitet von einem Moderator:

Baldur

Aktives Mitglied
Ein Tutorial kann ich spontan nicht nennen, aber ich würde dir empfehlen, Klassen und vor allem deine Konstruktoren so wenig komplex wie möglich zu machen.

Hast du dich denn schonmal mit Datenbanknormalisierung auseinandergesetzt? Dabei gehts auch darum, die Komplexität einzelner Tabellen zu minimieren und auf das Wesentliche zu reduzieren. Das wäre für den Anfang ein sinnvoller Schritt, und im Anschluss kannst du, wie DerWissende vorschlägt auch ein Klassendiagramm draus machen, um dir das alles besser vorstellen zu können.

Der Konstruktor für z.B. die Lehrer-Klasse sollte dann auch nur das allernötigste bekommen, sprich z.B. den Namen. Alles andere sollte im Nachhinein per setter-Methoden übergeben werden. Wenn nämlich der Konstruktor von einem Unterrichtsfach den Lehrer braucht, der das Fach hält, der Lehrer aber auch eine Liste all seiner Fächer im Konstruktor haben will, dann hast du ein Problem, weil du keins der Objekte ohne das andere erstellen kannst. Das Problem würdest du lösen, wenn du erst die Objekte alle anlegst, und sie später z.B. mit lehrer.addFach(geschichte); verknüpfst.
 
X

Xyz1

Gast
Das stimmt. Ein Unterrichtsfach beinhaltet Lehrer; eine Schulklasse beinhaltet Schüler. Wenn da "Zyklen" beinhaltet sind, wird's sehr kompliziert.

Ein Lehrer könnte aber auch Unterrichtsfächer beinhalten; ein Schüler könnte aber auch Schulklassen beinhalten.

Also ich bräuchte etwas mehr darum wissen, um helfen zu können.
 
X

Xyz1

Gast
Nonsens, ein Schüler beinhaltet 1 bis n Klassen (Verlauf ja/nein), ein Lehrer beinhaltet 1 bis n Fächer (ausgebildet nur für ein Fach? ja/nein). So ergibt's doch Sinn.

Will man jetzt wissen, wer alles das Fach Geschichte unterrichtet, schaut man nicht in Geschichte vorbei, sondern schaut bei jedem Lehrer vorbei.
 

Baldur

Aktives Mitglied
Das ist, was ich mit der Datenbanknormalisierung meinte. Am Ende hat man die Klassen Schüler, Lehrer, Fach usw mit den notwendigsten Attributen und kennt die Beziehungen zwischen den Klassen. Lehrer:Fächer ist eine 1:n Beziehung und lässt sich mit einer Liste von Fächern bei jedem Lehrer implementieren.
Schwieriger wäre da die Beziehung zwischen Klasse und Fächer, die müsste ja eigentlich m:n sein. Das könnte man aber auch implementieren, indem man Klassen und Fächern jeweils eine Liste für das jeweils andere Objekt gibt.
 
X

Xyz1

Gast
die müsste ja eigentlich m:n sein.

n:m wird doch mit einer Zwischentabelle aufgelöst. Aber wir sind doch gar nicht bei Databases. ;)

https://de wikipedia org/wiki/Kardinalit%C3%A4t_%28Datenbankmodellierung%29#n:m und ff.

nicht direkt umgesetzt werden.

Also ich denke, wir schmeißen hier gerad alle in einen Topf. Das sollten wir nicht tu. Ein ER hat er glaub ich nicht gefragt.

Ich möchte jetzt auch gar nicht, eine Enterprise Business Lösung hervortun.
 

Baldur

Aktives Mitglied
Richtig, aber die Normalisierungen bei Datenbanken lässt sich ja auch bei Klassen anwenden und hilft ggf auch sich leichter vorzustellen, wie die Klassen am Ende aussehen sollen. Es hilft ja auch der Kapselung, wenn man vorher die Komplexität der Objekte reduziert.

Bei Datenbanken braucht man für n:m dann die Verknüpfungstabelle, aber bei dem Programm würde es reichen wenn die Klassen-Klasse einfach eine Liste von Fächern hat. Ggf kann auch jedes Fach noch eine Liste von Klassen haben, die in dem Fach unterrichtet werden, ist aber eventuell nicht wirklich notwendig.
 

fhs14647

Mitglied
Hallo Profis
Zuerst mal ein Lob, Ihr verdient die Anrede "Profis" zur Recht ;-)
Der Hinweis mit der Datenbankmodellierung hilft tatsächlich! Auch den möglichen Zirkelbezug von Lehrern und Fächern habe ich kapiert.
Was mich aber auch immer verunsichert ist der Ort der Instanziierung der Objekte. Im Fall von DerWissende wurden alle Objekte in der main-Methode der Schulklasse gemacht.
Wann (??) macht man die Objektinstanziierung beispielsweise NICHT in der main-Methode, sondern direkt im Konstruktor einer Klasse (auch bei den von Euch geschilderten Nachteilen eines Zirkelbezuges)
Ein Beispiel, das sicher nicht gerade intelligent ist .. Wenn ein Lehrerobjekt angelegt wird, soll immer auch ein gesonderter, reservierter Parkplatz angelegt werden, also eine 1:1 Beziehung. Wäre der folgende Code hier sinnvoll??

Java:
public class Lehrer {  
    private String name;
    private UnterrichtsFaecher fach;
    private LehrerParkPlatz platz;
  
    public Lehrer(String _name)
    {
      this.name = _name;
      platz = new LehrerParkPlatz();
    }
 
X

Xyz1

Gast
Also gut. Parkplätze sind in der Realität dynamisch. Kommt ein neuer Lehrer hinzu, wird schnell ein Parkplatz gebaut. Weil ein Parkplatz so einfach gebaut werden kann, wird ein Parkplatz auch schnell wieder entfernt, wenn ein Lehrer entfernt wird.

Also etwas macht das sin.

Komposition ist die verstärkte Aggregation als Teil-Ganzes-Beziehung. Kein Parkplatz ohne Lehrer, vereinfacht gesagt. In der Realität nicht immer so, aber in deinem Beispiel schon. und dann könnte man Parkplätzen auch noch (Code-)Namen geben. ;)
 

fhs14647

Mitglied
OK, ich glaube, langsam checke ich es ;-)

Danke Euch allen für Eure Hilfe!
Noch eine Frage (und speziellen Dank) an DerWissende: mit welchem Tool machst du deine tollen Klassendiagramme. Ich arbeite mit der IDE Netbeans, gibt es hier ev. ein Plugin?

Liebe Grüße und danke nochmals
FHS
 

mrBrown

Super-Moderator
Mitarbeiter
Ähnliche Java Themen
  Titel Forum Antworten Datum
CT9288 Interaktion mit laufendem Programm -Fachbegriffe Java Basics - Anfänger-Themen 2
D Interaktion zweier Objekte Java Basics - Anfänger-Themen 5
M Drag & Drop - Interaktion zwischen Java und dem OS Java Basics - Anfänger-Themen 1
H Interaktion von GUI-Klassen - wie? Java Basics - Anfänger-Themen 8
F Probleme bei Interaktion mit Prozeß Java Basics - Anfänger-Themen 9
D Array List mit Objekten sortieren Java Basics - Anfänger-Themen 2
T Kollision von 2 Objekten Java Basics - Anfänger-Themen 2
T Variable von Objekten in einer Methode überprüfen Java Basics - Anfänger-Themen 26
B Reflection ändern von Objekten in Objekten Java Basics - Anfänger-Themen 12
H Kompliziertes Sortieren einer ArrayList mit Objekten(Sortieren nach X und Y) Java Basics - Anfänger-Themen 11
T Permanentes speichern von Objekten in einer ArrayList Java Basics - Anfänger-Themen 6
N Vererbung Queue bestehend aus Superclass- und Subclass-Objekten Java Basics - Anfänger-Themen 7
B Compiler-Fehler Array aus Objekten übergeben Java Basics - Anfänger-Themen 7
YAZZ Schlüsselworte Töten von Objekten Gameover Java Basics - Anfänger-Themen 2
F Abstand zwischen zwei Objekten berechnen wie? Java Basics - Anfänger-Themen 1
districon Vergleichen von Objekten Java Basics - Anfänger-Themen 20
Zeppi OOP Array in Objekten Java Basics - Anfänger-Themen 4
LetsSebi Methode, die einen arry von objekten speichert in einer datei Java Basics - Anfänger-Themen 6
JavaNoobi Try and Catch und übergabe von Objekten Java Basics - Anfänger-Themen 2
A Klasse Menge mit Objekten der Klasse Person Java Basics - Anfänger-Themen 8
S Auf Array aus Objekten zugreifen? Java Basics - Anfänger-Themen 1
D Mit Objekten rechnen, Textfield, JavaFX, Noob Java Basics - Anfänger-Themen 8
N enum Attribut von Objekten einer Hashmap ausgeben Java Basics - Anfänger-Themen 6
A Auf Eigenschaften von Objekten anderer Klassen zugreifen Java Basics - Anfänger-Themen 5
G Problem beim Speichern von Objekten in einer Datei Java Basics - Anfänger-Themen 7
N Klassen Rekursion mit Feldern von Objekten Java Basics - Anfänger-Themen 14
D Operatoren Mit Objekten rechnen Java Basics - Anfänger-Themen 7
E Datentypen Einfügen von Objekten in eine Map Java Basics - Anfänger-Themen 2
S Pane nach speziellen Child Objekten durchsuchen Java Basics - Anfänger-Themen 3
B ID von unterschiedlichen Objekten bekommen? Java Basics - Anfänger-Themen 2
T Daten von Objekten speichern Java Basics - Anfänger-Themen 7
PaperHat Programmieraufgabe - Objekte in Objekten Java Basics - Anfänger-Themen 2
L Rechnen mit Objekten Java Basics - Anfänger-Themen 3
S werte von objekten in schleife verändern Java Basics - Anfänger-Themen 14
D Zusammenarbeit von Objekten Java Basics - Anfänger-Themen 1
Y Begrenzte Anzahl an Objekten? Java Basics - Anfänger-Themen 12
Kornblume Nulltyp eines Arrays von Objekten? Java Basics - Anfänger-Themen 10
A Frage zur Aufgabe Uhrzeit einstellen mit Objekten Java Basics - Anfänger-Themen 18
M Generische Liste aus Comparable-Objekten Java Basics - Anfänger-Themen 6
G Klassen Call by Value auch bei Objekten? Java Basics - Anfänger-Themen 2
R Verständnisfrage zu Objekten u. Übergabeparameter Java Basics - Anfänger-Themen 8
arjoopy Kapselung Übergabe von Objekten aus ArrayList Java Basics - Anfänger-Themen 4
schoenosrockos Unterschied zwischen Objekten und vererbungen Java Basics - Anfänger-Themen 1
M Speichern von Objekten - Verfügbarkeit bei erneutem Aufruf Java Basics - Anfänger-Themen 3
R Methoden Methode ruft Methode auf, ruft Methode auf (mit Objekten) Java Basics - Anfänger-Themen 4
S Serialisierung: Laden von Objekten - Risiken? Java Basics - Anfänger-Themen 4
Shizmo PriorityQueue mit Objekten Java Basics - Anfänger-Themen 10
E Instanzieren von Objekten verkürzen Java Basics - Anfänger-Themen 1
D Effiziente Verwaltung der Objekten und Unterobjekten Java Basics - Anfänger-Themen 18
N Dauer zwischen zwei LocalDateTime Objekten berechnen? Java Basics - Anfänger-Themen 4
L Subklasse von ArrayList nur mit bestimmten Objekten füllen Java Basics - Anfänger-Themen 1
E Erste Schritte Gute Erklärung zu Objekten / Klassen / Methoden / Sichtbarkeiten auf Deutsch Java Basics - Anfänger-Themen 3
S Problem mit augabe von Objekten Java Basics - Anfänger-Themen 3
T Junit Mockito: Instanz von inneren erzeugten Objekten Java Basics - Anfänger-Themen 4
P Zugriff auf Felder in ArrayList Objekten Java Basics - Anfänger-Themen 2
W Was passiert mit Objekten die nicht in Objektvariablen initialisiert werden ? Java Basics - Anfänger-Themen 3
D Zugriff auf von einer anderen Klasse erstellten Objekten Java Basics - Anfänger-Themen 5
S Liste mit Objekten und Listen Java Basics - Anfänger-Themen 9
Y Gleiche Arrays aus einem Array mit Objekten Java Basics - Anfänger-Themen 5
K Min eines Arrays mit Objekten Java Basics - Anfänger-Themen 6
M Array mit Objekten lässt sich nicht auslesen Java Basics - Anfänger-Themen 10
T Statische Arrays von Objekten Java Basics - Anfänger-Themen 2
J Methoden Einfügen von Objekten nach Alphabet in ArrayList funktioniert nicht Java Basics - Anfänger-Themen 2
B Erste Schritte Anzeige von Graphics Objekten einzeln aktualisieren Java Basics - Anfänger-Themen 1
TheSorm Koordinaten von gedrehten Objekten Java Basics - Anfänger-Themen 4
D Bestimmte Werte von Objekten aus einer ArrayList in eine andere ArrayList kopieren Java Basics - Anfänger-Themen 14
B Aliasing bei null-Objekten Java Basics - Anfänger-Themen 3
O Java Erzeugung von neuen Objekten Java Basics - Anfänger-Themen 1
J Verständnisfragen zu dem Thema Objekten Java Basics - Anfänger-Themen 7
J Array von Objekten, wie schauts im Heap / Stack aus ? Java Basics - Anfänger-Themen 7
O Größe von Objekten Java Basics - Anfänger-Themen 5
Y Variable Menge von Objekten erzeugen und mit ihren Attributen rechnen Java Basics - Anfänger-Themen 7
kaoZ Best Practice Verständnisfrage Listener bei lokalen Objekten Java Basics - Anfänger-Themen 8
F Umgang mit referenzierten Objekten bei ArrayList Java Basics - Anfänger-Themen 1
M Löschen von Objekten während Iteration über Liste Java Basics - Anfänger-Themen 9
E Array von Objekten einer selbst definierten Klasse mit eindeutigem Namen Java Basics - Anfänger-Themen 2
C For schleife mit Array und Objekten Java Basics - Anfänger-Themen 17
kaoZ Input/Output Android : Deserialisieren von mehreren Objekten in einer Datei Java Basics - Anfänger-Themen 0
U Übergabe von Objekten Java Basics - Anfänger-Themen 0
C Werte aus zwei Objekten miteinander vergleichen Java Basics - Anfänger-Themen 3
Joew0815 Interface JSON Objekte aus Java Objekten erzeugen Java Basics - Anfänger-Themen 9
D Sortieren von int Werten von Objekten in einer LinkedList, kann nicht auf int Werte zugreifen Java Basics - Anfänger-Themen 3
E Erste Schritte Sortieren von Objekten in doppelt-verlinkter Liste Java Basics - Anfänger-Themen 9
R addition von 2 Array Objekten Java Basics - Anfänger-Themen 5
V Grundlegendes Zu Objekten/Klassen Java Basics - Anfänger-Themen 10
S Problem bei Kollision zwischen Array-objekten! Java Basics - Anfänger-Themen 2
C Probleme mit neuen Objekten Java Basics - Anfänger-Themen 3
S Erste Schritte Bluej Automatisches Einfügen von Objekten Java Basics - Anfänger-Themen 4
D ID von Objekten in Arraylist Java Basics - Anfänger-Themen 3
B Datentypen Inhalt von Objekten miteinander vergleichen Java Basics - Anfänger-Themen 2
R Erste Schritte Objekte mit anderen Objekten als Inhalt Java Basics - Anfänger-Themen 4
V Frage zum Löschen von Objekten Java Basics - Anfänger-Themen 2
C ArrayList mit Objekten Java Basics - Anfänger-Themen 4
P Mindestangaben beim anlegen von Objekten Java Basics - Anfänger-Themen 4
H Array von Klassen Objekten Java Basics - Anfänger-Themen 6
J Array mit Objekten sortieren Java Basics - Anfänger-Themen 11
J Bilder von Objekten Java Basics - Anfänger-Themen 3
G Scrollbares Fenster bei mehr als 5 Objekten Java Basics - Anfänger-Themen 4
B Methoden auf Objekten Java Basics - Anfänger-Themen 12
D OOP Objekt in mehreren Objekten Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben