/*
Dies ist ein Demo-Programm für eine längerfristige 
Assoziation mit folgender Eigenschaft:
1)
1 : n (zu einem Auto gehören mehrer Fahrer) 

2)
biidirektional (mit Navigierbarkeit in zwei Richtungen)
Auto <--> Fahrer

3)
Das Auto wird in main angelegt.
Die Fahrer werden im Konstruktor von Auto angelegt.

4)
Die Konstruktoren werden zur Verlinkung benutzt.

5) 
Alle Zugriffe werden mit set-und get-Methoden gemacht.
*/

public class MainAssoziationBI_1zuN_2 {
	public static void main(String[] args){

		// Verlinkung: myCar <--> dieFahrer		
		Auto myCar = new Auto ("B-KI 11");
		
		System.out.println("myCar.f[0].name = "+myCar.getFahrer(1).getAuto().getFahrer(0).getName());
		System.out.println("myCar.f[0].name = "+myCar.getFahrer(0).getAuto().getFahrer(1).getName());		
	
	}
}	

class Auto{
	private String kfzZeichen;
	private Fahrer[] seineFahrer;

	public Auto(String pKfzZeichen){
		kfzZeichen=pKfzZeichen;
		seineFahrer = new Fahrer[2];
		seineFahrer[0] = new Fahrer("Maier", this);
		seineFahrer[1] = new Fahrer("Müller", this);		
	}
	
	public void setKfzZeichen(String pKfzZeichen){
		kfzZeichen=pKfzZeichen;		
	}

	public void setSeineFahrer(Fahrer[] pSeineFahrer){
		seineFahrer = pSeineFahrer;
	}
	
	public void setFahrer(int i, Fahrer pDerFahrer){
		seineFahrer[i] = pDerFahrer;
	}
	
	public Fahrer getFahrer(int i){
		return(seineFahrer[i]);
	}
}

class Fahrer{
	private String name;
	private Auto seinAuto;

	public Fahrer(String pName, Auto pSeinAuto){
		name = pName;
		seinAuto = pSeinAuto;
	}
	
	public void setName(String pName){
		name = pName;
	}
	
	public String getName(){
		return(name);
	}
	
	public void setAuto(Auto pSeinAuto){
		seinAuto = pSeinAuto;
	}
	
	public Auto getAuto(){
		return(seinAuto);
	}
}











