Wie genau programmiere ich eine Assoziationsklasse?

DennisXX

Bekanntes Mitglied
Code:
-------   *                                     * --------------
|Leser|  -----------------------------------------|Buchexemplar|
-------                           |               --------------
                                  |
                             ----------
                             |Ausleihe|
                             ----------

Ich hoffe, dass Bild kann jeder sehen. zwischen den Klassen Leser (Attribute "name" und "adresse", Multiplizität *) und Buchexemplar (Attribute "sigantur", Multiplizität *) bestehe eine n:m Beziehung, die mithilfe der Assoziationsklasse Ausleihe (Attribute "beginn" und "ende") gebildet wird.

Dieses Beispiel habe ich aus Heide Balzert, Lehrbuch der Objektmodellierung, Seite 173. Diese Buch ist leider sehr theoretisch und ich habe keinerlei Ahnung, wie man so etwas in Java programmieren könnte. Kann mir vielelicht jemand hier im Forum ganz einfache Beipsielcode posten, wie ich so etwas machen könnte? Was ist weiß ist nur, dass in den Objekten der Klassen Leser und Buchexemplar so etwas wie Vector oder Arraylists sein müssen.

Besten Dank für eure Unterstützung !!
 
Zuletzt bearbeitet:
F

Firephoenix

Gast
ganz einfaches Beispiel wäre:

Das Objekt leser hat eine eindeutige ID

Das Objekt Buch hat eine eindeutige ID

Die Klasse ausleihe besteht z.b. aus einer arraylist die jeweils einen integer-array mit 2 feldern aufnimmt
1. feld: =leserid
2. feld = buchid

somit kennt ausleihe welcher leser gerade welches buch hat bzw umgekehrt.

wie du das ganze dann einließt bzw ausließt ist dann wieder syntaxkram und hat wenig mit der logik zu tun, man kann es sicherlich auch eleganter als mit der arraylist lösen, aber das wäre mein 1. ansatz (als anfänger).

Gruß Firephoenix
 

Landei

Top Contributor
Das wäre eher die Variante, wie man das in eine Datenbank packen würde.

Die Frage ist immer, in welcher Richtung man auf was zugreifen will. Hier wäre interessant zu wissen, welche "Ausleihen" ein Leser hat (z.B. um zu sehen, ob er Strafe zahlen muss oder noch ein weiteres Buch ausleihen darf) und andersherum würde einen interessieren, wer ein bestimmtes Buch ausgeliehen hat. Also wäre der praktischste Ansatz, das jeder Leser und jedes Buch eine Liste von Ausleihen besitzt. Aber das kommt natürlich immer auch auf den konkreten Anwendungsfall (und die verwendete Technologie, z.B. Persistenz-Frameworks wie JPA, Hibernate u.s.w.) an.
 

Soahc

Aktives Mitglied
Hallo Dennis,

die einfachste minimal-Variante für die Ausleihe würde etwa so aussehen:

Java:
package library;

public class Ausleihe {
	
	private Leser leser;
	private Buchexemplar exemplar;
	
	public Leser getLeser() {
		return leser;
	}

	public Buchexemplar getExemplar() {
		return exemplar;
	}

	public Ausleihe(Leser leser, Buchexemplar exemplar){
		this.leser = leser;
		this.exemplar = exemplar;
	}
}

Normalerweise benutzt man eine solche assoziative Klasse um noch weitere Informationen abzuspeichern. Z.B. von wann bis wann wurde das Buch ausgeliehen, aber das musst Du dann selbst entscheiden.

Wenn Du jetzt im Hauptprogramm irgendwo jeweils eine ArrayList für Leser und Buchexemplare hast, dann könntest Du die Assoziation z.B. so herstellen:

Java:
package library;

import java.util.ArrayList;

public class Main {

	private ArrayList<Leser> leserListe = new ArrayList<Leser>();
	private ArrayList<Buchexemplar> exemplarListe = new ArrayList<Buchexemplar>();
	private ArrayList<Ausleihe> leihListe = new ArrayList<Ausleihe>();
	
	...
	
	public void irgendeineMethode(){
		
		...
		
		//Es müssen jeweils mindestens ein Leser und ein Exemplar in den jeweiligen Listen vorhanden sein.
		
		Leser leser = leserListe.get(0);
		Buchexemplar exemplar = exemplarListe.get(0);
		
		Ausleihe leihe = new Ausleihe(leser, exemplar);
		leihListe.add(leihe);
	}
}

Die "leihListe" könnte alternativ, bzw. zusätzlich auch beim Leser selber oder beim Exemplam gespeichert sein. Diese Designentscheidung hängt aber von der jeweiligen Situation ab. Gruß, Phill
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
T Kann mir jemand wörtlich erklären, was in dem Code genau passiert? Java Basics - Anfänger-Themen 1
B 49-bit-zahl mit genau 6 Einsen bauen? Java Basics - Anfänger-Themen 21
H BlueJ: was genau ist hier der Fehler? Java Basics - Anfänger-Themen 14
berserkerdq2 Sende eine Nachricht an den Client und leere den Ausgabestorm, was ist damit genau gemeint? Java Basics - Anfänger-Themen 3
U Wie genau funktioniert der ! Operator Java Basics - Anfänger-Themen 3
J Hallo zusammen , was macht diese Methode hier genau? Java Basics - Anfänger-Themen 3
M Was wird hier genau getestet? Java Basics - Anfänger-Themen 9
jhCDtGVjcZGcfzug Was genau ist mit diesem Quellcode gemeint? Java Basics - Anfänger-Themen 5
P Was genau bringt mir es ein Array in eine Liste zu bringen Java Basics - Anfänger-Themen 3
S Was bewirkt ganz genau throw hinter einem Funktionsnamen? Java Basics - Anfänger-Themen 14
B Webhooks - was genau ist das und was kann damit JAVA Java Basics - Anfänger-Themen 5
B OCR - Rechnungserkennung, wie geht das genau? Java Basics - Anfänger-Themen 59
L Was genau macht -> Java Basics - Anfänger-Themen 18
Dawinartor Erste Schritte Was genau steckt dahinter? Java Basics - Anfänger-Themen 7
J Was genau macht die Methode close() im InputStream? Java Basics - Anfänger-Themen 5
C Polymorphie Was genau ist Polymorphie und wann genau sollte man es verwenden? Java Basics - Anfänger-Themen 9
A Was genau ist ein Standardkonstruktor Java Basics - Anfänger-Themen 10
B Wie funktionieren diese Methoden in diesem Sortierverfahren genau? Java Basics - Anfänger-Themen 2
B Für gesamte Schleife genau X Sekunden benötigen Java Basics - Anfänger-Themen 1
J TabelView - Kann mir jemand die Sequenz genau erklären ? Java Basics - Anfänger-Themen 2
L Was genau macht "public static void" ? Java Basics - Anfänger-Themen 12
G Methoden Was genau macht die Methode light.setInfluencingBounds ? Java Basics - Anfänger-Themen 5
H Wer genau ist 'Er'? Java Basics - Anfänger-Themen 4
K Was macht hier genau return? Java Basics - Anfänger-Themen 2
B Was genau ist getClass().getRessouce() Java Basics - Anfänger-Themen 1
Y Wie setze ich genau eine Stückliste (UML) in Java um? Java Basics - Anfänger-Themen 9
D Was genau ist JDBC? Java Basics - Anfänger-Themen 2
K Code vereinfachen mit Schleife, aber wie genau? Java Basics - Anfänger-Themen 3
L Jarfiles packen, wie geht's genau? Java Basics - Anfänger-Themen 12
D Wann genau nutze ich ein solches Interface? Java Basics - Anfänger-Themen 3
K Wann genau brauche ich die Anweisung gleich null? Java Basics - Anfänger-Themen 10
J keyListener - Genau 1 Aktion soll bei 1 Tastenausdruck ausgeführt werden Java Basics - Anfänger-Themen 11
A Wenn genau welche Liste verwenden? Java Basics - Anfänger-Themen 6
S Erste Schritte Konstruktor - wie genau funktioniert der Code? Java Basics - Anfänger-Themen 16
J Klickposition genau bestimmen Java Basics - Anfänger-Themen 12
N aktuelle Datum Mikrosekunden genau bestimmen Java Basics - Anfänger-Themen 8
S Dezimale Konstanten sind immer positiv oder null - was heisst das den genau? Java Basics - Anfänger-Themen 2
F Was soll dieses Programm genau machen ? Java Basics - Anfänger-Themen 9
D Wie genau kann ich in Java Komponenten entwickeln? Java Basics - Anfänger-Themen 6
D Wann genau abstrakte Klasse und wann ein Interface verwenden? Java Basics - Anfänger-Themen 4
D Was genau bedeutet und bewirkt dieses @override? Java Basics - Anfänger-Themen 15
M Was ist genau eine Abstraktion in java Java Basics - Anfänger-Themen 3
J Was genau davon ist Anweisung, was Deklaration? Java Basics - Anfänger-Themen 2
bigbasti Warum genau braucht man Interfaces? Java Basics - Anfänger-Themen 10
A Was bedeutet folgende Programmcodezeile genau Java Basics - Anfänger-Themen 6
B Zeitmessung nicht genau genug Java Basics - Anfänger-Themen 11
L Hilfe, ich versteh nicht was mein Prof genau von mir will! Java Basics - Anfänger-Themen 9
C Wie genau geht man bei der Konzeptionierung vor? Java Basics - Anfänger-Themen 5
P Was genau bedeutet Feld Java Basics - Anfänger-Themen 3
P Was genau bedeutet "public static void main(String[] ar Java Basics - Anfänger-Themen 10
S Stack.pop() wie genau funktioniert das? Java Basics - Anfänger-Themen 3
D Mathematik in Java - genau? Java Basics - Anfänger-Themen 6
X Was genau heißt "public static void main(String[] args) Java Basics - Anfänger-Themen 4
S Programmiere Einarmigen Banditen Java Basics - Anfänger-Themen 11
W Wie programmiere ich einen Potenzrechner? Java Basics - Anfänger-Themen 5
T Netbeans und Eclipse Probiere programmiere probiere Java Basics - Anfänger-Themen 2
G suche den Begriff & wie programmiere ich sowas (ich ändere den Titel dann) Java Basics - Anfänger-Themen 2
E wie programmiere ich "vielfaches einer natürlichen zahl Java Basics - Anfänger-Themen 3
Kerstininer Vererbung Hilfe beim lernen von Objektorientierung für eine Klausur Java Basics - Anfänger-Themen 10
K Warum wird hier nur etwas in eine txt Datei geschrieben und nicht in alle drei (InputStream/OutputStream/Reader/Writer) Java Basics - Anfänger-Themen 1
I In unterschiedlichen Applikation Zugriff auf eine gemeinsame Anwendung? Java Basics - Anfänger-Themen 8
D 2 ArrayListen gleich sortieren bzw. eine Liste anhand einer anderen Sortieren Java Basics - Anfänger-Themen 6
T Ich brauche eine Schleife die eine beliebige Zahl so lange durch 10 teilt bis zur Null Java Basics - Anfänger-Themen 5
S Java: Wie sortiere ich eine ArrayList benutzerdefinierter Objekte nach einem bestimmten Attribut? Java Basics - Anfänger-Themen 2
J Eine konzeptionelle Frage zu OOP Java Basics - Anfänger-Themen 3
N Ich kriege ganze zeit die Fehlermeldung "Inhalt der Zwischenablage kann nicht in die ausgewählten Elemente eingefügt werden" hat jemand eine Lösung? Java Basics - Anfänger-Themen 6
M Vergleichen, ob eine Liste länger als andere ist Java Basics - Anfänger-Themen 6
T Methode soll etwas ausrechnen und zurückgeben (klappt nd) hat wer eine Idee? Java Basics - Anfänger-Themen 11
Shadowrunner Variablen Gibt es eine Möglichkeit die Ziffern/Stellen einer Zahl fest zu legen? Java Basics - Anfänger-Themen 3
Kingdako Wie löse ich eine Mathematische Formel mit Arrays und Schleifen? Java Basics - Anfänger-Themen 32
M Datentypen While-Schleife eine Java Methode erstellen Java Basics - Anfänger-Themen 3
G Wie wartet man bis ein URL eine Antwort zurückgibt? Java Basics - Anfänger-Themen 5
berserkerdq2 Intelij, wie kann ich einstellen, dass die aktuelle Klasse ausgeführt wird, wenn ich aufs Startsymbol drücke, gibts da eine Tastenkombination? Java Basics - Anfänger-Themen 11
S 2 Reihen ratio-btn, eine Reihe funktioniert andere nicht Java Basics - Anfänger-Themen 4
T Eingabe durch eine Zahl dividieren nachgucken? Java Basics - Anfänger-Themen 4
M mit Maven eine ausführbare Jar bauen Java Basics - Anfänger-Themen 7
P Java Selenium . Parameterized.Parameters erzeugt eine Fehlermeldung Java Basics - Anfänger-Themen 14
J Zugriff auf eine 2. Klasse die per UI-Designer erstellt wurde Java Basics - Anfänger-Themen 1
M Eine Funktion zuweisen Java Basics - Anfänger-Themen 3
J Eine theoretische Frage zur Praxis - JPanel oder Canvas Java Basics - Anfänger-Themen 5
A Methoden Guten Tag , ich wollte so machen dass wenn meine frog an eine fly/bee geht dann an meine Tafel geht der zahl +1 hoch. Java Basics - Anfänger-Themen 2
A Wie führe ich eine Batch-Datei von meiner Java-Anwendung aus? Java Basics - Anfänger-Themen 18
J Beim Start des Programms zB. eine Linie in JPanel ausgeben Java Basics - Anfänger-Themen 4
L Methoden Eine Methode um zu testen ob es ein Nachbar gibt Java Basics - Anfänger-Themen 10
S Eine Idee umsetzen ganz schnell!? Java Basics - Anfänger-Themen 68
I Grundsatzfrage: Belegt eine Referenz auf 'null' RAM, und wenn ja - wieviel ;-) ? Java Basics - Anfänger-Themen 5
jeff98 Wie kann man in Java eine Zeichenformation ausgeben? Java Basics - Anfänger-Themen 9
K loop pausieren für eine bestimmte Anzahl? Java Basics - Anfänger-Themen 1
_user_q Wie eine Methode/Funktion aus einer Klasse mit Constructor aufrufen? Java Basics - Anfänger-Themen 20
Thomas06 Wie kann man mithilfe von boolean herausfinden ob eine zahl durch 5 und 7 teilbart ist ? Java Basics - Anfänger-Themen 7
M Prüfen on eine Zahl im String enthalten ist Java Basics - Anfänger-Themen 3
U jUnit 5 Test für eine addMethode Java Basics - Anfänger-Themen 18
frager2345 Singleton-Muster Java ->Nur eine Instanz einer Klasse erzeugen können Java Basics - Anfänger-Themen 45
A Eclipse IDE - Wie bekomme ich eine ältere Version Java Basics - Anfänger-Themen 6
F Wie kann ich eine Funktion schreiben, die nur in bestimmten Fällen einen Wert zurückgibt? Java Basics - Anfänger-Themen 5
berserkerdq2 Warum muss man manchmal in der RUnmethode sleep in eine schleife tun? Java Basics - Anfänger-Themen 9
berserkerdq2 Findet eine parallele Verarbeitung in Java bei Threads erst statt, wenn man die Methoden auch synchronized? Und wie sieht bei Conditions aus? Java Basics - Anfänger-Themen 8
berserkerdq2 Wozu benötigt man den BiPredicate, kann ich nicht einfach eine normale Methode nutzen, statt BiPredicate? Java Basics - Anfänger-Themen 3
berserkerdq2 Habe eine Klasse, welche public ist, diese hat eine public Methode, die nicht static ist. Wenn ich nun versuche aufzurufen Probleme? Java Basics - Anfänger-Themen 8
berserkerdq2 Zwei Klassen Erben von der Klasse A, die eine Klasse kann ich an Methoden übergeben, die als Parameter A haben, die andere nicht? Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben