Du Java au C++ Un exemple de code en Java et C++ Quelques mots sur le C++ La similitude entre Java et C++ L’extension du C Les différences syntaxiques Le programme principal Le fichier d’en-tête Construction et destruction des objets La surcharge des opérateurs Les constantes Les différences fonctionnelles Le passage de paramètres L’héritage multiple / les interfaces Les templates Divers L’apport de Java Java – Comparaison C++ - 19/11/03 1 Un exemple de code en C++ et en Java q Fichier C++ « Primitive.h » #include “stream.h” // Classe abstraite class Primitive { private : int couleur; public : Primitive(int coul) {couleur = coul}; virtual ~Primitive() {}; vritual void Affiche() = 0; } q Fichier C++ « Point.h » // classe concrète Point, dérive de Primitive class Point : public Primitive { private : double coordx; double coordy; public : Point(double,double,int); ~Point(); void Affiche(); } Java – Comparaison C++ - 19/11/03 2 q Fichier C++ « Point.C » #include “Point.h” Point::Point(double x,double y,int couleur):primitive(couleur) { coordx = x; ccordy = y; } Point::~Point(){} void Point::Affiche() { cout << “Coordonnée x : “ << coordx; cout << “Coordonnée y : “ << coordy;} q Fichier en Java public abstract class Primitive { private int couleur; public Primitive(int couleur) { couleur = coul;} } public class Point extends Primitive { private double coordx; private double coordy; public Point(double x, double y,int couleur) { super(couleur); coordx = x; ccordy = y;} public void Point::Affiche() { System.out.println(“Coordonnée x : “ + coordx); System.out.println(“Coordonnée x : “ + coordy);} } Java – Comparaison C++ - 19/11/03 3 Quelques mots sur le C++ q Des langages proches Java et C++ sont syntaxiquement proches. Les fonctionnalités sont globalement similaires ØUn programmeur C++ peut passer à Java facilement à Java. ØLa connaissance du C et du Java facilite l’apprentissage du C++. q Une extension du C Le C++ est la version objet du C : la syntaxe du C est « compatible » avec un compilateur C++ q Une approche classique Pas de compatibilité du binaire entre plates-formes Langage compilé en binaire machine. Pas d’API mais des bibliothèques « standard » ou commerciales Standard Template Library Open Inventor … Java – Comparaison C++ - 19/11/03 4 Quelques différences syntaxiques q Le programme principal N’appartient pas à une classe q Le fichier d’en-tête C++ est compilé, tout identificateur doit être déclaré avant d’être utilisé : Présence d’un fichier « header » comme en C définissant les prototypes des fonctions et des classes q Construction et destruction des objets Le C++ définit explicitement le destructeur. Cette fonction sert essentiellement à libérer la mémoire (pas de mécanisme de ramasse miette). Java ne dispose pas de destructeur, mais on peut effectuer des actions à la destruction par la méthode finalize. Java – Comparaison C++ - 19/11/03 5 Quelques différences syntaxiques … q Les constantes Une constante est déclarée par le préfixe const en C++. Des paramètres peuvent être déclarés constants dans une interface. q La surcharge des opérateurs Tous les opérateurs peuvent être surchargés en C++ Point::operator + (Point & p); En particulier, l’allocation mémoire (opérateur new) peut être surchargée. Java – Comparaison C++ - 19/11/03 6 Les différences fonctionnelles q Le passage de paramètres • par référence • par adresse • par valeur q L’héritage multiple / les interfaces q Les template classes patrons : code générique q Divers Les struct Les tableaux Les types prédéfinis Les pointeurs sur les méthodes Java – Comparaison C++ - 19/11/03 7 En conclusion q L’apport de Java La simplicité La portabilité L’API java La gestion de processus q Un regret Les templates Java – Comparaison C++ - 19/11/03 8