Föreläsningar  Exempel  Examination  Länkar  <<

Ett datasystem för mindre fraktbåtar i Stockholms skärgård ska utökas med en kontrollfunktion för vikten hos de fordon som båtarna medtar. Det handlar om riktigt små båtar som bara kan ta cyklar och mopeder. Din uppgift är att skriva en klasshierarki för detta där basklassen Fordon ska vara abstrakt men innehålla en:
  protected float vikt;
plus en abstraktdeklarerad åtkomstmetod för denna variabel som sedan ska implementeras med dynamisk bindning i de bägge subklasserna.

I klassen Moped ska vikten räknas ut enligt vikt + liter bensin * 0.8. Det räcker här med en konstruktor som tar två argument för vikt och mängd bensin. Klassen Cykel ska, för att lasten inte ska bli för skrymmande, ha ett attribut som håller reda på om det är en tandem. I en överlagring av konstruktorn ska även tandemangivelsen vara en parameter. När den andra konstruktorn som enbart sätter vikten används så förutsätts det att aktuell cykel inte är en tandem. Lämplig datatyp för tandemkontrollen är en boolean.

DEL I: Rita upp ett klassdiagram för din lösning med hjälp av ArgoUML.

DEL II: Implementera detta i javakod där en komplett lösning även ska innehålla en kontainerklass där 4 st cyklar och 3 st mopeder läggs in i en LinkedBlockingQueue. Klassen kan heta public class UppgiftA och inledas enligt:
  LinkedBlockingQueue<Fordon> queue =
          new LinkedBlockingQueue<Fordon>();

En poäng med den dynamiska bindningen är att när fordonen hämtas ut ur datasamlingen för en framräkning av totalvikten så kan detta göras genom fordon.visaVikt(). Slutligen så ska fordonens totalvikt skrivas ut med en upplysning om viktgränsen på 400 kg överskrids eller ej.