UU | IT | OOP med Java våren 2025 Uppgifter

 

Uppgift 1 - Perpetum Mobile


Denna obligatoriska uppgift består av att modifiera ett existerande javaprogram. Kopiera först det aktuella programmet BallWorld.java till din egen dator.

Beroende på din dator och annat kan det ibland bli strul med teckenkodningen så att de svenska bokstäverna inte blir rätt. I så fall kan du prova att högerklicka och välja "spara länk som ... ". Det kan också hjälpa att använda denna version av programmet: BallWorld.java (utf-8, för Mac).

Alla ändringar ska göras i samma program—du behöver inte lämna in separata program för de olika deluppgifterna.

Du har väl läst den allmänna informationen om inlämningsuppgifter?

Deluppgift 1 — Fikapaus

Kompilera programmet med javac BallWorld.java och provkör det med java BallWorld. Beskriv med några få ord vad som händer.

Deluppgift 2 — Färgblindhet

Byt färg på bollen (till t.ex. vit) utan att ändra i konstruktorn Ball() där standardfärgen sätts. Däremot behöver du göra ett anrop till en metod som sätter färgen för en boll. Vilket anrop och var i koden den skall utföras ska du lista ut själv. Beskriv med några få ord vilka ändringar du gjorde.

Deluppgift 3 — Fängslande

En "bounding box" är en rektangel som anger gränserna i vilken bollen studsar inom. Om du ändrar storleken på fönstret upptäcker du att området inom vilket bollen studsar är oförändrat. Metoden wasResized() anropas då fönsterstorleken ändras. Modifiera wasResized() så att "bounding boxen" ändras till dess rätta storlek. Titta på andra ställen i koden för att få en uppfattning vilken metod som avses och hur den ska användas. Beskriv vilka ändringar du gjorde.

Deluppgift 4 — Storlek

I klassen Ball finns metoder för att ändra färg respektive "bounding box", men det finns ingen metod för att sätta bollens storlek (diameter). Tillfoga en sådan metod och använd den sedan för att ändra storleken på bollen. Beskriv vilka ändringar du gjorde.

Deluppgift 5 — Dubbelt så många

Lägg in en extra boll med annan färg, storlek och hastighet så att det finns totalt två bollar som studsar. Beskriv vilka ändringar du gjorde.

Deluppgift 6 — Pulsarer

Låt bollarna omväxlande växa och krympa. För detta behöver du bestämma minimistorlek samt maximistorlek för bollar (dessa gränser väljs med förstånd). Du måste också lägga till en instansvariabel i klassen Ball som anger om bollen just nu krymper eller växer. Denna variabel ska vara av typen boolean. Vidare behöver du kod som växlar variabelns värde då bollen når sin minimistorlek och maximistorlek.

Modifiera metoden action() så att bollen får den pulserande egenskapen. Beskriv vilka ändringar du gjorde.