Lecture overview -- Keyboard shortcut: 'u'  Previous page: Eksempel på klasseinvariant: CircularList -- Keyboard shortcut: 'p'  Next page: Subkontrakter og nedarvning [Section] -- 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 20 : 31
Forelæsningsnoter i Objekt-orienteret Programmering
Designkontrakter og ansvarsfordeling
Hvornår skal en invariant være opfyldt?

Vi beskrev løst ovenfor, at en invariant skal være opfyldt på ethvert stabilt tidspunkt i et objekts levetid. Vi vil nu gør dette udsagn væsentligt mere præcist

  • En klasseinvariant skal opfyldes på følgende tidspunkter i et objekts levetid:

    • Umiddelbart efter objektets skabelse (initialisering via en konstruktor)

    • Før udførelsen af en offentlig operation

    • Efter udførelsen af en offentlig operation

Vi ser, at klasseinvarianten er et 'sigtepunkt' for konstruktorerne i en klasse. Objekter skal starte livet et en sund tilstand. De sunde tilstande af et objekt beskrives af klassens klasseinvariant

Klasseinvarianten skal ikke nødvendigvis opfyldes efter udførelse af private operationer i klassen

En privat operation spiller ofte rollen som en hjælpeoperation. Udførelse af en sådan hjælpeoperation bringer ikke nødvendigvis objektet i en sund tilstand. Der skal muligvis flere påvirkninger til inden objektet havner i en tilstand, hvor klasseinvarianten gælder