Plan du cours
Sances Chapitres 1 2 Introduction Java Classe et objet
3
4 5
Encapsulation
Hritage Polymorphisme
6
7 8
Exceptions
Interface et collection Interface graphique
Objectifs du cours
Dcrire les lments-cl de la plateforme Java Compiler et excuter une application Java Dcrire la syntaxe du langage Comprendre le paradigme OO et utiliser Java pour le mettre en uvre Comprendre et utiliser les exceptions Comprendre et utiliser les API de java Dvelopper une interface graphique
Rfrences Web
The Java Tutorial from Sun http://java.sun.com/docs/books/tutorial/ The Java Developer Connection http://java.sun.com/developer/onlineTraining/ Gamelan http://www.developer.com/java/ Java Applet Rating Services http://www.jars.com
Dveloppement
Approche procdurale :
"Que doit faire mon programme ?"
Lecteur Bibliothcaire
Dveloppement
Approche procdurale : "Que doit faire mon programme ?"
Grer les emprunts de livres Grer le stock
Lecteur Bibliothcaire
Oriente Objet
Approche procdurale : "Que doit faire mon programme ?"
Approche oriente-objet : "De quoi doit tre compos mon programme ?" Cette composition est consquence d'un choix de modlisation fait pendant la conception
Lecteur Bibliothcaire
Classe
Des objets similaires peuvent tre informatiquement dcrits par une mme abstraction : une classe mme structure de donnes et mthodes de traitement valeurs diffrentes pour chaque objet
Classe Lecteur Classe Livre Classe Journal Classe Employ
La Presse
Directrice
Lectrice
Bibliothcaire
Lecteur
Classe
LES CLASSES :Une classe d'objets est constitue d'une partie statique et d'une partie dynamique Partie statique : LES ATTRIBUTS : Les attributs reprsentent la description des donnes propres chaque classe d'objets. Ceuxci peuvent tre des objets d'autres classes ou des rfrences sur d'autres objets. Partie dynamique : LES METHODES : Les mthodes reprsentent l'ensemble des actions, procdures, fonctions ou oprations que l'on peut associer une classe. L'ensemble des mthodes de la classe dfinit le "COMPORTEMENT "
Classe
CLASSE VOITURE ATTRIBUTS METHODES
Instance
INSTANCES DE CLASSES Une instance de classe est un lment construit selon le modle de sa classe. On nommera cet lment "OBJET". L'opration par laquelle une classe produit plusieurs instances est l'instanciation
Objet
Objet = Etat + comportement + identit Un objet reprsente une entit du monde rel qui se caractrisent par une identit, des tats et par un comportement. Lidentit dun objet permet de distinguer les objets les uns par rapport aux autres. Son tat correspond aux valeurs de tous les attributs un instant donn. le comportement dun objet se dfini par lensemble des oprations quil peut excuter en raction aux messages envoys (un message = demande dexcution dune opration) par les autres objets..
13
Classe et Objet
CLASSE VOITURE ATTRIBUTS Marque Modle Immatriculation Vitesse Couleur Puissance fiscale Etc ... METHODES Dmarrer Acclrer Freiner Stopper Vidanger Etc .... PEUGEOT PARTNER 120 TN 1234 160 Km /h rouge 6 CV RENAUT Laguna 130 TN5671 190 Km /h bleu 5 CV EXEMPLES D'INSTANCES DE LA CLASSE VOITURE
Encapsulation
"L'encapsulation est le processus qui consiste empcher d'accder aux dtails d'un objet qui ne
Polymorphisme
Le polymorphisme permet de dfinir plusieurs formes pour une mthode commune une hirarchie d'objets. C'est l'excution que l'on dtermine quelle forme appeler suivant la classe de l'objet courant. Un code qui n'utiliserait pas le polymorphisme pourrait utiliser une instruction choix multiple suivant la classe des objets rencontrs.
Message AFFICHE
OBJET TRIANGLE
OBJET CERCLE
Hritage
L'hritage est un mcanisme destin exprimer les similitudes
.
entre classes. Il met en oeuvre les principes de gnralisation et de spcialisation en partageant explicitement les attributs et mthodes communs au moyen d'une hirarchie de classes
Hritage
La classe fille hrite des caractristiques de sa classe mre (attributs et mthodes) mais elle se distingue par ses
.
caractristiques propres.
SUPER CLASSE
SOUS CLASSE
Lien d'hritage
ou classe fille, classe drive, descendant
Hritage
La classe fille hrite des caractristiques de sa classe mre
.
SUPER CLASSE
ou classe mre, mtaclasse, classe de base, anctre Lien d'hritage ou classe fille, classe drive, descendant
SOUS CLASSE
Hritage simple : une classe fille n'a qu'une seule classe mre et elle hrite d'une partie des attributs et mthodes de celle-ci en ayant ses spcifications propres. Hritage multiple : une classe fille hrite de plusieurs classes mres Elle hrite d'une partie des attributs et des mthodes de chacune de se classes mres, en plus de ses spcifications propres.
AVION
BATEAU
HYDRAVION
1 CARROSSERIE ROUES
1 DIRECTION
1 MOTEUR
Dans le cas d'une composition (ou agrgation), on s'attachera prciser le cardinal de cette relation.
Introduction Java
24
25
La plateforme Java
Plateforme = environnement hardware ou software sur lequel le programme est excut. La Java Platform se compose de:
la Java Virtual Machine (Java VM) la Java Application Programming Interface (Java API)
26
La plateforme Java
Java Application Programming Interface (API)
LAPI Java est structur en libraires (packages). Les packages comprennent des ensembles fonctionnels de composants (classes).. Java.lang: gestion des chanes de caractres (String), interaction avec lOS (System), programmation parallle (Thread).
Java.util: parseur de chane, Liste, Dictionnaires, HashTable,... Java.io: gestion des entres/Sorties (cran, clavier, fichier) java.applet: gestion des applets Java.awt et Java.swing: gestion de linterface graphique: Fentres, boutons, boites de dialogue, vnements souris,...
27
La plateforme Java
Java Virtual Machine
28
La plateforme Java
Java Virtual Machine
29
La plateforme Java
Java Virtual Machine
Une machine virtuelle est un ordinateur fictif sexcutant sur un ordinateur rel Elle possde un langage natif propre et traduit un programme crit dans ce langage vers le langage natif de lordinateur. Lit le bytecode compil (indpendant de la plateforme) Implmente dans des environnements de dveloppement ou dans les 30 navigateurs Web
La plateforme Java
Les ditions Java
31
Simple aussi parce quil comporte un grand nombre dobjets prdfinis pour
33
Il existe une grande diversit de systmes dexploitation Le compilateur Java gnre un bytecode, cest dire un format intermdiaire, neutre architecturalement, conu pour faire transiter efficacement le code vers des hardware diffrents et/ou plateformes diffrentes Le bytecode ne peut-tre interprt que par le processeur de la JVM JVM Mac
MyProgram.java
Java Compiler
35
Netbeans (http://www.netbeans.com)
Borland JBuilder (http://www.borland.com/jbuilder) Eclipse (http://www.eclipse.org/)
36
Premier Programme
Editer le code source Java suivant et le sauver dans Bienvenue.java : class Bienvenue { public static void main( String args[]) { System.out.println( "Bienvenue dans le monde Java "); } } Compiler avec la commande javac Bienvenue.java Bienvenue.class est gnre Excuter en lanant la machine virtuelle java et en lui spcifiant le point d'entre Java Bienvenue
37
Dfinir lenvironnement
Path: Pour excuter le compilateur javac et linterprteur java de nimporte quelle rpertoire il faudra spcifier le path=%java_home%\bin Classpath : Pour compiler ou excuter un programme java qui importe de packages (externes au "core") ou qui utilise des classes additionnelles vous, il faut indiquer o se trouvent ces classes, soit un rpertoire un archive (de type *.jar ou *.zip) Quand le compilateur ne trouve pas une classe, il faut rajouter l'endroit o elle se trouve (ou plutt le38
Dfinir lenvironnement
Invite de commande ou un fichier .bat set JAVA_HOME= " C:\Program Files\Java\jdk1.5.0_09" set path=%JAVA_HOME%\bin;%path% Set CLASSPATH=.; %JAVA_HOME%\lib\tools.jar Utiliser les variables denvironnement(permanent): poste de travail ->propriete->avanc->variables denvironnement
39
La POO pure Rien que pour afficher "Bienvenue" nous avons dvelopp une classe. Nous avons utilis les classes System et String ; ces classes appartiennent java.lang qui est implicitement import La mthode main() doit tre static main doit tre une mthode de classe pour qu'on puisse l'invoquer directement partir de la classe sans besoin de construire une instance de la classe. La mthode main() doit dclarer l'argument string main() doit dclarer la chane d'arguments mme si on lui passera rien lors de l'excution.
40
41
Quelque modification
Retour a la ligne class Bienvenue {public static void main( String args[]) {System.out.println( "Bienvenue "); System.out.println( "dans le monde Java ");} } Rsultat: Bienvenue dans le monde Java Modification: System.out.println( "Bienvenue \n dans le monde Java "); Utilisation de printf class Bienvenue {public static void main( String args[]) {System.out.printf(" %s \n %s \n", " Bienvenue ", " dans le monde Java ");} }
42
Programmer en java
Types prdfinis (8 au total) Entiers byte (8 bits), short (16 bits), int (32 bits), long (64bits) Rels float (32 bits IEEE 754), double(64 bits) Caractres char (2 octets, unicode) Logique boolean (1 octet) Schmas conditionnels if (mme syntaxe qu'en C/C++) switch-case (mme syntaxe qu'en C/C++) Schmas itratifs for (mme syntaxe qu'en C/C++) while (mme syntaxe qu'en C/C++) do-while (mme syntaxe qu'en C/C++)
44
les numrations de constantes avec le mot-cl enum import static pour viter d'crire systmatiquement l'identificateur d'une classe devant l'un de ses membres static
Enumration- Sans
class Titre { public static final int MONSIEUR = 0; public static final int MADAME = 1; public static final int MADEMOISELLE = 2; }; class AfficherTitre { public static void main(String[] args) { int titreContact = Titre.MONSIEUR; String message = "Titre " + titreContact + " = "; switch (titreContact) { case Titre.MONSIEUR : message += "Mr"; break; case Titre.MADAME : message += "Mme"; break; case Titre.MADEMOISELLE : message += "Melle"; break; } System.out.println (message); } }
46
Enumration- Avec
enum Titre {MONSIEUR, MADAME, MADEMOISELLE}; class EnumerationTitre { public static void main(String[] args) { Titre titreContact = Titre.MONSIEUR; String message = "Titre " + titreContact + " = "; switch (titreContact) { case MONSIEUR : message += "Mr"; break; case MADAME : message += "Mme"; break; case MADEMOISELLE : message += "Melle"; break; } // Affiche Titre MONSIEUR = Mr System.out.println (message); } }
47
import static
Une liste d'arguments variable permet une mthode de recevoir en dernier paramtre un nombre variable de valeurs (zro ou plus). Une telle liste est dclare en prcdant le dernier paramtre de trois points ..., ce paramtre tant en fait un tableau.
import static java.lang.System.*; class AdditionnerArgumentsVariable { public static int additionner(int x, int ... tab) { for (int i = 0; i < tab.length; i++) x += tab [i]; return x; } public static void main(String [] args) { out.println ("1 + 2 = " + additionner(1, 2)); out.println ("1 + 2 + 3 + 4 = " + additionner(1, 2, 3, 4)); } }
49
50
Boucle itrative
Gnricit
La gnricit quivalente au template C++ est probablement la fonctionnalit la plus demande dans Java depuis son origine
La classe des objets est spcifie entre les symboles < et > qui suivent la classe de collection
collection car :
elle vite de faire appel loprateur de cast pour manipuler un lment de l'ensemble dans son type
elle autorise le recours aux boucles itratives pour numrer un un les lments d'un ensemble, sans faire appel explicitement un indice de boucle
52
Sans Gnricit
import java.util.*; class AfficherPrenomsSansGenericite { public static void main (String args []) { Vector prenoms = new Vector(); prenoms.addElement("Thomas"); prenoms.addElement("Sophie"); // La mthode add n'interdit pas d'ajouter n'importe quel objet prenoms.addElement(new Object()); // Enumration des objets de prenoms for (int i = 0; i < prenoms.size(); i++) { // Cast explicite obligatoire pour manipuler l'objet dans son type String prenom = (String)prenoms.elementAt(i); System.out.println (prenom); } } }
53
Avec Gnricit
import java.util.*; class AfficherPrenomsAvecGenericite { public static void main (String args []) { // Cration d'un ensemble capable de ne stocker que des objets String Vector<String> prenoms = new Vector<String> (); prenoms.addElement("Thomas"); prenoms.addElement("Sophie"); // La mthode add interdit d'ajouter un autre type d'objet // prenoms.addElement(new Object()); // Boucle itrative for (String prenom : prenoms) System.out.println (prenom); } }
54
Apports de Java 6
web service et dveloppement XML simplification dveloppement GUI meilleur support desktop natif accs simplifi aux services natifs de scurit comprend NetBeans 5.5 (environnement de dveloppement similaire Eclipse)
55
Application Java
Swing:
une bibliothque graphique pour le langage de programmation Java
Applet
un logiciel qui s'excute dans la fentre d'un navigateur web.
JSP
Le JavaServer Pages est une technologie base sur Java qui permet aux dveloppeurs de gnrer dynamiquement du code HTML, XML ou tout autre type de page web. La technologie permet au code Java et certaines actions prdfinies d'tre ajouts dans un contenu statique.
56
Swing
import javax.swing.JOptionPane; public class Additioner { public static void main( String args[] ) {String Entier1=JOptionPane.showInputDialog(" Premier entier" ); String Entier2= JOptionPane.showInputDialog("Deuxime entier" ); // Conversion la chaine de caractre en entier pour le calciul int n1 = Integer.parseInt(Entier1 ); int n2 = Integer.parseInt(Entier2 ); int som = n1 + n2; JOptionPane.showMessageDialog( null, "La somme est " + som, "Somme de deux entiers", JOptionPane.PLAIN_MESSAGE ); }}
57
Applet
Fichier HelloWorldApplet.java import java.awt.Graphics; import java.applet.Applet; public class HelloWorldApplet extends Applet { public void paint(Graphics g) { g.drawString("Hello world!", 50, 25);}} Fichier Hello.html <HTML><head></head><body> Ici se trouve notre applet : <P><APPLET CODE="HelloWorldApplet.class" WIDTH=150 HEIGHT=25> Votre Browser ne permet pas de visualiser les applets Java </APPLET></p></body></HTML>
58
JSP
<%@page contentType="text/html"%> <%@page pageEncoding="UTF-8"%> <html> <head> <title>JSP Page</title> </head>
<body>
<h1>JSP Page</h1> <% out.println("Hello World"); %> </body> </html>
59