All pastes #286389 Raw Edit

Anonymous

public text v1 · immutable
#286389 ·published 2006-12-20 16:59 UTC
rendered paste body
public class Wettkampf {

    /* Wettkampf identifies itself only with name*/
    String name;

    Wettkampf(String name) {
	this.name=name;
    }
}

import java.lang.*;
import java.util.*;

public class Teilnahme {

    private int ergebnis;
    private int startplatz;
    private String pferd;

    Teilnahme(int startplatz,String pferd) {
	this.startplatz=startplatz;
	this.pferd=pferd;
    }

    public void setzeErgebnis(int ergebnis) {
	this.ergebnis=ergebnis;
    }

    public int gibErgebnis() {
	return ergebnis;
    }
    public int gibStartPlatz() {
	return startplatz;
    }
    public String gibPferd() {
	return pferd;
    }

}


public class Reiter {

    String name,nachname;
    int geburtsjahr;
    

    Reiter(String name,String nachname,int geburtsjahr) {
	
    }
}

public class Registrierung {
    Reiter r;
    Wettkampf w;
    int startplatz;
    String pferd;
    
    Registrierung(Reiter r,Wettkampf w,int startplatz,String pferd) {
	this.r=r; this.w=w;
	this.startplatz=startplatz;
	this.pferd=pferd;
    }
}


import java.util.*;

/* normally, we need exactely one Registierstelle */
public class Registrierstelle {


    private class ReiterWettkampf {
	ReiterWettkampf(Reiter r,Wettkampf w) {
	    this.r=r; this.w=w;
	}
	lock = new Object();
	Reiter r;
	Wettkampf w;
    }

    HashSet<Reiter> registrierteReiter;
    Hashtable<ReiterWettkampf,Teilnahme> teilnahmen;
    

    Registrierstelle() {
	registrierteReiter=new HashSet<Reiter>();
	teilnahmen=new Hashtable<ReiterWettkampf,Teilnahme>();
    }

    /**
       Registriert neuen Reiter,
       falls der Reiter schon registriert ist passiert nichts
    */
    public synchronized void reiterRegistrieren(Reiter r) {
	registrierteReiter.add(r);
    }

    /**
       Reiter für einen Wettkampf registrieren, falls null
       zurückgegeben wurde war der Reiter schon dafür registriert
     */
    public synchronized Teilnahme reiterAnmelden(Registrierung r) {
	ReiterWettkampf x=new ReiterWettkampf(r.r,r.w);
	if (teilnahmen.containsKey(x)) return null;
	Teilnahme t=new Teilnahme(r.startplatz,r.pferd);
	teilnahmen.put(x,t);
	return t;
    }

    /**
       Reiter von einem Wettkampf wieder abmelden, Startnummer und
       Pferd müssen übereinstimmen
    */

    public synchronized void reiterAbmelden(Registrierung r) {
	ReiterWettkampf x=new ReiterWettkampf(r.r,r.w);
	if (!teilnahmen.containsKey(x)) return;
	if (teilnahmen.get(x).gibStartPlatz()==r.startplatz &&
	    teilnahmen.get(x).gibPferd().equals(r.pferd))
	    teilnahmen.remove(x);
    }



}