Excerpt |
---|
I denne oppgaven skal vi modellere to typer togvogner og bruke dem i et tog. Vi vil bruke arv og samle det som er felles for togvognene i en superklasse. |
Del 1 - TrainCar
I denne delen skal du lage en klasse kalt TrainCar for en enkel og generell togvogn, med følgende funksjonalitet:
...
PlantUML Macro |
---|
class TrainCar { int deadWeight int setDeadWeight() getTotalWeight() } |
JExercise-testkode for oppgavene finner du her: inheritance/TrainCarTest.java. Originalkoden (jextest) for testen finner du her: inheritance/TrainCarTest.jextest.
Del 2 - CargoCar og PassengerCar
I denne delen skal du lage to forskjellige typer togvogner som er spesialiserte for sitt bruk. Begge skal arve fra TrainCar.
CargoCar extends TrainCar:
Denne klassen skal gjenspeile en lastevogn som frakter diverse ting og tang. Følgende funksjonalitet trengs:
- CargoCar(int, int) - her tas inn hvor mye en tom vogn veier (som i TrainCar), og hvor mye vogna sin last veier.
- int getCargoWeight() - returnerer hvor mye lasten veier.
PassengerCar extends TrainCar:
Denne klassen gjenspeiler en passasjervogn. Legg til følgende metoder:
...
PlantUML Macro |
---|
class TrainCar { int deadWeight int setDeadWeight() getTotalWeight() } class CargoCar{ int cargoWeight CargoCar(int,int) int getCargoWeight() } class PassengerCar{ int passengerCount() PassengerCar(int,int) int getPassengerCount() } TrainCar <|--CargoCar TrainCar <|--PassengerCar |
JExercise-testkode for oppgavene finner du her: inheritance/PassengerCarTest.java, inheritance/CargoCarTest.java. Originalkoden (jextest) for testene finner du her: inheritance/PassengerCarTest.jextest og inheritance/CargoCarTest.jextest.
Del 3 - Locomotive
Klassen Locomotive skal forestille et lokomotiv som har et sett med vogner knyttet til seg.
- addTrainCar(TrainCar) - denne metoden skal ta inn en togvogn og knytte den til dette lokomotivet.
- boolean contains(TrainCar) - Sjekker om lokomotivet har TrainCar-argument knyttet til seg.
- int getTotalWeight() - returner alle vognene sin totale vekt. Vi tar ikke høyde for lokomotivet sin eventuelle vekt.
- int getPassengerCount() - tilsvarende PassengerCar sin metode, men returnerer antallet for alle vognene.
- int getCargoWeight() - tilsvarende CargoCar sin metode, men returnerer lastevekten for alle vognene.
- String toString() - Redefiner Locomotive sin toString-metode. Den skal sette sammen en String med oversikt over alle vognene som er knyttet til den. For hver vogn skal vogntype og totalvekt være med. Passasjervogner skal i tillegg ha med antall passasjerer og lastevogner skal ha med hvor mye lasten veier.
JExercise-testkode for oppgavene finner du her: inheritance/TrainTest.java. Originalkoden (jextest) for testen finner du her: inheritance/TrainTest.jextest.
...