l'invariant n'a rien à voir avec Java ni avec un language. C'est de l'algorithmique.
Lorsque tu définis une méthode, tu as une méthode formelle qui te permet de spécifier et de préciser le comportement de ta méthode sur certaines conditions.
Précondition : l'état du système lors de ton apple de fonction
Postcondition: l'état du système à la fin de ton appel de fonction.
Ici il faut prendre système au sens large. Je veux dire par là que tu peux définir ca un peu comme tu veux pour peu que ce soit correct vis a vis de ta fonction. Exemple si tu as une division de deux nombres, tu peux dire
int divide(int a, int b);
Précondition : B n'est pas nul
Postcondition: le résultat est égal à A / B
Ca c'est ton "système"
L'invariant c'est le ou les condition(s) qui sont toujours vrai lorsque tu es dans ta méthode (et générallement on fait un invariant sur une boulce pour vérifier que:
* Elle se termine toujours
* Elle donne toujours des résultas escomptés.
Voilà, si ce n'est pas clair dis le nous.
---------------
Just because you feel good does not make you right