<file_sep>package danielrajic.objects;

public class Dackel extends Hund {

}
<file_sep>package danielrajic.laufverhalten;



public class KannNichtLaufen implements ILaufVerhalten{ 
	
	
    public void laufen() { 
        System.out.println("Kann doch gar nicht laufen."); 
    } 
}
<file_sep>package danielrajic.objects;

import danielrajic.bellverhalten.IBellVerhalten;
import danielrajic.bellverhalten.LautBellen;
import danielrajic.laufverhalten.ILaufVerhalten;
import danielrajic.laufverhalten.SchnellLaufen;

public abstract class Hund {
	
	//Instanzvariablen vom Typ des Interfaces. Defaultverhalten 
    IBellVerhalten bellVerhalten = new LautBellen(); 
    ILaufVerhalten laufVerhalten = new SchnellLaufen(); 


    public void setBellVerhalten(IBellVerhalten pBellVerhalten) { 
        bellVerhalten = pBellVerhalten; 
    } 


    public void setLaufVerhalten(ILaufVerhalten pLaufVerhalten) { 
        laufVerhalten = pLaufVerhalten; 
    } 

    public void bellen(){ 
        //Delegation des Verhaltens an Verhaltensobjekt 
        bellVerhalten.bellen(); 
    } 

    public void laufen(){ 
        //Delegation des Verhaltens an Verhaltensobjekt 
        laufVerhalten.laufen(); 
    } 

}
<file_sep>package danielrajic.laufverhalten;


public class NormalLaufen implements ILaufVerhalten{ 
    public void laufen() { 
        System.out.println("Normal laufen."); 
    } 
} <file_sep>package danielrajic.programm;

import danielrajic.bellverhalten.LeiseBellen;
import danielrajic.laufverhalten.Humpeln;
import danielrajic.objects.Husky;

public class Client {
	
	public static void main(String[] args) {
		Husky husky = new Husky();
		husky.bellen();
		husky.laufen();
		husky.setBellVerhalten(new LeiseBellen() );
		husky.setLaufVerhalten(new Humpeln());
		husky.bellen();
		husky.laufen();
	}

}
<file_sep>package danielrajic.laufverhalten;


public class Humpeln implements ILaufVerhalten{ 
    public void laufen() { 
        System.out.println("Humpeln."); 
    } 
} 