OOP Bidirektionale Assoziation

fendix

Mitglied
Hallo, ich muss für eine Uni Aufgabe mit Hilfe eines UML-Klassendiagramms ein neues Projekt erstellen. Ich habe zwei Klassen: Abteilung & Mitarbeiter. Die Mitarbeiter sind logischerweise einer Abteilung zugeordnet. Leider habe ich nach unzähligem durchforsten von Beiträgen keine Idee zur Lösung gefunden wie ich die beiden Klassen korrekt verbinde.

Abteilung:
Attribute: bezeichnung: String
Methoden: +Abteilung(bezeichnung:String), +getBezeichnung(): String, +getAnzahlMitarbeiter(): int, +addMitarbeiter(mit: Mitarbeiter), +getMitarbeiter(i: int): Mitarbeiter, +ausgabeMitarbeiter()

Mitarbeiter:
Attribute: name: String, personalnummer: int, anzahlMitarbeiter: int
Methoden: +Mitarbeiter (name: String, abt: Abteilung), +setName(name:String), +getName(): String, +getPersonalnummer(): int, +getAbteilung(): Abteilung, +isKollege(mit: Mitarbeiter): boolean, +bestimmeKollegen(): Mitarbeiter[*]

Die Klassen sind in beide Richtungen, sprich bidirektional, verbunden. <1 -------- 0..15>

Mein Code sieht bis jetzt so aus:


[CODE lang="java" title="Abteilung.java"]import java.util.ArrayList;

public class Abteilung {
private String bezeichnung;

//private ArrayList<Mitarbeiter> mitarbeiterliste = new ArrayList<Mitarbeiter>();

//Referenzattribute
private Mitarbeiter ersterMitarbeiter;

//Konstruktor
public Abteilung(String bezeichnung){
this.bezeichnung = bezeichnung;
}

public String getBezeichnung(){
return this.bezeichnung;
}

public int getAnzahlMitarbeiter(int anzahlMitarbeiter){
return anzahlMitarbeiter;
}

public void addMitarbeiter(Mitarbeiter ersterMitarbeiter){
//ersterMitarbeiter = Mitarbeiter;
}

public Mitarbeiter getMitarbeiter(){
return ersterMitarbeiter;
}
}
[/CODE]

[CODE lang="java" title="Mitarbeiter.java"]public class Mitarbeiter {

private String name;
private int personalnummer;
private int anzahlMitarbeiter;

public Mitarbeiter (String name){
this.name = name;
anzahlMitarbeiter++;
personalnummer++;
}

public void setName(String name){
this.name = name;
}

public String getName(){
return this.name;
}

public int getPersonalnummer(){
return this.personalnummer;
}

/*public Abteilung getAbteilung(){
return einMitarbeiter;
}*/
}
[/CODE]

Kann mir jemand von euch auf die Sprünge helfen? Danke.
 
K

kneitzel

Gast
Also da steht nichts von ersterMitarbeiter. Daher ist es wohl falsch, sowas vorzuhalten.

Bezüglich Mitarbeiter sind die Methoden doch vorgegeben:
+getAnzahlMitarbeiter(): int, +addMitarbeiter(mit: Mitarbeiter), +getMitarbeiter(i: int): Mitarbeiter, +ausgabeMitarbeiter()
Das ist ja 1:1 in Methoden-Deklarationen umsetzbar.

Und bei Mitarbeiter ist es ähnlich. Da hast Du auch klare Vorgaben bezüglich der Methoden. Diese würde ich erst einmal 1:1 in Java Code umsetzen. Den Inhalt der Methoden und wie die Daten dann gehalten werden können, das kann man dann im Anschluss schauen. Wobei da vieles 1:1 umsetzbar sein dürfte - wenn da Ein Konstruktor angegeben wird als Mitarbeiter (name: String, abt: Abteilung) - dann muss man doch nicht zu viel nachdenken und da wird dann name und abt z.B. gespeichert...
 

Ähnliche Java Themen

Neue Themen


Oben