Contracts: specifying behavioral compositions in object-oriented systems

✒ Enzo SandrĂ© · 📆 15/04/2025 · 🔣 Science des Langages

📃 Les contrats ont Ă©tĂ© inventĂ©s en 1990 afin de complĂ©ter les interfaces des classes. Ces derniĂšres donnent les signatures des mĂ©thodes exposĂ©es par une classe, mais ne disent rien du comportement que chacune des parties attend de l’autre. Les commentaires sont largment insuffisants, car il faut que de telles spĂ©cifications soient exĂ©cutables.

đŸŒ± La premiĂšre idĂ©e Ă©mise par les chercheurs fut d’intĂ©grer les contrats dans les langages de programmation eux-mĂȘmes. Cette idĂ©e n’a pas pris, mais les contrats sont loin d’ĂȘtre morts ! Les tests fonctionnels sont les hĂ©ritiers directs de ce morceau d’histoire du logiciel. Plus Ă©loignĂ©s, certains types de foncteurs (Maybe, Lazy, Either, 
) ou les systĂšmes de Tasks/Promises peuvent se rattacher Ă  des contrats.

SOURCE

Richard Helm, Ian M. Holland, and Dipayan Gangopadhyay. 1990. Contracts: specifying behavioral compositions in object-oriented systems. SIGPLAN Not. 25, 10 (Oct. 1990), 169–180. DOI:10.1145/97946.97967

Enzo Sandré


📄 Lien public DOIs: 10.1145/97945.97967