IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

[Generics] Impl�menter des traits � la C++ avec Java ?


Sujet :

Langage Java

  1. #1
    Membre �m�rite
    Homme Profil pro
    Consultant ERP
    Inscrit en
    F�vrier 2004
    Messages
    644
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activit� : Consultant ERP

    Informations forums :
    Inscription : F�vrier 2004
    Messages : 644
    Par d�faut [Generics] Impl�menter des traits � la C++ avec Java ?
    Bonjour,

    Bien qu'ayant l� de la doc sur les G�n�rics et ayant constat� des manques par rapport aux templates C++, je me demande si il �tait tout de m�me possible d'avoir un �quivalent aux traits C++ ?

    quelqu'un aurait-il une id�e ?

    Merci

  2. #2
    Expert �minent
    Avatar de adiGuba
    Homme Profil pro
    D�veloppeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par d�faut
    Salut,

    Citation Envoy� par swirtel Voir le message
    Bien qu'ayant l� de la doc sur les G�n�rics et ayant constat� des manques par rapport aux templates C++,
    L'approche est surtout tr�s diff�rentes : ce n'est pas du tout les m�mes m�canismes...

    Citation Envoy� par swirtel
    je me demande si il �tait tout de m�me possible d'avoir un �quivalent aux traits C++ ?
    A quoi servent les "traits" exactement ? J'ai jet� un coup d'oeil � la FAQ C++ mais j'avoue ne pas avoir tr�s bien compris

    a++

  3. #3
    Membre Expert

    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Novembre 2006
    Messages
    1 252
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 50
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations professionnelles :
    Activit� : Architecte logiciel
    Secteur : A�ronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 252
    Par d�faut
    Citation Envoy� par adiGuba Voir le message
    Salut,


    L'approche est surtout tr�s diff�rentes : ce n'est pas du tout les m�mes m�canismes...


    A quoi servent les "traits" exactement ? J'ai jet� un coup d'oeil � la FAQ C++ mais j'avoue ne pas avoir tr�s bien compris

    a++
    Les traits servent principalement � d�finir une caract�risation sur un type et ce de fa�on statique. Ceci est rendu possible par la surcharge de template pour les diff�rents type qu'ils adressent. C'est en gros de la d�finition de fonction au m�ta-niveau

    Imagine par exemple, que tu veuilles d�finir la caract�ristique de taille m�moire utilis�e pour des types. Tu vas d�finir un template qui retourne 2 pour un appel size_traits<short>::size, et 4 pour un appel size_traits<int>.

    l� ca parra�t obscur comme fa�on de faire, mais c'est rendu n�cessaire si tu travaille dans le m�ta niveau. Si tu as un template qui accepte un type T dont tu veux connaitre la propri�t� de taille, tu peux appliquer le traits size_traits<T> dessus, donc introspecter sur un type anonyme.

    En java, ca n'existe tout simplement pas. Il faut passer par des class<T>...

  4. #4
    R�dacteur
    Avatar de CyberChouan
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    2 752
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 42
    Localisation : France, Paris (�le de France)

    Informations professionnelles :
    Activit� : Directeur technique
    Secteur : Communication - M�dias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Par d�faut
    Je n'ai pas tout compris � tes traits... mais l'introspection d'une classe existe en java (par contre, je ne suis pas certain que celle-ci fonctionne sur une classe anonyme): si tu veux en savoir d'avantage sur l'introspection en java, regarde le package "java.lang.reflect"
    Avant de poster, pensez � regarder la FAQ, les tutoriaux, la Javadoc (de la JRE que vous utilisez) et � faire une recherche
    Je ne r�ponds pas aux questions techniques par MP: les forums sont faits pour �a
    Mes articles et tutoriaux & Mon blog informatique

  5. #5
    Membre chevronn� Avatar de gronono
    Inscrit en
    Novembre 2003
    Messages
    457
    D�tails du profil
    Informations personnelles :
    �ge : 43

    Informations forums :
    Inscription : Novembre 2003
    Messages : 457
    Par d�faut
    Bonjour,

    Si j'ai bien compris l'exemple fourni, il me semble que c'est le fonctionnement des interfaces :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
     
    public interface SizeTraits {
      public int size();
    }
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
     
    public class ShortSizeTraits implement SizeTraits {
      public int size() {
          return 2;
      }
    }
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
     
    public class IntSizeTraits implement SizeTraits {
      public int size() {
          return 4;
      }
    }
    Et l'utilisation :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
     
    public void test(SizeTraits st) {
       System.out.println(st.size());
    }
    A+

  6. #6
    Membre �m�rite
    Homme Profil pro
    Consultant ERP
    Inscrit en
    F�vrier 2004
    Messages
    644
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activit� : Consultant ERP

    Informations forums :
    Inscription : F�vrier 2004
    Messages : 644
    Par d�faut
    ton code sera utile au run-time, mais dans mon cas, cela ne m'int�resse pas, car il me faut un �l�ment utile au compile-time.

    Les generics Java n'ont pas la m�me approche qu'en C++, et �a m'ennuie, car j'aurais bien voulu appliquer les "traits" c++ en Java.

  7. #7
    Membre Expert
    Avatar de gifffftane
    Profil pro
    Inscrit en
    F�vrier 2007
    Messages
    2 354
    D�tails du profil
    Informations personnelles :
    Localisation : France, Loire (Rh�ne Alpes)

    Informations forums :
    Inscription : F�vrier 2007
    Messages : 2 354
    Par d�faut
    J'ai du mal � t'aider parce que je ne comprends pas ces traits.

    Pourrais-tu donner un autre exemple, parce que de toutes fa�ons la notion de taille m�moire n'existe pratiquement pas en java (m�me si, bien s�r, il y en a une).

    Les m�ta-informations - dans une acceptation intuitive - sont souvent donn�es par des annotations, mais, � part un petit nombre standard, elles ne sont pas trait�es par le compilateur ; pour elles il faut se faire son propre compilateur d'annotations.

  8. #8
    Membre Expert

    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Novembre 2006
    Messages
    1 252
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 50
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations professionnelles :
    Activit� : Architecte logiciel
    Secteur : A�ronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 252
    Par d�faut
    Les traits sont ce que l'introspection et les annotations permettent de faire en java, mais pas au m�me niveau. Les traits permettent de d�finir un m�ta op�rateur, s'appliquant sur un type et retournant un r�sultat. On peut ainsi d�finir un trait 'facette' qui retourne une description, ou une icone sur un objet m�tier devant poss�der un signifiant, ou un trait 'strategie' qui retourne un algorithme particulier selon le type transmis.

    Mais attention, cela est STATIQUE. En c++ c'est � la compilation que s'interpr�tent les traits, en java c'est � l'ex�cution. C'est pas seulement par int�r�t que cela survient � la compilation en C++, c'est absolument n�cessaire quand on joue avec les templates, car on manipule des types anonymes (voir ce qu'en fait la biblioth�que boost).

  9. #9
    Membre Expert
    Avatar de gifffftane
    Profil pro
    Inscrit en
    F�vrier 2007
    Messages
    2 354
    D�tails du profil
    Informations personnelles :
    Localisation : France, Loire (Rh�ne Alpes)

    Informations forums :
    Inscription : F�vrier 2007
    Messages : 2 354
    Par d�faut
    Ces traits sont-ils d�finis dans le cadre d'une classe ou d'autre chose ?

    En Java, � la compilation, on n'a pas grand chose d'autre que des classes, des interfaces, et des types g�n�riques.

    Je tente une approche pour voir : si je fais une classe Facette, avec une m�thode getDescription(), est-ce que cela pourrait ressembler � un trait ?

  10. #10
    Membre Expert

    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Novembre 2006
    Messages
    1 252
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 50
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations professionnelles :
    Activit� : Architecte logiciel
    Secteur : A�ronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 252
    Par d�faut
    Non pas du tout, car tu exprime un propri�t� d'instance, alors qu'en C++ c'est une propri�t� de type (de classe). On peut pas l'exprimer facilement en java � cause du type-erasure.

    Cela dit, plus j'y r�fl�chis, et moins je vois d'int�r�t aux traits en java, car les templates n'y sont pas exprimable...

  11. #11
    Membre �prouv�
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    132
    D�tails du profil
    Informations personnelles :
    Localisation : France, Paris (�le de France)

    Informations forums :
    Inscription : Mai 2007
    Messages : 132
    Par d�faut
    Pour moi les staits ne sont pas utiles en Java car en Java le type g�nerique ne peut s'exprimer que sur des object et non sur des types simple (int, double ...).

    Par exemple:

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    java.util.List<int>  aList = ....//ne compile pas
    Donc en fait on n'a pas le probl�me que m�langer des types du genre char et char*.

    Il est toujours possible d'utiliser les wilcards pour �tre sur que l'object herite d'une certaine interface.

    Exemple:

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    class toto<T extend MYCLASS>

Discussions similaires

  1. simulation des reseaux sans fil avec java
    Par enstein8 dans le forum Entr�e/Sortie
    R�ponses: 1
    Dernier message: 08/01/2010, 17h37
  2. Extraction des Liens sur Internet avec java
    Par jaja2 dans le forum G�n�ral Java
    R�ponses: 1
    Dernier message: 28/02/2008, 13h23
  3. impl�mentation des protocoles tcp/ip en java
    Par mdller�seau dans le forum D�veloppement
    R�ponses: 3
    Dernier message: 09/02/2008, 15h28
  4. Passer des commandes � un vbscript avec Java
    Par Voyvode dans le forum Langage
    R�ponses: 7
    Dernier message: 10/03/2007, 23h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo