Slutet av detta pass utgör deadline för inlämningsuppgift 2, så det är lämpligt att göra den färdig om den inte redan är det. Därefter skall vi börja öva på att implementera egna klasser.
Det är inte omöjligt att det tar mer än de schemalagda två timmarna
att lösa de rekommenderade uppgifterna och inlämningsuppgiften, men
enligt studiehandboken är det meningen att man skall lägga ner i
genomsnitt ca 3-4 timmars självstudietid för varje övningspass,
utöver övningstiden. Om det finns någon ledig plats i en övningssal
under något annat övningspas än ditt eget så får du gärna gå dit
också (de studenter vars grupp har schemalagd övningstid får dock
förtur för hjälp) -- du kan se vilken grupp du tillhör genom att i
kommandofönstret skriva ptgroup
.
Under övningen kommer du att träna på sådant som vi behandlade under den åttonde föreläsningen, det kan därför eventuellt hjälpa att i ett annat fönster ha anteckningarna från föreläsning 8.
emacs
Den som använder emacs
som texteditor kan använda ett
antal snabb-kommandon som underlättar en del av arbetet under
övningarna:
Alt-4
: frågar efter ett programnamn, och skapar
ett huvudprogram med det givna namnet.
Alt-2
: ger en import-sats -- du får själv fylla
i sista delen.
Alt-p
: ger System.out.print
Alt-k
: ger Keyboard.next
Gör klart inlämningsuppgift 2.
Implementera klassen Turtle
(osynlig) enligt
figuren som vi ritade under föreläsningen.
Vi behöver fem attribut:
w
: det fönster som vi eventuellt skall rita
i.x
och y
: aktuella koordinater --
eftersom sköldpaddan kan vridas godtyckligt innan den går
framåt behöver vi använda reella koordinater.dir
: anger aktuell riktning. Vi kan välja att
tolka riktningen precis som vi vill, bara vi är
konsekventa -- i den figur som vi ritade under föreläsningen
räknar vi i hela grader, och låter forward
-- observera att fönstrets
koordinatsystem är 'upp-och-ner', dvs draw
: anger om pennan är uppe eller nere, dvs
om vi skall rita eller inte när sköldpaddan går framåt. Att
säkna pennan innebär att vi måste komma ihåg att pennan är
nere, och att vi så småningom måste dra en linje när vi
kör forward
(om inte användaren har
anropat penUp()
innan dess).Den metod/operation som kräver mest arbete är utan tvekan
forward
, rita en figur om du är osäker på hur du
skall göra. Skriv även ett program som testar din tärningsklass
genom att låta fem sköldpaddor rita var sin kvadrat i ett
fönster.
Ett förslag till implementation av klassen Turtle
finns här
Implementera en tärningsklass med följande specifikation (man skall här alltid välja antal sidor på tärningen när den skapas):
Die (int nbrOfSides)
: Skapar en tärning med
ett givet antal sidor.void roll()
: Kastar tärningen.int getNbrOfSpots()
: Ger antal prickar som
tärningen visar.int getNbrOfSides()
: Ger antalet sidor på
tärningen.Vi kräver i uppgiften inte att tärningen är kastad innan man
anropar getNbrOfSpots()
, utan kan istället ge
tärningen ett slumpmässigt startvärde (vi kan göra det genom att
exempelvis kasta tärningen i konstruktorn). Skriv ett program
som testar din tärningsklass.
Ett förslag till implementation av klassen Die
finns här
Gör färdigt de uppgifter från tidigare övningar som du eventuellt hoppat över.