You are on page 1of 2

Class Kata Ordered Jobs

Entwickle eine Klasse, die einen Plan zur Abarbeitung untereinander abhngiger Jobs erstellt [1]. Jeder Job wird durch einen Buchstaben reprsentiert, z.B. c oder x. Es kann sein, dass vor einem Job a ein Job u abgearbeitet werden muss. Dann ist a von u abhngig. Natrlich kann jeder Job von beliebig vielen anderen abhngig sein und die wiederum von anderen... Nachdem eine Reihe von Jobs mit ihren Abhngigkeiten registriert wurden, soll die Klasse sie in eine Abarbeitungsreihenfolge bringen, in der Abhngige nach denen dran sind, von denen sie abhngen. Das Interface dafr sieht so aus:
interface IOrderedJobs { void Register(char dependentJob, char independentJob); void Register(char job); string Sort(); }

Wenn damit wie folgt registriert wird...


Register('c'); Register('b', 'a'); Register('c', 'b');

...dann liefert Sort() dieses Ergebnis:


"abc"

Jobs, die in mehreren Registrierungen vorkommen, tauchen in der Sortierung nur einmal auf. Unabhngige Jobs knnen in beliebiger Reihenfolge in der Sortierung stehen, solange sie vor denen abgearbeitet werden, die von ihnen abhngig sind. Direkte oder indirekte zirkulre Abhngigkeiten sollen ber eine Exception gemeldet werden sptestens bei der Sortierung.

http://ccd-school.de

Variationen
Implementiere eine alternative Funktion string Sort(string registrierungen), die Registrierungen in Form einer mehrzeiligen Zeichenkette folgender Form entgegennimmt [1]:
c => b => a c => b

Ressourcen
[1] The Ordered Jobs Kata, http://invalidcast.com/2011/09/the-ordered-jobs-kata

http://ccd-school.de