...
I denne delen skal du lage en klasse kalt TrainCar for en enkel og generell togvogn, med følgende funksjonalitet (se også diagrammet til høyre): - TrainCar(int) - en konstruktør som tar inn hvor mye en tom vogn veier.
- int getTotalWeight - returnerer vognas totale vekt. Merk at denne også skal kunne kalles på subklasser og fortsatt returnere totalvekta toil til vogna (stikkord: redefinering).
- setDeadWeight(int) - setter hvor mye en tom vogn veier. Altså vekten til kun vognen, uten passasjerer eller last.
- int getDeadWeight() - returnerer hvor mye en tom vogn veier. Altså vekten til kun vognen, uten passasjerer eller last.
| PlantUML Macro |
---|
class TrainCar {
int getTotalWeight()
void setDeadWeight(int)
int getDeadWeight()
} |
|
JExercise-testkode for oppgavene Testkode for oppgaven finner du her: inheritance/TrainCarTest.java. Originalkoden (jextest) for testen finner du her: inheritance/TrainCarTestTrainCar.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 (se også diagrammet til høyre): - 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.
- setCargoWeight(int) - setter en ny verdi for vekten til lasten.
PassengerCar extends TrainCar:Denne klassen gjenspeiler en passasjervogn. Legg til følgende metoder (se også diagrammet til høyre): - PassengerCar(int, int) - her tas inn hvor mye en tom vogn veier (som i TrainCar), og hvor mange passasjerer det er i vogna.
- int getPassengerCount() - returner antall passasjerer.
- setPassengerCount(int) - setter en ny verdi for antall passasjerer.
For å beregne totalvekta, så kan du anta at en gjennomsnittspassasjer veier 80 kg. | PlantUML Macro |
---|
class TrainCar {
int getTotalWeight()
void setDeadWeight(int)
int getDeadWeight()
}
class CargoCar{
CargoCar(int,int)
int getCargoWeight()
void setCargoWeight(int)
}
class PassengerCar{
PassengerCar(int,int)
int getPassengerCount()
void setPassengerCount(int)
}
TrainCar <|--CargoCar
TrainCar <|--PassengerCar
|
|
JExercise-testkode for Testkode for oppgavene finner du her: inheritance/PassengerCarTest.java, inheritance/CargoCarTest.java. Originalkoden (jextest) for testene finner du her: inheritance/PassengerCarTestPassengerCar.jextest og inheritance/CargoCarTestCargoCar.jextest.
Del 3 -
...
Train
Klassen Locomotive skal Train skal forestille et lokomotiv som har tog bestående av et sett med vogner knyttet til seg. Klassen skal ha følgende metoder (se også diagrammet til høyre): - 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 metoden 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.
| PlantUML Macro |
---|
class LocomotiveTrain {
addTrainCar(TrainCar)
boolean contains(TrainCar)
int getTotalWeight()
int getPassengerCount()
int getCargoWeight()
String toString()
}
class TrainCar {
int getTotalWeight()
void setDeadWeight(int)
}
int getDeadWeight()
}
class CargoCar{
CargoCar(int,int)
int getCargoWeight()
void setCargoWeight(int)
}
class PassengerCar{
PassengerCar(int,int)
int getPassengerCount()
void setPassengerCount(int)
}
TrainCar <|--CargoCar
TrainCar <|--PassengerCar
LocomotiveTrain *-right-> "*" TrainCar: trainCars |
|
JExercise-testkode for oppgavene Testkode for oppgaven finner du her: inheritance/TrainTest.java. Originalkoden (jextest) for testen finner du her: inheritance/TrainTestTrain.jextest.
Exercise-panelet
Bruk av Exercise-panelet er obligatorisk for denne øvingen. Du må ha panelet åpent med Train.ex-filen (tests > inheritance > Train.ex) i før du begynner med oppgaven. For mer informasjon/hjelp, se nederst på forrige side, altså hovedsiden for Øving 9.
Include Page |
---|
| Bunntekst for JExercise- oppgaver |
---|
| Bunntekst for JExercise- oppgaver |
---|
|
Sidetype | Dekningsgrad | Omfang | Ferdig |
---|
oppgave | 50 | 25 | 95 |