pour les programmeurs en C++ Java
2 Part 1
3 Histoire de Java Projet de connexion des machines: 1991 Le nom Java a été introduit dans un café Développé par Sun Déclaration officielle en Mai 1995
4 Origines de Java Développé à partir de C et C++ Pallier aux problèmes de C++ Pointeurs (sécurité) Gestion de la mémoire Affectations...
5 JDK JDK: Java Development Kit Environnement de développement Java Version 1.5
6 JDK JDK 1.5 vs SDK 1.5 Java 1.5 vs Java 2
7 Pourquoi Java? Indépendant de la plate-forme Langage objet Programmation concurrente Programmation Internet
8 Code compilé vs. code exécutable Indépendant de la plate-forme
9
10
11
12 Langage objet Facile à utiliser Code réutilisable Facile à maintenir Lent à exécuter
13 Programmation concurrente C++ est mono-thread C et C++: simulation du multi-thread Java est multi-thread
14 Programmation Internet C++: plusieurs outils et beaucoup de temps Applets Servlets JSP
15
16 Programmation Internet Sockets RMI CORBA
17 RMI
18 CORBA
19 Les entrées/sorties C++ : cin >> nombre Java: BufferedReader stdin; stdin = new BufferedReader (new InputStreamReader (System.in) ); nombre = Integer.parseInt (stdin.readline() ); C++ : cout << “salut”; Java: System.out.printIn(“salut”);
20 Java vs. C++
21 Types La taille des types est fixe dans Java Tous les types sont signed
22 Types
23 Types
24 Types Java est fortement typé en C++: int i; short j; i = j; en Java, il faut caster: int i; Short j; i = (int) j;
25 Déclarations Variables (similaires): int entier; Constantes: java: final int entier = 0; C++: const int entier = 0;
26 Opérateurs arithmétiques Similaires en Java et C++ + : addition - : soustraction * : multiplication / : division % : modulo
27 Opérateurs logiques = = : tester l ’égalité (référence et contenu) ! = : différent > ou >= : supérieur ou égal < ou <= : inférieur ou égal
28 Opérateurs logiques && : AND exclusif II : OR exclusif & : AND inclusif (bits et valeurs booléennes) I : OR inclusif (birth = = true I ++ age > + 65)
29 Opérateurs bitwise Pareil que C++ >>> : décalage droite non signé
30 Structures de contrôle Conditionnelles: If switch Boucles: Pas d’instruction goto en Java For while do while
31 Structure if if (condition) {bloc1} else {bloc2} condition: expression logique Exemple: If (vosVentes >= 2*cible {performance = “excellent”; bonus = 1000; }
32 Structure switch switch (choix) { case variable1 : instructions break; case variable2 : instructions break; ………………………. }
33 Boucle for for (expression1; expression2; expression3) { instructions } for (int i = 10; i > 0; i --) { n = n + i; }
34 Boucle while while (condition) { instructions } while (I > 0) { n = n + i i --; }
35 Boucle do while do { instructions } while (condition); do { n = n + i i --; } while (i > 0);
36 Classes Mot clé: class Constructeur mais pas de destructeur
37 Héritage Java: l’héritage est public class Exemple extends Exercise C++: class Exemple: public Exercise Classe final: final class Exemple on ne peut instancier la classe
38 Héritage Pas d ’héritage avec des classes final C++: public, protected ou private Java: public
39 Classe Object Classe racine class Exemple = class Exemple extends Object Référence un objet de n’importe quel type
40 Classe Object
41 Classe Object Programmation générique Une classe peut ne pas avoir de constructeur Template en C++
42 Aggrégation Aggrégation: une classe contient une autre Exemple: Deux classes: Jeu et Balle Classe Jeu { Balle b; Balle getBalle (); } Aggrégation
43 Fonctions Pas de déclaration préalable Pas de prototypes
44 Paramètres C++ : pointeurs références valeurs Java: valeurs références
45 Paramètres Valeur: void calculerSomme (int x, int y) Référence: void parseFile (File f) Pointeurs: void remplirChaine(element *q)
46 Surcharge Surcharge de n’importe quelle méthode Pas de surcharge des opérateurs En C++ et Java: fonctions homonymes: respecter la valeur de retour
47 Méthodes Méthodes statiques Méthodes instanciables
48 Méthodes statiques private static void exempleFunction () NomDeClasse.methodeStatique (paramètres) N’opèrent pas sur une instance
49 Visibilité
50 Visibility
51 Classes abstraites Fonctions non toutes implantées Mot clé: abstract C++ : pure virtual methods
52 Classe Abstraite
53 Polymorphisme C++ : méthodes virtuelles pures Par défaut en Java liaison dynamique (late binding)
54 Différences majeures
55 Nombre de types Java: types primitifs ou bien une classe C++ : types primitifs, les structures, les pointeurs,... Pas de typedef en Java Pour chaque type correspond une classe: wrapper
56 Méthodes Toutes les fonctions font partie de la classe La fonction main ne retourne pas de valeur Pas de surcharge des opérateurs
57 Méthodes Pas de types paramétrés Pas de variables globales Pas d’arguments par défaut: max (int i=1; int j=3)
58 Méthodes Valeur de retour obligatoire Pas de paramètres à référence constante Méthodes statiques avec variables statiques
59 String Chaînes de caractères Pas de changement de valeur Plusieurs opérateurs dont le + + : concaténer deux chaînes String classement = “PG” + 13
60 String String S1 = “Hello”; String S2 = “Hello”; String S1 = new String (“Hello”) String S2 = new String (“Hello”) Hello S1 S2 Hello S1 S2
61 String charAt (int index) equals (Object obj) compareTo(String str) length()
62 Tableaux Déclaration: Java: int [ ] tabEntier = new int [5]; C++: int tabEntier [5]; multidimensionnel: Java: double [ ] [ ] balance = new double [6] [5]; C++: double balance[6] [5];
63 Tableaux C++ : tableau à plusieurs dimensions Java: tableau de tableau C++ : un type Java: un objet
64 Classe Vector Classe Vector: tous les types Vector articleCommandes = new Vector (3) Taille dynamique
65 Classe Vector addElement (Object element) removeElement (Object element) elementAt (int index)
66 Classe Vector size( ) firstElement( ) lastElement( )
67 Classes interfaces Aucune fonction n’est implantée Mot clé: interface Rôle: plus de flexibilité.
68 Héritage multiple Classes interface public interface Title { public abstract int compareTo();} class Employe implements Title
69 Gestion de la mémoire C++ : destructeurs Java: Garbage collector, pour la mémoire On peut forcer le gabage collector: System.gc(); Java: méthode finalize, pour les ressources
70 Les packages: java.awt Regroupement logique Protection physique L’instrument import: import java.awt.Frame Pas de pré-processeur Structuration
71 Résumé
72 Résumé
73 Résumé