Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 5.3
Expand
titleDel 1 - Innkapsling og Konstruktører (15%)
Oppgave a)

Hva er formålet med / begrunnelsen for å implementere en eller flere konstruktører for en klasse? 

Expand
titleLF

  En konstruktør har som formål å initialisere et objekt, slik at det fra starten av har en gyldig tilstand.

Oppgave b)

   I forhold til innkapsling, hva er hovedgrunnen til å la en konstruktør ta en eller flere parametre?

Expand
titleLF
 Parametrene til en konstruktør er informasjon som trengs for å gi objektet en gyldig starttilstand, som oftest verdien til felt som må være satt og det ikke finnes noen fornuftig default-verdi.
Oppgave c)

c) I hvilke situasjoner bør en konstruktør være henholdsvis public, protected og private og hvordan vil kallet til konstruktøren se ut?

Expand
titleLF

public brukes når andre klasser skal kunne instansiere klassen direkte med new <klasse>(…). protected-konstruktører brukes for å initialisere felt i en superklasse og kalles av subklassens konstruktør med super(…). private brukes på hjelpekonstruktører internt i en klasse og kalles med this(…).

Oppgave d)

Gitt følgende klasse:

 

Code Block
public class V {
      public int v0, v1 = v0++, v2;
      public V() {
            v2 = v0++;
      }
}

Hva vil verdien til feltene v0, v1 og v2 være etter at konstruktøren er utført?

Expand
titleLF
 v0 = 2, v1 = 0, v2 = 1. v0 blir til slutt 2 fordi den blir økt to ganger. v1 blir initialisert før konstruktøren blir utført og settes til v0 sin verdi før v0 økes (første gang). v2 blir initialisert etter v1 og settes til v0 sin verdi før v0 økes (for andre gang).
Oppgave e)

Java vil ved gitte forutsetninger automatisk opprette en konstruktør for en klasse, slik at instanser av klassen kan opprettes, selv om en ikke eksplisitt har definert en konstruktør for klassen. Hva er betingelsen(e) for at Java skal gjøre dette og hvordan ser denne konstruktøren ut?

Expand
titleLF
 Forutsetningen for å automatisk opprette en konstruktør er at den er instansierbare dvs. ikke abstrakt, og det ikke er definert noen andre konstruktører. En slik konstruktør vil være public og ha tom parameterliste.

Se også Innkapsling

...