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 :

[Besoin Conseils] Coder de manière élégante


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite Avatar de Mathusalem
    Profil pro
    IT moa
    Inscrit en
    Décembre 2003
    Messages
    1 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : IT moa

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 008
    Par défaut [Besoin Conseils] Coder de manière élégante
    Bonjour à tous,

    Je voulais poster ce message dans le thread "débat, java vs c++", mais il parait que je ne suis pas membre du club...
    J'ai essayé de faire l'inscription, et ça renvoie sur l'inscription de ce forum. Bref, je n'ai pas dû tout comprendre.

    Voila ma question :
    J'ai fait un peu de java à la fac (Interfaces graphiques, classes à charger dans Oracle, ...), et j'ai dernièrement eu une formation accélérée de c++ en une semaine (orientée calculs financiers, méthode de monté-Carlo, Black & Scholes, etc).
    Evidement, on nous a expliqué comment surcharger des opérateurs : à première vu, la syntaxe est tordue, mais finalement on s'y fait, puis les classes templates, toujours difficile au début, et puis on se dit "mais comment je faisais avant sans ça ?"

    Donc en Java ?
    Si je me crée une classe matrice (je ne doute pas qu'il en existe déjà, c'est pour l'exemple), écrire maMatrice.add(maMatrice2), c'est propre ?

    Plus généralement, qu'est ce qui est propre en java, pour remplacer les classes templates et la surcharge des opérateurs ?

    Merci beaucoup de m'avoir lu.

  2. #2
    Gfx
    Gfx est déconnecté
    Expert confirmé
    Avatar de Gfx
    Inscrit en
    Mai 2005
    Messages
    1 770
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 770
    Par défaut
    Pour remplacer les operateurs, tu crees des methodes, comme ton exemple avec add(). Pour les templates, tu peux utiliser des interfaces la plupart du temps pour parvenir a un resultat similaire (cf interface Comparable utilisee pour les tris). Dans Java 1.5 tu as les generics dont la syntaxe rappelle les templates C++ mais qui ne sont pas tout a fait pareils (voire carrement bien differents).

  3. #3
    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 Re: [Besoin Conseils] Coder de manière élégante
    Salut,


    Les Generics de Java 5.0 (Tiger) permettent a peu près les mêmes choses que les Templates de C++
    Tu trouvera plus d'information dans la section dédié de la Présentation de Tiger

    Mais la syntaxe est relativement la même, malgré que les mecanisme sont différents (avec des incoviénient et des défauts pour chacun)...


    En ce qui concerne la surcharges des opérateurs, ce n'est pas possible en Java et je pense bien que ce ne le sera jamais...
    La seule exception en Java c'est l'opérateur + sur les String...

    Le problème avec la surcharge des opérateurs c'est que cela cache le mecanisme aux developpeurs qui utilise tes classes, et que cela peut engendrer des effet de bord indésirables...

    De plus cela s'éloigne un peu de la POO, et alors que le code semble tout simple, cela peut effectuer des traitements assez lours et cale implique la création d'éléments temporaires (avec tout ce que cela implique : constructeur de copie, etc...).

    Lorsque tu fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Matrice m = new Matrice();
    Matrice n = new Matrice();
    // ...
    m = m + n;
    Cela revient à faire (en POO) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Matrice m = new Matrice();
    Matrice n = new Matrice();
    // ...
    m = new Matrice(m).add(n);
    Et cela peut se relever très lourd dans certaines conditions (dans les boucles par exemples).
    Alors qu'un simple appel de méthode est plus clair et explicite :

    a++

  4. #4
    Membre Expert
    Avatar de alexismp
    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 503
    Par défaut
    Le sources du benchmark Java SciMark seront peut-être intéressantes: http://math.nist.gov/scimark2/

Discussions similaires

  1. Besoin conseil pour un petit jeu
    Par Cosmosis dans le forum Langage
    Réponses: 3
    Dernier message: 22/12/2006, 14h44
  2. Besoin conseils pour candidature spontanée
    Par vallica dans le forum Emploi
    Réponses: 7
    Dernier message: 05/10/2006, 16h10
  3. Besoin conseil : lier 2 bases mysql
    Par vallica dans le forum Requêtes
    Réponses: 2
    Dernier message: 09/08/2006, 10h24
  4. Besoin conseil developpement web - messagerie
    Par xman_genius dans le forum Autres Logiciels
    Réponses: 5
    Dernier message: 24/04/2006, 21h33
  5. [EJB Session] Besoin conseil pour implémentation
    Par stago dans le forum Java EE
    Réponses: 10
    Dernier message: 13/07/2004, 11h20

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