Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Vi skal i dette scenarioet ha en sjef, eller Manager, som har én eller flere arbeidere, eller Clerks, altså i en såkalt én-til-mange relasjon. Et Et Employee-grensesnitt definerer et oppførsel en oppførsel som er felles for de ansatte, og implementeres av både RegionalManager Manager og Clerk.

Del 1: Employee, Clerk og Printer

Employee-grensesnittet har følgende metoder:

  • void doCalculations(BinaryOperator<Double> operation, double value1, double value2) - regner ut resultatet av å utføre operation med argumentene value1 og value2

  • void printDocument(String document) - Printer document. Hvordan dette gjøres avhenger av den spesifikke implementasjonen 

  • int taskCount() - returnerer hvor mange oppgaver (beregninger og printinger) som har blitt utført av eller på vegne av dette Employee-objektet
  • int resourceCount() - antallet employees til rådighet, inkludert Employee-objektet metoden blir kalt på. En Employee skal altså medregne seg selv i antall ressurser den ansatte har til rådighet. Dette tallet skal inkludere alle Employee-objekter nedover i hierarkiet.

Lag dette grensesnittet, og lag så en Clerk-klasse som implementerer det. Klassen skal Clerk ha følgende konstruktør:

  • Clerk(Printer printer)

Clerk-klassen må inneholde egen logikk for å løse doCalculations, men skal altså delegere printDocuments til en et Printer-klasseobjekt gitt i konstruktøren.

Definer en Printer -klasse med følgende metoder:

...

La så Clerk delegere printDocument(String document) til Printer. Siden Clerk ikke har noen andre ansatte å delegere til, vil resourceCount være alltid være 1.


Testkode for Clerk er her:  ... Originalkoden for testen(jextest) kan du finne her: ...

...

Vi definerer så sjefen til de hardt-arbeidende Clerk-objektene. Manager-klassen har følgende konstruktør:

  • Manager (Collection<Employee> employees)

...

  • - utløser et IllegalArgumentException dersom employees er tom

La så Manager implementere Manager implementere Employee-grensesnittet. Implementer oppgavene Managers oppgaver ved å delegere alle videre til en av arbeiderne i listen med Clerkmed Employee-objekter objekter gitt i konstruktøren. Mens En Clerk altså har altså kun én tilgjengelig ressurs , mens vil Manager-objekter vil ha flere.

...