Stiati ca….

Suma premiilor puse in joc la concursurile anuntate depaseste
75000
de euro ?

Enter your email address:

Categorii

Arhiva

ZeList

Despre Contracte in Java

OCL (Object Constraint Language) este folosit cu succes alaturi de UML pentru modelarea independenta de platforma a aplicatiilor orientate obiect (faza de design).

Problema vine atunci cand trecem de la diagrama de clase care contine si restrictii/invarianti OCL la implementarea codului.

De cele mai multe ori programatorii isi aleg propriul stil de a implementa aceste restrictii: de exemplu daca este vorba de domeniul de valori al unei variabile atunci, de regula, verificarea restrictiilor se face pe setter-ul acelei variabile sau pe constructor-ul clasei. O preconditie asupra unui parametru intr-o metoda se face prin unul sau mai multe teste la inceputul codului acelei metode etc.

O preconditie, postconditie sau un invariant este un „contract” (o obligatie) pe care operatia/clasa/proprietatea trebuie sa o indeplineasca.

Fara o relativ standardizare a implementarii acestor contracte codul rezultat ar putea deveni destul de greu de mentinut (developerii vin si pleaca…)

O solutie interesanta o reprezinta COFOJA un proiect dezvoltat de 3 persoane.
In esenta poti sa-ti adnotezi codul folosind un set de adnotari prestabilite care iti permit sa exprimi preconditii, postconditii si invarianti. Exista chiar si o pagina de principii de utilizare si design.

Design by contract nu este o chestiune noua dar este importanta.
Unul dintre pionieri este Bertrand Meyer (parintele limbajului Eiffel ) cu al sau „Design by Contract”( Technical Report TR-EI-12/CO, Interactive Software Engineering Inc., 1986). Un articol mai recent poate fi citit aici.

Leave a Reply

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

  

  

  

Acest sit folosește Akismet pentru a reduce spamul. Află cum sunt procesate datele comentariilor tale.