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

 C++ Discussion :

Conseil pour passage Java -> C++


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2007
    Messages
    697
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 697
    Par défaut Conseil pour passage Java -> C++
    Bonjour,
    étant développeur Java, j'ai envie de me mettre au c++ (j'ai déjà lu quelques tutoriels et je pense maitriser les bases du langage).

    Je voudrais quelques conseils/précisions :
    1. J'ai entendu qu'il y avait plusieur norme C++, la norme M$ et la norme ANSI-C++ et probablement d'autres. Qu'en est-il exactement à quoi ça correspond (compilateurs différents, règles à respecter..). J'avoue que je suis en peu perdu dans tout ça.
    2. En rapport avec la question précédente, quelle EDI me conseillé vous ?( VS2008, CodeBlock, NetbeansC/C++, autres ...)
    3. Je me demandais quelles bibliothèque puis-je utilisé pour les collections, gestion des threads , GUI ... (existe-t'il un équivalent du JDK ?)
    4. Gestion des headers :
      • j'ai vu que l'on ne devait définir dans l'entête que le prototype de la classe (attribut, déclaration de méthode) et que le code des fonctions devait être déclaré dans un fichier propre à chaque fonction
      • Ceci s'applique-t'il méthode suivante :
        • constructeur(par défaut, par copie)
        • destructeur
        • redéfinition d'opérateur
        • getteur/setteur
      • Sachant que ces derniers(getteur/setteur) doivent être déclaré inline cela oblige-t'il à les coder dans le header ?
    Je développe sous Windows Vista/Ubuntu et utilise actuellement gcc/g++ via cygwin

    Merci d'avance à celui/celle/ceux qui prendront le soin de se pencher sur mes interrogations

  2. #2
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Citation Envoyé par atha2 Voir le message
    • En rapport avec la question précédente, quelle EDI me conseillé vous ?( VS2008, CodeBlock, NetbeansC/C++, autres ...)
    Moi j'utilise indifféremment Eclipse CDT, DevC++ et Visual. Affaire de gout et d'habitude. Le premier est un peu lourd mais en venant du monde java peut-être le connais-tu déjà, le second est un peu plus léger mais je le trouve parfois pas très pratique et le dernier est assez bien pour le debug.
    Citation Envoyé par atha2 Voir le message
    • Je me demandais quelles bibliothèque puis-je utilisé pour les collections, gestion des threads , GUI ... (existe-t'il un équivalent du JDK ?)
    MFC mais c'est uniquement Windows et un peu lourd.
    wxWidget.
    D'autres te parleront mieux que moi de choses comme QT.
    Citation Envoyé par atha2 Voir le message
    [LIST][*]Gestion des headers :
    • j'ai vu que l'on ne devait définir dans l'entête que le prototype de la classe (attribut, déclaration de méthode) et que le code des fonctions devait être déclaré dans un fichier propre à chaque fonction
    Un header pour la définition de la classe un cpp pour son implémentation. C'est une bonne pratique même si cela n'a rien d'obligatoire.
    Citation Envoyé par atha2 Voir le message
    • Ceci s'applique-t'il méthode suivante :
      • constructeur(par défaut, par copie)
      • destructeur
      • redéfinition d'opérateur
      • getteur/setteur
    • Sachant que ces derniers(getteur/setteur) doivent être déclaré inline cela oblige-t'il à les coder dans le header ?
    Oui pour tout. Pour les getteur/setteur comme en général ils sont relativement simples, on les définie directement dans la déclaration de la classe.

  3. #3
    Membre émérite
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    780
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2006
    Messages : 780
    Par défaut
    Citation Envoyé par atha2 Voir le message
    [*]J'ai entendu qu'il y avait plusieur norme C++, la norme M$ et la norme ANSI-C++ et probablement d'autres. Qu'en est-il exactement à quoi ça correspond (compilateurs différents, règles à respecter..). J'avoue que je suis en peu perdu dans tout ça.
    Officiellement il n'y en a qu'une et la dernière version de la norme date de 2003. L'ancienne norme datait de 1998. Il se peut que tu ais entendu ça parce que certains compilateur comme VisualC++ 6 datent d'avant 1998.

    [*]Je me demandais quelles bibliothèque puis-je utilisé pour les collections, gestion des threads , GUI ... (existe-t'il un équivalent du JDK ?)
    En standard tu as la Standard Library qui contient un ensemble de collections et autres ( string etc.. ) qu'il faut savoir utiliser.

    Ensuite, tu as Boost qui est un ensemble de bibliothèques pour le C++ dont une partie fera partie du prochaine standard.

    Ensuite si tu es sous windows, il y a des librairies spécial windows ( comme MFC etc.. ). Si tu es sous Linux, tu auras aussi des fonctions différentes. L'essentiel en apprenant le C++ est de bien comprendre ce qui est du C, ce qui est de l'API propre à l'OS, ce qui est du C++ standard.

    Pour les bibliothèques graphiques, il y en a beaucoup au choix, mais une des plus connues et utilisées est Qt.

    [*]Gestion des headers :[LIST][*]j'ai vu que l'on ne devait définir dans l'entête que le prototype de la classe (attribut, déclaration de méthode) et que le code des fonctions devait être déclaré dans un fichier propre à chaque fonction
    Eh ben ça dépend. Tu peux définir toutes tes fonctions inline si tu veux dans le .h ( mais ce n'est pas conseillé ). Quand tu utilises les templates, tu es aussi obligé de définir test fonctions les utilisant dans ton .h.

    Généralement pour une classe on utilise un fichier .h avec les déclarations + fonctions inline et un fichier .cpp avec les définitions des méthodes + fonctions outils.

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    399
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 399
    Par défaut
    Sinon pour le passage java a C++, il faut bien étudier les différences dans le langage en lui même. Il y a quelques subtile différences qui peuvent amener des erreurs :

    • une méthode est virtuelle par défaut en java (sinon il faut préciser final). C'est le contraire en C++
    • Le polymorphisme ne s'effectue que sur des pointeurs ou des références
    • Bien voir les valeurs/références/pointeur, c'est une différence majeur avec le JAVA ou tout objet est une référence. Le new ne s'utilise pas de la meme facon qu'en JAVA
    • L'accessibilité par défault en java est package, en C++ c'est privée
    • D'ailleurs l'accessibilité package n'existe pas en C++. Mais il y a le concept de friend
    • L'héritage multiple existe en C++
    • ...
    SPARK
    Moteur de particule C++ opensource avec modules de rendu OpenGL, Irrlicht et SFML

  5. #5
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Par défaut
    Tu peux programmer en C++ exactement comme en Java.
    Néanmoins, ce n'est certainement pas le paradigme conseillé. Je te conseille donc d'apprendre le RAII et tout ça.

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    780
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2006
    Messages : 780
    Par défaut
    Il faut aussi bien comprendre en C++ ce qu'est une référence et toute la partie const-correctness.

    Et aussi les exceptions qui s'utilisent différement, et la partie RAII avec les destructeurs

  7. #7
    Membre chevronné
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    399
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 399
    Par défaut
    Citation Envoyé par loufoque Voir le message
    Tu peux programmer en C++ exactement comme en Java.
    La facon de manier les instances est tout de même différente. Le portage minimum est de remplacer toute les référence JAVA en pointeur C++, ce qui impose de bien gérer ses destructeurs. En C++, il ne faut pas oublier l'allocation statique, qui n'existe pas en JAVA. Il faut aussi faire attention au polymorphisme (en spécifiant bien ses virtual). Et puis, le C++ n'est pas un langage pure OO non plus. Bref coder du C++ comme du JAVA c'est sans doute faisable mais ca donne du code pourri et du coup ce n'est plus vraiment "coder en C++" mais "coder en JAVA en utilisant la syntaxe C++".

    Et puis apres il y a le probleme de la librairie standard du C++ nettement moins fourni que celle de JAVA
    SPARK
    Moteur de particule C++ opensource avec modules de rendu OpenGL, Irrlicht et SFML

  8. #8
    Membre émérite
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    780
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2006
    Messages : 780
    Par défaut
    Citation Envoyé par Frifron Voir le message
    La facon de manier les instances est tout de même différente. Le portage minimum est de remplacer toute les référence JAVA en pointeur C++, ce qui impose de bien gérer ses destructeurs.
    ben non, le portage minimum c'est de remplacer les références JAVA en références C++

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Conseils pour débuter en Java
    Par flamant dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 09/03/2007, 11h30
  2. Besoin d'aide pour passage d'un algo au langage JAVA
    Par Spinoza23 dans le forum AWT/Swing
    Réponses: 6
    Dernier message: 16/02/2007, 15h33
  3. conseil pour un noob de java
    Par Th3dJoBiN dans le forum Langage
    Réponses: 3
    Dernier message: 11/12/2006, 15h13
  4. [Débutant] Conseils pour apprendre Java
    Par emary dans le forum Langage
    Réponses: 2
    Dernier message: 11/06/2006, 23h31
  5. Besoin de quelques conseils pour un script java
    Par poussin544 dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 02/03/2006, 10h41

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