Page 9 : 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
Ansvarsfordeling og kontrakter