...
Expand | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
BikeRental-klassen administrerer stasjonene, syklene og utleieforhold. Vi gjør det enkelt og identifiserer stasjonene med et geografisk punkt (GeoLocation, se skjelettet), altså lengde- og breddegrad. GeoLocation brukes også for lagring av posisjonen til syklene. Oppgave 1 a) - GeoLocationGeoLocation er kodet slik at instansene ikke kan endres. Hva er fordelen med dette?
Oppgaveb1b) - GeoLocationSkriv ferdig double distance(GeoLocation)-metoden i GeoLocation.
Oppgave c) - BikeBike-klassen skal ha assosiasjoner (koblinger) til Person- (se skjelettet) og GeoLocation-klassene iht. følgende klassediagram. (Location i bildet over skulle hett GeoLocation, men det var tydelig nok i forhold til teksten hva som er ment.) Begge disse assosiasjonene er dynamiske, dvs. både location og renter (låntaker) kan endres. location-koblingen endres (automagisk, du kan bare forholde deg til at location hele tiden oppdateres) når sykkelen beveger seg, mens renter-koblingen endres når leieforhold innledes og avsluttes. Skriv felt og metoder for location- og renter-assosiasjonene iht. Java sine kodingskonvensjoner.
Oppgave d) - DiceIterator (6 poeng)Lag en implementasjon av Iterator<Integer>kalt DiceIterator, slik at den kan brukes slik det er vist i Dice sin iterator()-metode. Du kan anta at valueCounters-feltet i Dice er synlig i DiceIterator-klassen.
Oppgave 1c) - BikeBike-klassen skal ha assosiasjoner (koblinger) til Person- (se skjelettet) og GeoLocation-klassene iht. følgende klassediagram. (Location i bildet over skulle hett GeoLocation, men det var tydelig nok i forhold til teksten hva som er ment.) Begge disse assosiasjonene er dynamiske, dvs. både location og renter (låntaker) kan endres. location-koblingen endres (automagisk, du kan bare forholde deg til at location hele tiden oppdateres) når sykkelen beveger seg, mens renter-koblingen endres når leieforhold innledes og avsluttes. Skriv felt og metoder for location- og renter-assosiasjonene iht. Java sine kodingskonvensjoner.
Oppgave 1d) - BikeRentalBikeRental må holde oversikt over alle stasjonene, representert med GeoLocation, og alle syklene (Bike). Skriv nødvendige variabel-deklarasjoner (felt) for dette og forklar hva som styrer valget av typer. Du skal ikke skrive metoder for å konfigurere systemet med stasjoner og sykler, men anta at slike finnes.
Beskrivelse av oppgavene 1e og 1fI første omgang skal du skrive forenklet kode for leie og retur av sykler, hvor det ikke tas hensyn til annet enn start- og slutt-tidspunkt for leieforholdet. Forlenging av leie ser vi foreløpig bort fra. renter-assosiasjonen i Bike skal holde rede på hvem (Person) som evt. leier en sykkel (Bike). Du bestemmer selv hvor/hvordan du vil representere når leieforholdet starter og når det forventes at sykkelen leveres tilbake. Det viktigste er at informasjonen kan brukes når sykkelen leveres og leien skal beregnes og betales.
Oppgave 1e) - BikeRentalSkriv metodene under i klassen BikeRental (se skjelettet til venstre for detaljene). Disse metodene bygger på representasjonen du valgte i 1d.
Oppgave 1f) - BikeRental (mer)Skriv metodene rentBike og returnBike i klassen BikeRental (se skjelettet for detaljene, merk spesielt krav om utløsing av unntak). Disse metodene endrer tilstanden som brukes av de foregående metodene. Velg selv passende unntakstype(r). LocalDateTime brukes for å representere tid (erstatter Date i moderne Java). Gjør nødvendige antakelser om metoder den har, som trengs for tidsberegninger, og bruk disse antakelsene.
|
Expand | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
BikeRental-klassen skal utvides til å støtte forlengelse av leie, beregning av gebyrer for forlengelse og for å forlenge eller levere tilbake sykkelen etter angitt tid. I tillegg skal det lagres nok data om dette, så en kan få skrevet ut en kvittering med forklaring på hvordan prisen framkom. Oppgave 2a)Forklar med tekst og/eller kode hvordan du vil lagre informasjon om evt. forlengelser av leieforholdet, slik at systemet har nok informasjon til å kunne
Oppg Expand | | |||||||
|
Code Block |
---|
public class DiceIterator implements Iterator<Integer> {
private final Dice dice;
private int dieNum = 0;
public DiceIterator(final Dice dice) {
this.dice = dice;
}
@Override
public boolean hasNext() {
return dieNum < dice.getDieCount();
}
@Override
public Integer next() {
final int value = dice.getDieValue(dieNum);
dieNum++;
return value;
}
}
|
Vanlige feil: