Posté par Epsos .
En réponse au journal Nosica.
Évalué à 1.
les containtes d'eiffel : de petits statements qui permettent de verifier des contraintes sur le fonctionnement d'une methode.
3 types de contraintes :
invariant : verifiee a chaque modification des donnees d'une classe
requires : verification avant execution d'une methode
ensures : verification apres execution d'une methode
ex :
class T
{
private int i;
invariant
{
i inferieur a 10; // pas pu utiliser l'operateur de math : bug dans templeet ?
i superieur ou egal a 0;
}
public int inc(int incValue)
{
i += incValue;
return i;
}
requires
{
incValue + i inferieur a 10;
incValue + i superieur ou egal a 0;
}
ensures
{
result inferieur a 10;
result superieur ou egal a 0;
}
}
Bon c'est pas un exemple top interressant, mais ca te donne une idee de ce que ca peut faire.
En cas de contraintes non verifie, le programme s'arrete en precisant ce qui a merde.
genericite : les templates en C++ :
class Vector<T> implements Collection
{
}
differenciation infix/postfix/prefix
Il s'agit des differents types d'operateurs existant dans Nosica.
En c++ :
int operator +(int i) {}
utilisation : int i = 1 + 2; // equivalent a 'int i = 1.operator +(2);'
Tu remarqueras qu'on a pas le choix : l'operateur s'applique sur le terme de gauche.
En Nosica :
int infix +(int i) {}
meme utilisation, mais la notation indique que c'est le membre de gauche qui est utilise comme instance.
int postfix(OStream os) {}
utilisation :
OStream os = new OStream(System.out);
os << 1; // equivalent a 1.postfix(os);
Ici, on a permute l'instance qui fait l'operation : il s'agit du membre de droite.
Les operateurs prefix permettent de definir les operateurs ++ par exemple :
int prefix++();
utilisation :
++i; // equivalent a i.prefix++();
[^] # Re: Pourquoi faire ?
Posté par Epsos . En réponse au journal Nosica. Évalué à 1.
3 types de contraintes :
invariant : verifiee a chaque modification des donnees d'une classe
requires : verification avant execution d'une methode
ensures : verification apres execution d'une methode
ex :
Bon c'est pas un exemple top interressant, mais ca te donne une idee de ce que ca peut faire.
En cas de contraintes non verifie, le programme s'arrete en precisant ce qui a merde.
genericite : les templates en C++ :
class Vector<T> implements Collection
{
}
differenciation infix/postfix/prefix
Il s'agit des differents types d'operateurs existant dans Nosica.
En c++ :
int operator +(int i) {}
utilisation : int i = 1 + 2; // equivalent a 'int i = 1.operator +(2);'
Tu remarqueras qu'on a pas le choix : l'operateur s'applique sur le terme de gauche.
En Nosica :
int infix +(int i) {}
meme utilisation, mais la notation indique que c'est le membre de gauche qui est utilise comme instance.
int postfix(OStream os) {}
utilisation :
OStream os = new OStream(System.out);
os << 1; // equivalent a 1.postfix(os);
Ici, on a permute l'instance qui fait l'operation : il s'agit du membre de droite.
Les operateurs prefix permettent de definir les operateurs ++ par exemple :
int prefix++();
utilisation :
++i; // equivalent a i.prefix++();
A+