Anda di halaman 1dari 59

Conception par Objet et Programmation Java

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

CONCEPT DE LA PROGRAMMATION ORIENTE OBJET

Dveloppement
Approche procdurale :
"Que doit faire mon programme ?"

Exemple: Gestion d'une bibliothque

JAVA 2 Le guide du dveloppeur La Presse Directrice Lectrice

UML par la pratique

Lecteur Bibliothcaire

Dveloppement
Approche procdurale : "Que doit faire mon programme ?"
Grer les emprunts de livres Grer le stock

Exemple: Gestion d'une bibliothque

JAVA 2 Le guide du dveloppeur La Presse Directrice Lectrice

UML par la pratique

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

Exemple: Gestion d'une bibliothque

JAVA 2 Le guide du dveloppeur La Presse Directrice Lectrice

UML par la pratique

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

JAVA 2 Le guide du dveloppeur

La Presse

Directrice

Lectrice

UML par la pratique

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

Marque Modle Immatriculation Vitesse Couleur Puissance fiscale Etc ...

Dmarrer Acclrer Freiner Stopper Vidanger Etc ....

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

contribuent pas ses caractristiques essentielles"


(dfinition de BOOCH -1991-).

L'encapsulation consiste intgrer le code et les donnes

d'une entit au sein d'un objet. Elle empche galement les


utilisateurs clients de connatre les dtails de son implmentation en ne fournissant qu'une vue externe (correspondant un masquage d'information). Seule l'interface (ou protocole) d'un objet doit paratre visible aux yeux d'un client potentiel.

L'encapsulation des donnes


Exemple : Mthode : Vrifier le mot de passe dun utilsateur Objet : Individu (Employer dune entreprise) Donne protge : Valeur du mot de passe

L'encapsulation des Exemple : mthodescompte, code_confidentiel). Message = Dbiter(somme,


Objet = compte bancaire.

Mthode A (Visible depuis l'interface) = Dbiter_carte_de_crdit.


Mthode B (non visible par l'utilisateur mais appele par la mthode A) = Algorithme de validation du code confidentiel. Des mthodes encapsules peuvent faire appel des donnes qui sont elles-mmes protges

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

ou classe mre, mtaclasse, classe de base, anctre

SOUS CLASSE

Lien d'hritage
ou classe fille, classe drive, descendant

Hritage
La classe fille hrite des caractristiques de sa classe mre
.

(attributs et mthodes) mais elle se distingue par ses


caractristiques propres.

SUPER CLASSE

ou classe mre, mtaclasse, classe de base, anctre Lien d'hritage ou classe fille, classe drive, descendant

SOUS CLASSE

Les diffrents types d'hritage


.

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

La notion de composition ou agrgation


La composition consiste runir des objets pour en former un autre.
VOITURE

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

Quest-ce que Java ?

Java est une plateforme


La plateforme Java, uniquement software, est excute sur la plateforme du systme dexploitation La Java Platform est constitue de :
La Java Virtual Machine (JVM) Des interfaces de programmation dapplication (Java API)

Java est un langage de programmation


Un programme Java est compil et interprt

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

Le langage de programmation Java


Java est un langage de programmation particulier qui possde des caractristiques avantageuses:
Simplicit et productivit:
Intgration complte de lOO Gestion mmoire ( Garbage collector )

Indpendance par rapport aux plateformes Ouverture:


Support intgr dInternet Connexion intgre aux bases de donnes (JDBC) Support des caractres internationaux

Distribution et aspects dynamiques Performance


32

Le langage de programmation Java Simple et orient objet

Java est un langage de programmation simple


Langage de programmation au mme titre que C/C++/Perl/Smalltalk/Fortran mais plus simple Les aspects fondamentaux du langage sont rapidement assimils

Java est orient objet :


La technologie OO aprs un moment de gestation est maintenant compltement intgre En java, tout est un objet ( la diffrence du C++ par ex.)

Simple aussi parce quil comporte un grand nombre dobjets prdfinis pour
33

Le langage de programmation Java Neutre architecturalement

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

MyProgram.class = bytecode JVM Windows JVM Unix


34

Les diffrences avec C++


Pas de structures ni dunions Pas de variables ni de fonctions en dehors des classes Pas d'hritage multiple de classes Pas de surcharge doprateurs Pas de passage par copie pour les objets Pas de pointeurs, seulement des rfrences

35

Comment dvelopper une application ?


Deux faons dcrire des programmes Java:

En crivant le code dans un simple diteur de texte


Compilation et excution du code en ligne de commande DOS

En utilisant un environnement de dveloppement (IDE)

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

Commentaire sur le premier programme


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

Commentaire sur le premier programme


Le nom du fichier source doit obligatoirement concorder avec le nom de la classe Il est dans les habitudes des programmeurs Java de faire concorder le nom du fichier source avec celui de la classe qu'il contient. Dans le cas o l'on a plusieurs classes dans le fichier, on nomme ce dernier avec la classe ayant le point d'entre main(). Ceci n'est suscit que pour des raison de simplicit. Le compilateur gnre un fichier .class par classe source compil et que le nom du .class est le mme que celui de la classe source.

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

Utilisation de la classe scanner


import java.util.Scanner; public class Addition {public static void main( String args[] ) {Scanner input = new Scanner( System.in ); int n1,n2,somme; System.out.print(" Donner le premier entier: " ); n1 = input.nextInt(); System.out.print(" Donner un deuxime entier: " ); n2 = input.nextInt(); somme = n1 + n2; System.out.printf( "Somme est %d\n", sommme ); } }

Pour lire une chaine de caractre input.nextLine();


43

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

Apport syntaxique de java 5


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

les listes d'arguments variables

l'autoboxing pour faciliter la cration d'une instance de


classe d'emballage partir d'une valeur de type primitif

la gnricit et les boucles itratives pour simplifier la

gestion des lments d'un tableau ou d'une collection

la possibilit d'ajouter des annotations @ ou metadata une classe.


45

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

La clause import static permet d'importer

les membres static d'une classe, pour


vous viter par exemple de citer la

classe System pour utiliser son champ


out :

import static java.lang.System.*;


Avant: System.out.print(Hello); Aprs: out.print(Hello);
48

Liste d'arguments variable

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

Autoboxing / auto-unboxing Cette fonctionnalit vite d'crire explicitement l'appel new


ClasseEmballage pour crer un objet d'une classe d'emballage. Integer zero = 0;

Traduite par le compilateur en Integer zero = new Integer(0);

Symtriquement, l'auto-unboxing vite de faire appel explicitement

la mthode d'une classe d'emballage qui renvoie la valeur de type


primitif stocke par un objet de ce type. int x = zero; Traduite par le compilateur en int x = zero.intValue();

50

Boucle itrative

La syntaxe de l'instruction for peut tre simplifie

pour numrer un un les lments d'un


tableau. Par exemple, la mthode additionner de la

classe AdditionnerArgumentsVariable vue


prcdemment peut tre simplifie ainsi : public static int additionner(int x, int ... tab)

{ for (int val : tab) x += val; return x; }


cette boucle signifiant pour chaque lment val de l'ensemble tab.
51

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

La gnricit simplifie aussi la consultation des lments d'une

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

Anda mungkin juga menyukai