Guillaume Desnoix wrote:
Remi Forax:

Enfin, si je me souvient bien en Eiffel, on peut �crire
(syntaxe � la Java pour que tous le monde comprenne) :

class A {
  void m(A a);
}
class B {
  override void m(B b);
}

Qui veut dire que m(B) red�finie m(A), on donc
on peut gaiement �crire le code ci-dessous :

A a=new A();
A b=new B();

b.m(a); // pas d'erreur de compile
        // mais erreur d'ex�cution

Tu en es sur ? Je me trompe peut-etre (ma connaissance d'Eiffel est plutot theorique) mais a mon avis tu dois confondre.
En eiffel, j'en suis sur. En smart eiffel, je sais pas.

Un truc assez interessant (et qui manque a Java) est la redefinition du type retourne:

class C extends Object {
public C clone() { ... }
}

Plus besoin de cast:
C c=new C().clone();
Oui, la covariance sur le type de retour.
Ca fait parti des trucs qui ont de grande chance d'�tre
int�gr� dans le JDK1.5.


Pour moi, c'est un probl�me. Enfin, il �tait entrain d'essayer
un type like Current pour �viter ce genre de probl�me.

Il faut distinguer like de Current. Current est l'equivalent de this. Par contre le mot-clef like est tres interessant: il permet de specifier un type a l'execution:

a: like b;
-- La variable est declaree avec le meme type que b.
Oui, mais je crois que l'on peut utiliser like AUSSI dans une
syntaxte de type "like Current" pour indiquer que l'on veut faire
de la covariance sur les types des param�tres.


ya des trucs vraiement bien dans ce langage :
  - vrai prog par contrat
Oui

  - red�finition des variables
Oui mais je ne suis pas sur que ce soit applicable a un langage dynamique comme Java. Ton avis ?
Nom, ca pose pas de probl�me. Au niveu typage, il faut juste s'assurer
que l'on red�finie une variable avec un sous-type de la variable
d�j� d�finie. De toutes fa�on, en m�moire, la variable n'est
stock�e qu'une fois. Elle � juste un type diff�rent.


  - redif des op�rateurs
Ca se discute. J'ai toujours trouve que c'est mal foutu dans des langages comme C++ et Eiffel parce que les operateurs et leurs priorites sont imposees par la syntaxe. Un des meilleurs compromis que je connaisse est POP-11 qui te laisse redefinir la priorite mais aussi definir tes propres operateurs.
Completement d'accord. Mais le compilo devient dure � �crire.

Guillaume
Remi

Répondre à