Вы находитесь на странице: 1из 166

Introduction Java

Ing_ENIM Email: ayadi.akrem@gmail.com

Plan du formation(1/3)
JOUR 1 1. Introduction: A propos de Java
 Le langage de programmation Java  La plateforme Java

2. Premire application en Java 3. Syntaxe et smantique de Java


 Identificateurs  Types primitifs et types de rfrence  Arithmtique et oprateurs  Instructions de contrle  Tableaux et chanes de caractres

Plan du formation(2/3)
JOUR 2 4. Programmation oriente objets en Java
 Concepts de lOO  Reprsentations UML  Les variables: Dclaration et porte  Les mthodes: Dclaration, interface et surcharge  La cration dobjets: Constructeurs et mot-cl new  Lencapsulation: public , private et protected  Utilisation de lhritage: this et super  Polymorphisme

Plan du formation(3/3)
JOUR 3 5. Interfaces graphiques et Gestion des vnements
 La philosophie Model-View-Control  Interfaces graphiques: lAWT

6. Gestion dvnements 7. Les collections 8. Multithreading 9. Hirarchie de classes


 Classes abstraites et interfaces

Objectifs de la formation
y Dcrire les lments-cl de la plate-forme Java y Compiler et excuter une application Java y Dcrire la syntaxe du langage y Comprendre le paradigme Orient Objet y Utiliser Java pour mettre en uvre le paradigme OO y Dvelopper une interface graphique y Dvelopper un programme utilisant 1 interface graphique y Comprendre la gestion des vnements y Comprendre un diagramme de classes (UML) y Comprendre les bases du multithreading

Rfrences Web
y The Java Tutorial from Sun http://java.sun.com/docs/books/tutorial/ y The Java Developer Connection http://developer.java.sun.com/developer/index.html y Gamelan http://www.gamelan.com y Java Applet Rating Services http://www.jars.com

JOUR 1
I. Introduction et historique

Survol du chapitre
y Quest-ce que Java ? y Java comme langage de programmation y La plateforme Java
 La Java Virtual Machine  Les interfaces de programmation dapplication (API)

y Dploiement dun programme y Quelques notions historiques

Quest-ce que Java ?


y Java est un langage de programmation
 Voir le white paper de J.Gosling  Un programme Java est compil et interprt

y 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 comme langage de programmation


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

 Robustesse, fiabilit et scurit  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

Java comme langage de programmation


Neutre architecturalement
y Il existe une grande diversit de systmes dexploitation y 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 y 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

Java comme Plateforme


y Plateforme = environnement hardware ou software sur lequel le programme est excut. y La Java Platform se compose de:
 la Java Virtual Machine (Java VM)  la Java Application Programming Interface (Java API)

Introduction la POO INFO 114

Java comme Plateforme


JVM

Introduction la POO INFO 114

Java comme Plateforme


JDK/JRE

Introduction la POO INFO 114

Java comme Plateforme


Java Application Programming Interface (API)
y LAPI Java est structur en libraires (packages). Les packages comprennent des ensembles fonctionnels de composants (classes).. y Le noyau (core) de lAPI Java (incluse dans toute implmentation complte de la plateforme Java) comprend notamment :
 Essentials (data types, objects, string, array, vector, I/O,date,  Applet  Abstract Windowing Toolkit (AWT)  Basic Networking (URL, Socket TCP or UDP-,IP)  Evolved Networking (Remote Method Invocation)  Internationalization  Security  .. )

Introduction la POO INFO 114

Dploiement dun programme (1/2)


Paradigme classique de la compilation
MyProgram.c

Excut une seule fois Mais diffrent pour chaque environnement

Compiler

Gnre du code natif directement excutable, mais spcifique chaque environnement

MyProgram.o
010110

Introduction la POO INFO 114

Dploiement dun programme (2/2)


Changement de la vision traditionnelle de la compilation
y Chaque programme est compil et interprt y Write once run everywhere MyProgram.java
Excut une seule fois

Compiler

Traduit le programme en un code intermdiaire Appel bytecode indpendant de la machine

MyProgram.class
Chaque fois que le programme est excut

Interpreter
010110

Lit le bytecode et excute sur la machine

Introduction la POO INFO 114

JOUR 1
II. Premire application en Java

Comment dvelopper une application?


Deux faons dcrire des programmes Java:
y En crivant le code dans un simple diteur de texte
 Compilation et excution du code en ligne de commande DOS

y En utilisant un environnement de dveloppement (IDE)


 Eclipse  Netbeans (http://www.netbeans.com)  Borland JBuilder (http://www.borland.com/jbuilder)  IBM WebSphere Studio (http://www.ibm.com/software/awdtools)  Sun ONE Studio (http://wwws.sun.com/software/sundev)  Microsoft .Net Studio (http://msdn.microsoft.com/vstudio)  Crimson Editor !!!!
Introduction la POO INFO 114

Une premire application


Application HelloWorld
y Crer un fichier texte : HelloWorld.java

EX 2.1

y Rgle de bonne pratique : 1 classe par fichier et 1 fichier par classe


public class HelloWorld { public static void main (String[]args) { System.out.println("Hello the World"); } }

La premire ligne du programme doit tre la dclaration de la classe Tout programme doit contenir une mthode main qui porte la signature ci-contre crire lcran Hello the World Fermer les accolades

y Compiler le programme : javac HelloWorld.java y Le compilateur gnre le bytecode dans le fichier : HelloWorld.class y Excuter lapplication : java HelloWorld y Hello the World saffiche lcran
Introduction la POO INFO 114

JOUR 1
III. Syntaxe du langage Java

Survol du chapitre
y Conventions dcriture y Commentaires dans le code source y Identificateurs y Mots-cl y Types primitifs et types de rfrences y La classe String y Arithmtique et oprateurs y Instructions de contrle
 If, then, else  For  While  Do While  Break et Continue

y Les tableaux ( Array )


Introduction la POO INFO 114

Conventions dcriture
Classes class BankAccount class RacingBike Interfaces interface Account Mthodes deposit() getName() Packages package coursTechnofutur3.bank ; Variables int accountNumber Constantes MAXIMUM_SIZE

Commentaires dans le code source


Trois faons dinclure des commentaires :
 Tout texte entre // et la fin de la ligne
// Commentaires sur une seule ligne

 Tout texte entre /* et */


/* Commentaires sur un nombre important voire trs important de lignes */

 Les textes entre /** et */ sont utiliss pour crer des commentaires que lexcutable JAVADOC pourra traiter afin de produire une documentation (cf. documentation de lAPI Java)
/** Commentaires destins la documentation */

Introduction la POO INFO 114

Identificateurs
y Un identificateur (identifier) permet de dsigner une classe, une mthode, une variable y On ne peut utiliser ce que lon veut :
 Interdiction dutiliser les mots-cls  Commencent par :
Une lettre Un $ Un _ (underscore)

 Ne commencent pas par :


Un chiffre Un signe de ponctuation autre que $ ou _

Introduction la POO INFO 114

Mots-cl
abstract boolean break byte case catch char class const * continue default do double else extends final finally float for goto * if implements import instanceof int interface long native new package private protected public return short static strictfp ** super switch synchronized this throw throws transient try void volatile while

* Indique un mot cl qui est peu utilis ** A partir de la plate-forme Java2

Introduction la POO INFO 114

Types primitifs et types de rfrence


y Java est un langage fortement typ y Le type de donnes prcise
 les valeurs que la variable peut contenir  les oprations que lon peut raliser dessus

y Deux types de donnes:


 Donne primitive: contient physiquement la valeur (caractre, nombre, boolen)  Rfrence: contient ladresse mmoire o linformation relative lobjet, linterface, etc. est rellement stocke

Rfrence:

Adresse

Introduction la POO INFO 114

Types primitifs et types de rfrence


Types de donnes primitifs (1/4)

Primitive Data Types

Integral byte 8bits -128 to 127 short 16bits -32768 to 32767 int 32bits -2^31 to 2^31-1 long 64 bits -2^63 to 2^63-1 Textual char 16bits 0 to 65535

Floating float 32bits 1.4E-45 3.4E38 double 64bits 4.9E-324 1.8E308

Logical one bit : true or false

Introduction la POO INFO 114

Types primitifs et types de rfrence


Types de donnes primitifs (2/4)
y Explication:
 byte : cod sur 8 bits  int : cod sur 32 bits 28 valeurs 232 valeurs (27) to (271) = -128 127 (231) to (2311)

y Dclaration et initialisation :
 int  short  long  byte  double  float  char  boolean int x=12; short x= 32; (short x=33000; // Hors limite) long x= 200L; // Nombre accol un L byte x=012; // Nombre commenant avec un 0 double x=23.2323; float x= 23.233F; // Nombre accol un F char c=a; char c=\u0061; char c=(char)97; boolean b=true;

Introduction la POO INFO 114

Types primitifs et types de rfrence


Types de donnes primitifs (3/4)
Dclaration, Initialisation et Assignation des types primitifs
int t; int u = 3; t=7; u=t; m=9; char c; c=a; Dclaration dun entier t (t est lidentificateur) Dclaration et initialisation dun entier Initialisation de t la valeur 7 Assignation (affectation) de la valeur de t u Erreur dclaration pralable ncessaire Dclaration Initialisation

Introduction la POO INFO 114

Types primitifs et types de rfrence


Types de donnes primitifs (4/4)
Exemple: int a = 5; int b = 8; a=b;
Affectation de la valeur de b a

Dclaration et initialisation de 2 entiers: a et b

a=8

b=8

Dsormais, il existe deux variables en mmoire qui ont la mme valeur

Introduction la POO INFO 114

Types primitifs et types de rfrence


Types de rfrence
y Tous les types hormis les types primitifs y Pointeur implicite sur un objet

Rfrence:

Adresse

Introduction la POO INFO 114

Les class Wrapper


y Chacun des types primitifs en Java (boolean, byte, char, short, int, long, float et double) possde une classe correspondante appele une wrapper class qui tend ce type en lui ajoutant des fonctionnalits. y Il y a 8 Classe de type Wrapper

Introduction la POO INFO 114

Les class Wrapper


y Ces classes appartiennent au package java.lang et sont donc importes par dfaut. y L'utilit de ces classes est qu'elles fournissent des mthodes pour convertir entre les types primitifs et de les manipuler plus facilement

La classe String
y String nest pas un type primitif, cest une classe y Dclaration de deux String: String s1, s2; y Initialisation : s1 = "Hello"; s2 = "le monde"; y Dclaration et initialisation : String s3 = "Hello"; y Concatnation : String s4 = s1 + " " + s2;

StringBuffer/StringBuilder
yLes Points communes
 La classe StringBuilder/StringBuffer peut contenir des chanes qui peuvent tre modifies.  Il s'agit d'une structure de donnes dynamique: la taille de la chane est augmente automatiquement  La taille initiale peut tre prcise dans le constructeur (16 par dfaut).  mthodes insert, append, delete

yDiffrence
 StringBuilder nest pas Thred-safe or que StringBuilder est une classe threadsafe

Arithmtique et oprateurs
Arithmtique lmentaire
y Quelle est la valeur de : 5+3*4+(12/4+1) y Rgles de prcdences sur les oprateurs:
Niveau 1 2 Symbole Signification () * / % 3 + Parenthse Produit Division Modulo Addition ou concatnation Soustraction

Arithmtique et oprateurs
Oprateurs de comparaison
y Pour comparer deux valeurs:
Oprateur > >= < <= == != Exemple v1 > v2 v1 >= v2 v1 < v2 v1 <= v2 v1 == v2 v1 != v2 Renvoie TRUE si v1 plus grand que v2 Plus grand ou gal Plus petit que Plus petit ou gal gal diffrent

y Oprateurs logiques:
Oprateur && & || | ! != Usage expr1 && expr2 expr1 & expr2 expr1 || expr2 expr1 | expr2 ! expr1 expr1 != expr2 Renvoie TRUE si expr1 et expr2 sont vraies Idem mais value toujours les 2 expressions Expr1 ou expr2, ou les deux sont vraies idem mais value toujours les 2 expressions expr1 est fausse si expr1 est diffrent de expr2

Arithmtique et oprateurs
Oprateurs dassignation (daffectation)
y Loprateur de base est = y Il existe des oprateurs dassignation qui ralisent la fois
 une opration arithmtique, logique, ou bit bit  et lassignation proprement dite
Oprateur += -= *= /= %= Exemple expr1 += expr2 expr1 -= expr2 expr1 *= expr2 expr1 /= expr2 expr1 %= expr2 quivalent expr1 = expr1 + expr2 expr1 = expr1 expr2 expr1 = expr1 * expr2 expr1 = expr1 / expr2 expr1 = expr1 % expr2

Instructions et structures de contrle


Dclarations, instructions, blocs
y Une instruction
      Ralise un traitement particulier: Renvoie ventuellement le rsultat du calcul Est comparable une phrase du langage naturel Constitue lunit dexcution Est toujours suivie de ; Instruction daffectation (dassignation), instruction de dclaration

y Un bloc
 Est une suite dinstructions entre accolades { et }  Dlimite la porte des variables qui y sont dclares

y Une dclaration
 Constitue la signature dun lment (classe, variable ou mthode)  Annonce la dfinition de cet lment  Est (normalement) toujours suivie dun bloc dinstructions

Instructions et structures de contrle


Structures de contrle
y Les structures de contrles permettent darrter lexcution linaire des instructions (de bas en haut et de gauche droite) y Elles permettent dexcuter conditionnellement une instruction, ou de raliser une boucle
Type dinstruction Dcision Boucle Traitement dexceptions Branchement Mots cls utiliss if() else switch() case for( ; ; ) while () do while() try catch finally throw label : -- break continue -- return

Instructions et structures de contrle


Structures de contrle
IF THEN ELSE if (expression) { //instructions } if (expression) { //instructions } else { //instructions dans les autres cas }

Instructions et structures de contrle


Structures de contrle
SWITCH CASE switch (number) { case 1 : instructions; case 2 : instructions; default : instructions; } break;

Instructions et structures de contrle


Structures de contrle
FOR for (initialisation; condition; mise jour de valeurs){ // instructions } y Initialisation: excuter lorsque le programme rentre pour la premire fois dans la boucle y Condition : remplir pour recommencer le bloc dinstructions y Mise jour: instruction excute chaque fois que la boucle est termine Exemples: for (int i=0 ; i<10 ; i++) { System.out.println("The value of i is : " + i); }
Introduction la POO INFO 114

Instructions et structures de contrle


Structures de contrle
WHILE DO WHILE while (test logique) { //instructions } Si le code de la boucle doit tre excut la premire fois de toute faon: do { // code to perform } while (logical_test) Boucle infinie: while (true) { //instructions }

Instructions et structures de contrle


Structures de contrle
y BREAK / CONTINUE y BREAK: achve immdiatement la boucle y CONTINUE: ignore le reste des instructions et recommence au dbut de la boucle for (int i=0; i<10 ;i++){ if (i==5) continue; // Si i=5, on recommence au dbut if (i==7) break; /* Si i=7, on sort de la boucle et les instructions suivantes sont excutes */

System.out.println("The value of i is : " + i); }

Instructions et structures de contrle


Structures de contrle
BREAK [LABEL] CONTINUE [LABEL]
outer: for (int i=0 ; i<10 ; i++) for(int j=20;j>4;j--){ if (i==5) continue; if (i==7)
// if i=5, you jump to the beginning of the loop

break outer; // if i=7, you jump outside the loop and continue ,+j);

System.out.println(The value of i,j is :+i+ }

Exercices
y Ding Ding Bottle
     Ecrire un programme qui compte de 1 100 Affiche ces nombres lcran Remplace les multiples de 5 par Bottle Remplace les multiples de 7 par Ding Ding Remplace les multiples de 5 et 7 par Ding Ding Bottle
EX 3.1

y Calcul de factorielle

 Ecrire un programme qui calcule la factorielle dun nombre  Essayer doptimiser le code en gardant en mmoire les factorielles dj calcules et en utilisant la mthode rcursive  Sassurer que la factorielle calcule ne dpasse pas 20 (limite de capacit des entiers de type LONG)

EX 3.2

y Compiler et excuter les programmes crs

Les tableaux (Array) (1/3)


y Un tableau est utilis pour stocker une collection de variables de mme type y On peut crer des tableaux de types primitifs ou de types de rfrences (cf. argument de la fonction main : String[] args) y Un tableau doit tre
 Dclar  Cr  Ses variables initialises
int[] nombres; nombres = new int[10]; int[] nombres = new int[10]; nombres[0] = 28; // dclaration // cration // dclaration et cration

Les tableaux (Array) (1/3)

Les tableaux (Array) (2/3)


y On peut construire des tableaux plusieurs dimensions y Des tableaux plusieurs dimensions sont en fait des tableaux de tableaux int[][] matrice = new int[3][]; matrice[0] = new int[4]; matrice[1] = new int[5]; matrice[2] = new int[3]; matrice[0][0] = 25; matrice est une rfrence vers un tableau contenant lui-mme 3 tableaux de taille non dfinie Le premier lment de la matrice est une rfrence vers un tableau de 4 entiers, Le premier lment du premier tableau de la matrice est un entier de valeur 25

Les tableaux (Array) (2/3)

Les tableaux (Array) (3/3)


Point[][] matriceDePoints; matriceDePoints = new Point[2][]; matriceDePoints[0] = new Point[2]; matriceDePoints[1] = new Point[3]; Point p1, p2, p3, p4, p5; p1 = new Point(10,15); p2 = new Point(11,16); p3 = new Point(12,17); p4 = new Point(13,18); p5 = new Point(14,19); matriceDePoints[0][0] = p1; matriceDePoints[0][1] = p2; matriceDePoints[1][0] = p3; matriceDePoints[1][1] = p4; matriceDePoints[1][2] = p5;
14,19 ox0agrc57 p5 13,18 ox0fdfc17 p4 12,17 dy0adfc14 p3 [1] [0] [1] [2] 11,16 ox0adfc43 p2 10,15 ox0adfc12 p1 [0] [0] [1] matriceDePoints

Introduction la POO INFO 114

Autre exemple

Exemple de test
1/10

Exemple de test
2/10

Exemple de test
3/10

Exemple de test
4/10

Exemple de test
5/10

Exemple de test
6/10

Exemple de test
7/10

Exemple de test
8/10

Exemple de test
9/10

Exemple de test
10/10

JOUR 2
IV. Premiers concepts orients objets

Gnralits
y Java est un langage compltement orient objet
 Contrairement au C++, un programme Java n'est constitu que de classes  pas de fonctions ou de procdures isoles  parfois on invente artificiellement une classe :

Class EstPair { public static boolean p(int n) { return (n%2)==0; }

Notion de classe
y La notion de classe est un enrichissement de la notion usuelle de TYPE
 TYPE : utilis en programmation  CLASSE

y Regroupe un ensemble de donnes (= champs reprsentant ltat de lobjet voluant au cours de lexcution
 ex. la position dune fentre sur un cran, si elle est active ou pas)

y et de comportements
 Ex. safficher, sagrandir, se dtruire

Notion dobjet
y Un objet est une instance de classe y La notion dobjet est plus riche que la simple valeur dun type
 VALEUR : int n=12; // 12 est une valeur
pas un objet identifiable (rfrenable)

 OBJET : Fentre frame1; // frame possde une identit propre


on peut le manipuler comme un lment part entire

Le type class
y Permet de dfinir une classe au sens de la POO
modifAcces class nomClasse [..]{ modifAcces type attribut1; modifAcces type attribut2; ... modifAcces typeRetourne methode1(type param){} modifAcces typeRetourne methode2(type param){} }

...

y Le ; la fin de la dfinition est facultatif en Java y Toutes les classes drivent de la mme mta-classe appele Object y Toutes les instances seront cres dynamiquement

EXEMPLE

public class Client { // variables d'instance String nomClient; String codePostalClient; float soldeClient; // mthodes d'instance float getSolde (String cli) { } }

Dclaration

Variable d'instance

Mthode d'instance
Client String nomClient int codePostalClient float soldeClient float getSolde (String)

Les modificateurs d'accs


y Les modificateurs d'accs (ou indicateur daccs, visibilit) servent fixer les rgles daccs et de visibilit :
 de la classe elle-mme  des membres de la classe (attributs et mthodes)

y Trois modificateurs de classe : public classA { } public abstract classB { } final classC { }

abstract final

y Trois modificateurs pour les membres de classe (attributs et mthodes)

public

private

protected

Modificateurs d'accs de classe


y Signification :
 public : classe publique, accessible par toutes les autres classes, mme en dehors du package la contenant (si package import)  abstract : la classe est abstraite
(pas dinstance directe) les mthodes (abstraites) quelle contient seront implmentes dans les sousclasses : les classes drives Cest le principe de dlgation

 final : classe finale de la branche dhritage, elle ne peut plus tre drive  par dfaut, si on ne prcise pas de niveau daccs
une classe n'est visible que pour les classes du package

Modificateurs d'accs des membres


y Ces modificateurs d'accs sont rpts
 pour chaque attribut  Pour chaque mthode de la classe

y Visibilit d'un membre de la classe


 public: accessible par toutes les classes de tous les packages utiliss (idem que pour les classes)  protected: accessibilit restreinte la classe et ses classes drives (du mme package ou non)  private: accessibilit rduite la classe  par dfaut, accessibilit rduite au package

Exemple
Dclaration de la classe Variables dinstance ou champs Dfinition du constructeur Mthodes daccs
import java.lang.*; public class BankAccount {

Class Body

Dfinition des mthodes


}

private String name ; private int solde ; private int interest ; public BankAccount(String n,int s,int i) { name=n ; solde=s; interest=i; } public String getName() { return name; } public void setName (String n) {name= n;} public void deposit (int amount) { solde += amount ; } public void withdrawal (int amount ){ solde-=amount ; }

Porte des modificateurs d'accs


y Attention les protections sont dfinies :
 au niveau de la classe  et non au niveau de l'objet

y Par consquent :
 toutes les mthodes (prives et publiques) d'un objet ont accs bien sr aux membres de cet objet  MAIS aussi aux membres -mme privs- d'un autre objet de la mme classe
Si laccs la classe le permet

Les objets (1/3)


y L'instance d'une classe est un objet
 un objet est cr par un constructeur  il est dtruit par le destructeur  son tat est caractris par les valeurs de ses attributs  son comportement est dfini par ses mthodes

y En Java un objet ne peut tre allou que de faon dynamique


 grce l'oprateur new

Les objets (2/3)


y Cration en 2 temps :
 Dclaration (on dit aussi dfinition) dun identificateur qui va tre une rfrence (sur lobjet)  Assignation affectation dun espace mmoire pour les attributs et mthodes de lobjet

y (1) Dfinition d'un objet


 pour rfrencer un objet, il faut dfinir une variable nomClasse nomObjet; ex.: Client toto;  attention la variable n'est qu'une rfrence sur un objet de type nomClasse D l'objet n'est pas cr

y (2) Assignation de l'objet: appel au constructeur


nomObjet = new nomClasse(); toto = new Client();

Les objets (3/3)


y Dfinition et cration d'un objet en mme temps :

nomClasse nomObjet = new nomClasse(); Client toto = new Client();


y Rfrence nulle

nomObjet = null;

Processus de cration dun objet


Film film1;

film1

null

La variable d'objet est initialise null

film1 = new Film(); new

film1

titre: null categorie: null

la variable d'objet pointe sur un objet

OU
Film film1 = new Film();

film1
film1

titre: null categorie: null

La variable d'objet est cre et pointe sur un objet

Les mthodes (2/2)


Linterface dune mthode
y Linterface dune mthode, cest sa signature y Cette signature, qui dfinit linterface de la mthode, correspond en fait au message chang quand la mthode est appele y Le message se limite de fait uniquement la signature de la mthode
 Type de retour  Nom  Arguments

y Lexpditeur du message na donc jamais besoin de connatre limplmentation ou corps de la mthode y On a donc:
 Dclaration = Signature = Message de la mthode  Bloc dinstruction = Corps = Implmentation de la mthode

Introduction la POO INFO 114

Lencapsulation
Accs aux membres dune classe
y En java, les modificateurs daccs sont utiliss pour protger laccessibilit des variables et des mthodes. y Les accs sont contrls en respectant le tableau suivant:
Mot-cl private protected public [aucun] Une classe a toujours accs ses membres. classe Y Y Y Y Y Y Y Y Y Y Seul les membres publics sont visibles depuis le monde extrieur. package sous classe world

Les classes dun mme package protgent uniquement leurs membres privs ( lintrieur du package)

Une classe fille (ou drive) na accs quaux membres publics et protected de la classe mre.

Introduction la POO INFO 114

Exercices
y Cration dun compte en banque
Quelles sont les variables dtats accessibles et non accessibles? Quelles sont les fonctionnalits offertes lutilisateur? Quelles sont les fonctionnalits caches lutilisateur? EX 4.1

Introduction la POO INFO 114

La cration dobjets (1/2)


Le constructeur
y A le mme nom que la classe y Quand un objet est cr, on invoque tout dabord le constructeur de la classe y Un constructeur utilise comme arguments des variables initialisant son tat interne y On peut surcharger les constructeurs, i.e dfinir de multiples constructeurs y Il existe toujours un constructeur. Sil nest pas explicitement dfini, il sera un constructeur par dfaut, sans arguments y Signature dun constructeur:
 Modificateur daccs ( en gnral public)  Pas de type de retour  Le mme nom que la classe  Les arguments sont utiliss pour initialiser les variables de la classe Introduction la POO INFO 114 public BankAccount(String n,int s,int i) { name=n ; solde=s; interest=i; } public BankAccount(String n) { name=n ; solde=0; interest=10; }

La cration dobjets (2/2)


Lappel au constructeur
y Se fait pour initialiser un objet
Provoque la cration relle de lobjet en mmoire Par linitialisation de ses variables internes propres

y Se fait par lemploi du mot cl

new

BankAccount ba1, ba2; ba1 = new BankAccount("Bersini", 10.000, 7); ba2 = new BankAccount("Bersini");

Introduction la POO INFO 114

Exercices
EX 4.1

y Cration dune classe Personne


La personne possde un Array de comptes en banque

y Cration dune classe contenant le main


Une classe Banque La banque possde un Array de Personne

Introduction la POO INFO 114

Les concepts de lOO


Hritage
y En quoi consiste lhritage?
 Supposons quil existe dj une classe qui dfinit un certain nombre de messages et quon aie besoin dune classe identique mais pourvue de quelques messages supplmentaires Comment viter de rcrire la classe de dpart? Regrouper les classes en super-classes en factorisant et spcialisant La sous-classe hrite des attributs et mthodes et peut en rajouter de nouveaux

Compte en banque
Compte courant Compte pargne

Introduction la POO INFO 114

Les concepts de lOO


Hritage
y Ex: Dans lcosystme
 La classe Faune regroupe les animaux  La classe Ressource regroupe leau et la plante

Introduction la POO INFO 114

Utilisation de lhritage (1/3)


y Java noffre pas la possibilit dhritage multiple y La super super classe, est la classe Object (parente de toute classe) y Une sous-classe hrite des variables et des mthodes de ses classes parentes y La clause extends apparat dans la dclaration de la classe
class BankAccount { protected int solde; } class NormalAccount extends BankAccount { public void job(){solde+=1000;} } NormalAccount job(): void Introduction la POO INFO 114 BankAccount int solde

Utilisation de lhritage (2/3)


Les mots-cl this et super
y Dans le constructeur
 Il existe toujours un constructeur. Sil nest pas explicitement dfini, il sera un constructeur par dfaut, sans arguments  this est toujours une rfrence sur lobjet en cours (de cration) lui-mme  super permet dappeler le constructeur de la classe parent, ce qui est obligatoire si celui-ci attend des arguments
class Child extends MyClass { Child(){ super(6); // appel du constructeur } }

parent

Introduction la POO INFO 114

Utilisation de lhritage (3/3)


Les mots-cl this et super
y En cas de surcharge du constructeur:
class Employee { String name,firstname; Address a; int age; Employee(String name,String firstname,Address a,int age){ super(); this. firstname= firstname; this.name=name; this.a=a; this.age=age; } Employee(String name,String firstname){ this(name,firstname,null,-1); }

Introduction la POO INFO 114

Exercices
y Cration dune hirarchie de compte
Quelles sont les variables dtats accessibles et non accessibles? Quelles sont les fonctionnalits offertes lutilisateur? Quelles sont les fonctionnalits caches lutilisateur? Quelle hirarchie de classes pourrait-on proposer? EX 4.1

Introduction la POO INFO 114

Les concepts de lOO


Hritage
y Quest-ce que le polymorphisme?
 Concept bas sur la notion de redfinition de mthodes  Permet une tierce classe de traiter un ensemble de classes sans connatre leur nature ultime  Permet de factoriser des dnominations dactivit mais pas les activits ellesmmes  Consiste permettre une classe de sadresser une autre en sollicitant un service gnrique qui sappliquera diffremment au niveau de chaque sousclasse du destinataire du message  En dautres termes, permet de changer le comportement dune classe de base sans la modifier Deux objets peuvent ragir diffremment au mme appel de mthode  Uniquement possible entre classes relies par un lien dhritage

y Exemple dans lcosystme?


 Demander tous les animaux de se dplacer (selon leurs propres rgles) en leur adressant un message en tant quobjets de type Faune
Introduction la POO INFO 114

Utilisation de lhritage
Redfinition de mthodes
y La redfinition nest pas obligatoire !! Mais elle permet dadapter un comportement et de le spcifier pour la sous-classe.
class BankAccount { public void computeInterest(){ solde+=300; }} class NormalAccount extends BankAccount { public void computeInterest(){ super.computeInterest();//call the overriden method solde*=1.07; }} //annual increase //annual gift

y Obligation de redfinir les mthodes dclares comme abstraites (abstract) y Interdiction de redfinir les mthode dclares comme finales (final)

Introduction la POO INFO 114

Polymorphisme (1/2)
Dfinition
y Concept bas sur la notion de redfinition de mthodes y Consiste permettre une classe de sadresser une autre en sollicitant un service gnrique qui sappliquera diffremment au niveau de chaque sous-classe du destinataire du message y En dautres termes, permet de changer le comportement dune classe de base sans la modifier Deux objets peuvent ragir diffremment au mme appel de mthode y Uniquement possible entre classes relies par un lien dhritage et suppose un cast vers le haut des objets des classes enfants
class Bank{ BankAccount[] theAccounts = new BankAccount[10]; public static void main(String[] args){ theAccounts[0] = new NormalAccount("Joe",10000); theAccounts[0].computeInterest(); }} Introduction la POO INFO 114

Polymorphisme (2/2)
Utilisation du polymorphisme sur des collections htrognes
BankAccount[] ba=new BankAccount[5]; ba[0] = new NormalAccount("Joe",10000); ba[1] = new NormalAccount("John",11000); ba[2] = new SpecialAccount("Jef",12000); ba[3] = new SpecialAccount("Jack",13000); ba[4] = new SpecialAccount("Jim",14000); for(int i=0;i<ba.length();i++) { ba[i].computeInterest(); }
Introduction la POO INFO 114

Exercices
y La personne possde deux types de Comptes
EX 4.2

y La banque fait le calcul dintrt de faon polymorphique

Introduction la POO INFO 114

Exercice
BankAccount
- String owner - String number - int solde - double interst deposit(int):int withdraw(int):int addALoan(Loan l):void payYourLoans():void calculInterest():int isReimbursed(int):void

EX 5.7

MyProgram

Bank

Person
- String nom - . Person(String n,) addCompte(Compte c):void

NormalAccount
calculInterest():int

SparingAccount
calculInterest():int

Introduction la POO INFO 114

Les concepts de lOO


La modlisation devient la rfrence
y Pourquoi la modlisation?
  La conception OO est entirement btie sur une modlisation des objets intervenant dans le problme Avant de programmer quoi que ce soit, il faut donc modliser les classes et leurs relations au minimum Sur base dUML (Unified Modeling Language) Notation standardise pour toute le dveloppement OO de la conception au dploiement Dfinition de 9 diagrammes
Attributs, comportements, polymorphisme

Comment?


1. Identifier les classes 2. Dterminer les relations entre les classes


Associations / Dpendance / Hriage

3. Construire les modles


Introduction la POO INFO 114

Les concepts de lOO


La modlisation devient la rfrence
y Quest-ce quUML?
 UML est un langage objet graphique - un formalisme orient objet, bas sur des diagrammes (9)  UML permet de s abstraire du code par une reprsentation des interactions statiques et du droulement dynamique de lapplication.  UML prend en compte, le cahier de charge, larchitecture statique, la dynamique et les aspects implmentation  Facilite linteraction, les gros projets  Gnrateur de squelette de code  UML est un langage PAS une mthodologie, aucune dmarche nest propose juste une notation

Introduction la POO INFO 114

Les concepts de lOO


La modlisation devient la rfrence

Design View

Implementation View

Classes, interfaces, collaborations

Use cases

Components

Use Case View Process View Deployment View

Active classes

Nodes

Introduction la POO INFO 114

Les concepts de lOO


La modlisation devient la rfrence
y Diagrammes UML
 Les diagrammes des cas dutilisation: les fonctions du systme, du point de vue de lutilisateur ou dun systme extrieur - lusage que lon en fait  Les diagrammes de classes: une description statique des relations entre les classes  Les diagrammes dobjet: une description statique des objets et de leurs relations. Une version instancie du prcdent  Les diagrammes de squence: un droulement temporel des objets et de leurs interactions  Les diagrammes de collaboration: les objets et leurs interactions en termes d envois de message + prise en compte de la squentialit

Introduction la POO INFO 114

Les concepts de lOO


La modlisation devient la rfrence
y Diagramme de classes
 Le but du diagramme de classes est de reprsenter les classes au sein dun modle  Dans une application OO, les classes possdent:
Des attributs (variables membres) Des mthodes (fonctions membres) Des relations avec dautres classes

 Cest tout cela que le diagramme de classes reprsente  Lencapsulation est reprsente par:
- (private), + (public), # (protected)

Nom Classe
Attributs Mthodes()

 Les attributs scrivent:


+/-/# nomVariable : Type

 Les mthodes scrivent:


+/-/# nomMethode(Type des arguments) : Type du retour ou void

Introduction la POO INFO 114

Les concepts de lOO


La modlisation devient la rfrence
y Les relations dhritage sont reprsentes par:
 A B signifie que la classe A hrite de la classe B

y Lagrgation faible est reprsente par:


 A B signifie que la classe A possde un ou plusieurs attributs B

y Lagrgation forte (ou composition) est reprsente par:


 A B signifie que les objets de la classe B ne peuvent exister quau sein dobjets de type A
Introduction la POO INFO 114

Les concepts de lOO


Les avantages de lOO
y Les programmes sont plus stables, plus robustes et plus faciles maintenir car le couplage est faible entre les classes ( encapsulation) y elle facilite grandement le r-emploi des programmes: par petite adaptation, par agrgation ou par hritage y mergence des design patterns y il est plus facile de travailler de manire itre et volutive car les programmes sont facilement extensibles. On peut donc graduellement rduire le risque plutt que de laisser la seule valuation pour la fin. y lOO permet de faire une bonne analyse du problme suffisamment dtache de ltape dcriture du code - on peut travailler de manire trs abstraite UML y lOO colle beaucoup mieux notre faon de percevoir et de dcouper le monde
Introduction la POO INFO 114

Les concepts de lOO


Les avantages de lOO
y Tous ces avantages de lOO se font de plus en plus vidents avec le grossissement des projets informatiques et la multiplication des acteurs. Des aspects tels lencapsulation, lhritage ou le polymorphisme prennent vraiment tout leur sens. On apprhende mieux les bnfices de langage plus stable, plus facilement extensible et plus facilement r-employable y JAVA est un langage strictement OO qui a t propuls sur la scne par sa complmentarit avec Internet mais cette mme complmentarit (avec ce rseau compltement ouvert) rend encore plus prcieux les aspects de stabilit et de scurit

Introduction la POO INFO 114

Les concepts de lOO


En rsum
y Tout est un objet y Lexcution dun programme est ralise par changes de messages entre objets y Un message est une demande daction, caractrise par les paramtres ncessaires la ralisation de cette action y Tout objet est une instance de classe, qui est le objets de ce type moule gnrique des

y Les classes dfinissent les comportements possibles de leurs objets y Les classes sont organises en une structure arborescente racine unique : la hirarchie dhritage y Tout le code des programmes de trouve entirement et exclusivement dans le corps des classes y A lexception toutefois de deux instructions:
 package  import dfinit lensemble auquel la classe appartient permet lutilisation de classes extrieures au package

y UML permet la reprsentation graphique des applications


Introduction la POO INFO 114

JOUR 3
V. Dveloppement dune animation graphique (AWT Swing)

Les interfaces graphiques


AWT v/s SWING
y Les composants des interfaces graphiques sont fournis en Java par deux packages particuliers (et concurrents): y Java 1: AWT (Abstract Window Toolkit)
 Composants graphiques lourds  Chaque composant est reli son quivalent dans lOS par un peer  Look & Feel dpendant de lOS

y Java 2: SWING
    Nouveau package Composants graphiques lgers , en pur Java Tous les composants sont dtachs de lOS Look & Feel indpendant de lOS

Introduction la POO INFO 114

Les interfaces graphiques


Structure de lAWT (1/2)
y LAWT offre trois types dlments graphiques
 Les Containers (contenants)  Les Components (composants ou contenus)  Les LayoutManagers (disposition des objets dun contenant)

y Les

Containers

 Sont destins accueillir des composants  Grent laffichage des composants  Ex: Frame, Panel, Window

y Les

Components

 Constituent diffrents lments de laffichage (boutons, barres de menus, etc.)  Ex: Button, Canvas, Label, Scrollbar, Checkbox

y Les

LayoutManagers

 Grent la disposition des composants au sein dun conteneur


Introduction la POO INFO 114

Les interfaces graphiques


Structure de lAWT (2/2)
*
Component add 1 Button Canvas 1 Frame BorderLayout FlowLayout
Introduction la POO INFO 114

Container 1

LayoutManager

Panel

Les interfaces graphiques


Les Components
y Hritage de mthodes:
 paint(Graphics g) : Affiche le composant  repaint() : Rafrachit laffichage du composant (rappelle la mthode paint)  getGraphics() : Cre un contexte graphique pour le composant  Etc. voir documentation Java en ligne

y Composants de formulaires (exemples)


 Button (bouton)  CheckBox (case cocher)  Label (case de texte)

y Composants de fentre (exemples)


 Menu (Menu dune barre de menus)  MenuItem (Elment dun menu)
Introduction la POO INFO 114

Les interfaces graphiques


Les Containers
y Hritage de mthodes:
 add(Component c) : Intgre le composant spcifi la fin du container  setLayout(LayoutManager l) : Configure le LayoutManager du container  Etc. voir documentation Java en ligne

y La classe

Frame

 Composant du plus haut niveau  La fentre dune application est une instance de cette classe  Le Frame contient les diffrents composants graphiques de lapplication  Ne peut tre intgr dans un autre conteneur

y Les classes

Panel ,

Window ,

ScrollPane , etc.

 Contenants essentiels  Peuvent tre intgrs au sein dun Frame


Introduction la POO INFO 114

Les interfaces graphiques


Les LayoutManagers (1/5)
y Rle
 Grer la disposition des composants au sein dun conteneur

y Types principaux:
 BorderLayout: divise le conteneur en 5 zones  FlowLayout: rajoute les composants au fur et mesure  GridLayout: applique une grille au conteneur pour aligner les composants  CardLayout: pour un conteneur qui contient plusieurs cartes  GridBagLayout: grille de cellules lmentaires

Introduction la POO INFO 114

Les interfaces graphiques


Les LayoutManagers (2/5)
BorderLayout
y Principe
 Positionne les composants suivants les points cardinaux  Layout par dfaut des Frame

y Rpartition
 La largeur lemporte pour le Nord et le Sud  La hauteur lemporte pour lEst et lOuest  Le centre occupe tout ce qui reste

NORTH
WEST CENTER EAST

y Utilisation
 add(unBouton, BorderLayout.NORTH)  new BorderLayout(int, int)
Intervalles horizontal et vertical entre les lments

SOUTH

Introduction la POO INFO 114

Les interfaces graphiques


Les LayoutManagers (3/5)
FlowLayout
y Principe
 Rajoute les composants au fur et mesure  La taille des composants lemporte

y Utilisation
 new FlowLayout (int alignment)
alignment: LEFT, CENTER, RIGHT

 new FlowLayout (int alignment, int hintervalle,int vintervalle)


alignment: LEFT, CENTER, RIGHT hintervalle: Lintervalle horizontal entre les composants vintervalle: Lintervalle vertical entre les composants

Introduction la POO INFO 114

Exercice
Une premire application graphique (1/2)
 Crer une classe Fenetre hritant de Frame  Construire la fentre dapplication en ajoutant:
Au Nord: un Label Au Centre: un Panel Contenant lui-mme trois Button A placer dans un vecteur Au Sud: un Button

EX 7.1a

 Crer une classe principale contenant uniquement le main:


public static void main(String args[]) { Fenetre f = new Fenetre(); }

Introduction la POO INFO 114

JOUR 3
VI. Les vnements

Gestion dvnements
Mcanismes et structure (1/4)
y Une source dvnements
 Gnre des objets vnements  Les fait couter par un ensemble dcouteurs dvnements  En gnral: un composant ou conteneur graphique

y Les objets vnements


 xxxEvent  Contiennent la description et les caractristiques dun vnement

y Les objets couteurs


 xxxListener ou xxxAdapter  Concrtisent des mthodes dfinies dans les Interfaces  Indiquent leur raction en rponse aux vnements  Sont des interfaces implmentables dans les classes  Peuvent tre implments par les sources dvnements elles-mmes (Une source dvnements peut scouter elle-mme)
Introduction la POO INFO 114

Gestion dvnements
Mcanismes et structure (2/4)
1. Un vnement se produit 2. La source dvnement dans laquelle il se produit gnre un objet de type vnement 3. La source transmet lvnement son (ses) couteur(s) 4. Lcouteur appelle la mthode correspondant au type dvnement et lui passe en argument lobjet vnement 5. La mthode en question spcifie les traitements raliser lorsquun vnement du type correspondant se produit 6. Dans ses traitements, la mthodes peut examiner les caractristiques de lvnement (position du curseur de la souris, code de la touche presse au clavier) et adapter son comportement en fonction de ces caractristiques

Introduction la POO INFO 114

Gestion dvnements
Mcanismes et structure (3/4)
y Evnements
 ActionEvent, AdjustmentEvent, ComponentEvent, ContainerEvent, FocusEvent, ItemEvent, KeyEvent, MouseEvent, TextEvent, WindowEvent

y Les Interfaces Ecouteurs


 ActionListener, AdjustmentListener, ComponentListener, ContainerListener, FocusListener, ItemListener, KeyListener, MouseListener, MouseMotionListener, WindowListener

y Les Adapteurs correspondants


 ActionAdapter, WindowAdapter, KeyAdapter, MouseAdapter, etc.

y Les Sources dvnements


 Button, List, MenuItem, TextField, ScrollBar, CheckBox, Component, Container, Window
Introduction la POO INFO 114

Gestion dvnements
Mcanismes et structure (4/4)
XXXListener Component 1 addXXXListener * J VM
XXXEvent Exemples : public void actionPerformed (ActionEvent e) public void windowClosing (WindowEvent e) Contrle public void mouseClicked (MouseEvent e)

XXXAdapter

contrle

MyXXXListener

OS Souris

Clavier
Introduction la POO INFO 114

Gestion dvnements
Mise en uvre
y Par implmentation de linterface
 Usage
public class MaClasse implements ActionListener

 Avantages et inconvnients
Meilleur sur le plan orient objet La classe peut hriter dune autre classe Consistance

Introduction la POO INFO 114

Gestion dvnements
Mise en uvre Evnements de fentre
class MonFrame extends Frame implements WindowListener { public MonFrame() { addWindowListener(this); } public public public public public public public }
Introduction la POO INFO 114

void void void void void void void

windowClosed(WindowEvent e) {} windowIconified(WindowEvent e) {} windowOpened(WindowEvent e) {} windowClosing(WindowEvent e) {System.exit(0);} windowDeiconified(WindowEvent e) {} windowActivated(WindowEvent e) {} windowDeactivated(WindowEvent e) {}

Exercice
class MyGame extends Jframe implements ActionListener { JButton quit; public MyGame () { addActionListener(this); } public void actionPerformed(ActionEvent e) { if(e.getSource().equals(quit)) { System.exit(0); } } }

y Implmenter linterface

WindowListener dans la classe MyGame

 Redfinir les mthodes de linterface et en particulier windowClosing(WindowEvent e) pour

quelle provoque la fermeture de la fentre et la sortie de lapplication lorsque lutilisateur clique sur la croix de fermeture

Introduction la POO INFO 114

Application dirige (1/3): mise en place de laire de jeu


y Utilisation des Swing
La mme chose que lAWT mais:
Plus fluide Plus de classes

y La classe principale est un Jframe qui contient


 Differents boutons (en haut, en bas, )  Une aire de jeu centrale qui est un Jpanel
Cette aire de Jeu soccupera de tous les objets du jeu (balle, monstre, avion, princesse, )

Introduction la POO INFO 114

Application dirige (2/3): mise en place de laire de jeu


public class MonPrgmSwing extends JFrame { AireDeJeu adj; MonPrgmSwing() { adj=new AireDeJeu(this); this.getContentPane().add(es); } public static void main(String arg[]) { MonPrgmSwing p=new MonPrgmSwing(); p.setSize(400,400); p.setVisible(true); } } } } } public void paintComponent(Graphics g) { super.paintComponent(g); //je dessine mes objets public class EcranSwing extends JPanel { MonPrgmSwing p; EcranSwing(MonPrgmSwing p) { this.p=p;

Introduction la POO INFO 114

Application dirige (3/3) : mise en place de laire de jeu : Exercice


y Crer le PrgmSwing qui contient
 Le JPanel de type AireDeJeu  Ajouter un ou deux boutons (ex: un bouton quit)  Ajouter un label an Nord

y LAireDeJeu en mme temps quelle se dessine peut dessiner dautres objets en utilisant lobjet Graphic
 Faite apparatre un rond, un carre, un palmier

Introduction la POO INFO 114

Graphisme 2D
Fonctionnement
y Tout ce qui est ncessaire aux graphismes en 2D est fourni par la classe Graphics y Chaque composant est toujours dot dun objet de ce type
 Graphics g

y On peut donc invoquer, sur cet objet graphique mthodes de graphisme:


 g.drawLine(int, int, int, int)  g.drawRect(int, int, int, int)  g.fillOval(int, int, int, int)  g.setColor(Color)  Etc.

g , toutes les

Introduction la POO INFO 114

Graphisme 2D
Classe java.awt.Rectangle
y Classe fournie dans le package java.awt y Idale pour servir de squelette la plupart des objets graphiques
On peut inscrire toutes les formes dans un rectangle

y Attributs publics:
 int x,y, width, height

y Mthodes publiques
 contains(int x, int y): boolean
Renvoie true si les coordonnes (x,y) sont contenues dans le rectangle

 contains(Rectangle r): boolean


Renvoie true si le rectangle r est contenu dans le rectangle en cours

 intersects(Rectangle r): boolean


Renvoie true si le rectangle r touche le rectangle en cours

Introduction la POO INFO 114

Exercice
Balle

Cration dune classe Balle

- Rectangle rect - Color color - int dx,dy //movement Balle (Rect r,Color c) Balle (int x,int y,int w,int h,Color c) Balle (int x,int y,int w,int h,Color c,int dx,int dy) dessineToi(Graphics g):void bougeToi():void changeCouleur(Color c):void

Faites apparatre la Balle a lcran, dans lAireDeJeu

Introduction la POO INFO 114

Gestion dvnements
Mise en uvre Clics de souris
class AireDeJeu extends JPanel implements MouseListener { public AireDeJeu () { addMouseListener(this); } public void mousePressed(MouseEvent e) {} public void mouseClicked(MouseEvent e) { } public void mouseReleased(MouseEvent e) {} public void mouseEntered(MouseEvent e) {} public void mouseExited{MouseEvent e) {} } //tous les tests sont possibles a ce niveau if(e.getX()>50 && e.getY()<100){...}

Introduction la POO INFO 114

Gestion dvnements
Mise en uvre Dplacements de souris
class AireDeJeu extends JPanel implements MouseMotionListener { public AireDeJeu () { addMouseMotionListener(this); } public void mouseDragged(MouseEvent e) {} public void mouseMoved(MouseEvent e) { if(e.getX()>50 && e.getY()<100){...} } }

Introduction la POO INFO 114

Gestion dvnements
Mise en uvre Clavier
class AireDeJeu extends JPanel implements KeyListener { public AireDeJeu () { addKeyListener(this); } public void keyPressed(KeyEvent e) {} public void keyTyped(KeyEvent e) { if(e.getKeyCode()==KeyEvent.VK_Q){System.exit(0)} } public void keyReleased(KeyEvent e) {} }

Introduction la POO INFO 114

Exercice
Gestion des venements: lorsquon clique sur la Balle, elle change de couleur implementer un addMouseListener dans la classe AireDeJeu

Introduction la POO INFO 114

JOUR 3
VII. Les collections

Introduction
Quest-ce quun collection?
y Collection
 Un objet utilis afin de reprsenter un groupe dobjets

y Utilis pour:
 Stocker, retrouver et manipuler des donnes  Transmettre des donnes dune mthode une autre

y Reprsente des units de donnes formant un groupe logique ou naturel, par exemple:
 Une main de poker (collection de cartes)  Un dossier demails (collection de messages)  Un rpertoire tlphonique (collection de correspondances NOM N)

Introduction la POO INFO 114

Interfaces
Collection
Trois variantes principales: y Set
 Duplicats interdits  Sans ordre spcifique

y List
 Duplicats permis  Contient un ordre spcifique intrinsque  Parfois appel Squences  Permet 2 mthodes daccs particulires:
Positional Access: manipulation base sur lindex numrique des lments Search: recherche dun objet en particulier dans la liste et renvoi de son numro dindex (sa position dans la liste)

y SortedSet
 Duplicats interdits  Contient un ordre spcifique intrinsque Introduction la POO INFO 114

Implmentations
Lists (1/2)
y ArrayList (et Vector)
 La plus couramment utilise  Offre un accs positionnel vitesse constante Particulirement rapide

Introduction la POO INFO 114

Implmentations
Lists (2/2)
Oprations spcifiques aux listes: y Obtenir la position dun objet
 indexOf(Object o): int  lastIndexOf(Object o): int

y Rcuprer lobjet en position i


 get(int i) Renvoie un objet de type Object Devra tre converti (cast)

y Placer un objet une certaine position


 set(int i, Object o)

y Ajouter un objet:
 add(Object o)

y Supprimer lobjet en position i


 remove(int i)  removeRange(int fromIndex, int toIndex)

Introduction la POO INFO 114

Exercice
LAireDeJeu possde une ArrayList de Balle Quand on clique sur lun des boutons, cela rajoute une balle dans larray list et donc a lcran

EX 8.1

Introduction la POO INFO 114

Exercice
Faire dplacer les balles lcran appeler en boucle la mthode dplaceToi (ou bougeToi)

EX 8.1

Quobserve-t-on ??? Importance du multithreading

Introduction la POO INFO 114

JOUR 3
VIII. Multithreading

Survol du chapitre
y Introduction
 Dfinition  Raison dtre

y Cration de Thread
 Par implmentation  Par hritage

y Gestion de Thread
 Mthodes de gestion  Diagrammes dtat
Introduction la POO INFO 114

Introduction
Quest-ce quun Thread?
y Un ordinateur qui excute un programme :
 Possde un CPU  Stocke le programme excuter  Possde une mmoire manipule par le programme Multitasking gr par lOS

y Un thread ( file ) a ces mmes capacits


 A accs au CPU  Gre un processus  A accs la mmoire, quil partage avec dautres files Multithreading gr par la JVM

Introduction la POO INFO 114

Introduction
Pourquoi le multithreading?
y Un programme moderne est compos de
 Une interface graphique  Quelques composantes pouvant agir de manire autonome

y Sans multithreading
 Les composantes ne pourraient agir que lorsque linterface est suspendue

y Plus gnralement, le multithreading


 Permet de raliser plusieurs processus indpendants en parallle  Permet de grer les files dattente  Permet au besoin de synchroniser les diffrents processus entre eux

Introduction la POO INFO 114

Cration de Thread
Mise en uvre (1/3)
y Par implmentation de linterface
 Usage
public void MaClasse implements Runnable

 Avantages et inconvnients
Meilleur sur le plan orient objet La classe peut hriter dune autre classe Consistance

Introduction la POO INFO 114

Cration de Thread
Mise en uvre (2/3)
public class MaFile implements Runnable { public void run(){ byte[] buffer=new byte[512]; int i=0; while(true){ if(i++%10==0)System.out.println(""+i+" est divisible par 10"); if (i>101) break; } } } public class LanceFile { public static void main(String[]arg){ Thread t=new Thread(new MaFile()); t.start(); Le constructeur de la classe Thread } attend un objet Runnable } en argument

Introduction la POO INFO 114

Gestion des Thread


Mthodes de gestion
y t.start()

 Appeler cette mthode place le thread dans ltat runnable Eligible par le CPU
y Thread.yield() throws InterruptedException

 La VM arrte la file active et la place dans un ensemble de files activables. (runnable state)  La VM prend une file activable et la place dans ltat actif (running state)
y Thread.sleep(int millis) throws InterruptedException

 La VM bloque la file pour un temps spcifi (tat dattente )

Introduction la POO INFO 114

Exercice:
y Faites dplacer les balles
 Cette fois un Thread va sen occuper  La classe AireDeJeu contient lance un Thread  La classe AireDeJeu implements Runnable et donc possede une methode run  Dans la mthode run, on dplace les balles en boule  (pas oublier dappeler le repaint())

Introduction la POO INFO 114

JOUR 3
IX. Hirarchie de classes

Les classes abstraites (1/2)


y Une classe abstraite
 Peut contenir ou hriter de mthodes abstraites (des mthodes sans corps)  Peut contenir des constantes globales  Peut avoir des mthodes normales, avec corps

y Une classe abstraite ne peut tre instancie


 On peut seulement instancier une sous-classe concrte  La sous-classe concrte doit donner un corps toute mthode abstraite

y La dclaration dune classe abstraite contenant une mthode abstraite ressemble ceci:
abstract class ObjectGraphique { abstract void dessineToi(Graphics g); }

Introduction la POO INFO 114

Les classes abstraites (2/2)

ObjectGraphique
Rectangle rect; Color color;

ObjectGraphique(Rectangle r,Color c) dessineToi(Graphics g):void bougeToi():void

Balle
Balle(Rectangle r,Color c) dessineToi(Graphics g):void bougeToi():void

PlayerBalle
PlayerBalle(Rectangle r,Color c) dessineToi(Graphics g):void bougeToi():void

Introduction la POO INFO 114

Les interfaces (1/3)


Dfinition
y Linterface dune classe = la liste des messages disponibles = signature des mthodes de la classe y Certaines classes sont conues pour ne contenir prcisment que la signature de leurs mthodes, sans corps. Ces classes ne contiennent donc que leur interface, cest pourquoi on les appelle elles-mmes interface y Ne contient que la dclaration de mthodes, sans dfinition (corps) y Permet des constantes globales y Une classe peut implmenter une interface, ou bien des interfaces multiples
public interface Runnable { public void run(); } public interface GraphicalObject { public void draw(Graphics g); }

Introduction la POO INFO 114

Les interfaces (3/3)


Exemple
<<interface>> GraphicalObject
draw(Graphics g):void intersects(Object o):boolean

Rectangle
int width,height,x,y Rectangle(int x,int y,int width,int height) draw(Graphics g):void intersects(Object o):boolean

Oval
int width,height,x,y Oval(int x,int y,int width,int height) draw(Graphics g):void intersects(Object o):boolean

Square
Square(int x,int y,int size)

Introduction la POO INFO 114

JOUR 3
X. Gestion des exceptions

Hirarchie des exceptions


On doit traiter ces exceptions-ci
Throwable

On ne peut pas traiter les Error

Exception

Error

RunTime Exception

IOException

AWTError

VirtualMachineError OutOfMemoryError

NullPointerException ArithmeticException

FileNotFoundException EOFException

On nest pas oblig de traiter ces exceptions-ci

Introduction la POO INFO 114

Traitement des exceptions


Interception par bloc try catch finally (1/2)
try { // quelques actions potentiellement risques } catch(SomeException se) { // que faire si une exception de ce type survient } catch(Exception e) { // que faire si une exception dun autre type survient } finally { // toujours faire ceci, quelle que soit lexception }
Introduction la POO INFO 114

Traitement des exceptions


Interception par bloc try catch finally (2/2)
Implmentation
public ExampleException() { for(int i=0;i<3;i++) { test[i]=Math.log(i); } try { for(int i=0;i<4;i++) { System.out.println("log("+i+") = "+test[i]); } } catch(ArrayIndexOutOfBoundsException ae) { System.out.println( Arriv la fin du tableau ); } System.out.println( Continuer le constructeur ); } Introduction la POO INFO 114

ANNEXES

Survol du chapitre
y Java et ses concurrents
 Java v/s CGI  Java v/s Microsoft .Net  Java v/s Perl

y Les utilitaires de Java


 Javac  Java  Javadoc  Jar

Introduction la POO INFO 114

Java et ses concurrents


Java v/s CGI
y CGI est une interface, non un langage
Convention pour invoquer des excutables partir dun serveur Web  En CGI: program?Hello%21+Here%20I%20come%21  En Java: args[0] = "Hello!", args[1] = "Here I come!

y Un programme CGI peut tre implment dans diffrents langages


 C  Perl  C++  Java  VB  Etc.

Introduction la POO INFO 114

Java et ses concurrents


Java v/s Microsoft .Net
y Fonctionnalit quivalente
ASP  Pages Web dynamiques: JSP  Accs DB: ODBC JDBC

 Objets distribus: DCOM RMI, EJB

y Java
 Code Java Bytecode Multiples OS

y .NET
 Tout Code MS IL Windows

Introduction la POO INFO 114

Java et ses concurrents


Java v/s Perl
y Aspects communs:
 Langages usage gnral  Interprts  Portables  Larges librairies disposition

y Diffrences
 Perl: pour administrateurs systmes, faiblement typ, intgration facile avec le shell  Java: pour dveloppeurs dapplications, fortement typ, objets distribus avec les EJB  Modle Client/Serveur:
Java peut tre utilis sur un client en tant quapplet et sur un serveur Perl peut tre utilis sur un serveur, mais pas en tant quapplet Introduction la POO INFO 114

Quelques utilitaires de Java


y javac
 Compilateur, traduit fichier source .java en fichier bytecode .class

y java
 Interprteur java, lance des programmes

y javadoc
 Gnrateur de documentation dAPI

y jar
 Utilitaire darchivage et de compression

y javah
 Gnrateur de fichiers C/C++ .h
Introduction la POO INFO 114

Les utilitaires de Java


Javac et Java
y Javac
 Compile un fichier source .java ou un package entier  Exemples:
javac MyBankAccount.java

compile le fichier mentionn, qui doit se trouver dans le package par dfaut
javac be\newco\*.java d c:\classes compile tout le package be.newco et gnre du code compil dans c:\classes, qui

doit exister

y Java
 Lance un programme principal  Exemples:
java bankStream.MyProgram

Lance le programme spcifi par la mthode public static void main(String[] args) dans la classe MyProgram qui se trouve dans le package bankStream.

 Possibilit de spcifier un classpath: un chemin de recherche o java est cens de trouver ses classes
Introduction la POO INFO 114

Вам также может понравиться