programmation objet en java : remise à niveau 1ère partie : introduction à la p.o.o. en java...
TRANSCRIPT
![Page 1: Programmation Objet en JAVA : Remise à niveau 1ère partie : Introduction à la P.O.O. en Java Alexandre Allauzen (Université Paris-Sud / LIMSI-CNRS) allauzen@limsi.fr](https://reader035.vdocuments.pub/reader035/viewer/2022062404/551d9d8c497959293b8c191d/html5/thumbnails/1.jpg)
Programmation Objet en JAVA :
Remise à niveau 1ère partie :
Introduction à la P.O.O. en Java
Alexandre Allauzen (Université Paris-Sud / LIMSI-CNRS)
Ce cours reprend en grande partie le matériel pédagogique mis au point par Claude Barras et Frédéric Vernier et s'inspire du cours de Philippe
Genoud (INRIA)
![Page 2: Programmation Objet en JAVA : Remise à niveau 1ère partie : Introduction à la P.O.O. en Java Alexandre Allauzen (Université Paris-Sud / LIMSI-CNRS) allauzen@limsi.fr](https://reader035.vdocuments.pub/reader035/viewer/2022062404/551d9d8c497959293b8c191d/html5/thumbnails/2.jpg)
Programmation Orientée Objet (POO)
• Trouver une solution logicielle passe par la description du problème à l'aide
d'un langage donné (analyse, décomposition, modélisation, ...) :
– Assembleur,
– Procédural (C ou Fortran),
– Objet,
– naturel.
• La progression de l'abstraction
• L'unité est l'objet.
• La POO permet de décrire le problème à l'aide de termes liés au problème et
non à la machine :
En Créant des objets et en les faisant interagir.
mov ax,500 ; mov bx,0x20 ;add ax,bx ;
int x = 500;int y = 32;x+=y;
licence.setNombreEtudiants(500);licence.ajoutEtudiant(32);
![Page 3: Programmation Objet en JAVA : Remise à niveau 1ère partie : Introduction à la P.O.O. en Java Alexandre Allauzen (Université Paris-Sud / LIMSI-CNRS) allauzen@limsi.fr](https://reader035.vdocuments.pub/reader035/viewer/2022062404/551d9d8c497959293b8c191d/html5/thumbnails/3.jpg)
Les langages Objets
• Langages objets : 1969 (Alan Kay) et Simula (Ole Dahl
et Kristen Nygaard)
• Smalltalk
• C → Objective C, C++
• Pascal : Pascal Objet, Delphi (Borland)
• Basic : VBA (Microsoft)
• Java
• C# (Microsoft)
• Python (script)
![Page 4: Programmation Objet en JAVA : Remise à niveau 1ère partie : Introduction à la P.O.O. en Java Alexandre Allauzen (Université Paris-Sud / LIMSI-CNRS) allauzen@limsi.fr](https://reader035.vdocuments.pub/reader035/viewer/2022062404/551d9d8c497959293b8c191d/html5/thumbnails/4.jpg)
Origine de Java
• En 1993, le NCSA crée le premier navigateur internet (protocole
http, langage html)
• Annonce officielle de la naissance de Java par Sun en 1995
(issu de Oak)
• Initiateur : James Gosling
• Programmation simple
• Utilisation pour Internet
• Portable
• Sur la plupart des plates-formes (Archi + OS)
• Gratuit (téléchargeable sur java.sun.com)
• Logo (tasse à café), Mascotte (Duke)
![Page 5: Programmation Objet en JAVA : Remise à niveau 1ère partie : Introduction à la P.O.O. en Java Alexandre Allauzen (Université Paris-Sud / LIMSI-CNRS) allauzen@limsi.fr](https://reader035.vdocuments.pub/reader035/viewer/2022062404/551d9d8c497959293b8c191d/html5/thumbnails/5.jpg)
Java c'est quoi ?
• Java est un environnement de programmation objet développé par Sun,
adapté à la distribution d'applications sur Internet.
• 4 éléments :
– Java est un langage de programmation objet
– Une machine virtuelle
– Des bibliothèques de classes ou des packages : API Application
Programming Interface (2500 classes dans Java 1.4)
– Ensemble d'outils : java, javac, jdb javadoc, jar, ...
execution compilation debugger documentation archivage
![Page 6: Programmation Objet en JAVA : Remise à niveau 1ère partie : Introduction à la P.O.O. en Java Alexandre Allauzen (Université Paris-Sud / LIMSI-CNRS) allauzen@limsi.fr](https://reader035.vdocuments.pub/reader035/viewer/2022062404/551d9d8c497959293b8c191d/html5/thumbnails/6.jpg)
Java : principe fondateur de sa portabilité
![Page 7: Programmation Objet en JAVA : Remise à niveau 1ère partie : Introduction à la P.O.O. en Java Alexandre Allauzen (Université Paris-Sud / LIMSI-CNRS) allauzen@limsi.fr](https://reader035.vdocuments.pub/reader035/viewer/2022062404/551d9d8c497959293b8c191d/html5/thumbnails/7.jpg)
Un exemple simple : la montre
Objectif : une fenêtre s'ouvre pour donner l'heure et la date
scénario (use case) :
![Page 8: Programmation Objet en JAVA : Remise à niveau 1ère partie : Introduction à la P.O.O. en Java Alexandre Allauzen (Université Paris-Sud / LIMSI-CNRS) allauzen@limsi.fr](https://reader035.vdocuments.pub/reader035/viewer/2022062404/551d9d8c497959293b8c191d/html5/thumbnails/8.jpg)
Qu'est-ce qu'un objet ?
• Un objet modélise toute entité identifiable manipulée par
l'application logicielle qu'elle soit – tangible ou conceptuelle (ville, étudiant, fenêtre vs
date, emploi du temps),
– générique ou spécifique (pile LIFO vs catalogue de
disquaire, un formulaire de déclaration d'impôts).
• Il réagit aux messages qu’il reçoit en fonction de son état :
– modification de son état et/ou
– envoi d’un message.
• Un objet possède : – une identité unique– un état interne défini par ses attributs – un comportement défini par ses méthodes.– Une interface imposant sa communication avec
l’extérieur.
Liste des objets :
•fenêtre
•zone de
texte
•montre
•calendrier
![Page 9: Programmation Objet en JAVA : Remise à niveau 1ère partie : Introduction à la P.O.O. en Java Alexandre Allauzen (Université Paris-Sud / LIMSI-CNRS) allauzen@limsi.fr](https://reader035.vdocuments.pub/reader035/viewer/2022062404/551d9d8c497959293b8c191d/html5/thumbnails/9.jpg)
Objet et encapsulation
• Un objet = structure de données (attributs)
+ algorithmes (méthodes)
• Principe d'encapsulation
– L'accès aux données (privées) ou l'état d'un objet ne peut se
faire que par l'intermédiaire de son interface (méthodes
publiques)
– Les modifications des structures de données n'affectent pas
les programmes utilisant l'objet
• l'interface d'un objet définit les messages qui lui sont «envoyable».
maMontre
![Page 10: Programmation Objet en JAVA : Remise à niveau 1ère partie : Introduction à la P.O.O. en Java Alexandre Allauzen (Université Paris-Sud / LIMSI-CNRS) allauzen@limsi.fr](https://reader035.vdocuments.pub/reader035/viewer/2022062404/551d9d8c497959293b8c191d/html5/thumbnails/10.jpg)
La classe : la matrice / le moule
• Un objet a un type : il est l'instance d'une classe (class)
• la classe d'un objet = le schéma, le moule, la matrice, le type.
• Une classe décrit, définit, implémente :
– la partie publique (public) : l'interface avec les noms et
paramètres des méthodes,les modes d’interaction
– partie privée (private) : structure de données internes (les
attributs) + les méthodes ou algorithmes internes.
• Une classe définit un type d'objet, ce n'est pas un objet.
• Un programme objet = la création d'un ensemble d'objets et la mise
en scène de leur interaction.
![Page 11: Programmation Objet en JAVA : Remise à niveau 1ère partie : Introduction à la P.O.O. en Java Alexandre Allauzen (Université Paris-Sud / LIMSI-CNRS) allauzen@limsi.fr](https://reader035.vdocuments.pub/reader035/viewer/2022062404/551d9d8c497959293b8c191d/html5/thumbnails/11.jpg)
La classe Montre, un peu de syntaxe
public class Montre { /*Définissons les attributs*/ private int heure , minute ; /* Définissons les méthodes*/ public int getHeure() { return heure; } public int getMinute() { return minute; } public void setMinute(int m) { minute = m; } public void setHeure(int h) { heure = h; } }
class UnNomdeClasse { /* le corps */ }
• class indique la définition d'une classe nommée
Montre.
• Un nom de classe commence par une majuscule
• Le mot-clé public indique que la classe est utilisable
de « l'extérieur ».
• Les attributs sont typés (int) :
<Type> nomAttribut = valeurInit;
• La syntaxe générale pour définir une méthode :
<Type retour> nomMethode (<listeparamètres>)
• Les noms de méthodes et attributs commencent par
une minuscule, la frontière des mot est marquée par
une majuscule.
• Tout ce qui est entre /* et */ est un commentaire
(pouvant aller sur plusieurs lignes).
• // commentaire jusqu'à la fin de la ligne
![Page 12: Programmation Objet en JAVA : Remise à niveau 1ère partie : Introduction à la P.O.O. en Java Alexandre Allauzen (Université Paris-Sud / LIMSI-CNRS) allauzen@limsi.fr](https://reader035.vdocuments.pub/reader035/viewer/2022062404/551d9d8c497959293b8c191d/html5/thumbnails/12.jpg)
Un peu de syntaxe : construction et communication avec un objet
• Construction
Montre m = new Montre(<params>);
Type réf allocation
dynamique
Constructeur, renvoie l’adresse.
• Communication
m.setMinute(12);
réf de la cible type du message/ params. du messagecommande/requête (si c’était 78 ?)
int min = m.getMinute( );
l’objet peut répondre au message pas de params.
![Page 13: Programmation Objet en JAVA : Remise à niveau 1ère partie : Introduction à la P.O.O. en Java Alexandre Allauzen (Université Paris-Sud / LIMSI-CNRS) allauzen@limsi.fr](https://reader035.vdocuments.pub/reader035/viewer/2022062404/551d9d8c497959293b8c191d/html5/thumbnails/13.jpg)
Syntaxe de Java
• Reprend celle du C/C++
• Le ; marque la fin d'instruction
• Un bloc d'instructions est délimité par {}
• Les identificateurs sont comme en C (if, while, switch, etc.) et utilisés tels quels
• Les caractères sont codés en UNICODE
– 16 bits au lieu de 8 : accents dans le code!
• Les commentaires en mauvais anglais sont préférables à
un français impeccable.
• Les commentaires pertinents sont obligatoires.
![Page 14: Programmation Objet en JAVA : Remise à niveau 1ère partie : Introduction à la P.O.O. en Java Alexandre Allauzen (Université Paris-Sud / LIMSI-CNRS) allauzen@limsi.fr](https://reader035.vdocuments.pub/reader035/viewer/2022062404/551d9d8c497959293b8c191d/html5/thumbnails/14.jpg)
Types de programmes Java
Application
●Programme autonome (stand-alone)
●L'application doit posséder une classe principale ayant une méthode signature :
public static void main(String[]args)
●C'est la méthode interprétée lors de l'exécution, le point d'entrée.
●Elle est static : ne nécessite pas de création d'objet pour être invoquable (les méthodes
statiques sont également nommées méthodes de classe).
Applet
•Programme exécuté dans l'environnement d'un navigateur.
•Le byte code est sur un serveur http, il est chargé via une page html.
•Pas de méthode main(),mais les méthodes obligatoires :
init(),start(),stop(),paint(),destroy
![Page 15: Programmation Objet en JAVA : Remise à niveau 1ère partie : Introduction à la P.O.O. en Java Alexandre Allauzen (Université Paris-Sud / LIMSI-CNRS) allauzen@limsi.fr](https://reader035.vdocuments.pub/reader035/viewer/2022062404/551d9d8c497959293b8c191d/html5/thumbnails/15.jpg)
Exemple de la montre : conception
Création d'un programme Java :
• Identifier les objets nécessaires et
leurs relations
• Spécifier leurs types / leurs classes
(données, comportement)
• Chercher dans l'API Java si des
classes peuvent répondre aux besoins
(tout ou en partie)
• Création des classes nécessaires (en
s'appuyant sur l'API)
• Programmer en Java, c'est aussi
savoir chercher dans l'API Java.
![Page 16: Programmation Objet en JAVA : Remise à niveau 1ère partie : Introduction à la P.O.O. en Java Alexandre Allauzen (Université Paris-Sud / LIMSI-CNRS) allauzen@limsi.fr](https://reader035.vdocuments.pub/reader035/viewer/2022062404/551d9d8c497959293b8c191d/html5/thumbnails/16.jpg)
Exemple de la montre : scénario
![Page 17: Programmation Objet en JAVA : Remise à niveau 1ère partie : Introduction à la P.O.O. en Java Alexandre Allauzen (Université Paris-Sud / LIMSI-CNRS) allauzen@limsi.fr](https://reader035.vdocuments.pub/reader035/viewer/2022062404/551d9d8c497959293b8c191d/html5/thumbnails/17.jpg)
Manipulation des objets
• En Java, les objets sont manipulés exclusivement avec des références. Une référence
est un pointeur. Il est à l'objet ce que la télécommande est à la TV.
• Création d'une référence sur un objet de type Integer :
Integer s;
• La création d'une référence n'implique pas la création d'un objet. Les objets doivent
être créés :
s = new Integer();
• Ainsi est créé un objet de type Integer. On y accède via la référence s.
• Integer()est une méthode particulière de la classe Integer : le constructeur.
• Cette méthode peut avoir des arguments indiquant comment construire l'objet :
Integer s = new Integer(5);
• Plusieurs références peuvent pointer sur le même objet :
Integer s2 = s;
• Il y a toujours qu'un seul objet, mais on a deux références.
![Page 18: Programmation Objet en JAVA : Remise à niveau 1ère partie : Introduction à la P.O.O. en Java Alexandre Allauzen (Université Paris-Sud / LIMSI-CNRS) allauzen@limsi.fr](https://reader035.vdocuments.pub/reader035/viewer/2022062404/551d9d8c497959293b8c191d/html5/thumbnails/18.jpg)
Le fichier source d'une application
import java.util.Date;import javax.swing.*;/** Le premier programme Java * Application donnant heure et date * @author John Doe * @version 0 */public class ExempleMontre{
/* Ici sont définis les attributs et
* méthodes, en finissant par le main .
*/
public static void main(String[] args) {
/* corps de la méthode main */ }}
• Lorsqu'on utilise une classe pré-définie, il faut
indiquer au compilateur où est le code
correspondant : import.
• On peut importer une classe (Date) ou toutes les
classes d'une collection.
• Lors de la création d'une application, une des
classes public doit porter le même nom que le
fichier et comporter une méthode main.
• Les commentaires commençant par /** sont destinés
à javadoc. Les commandes javadoc commence par
« @ ».
• Il est possible d'utiliser également du html.
• Tout programme, toutes les classes, les attributs et
méthodes sont à commenter afin de générer une
documentation via javadoc.
Fichier ExempleMontre.java
![Page 19: Programmation Objet en JAVA : Remise à niveau 1ère partie : Introduction à la P.O.O. en Java Alexandre Allauzen (Université Paris-Sud / LIMSI-CNRS) allauzen@limsi.fr](https://reader035.vdocuments.pub/reader035/viewer/2022062404/551d9d8c497959293b8c191d/html5/thumbnails/19.jpg)
Le source complet d’une application
import java.util.*;import javax.swing.*;/* Descriptif de la classe. */public class ExempleMontre{ public static void main(String[] args) {
/* Création de la date */Date date = new Date(2004, 9, 23, 5, 30); /* zones de texte : création et écriture des textes */ JTextArea textHeure = new JTextArea();JTextArea textDate = new JTextArea();textHeure.setText(date.getHours()+"h"+ date.getMinutes()+" ");
textDate.setText("le "+date.getDate() +"/"+date.getMonth()+"/" + date.getYear()); /* Creation de la zone d'affichage et remplissage */
JPanel monPanel = new JPanel();monPanel.add(textHeure);monPanel.add(textDate);
/* Creation de la fenetre, reglage et remplissage */JFrame fenetre = new JFrame("ma fenetre");/* reglage dimension et inclusion de la zone d'affichage */fenetre.setBounds(100, 100, 160, 60);fenetre.getContentPane().add(monPanel);/* afficher */fenetre.setVisible(true);
}}
●Les « import » sont les
premières lignes non
commentées.●Les commentaires sont
indispensables pour
comprendre le code
ainsi que sa structure. ●Cette application ne fait
que créer des objets et
leurs envoyer des
messages.
![Page 20: Programmation Objet en JAVA : Remise à niveau 1ère partie : Introduction à la P.O.O. en Java Alexandre Allauzen (Université Paris-Sud / LIMSI-CNRS) allauzen@limsi.fr](https://reader035.vdocuments.pub/reader035/viewer/2022062404/551d9d8c497959293b8c191d/html5/thumbnails/20.jpg)
Conventions de Codage
• Les développeurs écrivent du code que d’autres lisent et utilisent
– Java est apprécié pour sa lisibilité
– Sun PROPOSE une façon d’écrire le code
• Conventions de codage: java.sun.com/docs/codeconv/
• Aide au déboguage de Java ( communauté open source )
– Re-formateur de code sinon… (JavaStyle, Jalopy, etc.class Sample extends Object { int ivar1; int ivar2; Sample(int i, int j) { ivar1 = i; ivar2 = j; }
int emptyMethod() {} ...}
Attention aux petits détails :
• Nom de classe avec majuscule
• Nom de méthode avec minuscule
• Indentation
![Page 21: Programmation Objet en JAVA : Remise à niveau 1ère partie : Introduction à la P.O.O. en Java Alexandre Allauzen (Université Paris-Sud / LIMSI-CNRS) allauzen@limsi.fr](https://reader035.vdocuments.pub/reader035/viewer/2022062404/551d9d8c497959293b8c191d/html5/thumbnails/21.jpg)
Compilation, exécution, ...
• La compilation va créer un fichier .class, le pseudo-code :
javac ExempleMontre.java
• La compilation crée un fichier .class de bytecode :
ExempleMontre.class
• Essayer l'option -verbose et surtout-help
• L'exécution se fait en appelant la machine virtuelle (JVM) :
java ExempleMontre
• Création de la page html de documentation ExempleMontre.html
javadoc ExempleMontre.java
![Page 22: Programmation Objet en JAVA : Remise à niveau 1ère partie : Introduction à la P.O.O. en Java Alexandre Allauzen (Université Paris-Sud / LIMSI-CNRS) allauzen@limsi.fr](https://reader035.vdocuments.pub/reader035/viewer/2022062404/551d9d8c497959293b8c191d/html5/thumbnails/22.jpg)
Hello World
public class Bonjour { public static void main (String[] arguments) { System.out.println("Hello World"); }}
• La fonction main est une méthode static → indépendante de l'instance →
commune à toute les instances,
• main peut être appelée sans qu’aucune instance soit créée :
Bonjour.main();
• System est une classe avec des attributs static (toujours pas besoin d’instance)
• out est une instance static de quelque chose (PrintStream) qui se trouve
être une donnée de l’objet System (voir doc. de System).
• System.out référe donc un objet auquel on peut envoyer des messages.
• println est une méthode public de l'objet out.
![Page 23: Programmation Objet en JAVA : Remise à niveau 1ère partie : Introduction à la P.O.O. en Java Alexandre Allauzen (Université Paris-Sud / LIMSI-CNRS) allauzen@limsi.fr](https://reader035.vdocuments.pub/reader035/viewer/2022062404/551d9d8c497959293b8c191d/html5/thumbnails/23.jpg)
Hello World - 2
public class Bonjour2 { public static void main (String[] arguments) { System.out.println("bonjour, voici vos arguments : "); for (int i=0; i<arguments.length;i++) System.out.println(i + " : " + arguments[i]); }}// Fin class Bonjour2
• Compilation :
> javac Bonjour2.java
• Exécution :
> java Bonjour2 1 deux 3.14
bonjour, voici vos arguments :
0 : 1
1 : deux
2 : 3.14
• Pas besoin d’une variable (argc)
pour connaître la taille d’un tableau
• Boucle for = comme en C
• Construction de la chaîne de
caractère avec le signe +
![Page 24: Programmation Objet en JAVA : Remise à niveau 1ère partie : Introduction à la P.O.O. en Java Alexandre Allauzen (Université Paris-Sud / LIMSI-CNRS) allauzen@limsi.fr](https://reader035.vdocuments.pub/reader035/viewer/2022062404/551d9d8c497959293b8c191d/html5/thumbnails/24.jpg)
Exécution 1/2
• Qui exécute le programme tapé et compilé ?
– Le processeur directement ? instruction par instruction ?
– A quoi servirait le système d’exploitation alors ?
– A quoi servirait la machine virtuelle alors ?
• Le système d’exploitation alloue un processus à la machine virtuelle :
– qui partage le CPU avec les autres processeurs,
– qui utilise un espace de mémoire virtuelle.
– la machine virtuelle alloue ensuite ses “threads”.
![Page 25: Programmation Objet en JAVA : Remise à niveau 1ère partie : Introduction à la P.O.O. en Java Alexandre Allauzen (Université Paris-Sud / LIMSI-CNRS) allauzen@limsi.fr](https://reader035.vdocuments.pub/reader035/viewer/2022062404/551d9d8c497959293b8c191d/html5/thumbnails/25.jpg)
Exécution 2/2
• La machine virtuelle JAVA alloue des Threads (fils d’exécution) aux programmes JAVA :
– 1 pour l’initialisation
– 1 pour appeler les méthodes « callback »
– 1 par Thread que vous créez vous-même
• Les Threads sont gérés par l’OS.
• La machine virtuelle termine lorsque le dernier thread du dernier programme se termine.
– Tout l’espace mémoire est alors libéré (y compris la JVM)
• Ou bien appel direct à System.exit(0);
![Page 26: Programmation Objet en JAVA : Remise à niveau 1ère partie : Introduction à la P.O.O. en Java Alexandre Allauzen (Université Paris-Sud / LIMSI-CNRS) allauzen@limsi.fr](https://reader035.vdocuments.pub/reader035/viewer/2022062404/551d9d8c497959293b8c191d/html5/thumbnails/26.jpg)
Espaces mémoires
• Registres
• La pile (stack), RAM mais stack pointer
• Le « tas » (heap), en RAM
• Stockage statique
• Stockage constant
• Stockage hors de la RAM
Capacité
Rapidité
![Page 27: Programmation Objet en JAVA : Remise à niveau 1ère partie : Introduction à la P.O.O. en Java Alexandre Allauzen (Université Paris-Sud / LIMSI-CNRS) allauzen@limsi.fr](https://reader035.vdocuments.pub/reader035/viewer/2022062404/551d9d8c497959293b8c191d/html5/thumbnails/27.jpg)
Documentation
Format : Les commentaires dans le fichier .java doivent commencer par /**, finir par */ et chaque ligne doit commencer par une * .Il existe des étiquettes de champs telles que le nom d'auteur qui sont utilisées pour générer une API.
Exemple : import java.util.* ; //Import ici, avant le commentaire javadoc/** * Une classe énumérant ses arguments. * Par exemple: * <pre> * java Bonjour2 un * bonjour * 0 : un * </pre> * * @author Marc Martin * @version %I%, %G% */public class Bonjour2...
Génération : Pour générer la page Bonjour2.html, faire :
> javadoc Bonjour2.java
![Page 28: Programmation Objet en JAVA : Remise à niveau 1ère partie : Introduction à la P.O.O. en Java Alexandre Allauzen (Université Paris-Sud / LIMSI-CNRS) allauzen@limsi.fr](https://reader035.vdocuments.pub/reader035/viewer/2022062404/551d9d8c497959293b8c191d/html5/thumbnails/28.jpg)
Exemple de documentation HTML
![Page 29: Programmation Objet en JAVA : Remise à niveau 1ère partie : Introduction à la P.O.O. en Java Alexandre Allauzen (Université Paris-Sud / LIMSI-CNRS) allauzen@limsi.fr](https://reader035.vdocuments.pub/reader035/viewer/2022062404/551d9d8c497959293b8c191d/html5/thumbnails/29.jpg)
javadoc (suite)
![Page 30: Programmation Objet en JAVA : Remise à niveau 1ère partie : Introduction à la P.O.O. en Java Alexandre Allauzen (Université Paris-Sud / LIMSI-CNRS) allauzen@limsi.fr](https://reader035.vdocuments.pub/reader035/viewer/2022062404/551d9d8c497959293b8c191d/html5/thumbnails/30.jpg)
Inconvénients de Java ?
• Interprété : inefficacité du code.
• La lenteur.
• Nécessite une JVM pour fonctionner.
• La gestion de la mémoire est inefficace dans la
plupart des cas.
• Difficultés face aux applications gourmandes en
mémoire.
• Moins de mécanismes objet que C++ pourtant plus
ancien (héritage multiple et “templates”)
![Page 31: Programmation Objet en JAVA : Remise à niveau 1ère partie : Introduction à la P.O.O. en Java Alexandre Allauzen (Université Paris-Sud / LIMSI-CNRS) allauzen@limsi.fr](https://reader035.vdocuments.pub/reader035/viewer/2022062404/551d9d8c497959293b8c191d/html5/thumbnails/31.jpg)
Avantages de Java ?
• Ecrire une fois, exécuter partout !
• Sécurité.
• Exécution dans un navigateur Web (Applet).
• Gestion automatique de la mémoire (garbage collector)
• Programmation modulaire et dynamique et objet.
• Lisibilité du code.
• Code compact (beaucoup est dans la JVM).
• L'API.
• Réseaux, interfaces, son, pont avec les bases de données en
natif.
![Page 32: Programmation Objet en JAVA : Remise à niveau 1ère partie : Introduction à la P.O.O. en Java Alexandre Allauzen (Université Paris-Sud / LIMSI-CNRS) allauzen@limsi.fr](https://reader035.vdocuments.pub/reader035/viewer/2022062404/551d9d8c497959293b8c191d/html5/thumbnails/32.jpg)
API Java
●Plus qu'un langage de programmation, l'environnement Java propose
une API (Application Programmer's Interface)
●L'API est structurée en package
●Package : regroupement de classes ayant un lien logique entre elles
●pour les utiliser dans d'autres classes
●pour les « spécialiser »
● Pour programmer efficacement, une bonne connaissance de ces
packages est indispensable.
● Ne pas refaire ce qui a déjà été fait (d'ailleurs sûrement en mieux)
![Page 33: Programmation Objet en JAVA : Remise à niveau 1ère partie : Introduction à la P.O.O. en Java Alexandre Allauzen (Université Paris-Sud / LIMSI-CNRS) allauzen@limsi.fr](https://reader035.vdocuments.pub/reader035/viewer/2022062404/551d9d8c497959293b8c191d/html5/thumbnails/33.jpg)
API Java : classes standard
• java.lang : classes essentielles objet, types de base, processus
• java.util : structures de données (collections) listes, ensembles, hash tables, arbres,
itérateurs
• java.awt : interface graphique (Abstract Window Toolkit) fenêtres, boutons, événements...
• java.io : entrées / sorties flot de données provenant de fichier, buffer, ou pipe
• java.net : réseau URL, sockets
• java.rmi : objets distribués (Remote Method Invocation)
• java.sql : JDBC (Java Data Base Connectivity) connexion à une base de données
relationnelle envoi de requêtes SQL, récupération des résultats
• java.beans : composants logiciels Pièces logicielles autonomes pouvant être contrôlées
dynamiquement et assemblées pour former des applications
• javax.swings : interface graphique composants d'interface de plus haut niveau que ceux
de awt look and feel indépendant de l'OS exploitation du modèle MVC (Model View
Controler)
![Page 34: Programmation Objet en JAVA : Remise à niveau 1ère partie : Introduction à la P.O.O. en Java Alexandre Allauzen (Université Paris-Sud / LIMSI-CNRS) allauzen@limsi.fr](https://reader035.vdocuments.pub/reader035/viewer/2022062404/551d9d8c497959293b8c191d/html5/thumbnails/34.jpg)
Versions
Java 1.0.2 (1996) : le JDK : Java Development Kit , 212 classes, 8 paquetages
version minimale des browsers web.
Java 1.1.5 (1997) : 504 classes, 23 paquetages
amélioration interface utilisateur (AWT), gestion des erreurs, cohérence du langage
Java 1.2 (Java 2 en 1998) : 1520 classes, 59 paquetages
Swing, Drag and drop, amélioration audio
Java 1.3 (2001)
J2SDK (nouveau nom) pour J2EE (Entreprise, serveur), J2ME (PDA)
amélioration de la gestion mémoire, rapidité
Java 1.4 (2002) : 2757 classes, 135 paquetages
J2SDK → J2SE (nouveau nom),
XML, expressions régulières, nouvelles E/S, accès à la mémoire vidéo (VolatileImage)
pour l’accélération
Java 1.5 : 3278 classes, 165 paquetages
![Page 35: Programmation Objet en JAVA : Remise à niveau 1ère partie : Introduction à la P.O.O. en Java Alexandre Allauzen (Université Paris-Sud / LIMSI-CNRS) allauzen@limsi.fr](https://reader035.vdocuments.pub/reader035/viewer/2022062404/551d9d8c497959293b8c191d/html5/thumbnails/35.jpg)
Outils du JDK
• Téléchargeable sur le site java.sun.com
• Outils
– java : JVM, interpréteur pour les programmes java
– javac : Compilateur Java
– appletviewer : JVM pour l'exécution des applets
– jar : Création et manipulation d 'archive java
– javadoc : Générateur de documentation Java au format HTML
– javap : désassembleur de classes Java compilées
– jdb : débogueur Java en ligne de commande
– javah : génère le header C ou C++ pour créer un pont compatible entre java et C/C++
• Documentation
– en ligne : http://java.sun.com/docs/
– Téléchargeable pour installation en local
![Page 36: Programmation Objet en JAVA : Remise à niveau 1ère partie : Introduction à la P.O.O. en Java Alexandre Allauzen (Université Paris-Sud / LIMSI-CNRS) allauzen@limsi.fr](https://reader035.vdocuments.pub/reader035/viewer/2022062404/551d9d8c497959293b8c191d/html5/thumbnails/36.jpg)
IDE (Integrated Development Environment)
•jEdit www.jedit.org
•Eclipse http://www.eclipse.org
•Emacs (avec JDEE)
– http://www.gnu.org/software/emacs/
– http://jdee.sunsite.dk/
![Page 37: Programmation Objet en JAVA : Remise à niveau 1ère partie : Introduction à la P.O.O. en Java Alexandre Allauzen (Université Paris-Sud / LIMSI-CNRS) allauzen@limsi.fr](https://reader035.vdocuments.pub/reader035/viewer/2022062404/551d9d8c497959293b8c191d/html5/thumbnails/37.jpg)
Références
• Bien sûr le site officiel de Sun http://java.sun.com avec JDK,
Tutorials, Documentations, spécifications, ...
• Le magazine électronique http://www.javaworld.com
• Les sites dédiés http://www.jguru.com, et
http://www.alphaworks.ibm.com/java
• En français : www.developpez.com des FAQ, des ressources
• Le formidable « Thinking in Java » de Bruce Eckel en version livre
(édition Prentice-Hall) ou électronique et gratuite
(www.BruceEckel.com ou www.penserenjava.free)
• Et le site de Philippe Genoud consacré à l'enseignement de Java :
www.inrialpes.fr/helix/people/genoud/ENSJAVA/M2CCI/index.html