Tips til nogle af opgaverne.
MoveToNextDate
- skal ikke returnere noget, kun ændre objektes
dato-felt (datoen)
- læg ud med bare at tælle dagen een op
- fortsæt med at antage der er 31 dage i måneden og
tag højde for at dagen er 31, og udvid igen med at
tage højde for at det er den 31/12. Der skal her
anvendes if-konstruktioner for at teste dag og
måned. Du kan udnytte at du allerede har metoder,
der kan give dig år, måned og dag og at du har
rutiner der kan ændre hver af disse, så du ikke skal
regne så meget i denne metode.
- lav en rutine, der kan udregne antal skuddage i
året og udnyt den når du i den foregående metode
fastsætter dage i februar. Du kan starte med at sige
at hvis året er delelig med 4 er det skudår og så
udbygge til at tage højde for århundreder...
- lav en metode som kan returnere antal dage i
måneden (uden at tage højde for skudår)
MoveToPrevDate
- Her er problemstillingen omkring den 1. i måneden
og den 1/1, du kan igen starte med at antage der er
31 dage i alle måneder og så bagefter udnytte de
metoder du lavede i forbindelse med MoveToNextDate.
MoveDays
- metoden skal ikke returnere noget men have et
antal dage med som parameter og skal ændre objektes
dato-felt (datoen)
- opdel med if-else i tilfælde hvor antal dage < 0
og hvor antal dage > 0
- for tilfældet hvor antal dage < 0 kan du lave en
while-løkke, hvor du "kører" rundt det angivne antal
gange og kalder MoveToNextDate, og således fytter
datoen en dag af gangen for hvert gennemløb.
Tilsvarende for antal dage < 0 bruges MoveToPrevDate
GetDagnr
- gem this.datoen i en hjælpevarabel herefter laves
en while-løkke, hvor der tælles op på en
tælle-variabel samtidig med at datoen flyttes en
bagud med MoveToPrevDate. Man stopper når man når
den 1/1, herefter har man talt dagene, men ødelagt
objetets dato-felt (datoen), men den sættes nu til
den gemte værdi og er så genetableret.