You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 2 Next »

Oppgave a)

Gitt følgende klasse:

public class MysticalObject {

	private int number;

	public MysticalObject(int number) {
		this.number = number;
	}

	public void step() {
		number = -(number - (int) Math.signum(number));
	}

	public int getNumber() {
		return number;
	}
}

Tegn et objekttilstandsdiagram for et MysticalObject-objekt som er instansiert med new MysticalObject(3), som viser oppførselen til getNumber- og step-metodene.

Her er oppgaven dels å forstå koden, dels å kjenne diagramnotasjonen og dels å skjønne hva som er relevant å ha med.

 
Oppgave b)

Objekttilstandsdiagrammer kan brukes til å beskrive oppførselen til et objekt. Angi en viktig fordel og en ulempe/begrensning ved slik bruk.

 Fordeler: Eksempel på forløp kan være enklere å forstå enn en komplett definisjon i form av regler (invarianter). Diagrammer kan være mer intuitive enn tekst. Det er lett å skrive test-kode basert på diagrammet.

Ulemper: Diagrammene blir lett store, hvis de skal dekke alle relevante tilfeller. Det er kun i enkle tilfeller en kan beskrive oppførselen komplett.

Oppgave c)

Java krever at en deklarerer typen til alle felt, variabler og parametre (i motsetning f.eks. Python, Javascript og Matlab). Hva er de viktigste fordelene dette gir?

 De blir lettere å:

  • oppdage/hindre feil bruk av verdier (for verktøy, kompilator og programmerer)

  • tilby hjelp til kodingen, f.eks. foreslå metoder

  • kompilere til effektiv kode 

Oppgave d)

I koden over så står det (int) foran kallet til Math.signum. Hva kalles dette (denne typen uttrykk) og hvordan virker det (påvirker det utførelsen) i dette tilfellet? Den samme syntaksen kan også brukes i tilfeller hvor typen er en klasse eller et grensesnitt. Hvordan virker det da?

 Det kalles casting og brukes for å ”tvinge” Java til å ”akseptere” at uttrykket som helhet har den angitte typen. Når det brukes på tall-typer, så vil Java konvertere fra den ene til den andre typen (her: fra float til int). Når casting brukes med klasser/grensesnitt så vil det sjekkes at det indre uttrykket har den angitt typen, og hvis ikke så utløses ClassCastException.

 Oppgave a)

 

 

 Oppgave b)

 

 

 Oppgave c)

 

 

 Oppgave d)

 

 

 Oppgave e)

 

 

 Oppgave f)

 

 

 Oppgave a)

 

 

 Oppgave b)

 

 

 Oppgave c)

 

 

 Oppgave d)

 

 

 Oppgave e)

 

 

 Oppgave f)

 

 

 

 

  • No labels