Collections Bidirektionale Assoziation

A

Alexander F.

Gast
Sehr geehrte Java-Gemeinde,

ich sitze hier vor folgendem selbstgeschriebenen Quellcode

Java:
import java.util.HashSet;

class Angestellter {
  int angNr;
  Abteilung arbeitetIn;         //Attribut vom Typ Abteilung (Klasse)
  
  Angestellter (int an){
    this.angNr = an;
  }
    //Methoden link, unlink, getlink
  protected void link(Abteilung abt) {
    arbeitetIn  = abt;         //wird Abteilung zugeordnet
  }
  
  protected void unlink(Abteilung abt)        {
    arbeitetIn  = null;        //zeigt nun auf nichts mehr --> unlink!
  }
  
  protected Abteilung getLink()   {          //hier nicht mehr vom Typ void, da was returniert wird
    return (arbeitetIn);                     //gibt aus/returniert, wo gearbeitet wird
  }
}

class Abteilung  {
  String abtName = " ";
  HashSet<Angestellter> mitarb   = new HashSet<Angestellter>();     //"Tasche" voll mit Angestellten --> HashSet! () nicht vergessen
  
  Abteilung (String ab) {
    this.abtName = ab;
  }
  //Methoden
  void link (Angestellter ang)  {
    mitarb.add(ang);                         //spricht mit dem Container!!!!!! und addet weiteren ang!
  }
  
  private void unlink (Angestellter ang)       {
    mitarb.remove(ang);
  }
  
  public void einstellen (Angestellter ang) {
    link(ang);                               // für Abteilung: Angestellter wird mit Zeiger versehen und geaddet
    ang.link(this);                          // für Angestellter
  }
  
  public void entlassen (Angestellter ang)   {
    unlink(ang);
  }
}
public class Bidirektional            {

public static void main(String[] args)       {
  Angestellter gerd              = new Angestellter(12);        //Name in Konstruktor, nicht in link!!! erst später ins HashSet
  Angestellter anni              = new Angestellter(1);
  Angestellter sigi              = new Angestellter(2);
  Angestellter ingo              = new Angestellter(3);
  Angestellter lisa              = new Angestellter(4);
  Angestellter anna              = new Angestellter(5);

  Abteilung it                   = new Abteilung("IT");
  Abteilung et                   = new Abteilung("ET");
  Abteilung at                   = new Abteilung("AT");
  Abteilung ot                   = new Abteilung("OT");
  Abteilung ut                   = new Abteilung("UT");
  
  link(it);
  link(gerd);
  
  System.out.println("Der Mitarbeiter " + gerd + " arbeitet in der Abteilung " + it);
  }
}


Wieso klappt meine Ausgabe nicht? Ich will einfach mal mit einer bidirektionale Assoziation spielen, sowie HashSet ausprobieren...Ich hänge hier seit Stunden und bekomme einfach keine Ausgabe hin! Wie ihr seht habe ich diverse Methoden geschrieben um Zeiger herzustellen, zu löschen etc.. Soweit bin ich von der Korrektheit meiner beiden Klassen (Angestellter und Abteilung) überzeugt, jedoch ist meine main nicht brauchbar -.-

Den Helfern sei bereits jetzt vielen vielen Dank gesagt!

Gruß von eurem verzweifelten
Alexander
 

kay73

Bekanntes Mitglied
Java:
link(it);
link(gerd);
Das kompiliert nicht. Aber
Java:
it.einstellen(gerd);
ist ok. Was geht denn nicht?
 
Zuletzt bearbeitet:

jgh

Top Contributor
Java:
	it.link(gerd);
//		link(gerd);

		System.out.println("Der Mitarbeiter " + gerd.angNr
				+ " arbeitet in der Abteilung " + it.abtName);

du solltest dir aber vorher ein wenig mehr Gedanken über OO machen...
 

Ähnliche Java Themen

Neue Themen


Oben