Lecture overview -- Keyboard shortcut: 'u'  Previous page: Ansvarsfordeling specificeret med pre- og postbetingelser -- Keyboard shortcut: 'p'  Next page: Kontrakter: ydelse og nydelse -- 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 14 : 31
Forelæsningsnoter i Objekt-orienteret Programmering
Designkontrakter og ansvarsfordeling
Kontraktbegrebet

Vi introducerer nu kontraktbegrebet for software, som en metafor i forhold til kontrakter kendt fra vores hverdag. Vi omgås alle med mange forskellige kontrakter. Eksempelvis indgår vi i et kontrakt-lignende forhold med vores forsikringsselskab; kontrakten udtrykker gensidige forpligtigelser hvis der opstår en skade. Hvis vi køber en bil skriver vi under på en kontrakt med bilforhandleren om leveringsbetingelser mv. Hvis vi optager et lån i en bank indgår der en kontrakt. Der er også talrige kontrakter i spil i forhold til offentlige myndigheder, som oftest er påtvungen os ved lov.

Pre- og postbetingelserne af operationer i en klasse udgør tilsammen en kontrakt mellem klassen og dens klienter

En kontrakt udtrykker de gensidige forpligtelser mellem to dele af et program, som samarbejder om løsningen af et problem

En kontrakt mellem to dele af et program svarer til kontrakt begrebet som vi kender det fra den virkelige verden. Her er altså tale om en gensidig forpligtigelser mellem to parter, som har indgået en aftale.

Ifølge Nudansk ordbog er en kontrakt en 'bindende skriftlig overenskomst'. Ordbogen eksemplificerer dette med leje-, engagement-, eller købssituationer.

Et kontraktbrud er en alvorlig begivenhed som bringer programmet i en undtagelsestilstand, som for det meste vil afstedkomme at programmet stopper udførelsen

Et kontraktbrud opfattes som en fejl i programmet i forhold til specifikationen

Vi kan også sige, at kontraktbrud opfattes som en fatal fejl i programmet, som er udtryk for et brud på specifikationen