Page 22 : 31
Forelæsningsnoter i Objekt-orienteret Programmering
Designkontrakter og ansvarsfordeling
* Specifikationsproblemet
Softwarekvalitet
Korrekthed
Specifikation
* Specifikation med pre- og postbetingelser
Logiske udtryk samt pre- og postbetingelser
Eksempel på brug af pre- og postbetingelser i et objekt-orienteret program
Et sprog til formulering af 'assertions'
* Ansvarsfordeling og kontrakter
Ansvarsfordeling
Det overansvarlige program
Det ansvarsløse program
Ansvarsfordeling specificeret med pre- og postbetingelser
Kontraktbegrebet
Kontrakter: ydelse og nydelse
Ydelse og nydelse i kvadratrods funktionen
* Generelle kontraktaspekter: klasseinvarianter
Klasseinvarianter
Eksempel på klasseinvariant: CircularList
Hvornår skal en invariant være opfyldt?
* Subkontrakter og nedarvning
Forholdet mellem nedarvning og kontrakter
Subkontrakter
Eksempel på klasseinvarianter: Trekantshierarkiet
Assertions i abstrakte klasser
* Kontrakter i praktisk programudvikling
Løbende check af kontrakter under programudførelse
Udbyttet af kontrakter i programudviklings processen
Assertions i objekt-orienterede programmeringssprog
* Andre anvendelser af assertions
Løkkeinvarianter
Forholdet mellem nedarvning og kontrakter
Når en klasse B arver fra klassen A søger vi retningslinier for, hvorledes assertions i B og A forholder sig til hinanden.
Problemstillingen omkring forholdet mellem assertions når en klasse B arver fra klassen A
Hvordan forholder assertions i en subklasse sig til de tilsvarende assertions i en superklasse?