Lecture overview -- Keyboard shortcut: 'u'  Previous page: Lighed [Section] -- Keyboard shortcut: 'p'  Next page: Eksempel på reference lighed -- Keyboard shortcut: 'n'  Lecture notes - all slides and notes together  slide -- Keyboard shortcut: 't'  Help page about these notes  Alphabetic index  Course home  Play sound for this page -- Keyboard shortcut: 'y'  Page 21 : 27
Forelæsningsnoter i Objekt-orienteret Programmering
Objekt-orienteret programmering i Java, del 1
Generelt om lighed mellem objekter

Vi ser nu på lighedsbegrebet og objekter. Lighed af værdier (tal, char, boolean) er uproblematisk, idet det er veldefineret hvad det vil sige at to tal, tegn, eller boolske værdier er ens eller ej. Så her koncentrerer vi os om lighed mellem objekter

Lighed af objekter (referencer til objekter) kan have mange forskellige definitioner

  • Forskellige former for lighed - er x lig med y?

    • Reference equality.

      • Returnerer hvorvidt referencerne x og y peger på det samme objekt

      • Den mest diskriminerende form for lighed

    • Shallow equality.

      • Returnerer hvorvidt de to objekter x og y er strukturelt ens

      • Ét objekt-niveau sammenlignes

      • Anvender reference lighed på instansvariable af klassetyper

    • Deep equality.

      • Returnerer hvorvidt de to objekt-netværk x og y er strukturelt ens

      • Involverer rekursiv sammenligning på instansvariable af klassetyper

Når vi taler om den 'mest diskriminerende form for lighed' hentyder vi til den ækvivalensrelation, som skaber de fleste klasser i en klassedelning. Udtrykt mindre matematisk, kan vi sige at denne form for lighed skelner flest mulige objekter fra hinanden. Et objekt vil kun være lig med sig selv.

Reference equality => shallow equality => deep equality