| | En operation i klassen lover at opfylde post-betingelsen såfremt
klienten kalder operationen med opfyldt prebetingelse. Kontrakten er
udtryk for en klar ansvarsfordeling mellem klient og leverandøren. Det
er klientens ansvar at undersøge, om prebetingelsen af
supplier-operationen er opfyldt. Hvis dette ikke er tilfældet, bliver
supplier-operationen ikke kaldt, og der opstår en fejlsituation i
klienten. Det er således ikke nødvendigt i kroppen af en operation i
leverandør-klassen at teste, om operationens pre-betingelse er
opfyldt. Den skal være opfyldt. Hvis supplier-operationen ikke
opfylder sin post-betingelse opstår der en fejlsituation i supplier
klassen. Denne klare ansvarsfordeling, og deraf følgende minimale,
test af betingelser forud for udførelsen af en
operation, står i skarp kontrast til defensiv programmering.
Som vi har omtalt går man i defensiv programmering både
med livrem og seler i den forstand, at man gerne udfører samme test
(f.eks. prebetingelsen) to forskellige steder i programmet, for at
forhindre misforståelser om ansvarsfordelingen. I og med at
opfyldelse af prebetingelsen er klientens ansvar, skal alle dele af en
prebetingelse være tilgængelig for klienterne. |