Vous êtes sur la page 1sur 77

LMI 2

e Objet Programmation Oriente POO - Cours1


Said Jabbour
jabbour@cril.univ-artois.fr www.cril.univ-artois.fr/~jabbour CRIL CNRS UMR 8188 - Bureau C307 Facult` e des Sciences - Univ. Artois

Janvier 2011

Said Jabbour - CRIL UMR CNRS 8188 - Univ. Artois

POO - Licence Math-Info

Plan

Pr esentation de Java Le paradigme objet


Classes Objets

Lessentiel du langage de Java


Variables Op erateurs Commandes basiques

Said Jabbour - CRIL UMR CNRS 8188 - Univ. Artois

POO - Licence Math-Info

Pr esentation de Java

Said Jabbour - CRIL UMR CNRS 8188 - Univ. Artois

POO - Licence Math-Info

JAVA cest quoi ?

Une technologie d evelopp e par SUN MicrosystemTM lanc e en 1995 Un langage de programmation Une plateforme, environnement logiciel dans lequel les programmes java sex ecutent Pr esent dans de tr` es nombreux domaines dapplication : des serveurs dapplications aux t el ephone portables et cartes ` a puces (JME)

Said Jabbour - CRIL UMR CNRS 8188 - Univ. Artois

POO - Licence Math-Info

D enition de Sun :

Java est un langage simple, orient e objet, distribu e, robuste, s ur, ind ependant des architectures mat erielles, portable, de haute performance, multithread et dynamique

Said Jabbour - CRIL UMR CNRS 8188 - Univ. Artois

POO - Licence Math-Info

G en eralit es

Robuste
Typage des donn ees tr` es strict Pas de pointeur

S ur
Java nest pas compil e` a destination dun processuer particulier mais en byte code qui pourra etre ensuite interpr et e sur une machine virtuelle (JVM = Java Virtual Machine). Le byte code g en er e est v eri e par les interpr eteurs java avant ex ecution. Un d ebordement de tableau d eclenchera automatiquement une exception. Labsence darithm etique de pointeur evite les malversations.

Said Jabbour - CRIL UMR CNRS 8188 - Univ. Artois

POO - Licence Math-Info

G en eralit es

Portable
Les types de donn ees sont ind ependants de la plate forme (par exemple les types num eriques sont d enis ind ependamment du type de plate forme sur laquelle le byte code sera interpr et ee).

Haute performance
Discutable car java est un langage pseudo interpr et e. Techniques de Just in Time (JIT) peuvent am eliorer ces performances

Said Jabbour - CRIL UMR CNRS 8188 - Univ. Artois

POO - Licence Math-Info

G en eralit es

Multi thread
Une applications peut etre d ecompos ee en unit es dex ecution fonctionnant simultan ement

Dynamique
Les classes Java peuvent etre modi ees sans avoir ` a modier le programme qui les utilise

Politique
Java est actuellement totalement contrl e par SUN.

Said Jabbour - CRIL UMR CNRS 8188 - Univ. Artois

POO - Licence Math-Info

Plusieurs Java

Java EE : Enterprise Edition. Rajoute certaines API et fonctionalit es pour les entreprises. Java ME : Micro Edition. Edition qui sert ` a ecrire des applications embarqu ees
Ex. : t el ephone portable, carte ` a puce

Java SE : Standard Edition :


JRE : Java Runtime Environment. Contient la plate-forme Java (JVM + API). JDK : (Java Development Kit). Contient le langage de programmation et la plate-forme (compilateur + JVM + API).

Said Jabbour - CRIL UMR CNRS 8188 - Univ. Artois

POO - Licence Math-Info

Les di erentes version de java


Java 1.0
8 packages 212 Classes et Interfaces 1545 M ethodes

Java 1.1
23 packages 504 Classes et Interfaces 3 851 M ethodes

Java 1.2
60 packages 1 781 Classes et Interfaces 15 060 M ethodes

Et bien plus encore dans les versions suivantes

Said Jabbour - CRIL UMR CNRS 8188 - Univ. Artois

POO - Licence Math-Info

Lenvironnement de travail

Un editeur de texte Ex. : Emacs, gedit, GVim Le compilateur (javac) La JVM (java) Le g en erateur automatique de documentation (javadoc) Le debogueur (jdb) La documentation du JDK 6, disponible ` a: http://java.sun.com/javase/6/docs/

Said Jabbour - CRIL UMR CNRS 8188 - Univ. Artois

POO - Licence Math-Info

Plate-forme Java

La plate-forme est le mat eriel (hardware) et/ou lenvironnement logiciel dans lequel un programme sex ecute. La plate-forme Java est un environnement logiciel, compos ee de deux parties :
API : (Application Programming Interface ) grande collection de composants logiciels qui orent de nombreuses fonctionnalit es. JVM : (Java Virtual Machine) le logiciel qui interpr` ete le bytecode g en er e par le compilateur Java.

Said Jabbour - CRIL UMR CNRS 8188 - Univ. Artois

POO - Licence Math-Info

Plate-forme Java (2)


Un programme Java est ex ecut e par la JVM, qui sutilise de lAPI.

mon programme API JVM Systeme dexploitation hardware Plateforme Java

Said Jabbour - CRIL UMR CNRS 8188 - Univ. Artois

POO - Licence Math-Info

Compilation et ex ecution
Fichier.java
(code source)

Fichier.class
(bytecode)

javac
(compilateur)

0101101...

java
(machine virtuelle)

Said Jabbour - CRIL UMR CNRS 8188 - Univ. Artois

POO - Licence Math-Info

La machine virtuelle

Il y a des JVM pour la plupart des syst` emes


Ex. : Windows, Linux, Mac OS, Solaris

Si un syst` eme poss` ede une JVM, il peut ex ecuter le bytecode g en er e sur nimporte quel autre syst` eme. Avantages de cet approche :
Portabilit e : le bytecode peut etre charg e depuis une machine distante sur Internet. S ecurit e : la JVM eectue des nombreuses v erications sur le bytecode pour eviter des actions dangereuses.

Said Jabbour - CRIL UMR CNRS 8188 - Univ. Artois

POO - Licence Math-Info

La machine virtuelle (2)

D esavantage de cet approche : lenteur. Mais, des nouvelles techniques essayent de minimiser ce probl` eme :
Ex., la traduction en code binaire des parties du bytecode qui sont utilis es tr` es fr equemment.

Said Jabbour - CRIL UMR CNRS 8188 - Univ. Artois

POO - Licence Math-Info

Utilisation de JAVA

Le Langage java peut g en erer


des applications des applets des servelets etc.

Said Jabbour - CRIL UMR CNRS 8188 - Univ. Artois

POO - Licence Math-Info

G en eration du code ex ecutable

Le code est g en er e par un compilateur en plusieurs etapges :


V erication syntaxique. V erication s emantique (typage). Production de code dans un langage plus proche de la machine Production de briques de code assemblables.

Said Jabbour - CRIL UMR CNRS 8188 - Univ. Artois

POO - Licence Math-Info

Production de code

Avantages/inconvinients du code natif


Rapidit e dex ecution N ecessit e de recompiler lors du portage dun logiciel sur une autre architecture/syst` eme dexploitation Choix de la distribution du logiciel: source ou binaire ? Java, production de code interm ediaire: le bytecode

Said Jabbour - CRIL UMR CNRS 8188 - Univ. Artois

POO - Licence Math-Info

Variables denvironnement

Les variables denvironnement doivent etre correctement initialis ees:


CLASSPATH r ep ertoire contenant les classes. JAVA HOME r ep ertoire de base du JDK PATH r ep ertoire contenant le compilateur et linterpr eteur

Said Jabbour - CRIL UMR CNRS 8188 - Univ. Artois

POO - Licence Math-Info

Avantages/Inconvinients du bytecode

Code portable au niveau binaire Moins ecace que du code natif

Said Jabbour - CRIL UMR CNRS 8188 - Univ. Artois

POO - Licence Math-Info

Un programme en Java

Code source (dans un chier texte) : HelloWorld.java class HelloWorld{ public static void main(String[ ] args) { System.out.println(Hello World!); } }

Said Jabbour - CRIL UMR CNRS 8188 - Univ. Artois

POO - Licence Math-Info

Le main()

Le point dentr ee pour lex ecution dune application Java est la m ethode statique main de la classe sp eci ee ` a la machine virtuelle Prol de cette m ethode
public static void main(String [] args)

String args ???


args : tableau dobjets String (cha nes de caract` eres) contenant les arguments de la ligne de commande

Said Jabbour - CRIL UMR CNRS 8188 - Univ. Artois

POO - Licence Math-Info

Concepts objet, classes, constructeurs, destructeurs, surcharge

Said Jabbour - CRIL UMR CNRS 8188 - Univ. Artois

POO - Licence Math-Info

Le paradigme objet

Said Jabbour - CRIL UMR CNRS 8188 - Univ. Artois

POO - Licence Math-Info

Paradigmes de programmation

Un paradigme de programmation correspond ` a une mani` ere de mod eliser le monde. Il existent plusieurs paradigmes :
programmation programmation programmation programmation imp erative (ex. : Pascal, C, Fortran) ; fonctionnelle (ex. : Scheme, Lisp) ; logique (ex. : Prolog) ; orient ee objet (ex. : C++, Java).

Dans le paradigme objet :


Le monde est mod elis e comme un ensemble dobjets. Les objets ont un etat interne et un comportement. Ils collaborent en s echangeant des messages.

Said Jabbour - CRIL UMR CNRS 8188 - Univ. Artois

POO - Licence Math-Info

Quest-ce quun objet ?

Toute entit e identiable, concr` ete ou abstraite.


Ex. : stylo, table, ordinateur, v elo, logiciel.

Deux caract eristiques importantes :


Etat Comportement

Lobjet v elo :
Etats : vitesse, couleur, direction, etc. Comportements : acc el erer, sarr eter, tourner ` a droite, etc.

Said Jabbour - CRIL UMR CNRS 8188 - Univ. Artois

POO - Licence Math-Info

Concepts des langages objet

Concept de base de la programmation orient ee objet : la classe Une classe mod elise la structure statique (donn ees membres) et le comportement dynamique (m ethodes) des objets associ es ` a cette classe. Un objet dune classe est appel e une instance. Une classe est la description dun objet. Chaque objet est cr e e ` a partir dune classe (avec lop erateur new).

Said Jabbour - CRIL UMR CNRS 8188 - Univ. Artois

POO - Licence Math-Info

Notion dobjet en programmation

Un objet a : une identit e : adresse en m emoire un etat : la valeur de ses attributs un comportement : ses m ethodes

Said Jabbour - CRIL UMR CNRS 8188 - Univ. Artois

POO - Licence Math-Info

Classes dobjets

Une d enition abstraite selon laquelle les objets sont cr ees (un type dobjet).
Ex. : la classe des v elos, la classe des stylos

Said Jabbour - CRIL UMR CNRS 8188 - Univ. Artois

POO - Licence Math-Info

D enition dune classe


Velo.java class Velo { int vitesse = 0; void accelerer(int increment) { vitesse = vitesse + increment; } void freiner(int decrement) { vitesse = vitesse - decrement; } void imprimeEtat() { System.out.println(vitesse: + vitesse); } }

Said Jabbour - CRIL UMR CNRS 8188 - Univ. Artois

POO - Licence Math-Info

Cr eation des objets et messages


DemoVelo.java class DemoVelo { public static void main(String[] args) { // Genere deux objets dierents du type Velo Velo velo1 = new Velo(); Velo velo2 = new Velo(); // Invoque les methodes velo1.accelerer(10); velo1.imprimeEtat(); velo2.accelerer(20); velo2.imprimeEtat(); } }

Said Jabbour - CRIL UMR CNRS 8188 - Univ. Artois

POO - Licence Math-Info

Un programme en Java (2)

Compilation (dans la console) : $ javac HelloWorld.java Le compilateur recoit un nom dun chier ayant pour suxe .java. Ensuite, il g en` ere le bytecode dans un chier ayant pour suxe .class. Ex ecution (dans la console) : $ java HelloWorld Hello World! Attention : La JVM recoit un nom dune classe (donc, pas de suxe .class). Le chier contenant le bytecode de la classe doit etre pr esent dans le m eme dossier.

Said Jabbour - CRIL UMR CNRS 8188 - Univ. Artois

POO - Licence Math-Info

Compilation et ex ecution

Compilation : $ javac Velo.java DemoVelo.java Ex ecution : $ java DemoVelo vitesse: 10 vitesse: 20 Un programme source Java correspond ` a plusieurs chiers .java. Chaque chier .java peut contenir une ou plusieurs d enitions de classes.

Said Jabbour - CRIL UMR CNRS 8188 - Univ. Artois

POO - Licence Math-Info

H eritage

Il existent plusieurs types de v elos.


Ex. : vtt, v elo route, v elo ville

Ils ont plusieurs caract eristiques communes. Mais, certaines caract eristiques sont propres ` a un type sp ecique.
Ex. : un v elo ville a un garde bout

Il est possible de cr eer une sous-classe qui h erite l etat et le comportement dune superclasse. Cela permet de r eutiliser le code de la superclasse.

Said Jabbour - CRIL UMR CNRS 8188 - Univ. Artois

POO - Licence Math-Info

Hi erarchie de classes

class VeloRoute extends Velo { // Nouvelles variables et m ethodes ... }

Said Jabbour - CRIL UMR CNRS 8188 - Univ. Artois

POO - Licence Math-Info

Objets

Un objet est une instance dune (seule classe) :


il se conforme ` a la description que celle-ci fournit, il admet une valeur (qui lui est propre) pour chaque attribut d eclar e dans la classe, ces valeurs caract erisent l etat de lobjet il est possible de lui appliquer toute op eration (m ethode) d enit dans la classe

Tout objet admet une identit e qui le distingue pleinement des autres objets:
il peut etre nomm e et etre r ef erenc e par un nom

Said Jabbour - CRIL UMR CNRS 8188 - Univ. Artois

POO - Licence Math-Info

Objets

Chaque objet V elo instance de la classe V elo poss edera sa propre vitesse.

Said Jabbour - CRIL UMR CNRS 8188 - Univ. Artois

POO - Licence Math-Info

Repr esentation m emoire

velo1

velo2

vitesse

vitesse

Said Jabbour - CRIL UMR CNRS 8188 - Univ. Artois

POO - Licence Math-Info

R ef erences
Pour d esigner des objets dans une classe (attributs ou variables dans le corps dune m ethode) on utilise des variables dun type particulier: les r ef erences Une r ef erence contient ladresse dun objet
pointeur vers la structure de donn ees correspondant aux attributs (variables dinstance) propres ` a lobjet.

Une r ef erence peut poss eder la valeur null


aucun objet nest accessible par cette r ef erence

D eclarer une r ef erence ne cr ee pas dobjet


une r ef erence nest pas un objet, cest un nom pour acc eder ` a un objet

Said Jabbour - CRIL UMR CNRS 8188 - Univ. Artois

POO - Licence Math-Info

R ef erences

Comme un pointeur une r ef erence contient ladresse dune structure Mais ` a la di erence des pointeurs la seule op eration autoris ee sur les r ef erences est laectation dune r ef erence de m eme type Velo v1; ... Velo v2; v2 = v1; v1++; Erreur ... v2 += *v1 + 3;

Said Jabbour - CRIL UMR CNRS 8188 - Univ. Artois

POO - Licence Math-Info

Cr eations dObjets

new constructeur (liste de param` etres) les constructeurs ont le m eme nom que la classe il existe un constructeur par d efaut
sans param` etre r eduit ` a phase 1 (allocation m emoire) inexistant si un autre constructeur existe

Velo v1; v1 = new Velo(); Velo v2 = new Velo(); Velo v3 = v2;

Said Jabbour - CRIL UMR CNRS 8188 - Univ. Artois

POO - Licence Math-Info

Constructeur de classe

Un constructeur est une m ethode automatiquement appel ee au moment de la cr eation de lobjet. Un constructeur est utile pour proc eder ` a toutes les initialisations n ecessaires lors de la cr eation de la classe. Le constructeur porte le m eme nom que le nom de la classe et na pas de valeur de retour.

Said Jabbour - CRIL UMR CNRS 8188 - Univ. Artois

POO - Licence Math-Info

Exemple de constructeur

class Compte { public Compte (int num,oat s) { numero = num ; solde = s ; } . } Compte co1 = new Compte (1234, 1000,00f) ;

Said Jabbour - CRIL UMR CNRS 8188 - Univ. Artois

POO - Licence Math-Info

Repr esentation m emoire


v elo1 et v elo2 contiennent ladresse des zones m emoires allou ees par lop erateur new pour stocker les informations relatives ` a ces objets. v elo1 et v elo2 sont des r ef erences. La r ef erence dun objet est utilis ee pour acc eder aux donn ees et fonctions membres de lobjet. Un objet peut acc eder ` a sa propre r ef erence gr ace ` a la valeur this (variable en lecture seule). Une r ef erence contenant la valeur null ne d esigne aucun objet. Quand un objet nest plus utilis e (aucune variable du programme ne contient une r ef erence sur cet objet), il est automatiquement d etruit et la m emoire r ecup er ee (garbage collector).

Said Jabbour - CRIL UMR CNRS 8188 - Univ. Artois

POO - Licence Math-Info

Destructeur de classe

Un destructeur peut etre appel e lorsquun objet est d etruit. Le destructeur doit etre utilis e pour lib erer les ressources qui ne peuvent etre r ecup er ees par le garbage collector (d econnexion dune base de donn ees, fermeture dun chier, ). Un destructeur est une m ethode: void nalize ()

Said Jabbour - CRIL UMR CNRS 8188 - Univ. Artois

POO - Licence Math-Info

Surcharge de m ethodes

Une m ethode (y compris le constructeur) peut etre d enie plusieurs fois avec le m eme nom ` a condition de se di erencier par le nombre et/ou le type des param` etres transmis (polymorphisme). Le compilateur d ecidera de la bonne m ethode ` a utiliser en fonction des param` etres dappel.

Said Jabbour - CRIL UMR CNRS 8188 - Univ. Artois

POO - Licence Math-Info

Exemples de surcharge de m ethodes

Exemple: class BarreDeProgression { private oat pourcent ; public void setPourcent (oat valeur) { pourcent = valeur ;} public void setPourcent (int eectue, int total) { pourcent = total/eectue ; } }

Said Jabbour - CRIL UMR CNRS 8188 - Univ. Artois

POO - Licence Math-Info

Types de variable

Attributs : (ou variables membres de classe) variables d enies dans une classe ( ` a lext erieur de ses m ethodes).
Attribut dinstance : sa valeur est di erente pour chaque instance de la classe (d efaut). Attribut de classe : sa valeur est la m eme pour toute instance de la classe.

Variables locales : variables d enies dans le corps de d eclaration dune m ethode. (Visible seulement ` a lint erieur de la m ethode correspondante.) Param` etres : variables d enies dans la liste des param` etres dune m ethode. (Visibles seulement ` a lint erieur de la m ethode correspondante.)

Said Jabbour - CRIL UMR CNRS 8188 - Univ. Artois

POO - Licence Math-Info

Acc` es aux attributs dun objet


pour acc eder aux attributs dun objet on utilise une notation point ee nomDeObjet.nomDeVariableDinstance similaire ` a celle utilis ee en C pour lacc es aux champs dune union Velo v1; v1 = new Velo(); Velo v2 = new Velo(); Velo v3 = v2; v1.vitesse = 10; v2.vitesse = 10; v3.vitesse = v1.vitesse + v2.vitesse;

Said Jabbour - CRIL UMR CNRS 8188 - Univ. Artois

POO - Licence Math-Info

Envoi de messages (exemple)


syntaxe :
nomDeObjet.nomDeMethode(< param` etre eectifs >)
class Velo { double vitesse = 110.0; void accelerer(double dx) { vitesse += dx; } void freiner(double dx){ vitesse -= dx; } } //Velo

Velo v1 = new Velo(); Velo v2 = new Velo(); v1.accelerer(10.0); v2.freiner(20.0); System.out.println(vitesse de v1 est de +v1.vitesse());
Said Jabbour - CRIL UMR CNRS 8188 - Univ. Artois POO - Licence Math-Info

Exemple d ecriture de la classe Compte

class Compte { private int numero ; private oat solde ; public void initialise (int n, oat s) { numero = n ; solde = s ; } public void deposer (oat montant) { solde = solde + montant ; } public void retirer (oat montant) { solde = solde montant ; } public oat consulterSolde ( ) { return solde ; } public void acher() { System.out.println (Compte : + numero + solde: + solde) ; } }

Said Jabbour - CRIL UMR CNRS 8188 - Univ. Artois

POO - Licence Math-Info

Utilisation de la classe Compte

public class Banque { static public void main (String args []) { Compte co1 = new Compte () ; Compte co2 = new Compte () ; co1.initialise (1234,1000f) ; co2.initialise (5678,500f) ; co1.deposer (2100.95f) ; co1.acher () ; co2.retirer (1000.0f) ; co2.acher () ; } }

Said Jabbour - CRIL UMR CNRS 8188 - Univ. Artois

POO - Licence Math-Info

Syntaxe de base

Said Jabbour - CRIL UMR CNRS 8188 - Univ. Artois

POO - Licence Math-Info

Syntaxe de base du langage Java

Les commentaires existent sous plusieurs formes:


Commentaires multi lignes
/* */

Commentaires sur une seule ou fraction de ligne


//

Commentaires destin es au g en erateurs de documentation javadoc


/** * * */

Said Jabbour - CRIL UMR CNRS 8188 - Univ. Artois

POO - Licence Math-Info

Type de donn ees pr ed enis

byte 27 , (27 )-1 -128, 127 short 215 , (215 )-1 -32768, -32767 int 231 , (231 )-1 -2147483648, -2147483647 long 263 , (263 )-1 -9223372036854775808, 9223372036854775807 Les entiers peuvent etre exprim es en octal (0323), en d ecimale (311) ou en hexad ecimal (0x137).

Said Jabbour - CRIL UMR CNRS 8188 - Univ. Artois

POO - Licence Math-Info

Type de donn ees pr ed enis

Nombres r eels
oat simple pr ecision sur 32 bits 1.4032984e-45 3.40282347 e38 double pr ecision sur 64 bits 4.94065645841243544 e-324 1.79769313486231570 e308 Rep esentation des r eels dans le standard IEEE 754. Un suxe f ou d apr` es une valeur num erique permet de sp ecier le type.
Exemple double x = 154.56d; oat y = 23.4f; oat f = 23.65; //Erreur

Said Jabbour - CRIL UMR CNRS 8188 - Univ. Artois

POO - Licence Math-Info

Type de donn ees pr ed enis


boolean
Valeurs true ou false Un entier non nul est egalement assimil e` a true Un entier nul est assimil e` a false

char
Une variable de type char peut contenir un seul caract` ere cod e sur 16 bits (jeu de caract` eres 16 bites Unicode contenant 34168 caract` eres) Des caract` eres d echappement existent
\b Backspace \t Tabulation horizontale \n Line Feed \f Form Feed \r Carriage Return \ Guillemet \ Apostrophe \\ BackSlash \xdd Valeur hexad ecimale \ddd Valeur octale \u 00xx Caract` ere Unicode (xx est compris entre 00 et FF)

Said Jabbour - CRIL UMR CNRS 8188 - Univ. Artois

POO - Licence Math-Info

Types primitifs
En Java, les types sont statiques (statically-typed language) et toute variable doit etre d eclar ee avant son utilisation. Type byte entiers short entiers int entiers long entiers oat double boolean char 16-bit valeurs possibles 8-bit 16-bit 32-bit 64-bit virgule ottante 32-bit virgule ottante 64-bit true, false (caract` ere unicode) valeur par d efaut 0 0 0 0L 0.0f 0.0d false \ u0000

Attention : les valeurs par d efaut ne sont pas aect es aux variables locales !!

Said Jabbour - CRIL UMR CNRS 8188 - Univ. Artois

POO - Licence Math-Info

D eclaration et initialisation des variables

boolean result = true; char capitalC = C; byte b = 100; short s = 10000; int i = 100000; int decVal = 26; // Le numero 26, en decimal int octVal = 032; // Le numero 26, en octal int hexVal = 0x1a; // Le numero 26, en hexadecimal double d1 = 123.4; double d2 = 1.234e2; // notation scientique oat f1 = 123.4f;

Said Jabbour - CRIL UMR CNRS 8188 - Univ. Artois

POO - Licence Math-Info

Types de donn ees pr ed enis

Cha nes de caract` eres


Les cha nes de caract` eres sont manipul ees par la classe String (ce nest donc pas un type de donn ees).

Exemples : String str = exemple de cha ne de caract` eres ; String chaine = Le soleil + brille ; // Op erateur de concat enation

Said Jabbour - CRIL UMR CNRS 8188 - Univ. Artois

POO - Licence Math-Info

Cha nes de caract` eres

Java fournit un support sp ecial aux cha nes des caract` eres. Exemple de d eclaration :
String s = une cha ne de caract` eres;

La valeur initiale dune variable du type String est null (ainsi que pour toutes les variables dont leur type est une classe dobjets). Mais attention!! Techniquement, String nest pas un type primitif. Il sagit dune classe du paquetage java.lang. Strings sont des objets immuables (immutable objects) : leur valeurs ne peuvent pas etre modi es.

Said Jabbour - CRIL UMR CNRS 8188 - Univ. Artois

POO - Licence Math-Info

Comparaison dobjets

On ne peut comparer 2 objets en comparant les variables dinstance.


Exemple 1 :
r1 = new Rectangle (10,20) ; r2 = new Rectangle (30,40) ; r3 = new Rectangle (10,20) ; Comparaison des variables dinstance: r1 == r2 false r1 == r3 false Comparaison avec une m ethode equals incluse dans la classe Rectangle r1.equals (r2) false r1.equals (r3) true

Said Jabbour - CRIL UMR CNRS 8188 - Univ. Artois

POO - Licence Math-Info

Comparaison dobjets

Exemple 2: Comparaison de cha nes de caract` eres: String s1 = Bonjour ; String s2 = Bonjour ; if (s1.equals (s2)) // Compare le contenu de s1 et s2. if (s1.equalsIgnoreCase (s2)) // Compare le contenu de s1 et s2 // sans tenir compte des majuscules // et minuscules.

Said Jabbour - CRIL UMR CNRS 8188 - Univ. Artois

POO - Licence Math-Info

Les tableaux
Les tableaux peuvent etre d eclar es suivant les syntaxes suivantes :
type [] nom ;

Exemples :
int[] table; double [] d1,d2 ;

Pas de tableau statique. La taille dun tableau est allou ee dynamiquement par lop erateur new table = new int [10] ; int[] table2 = new int [20] ; int[] table3 = {1,2,3,4,5} ;

Said Jabbour - CRIL UMR CNRS 8188 - Univ. Artois

POO - Licence Math-Info

Les tableaux

La taille nest pas modiable et peut etre consult ee par la propri et e length System.out.println (table3.length) ; int [ ] [ ] Matrice = new int [10][20] ; System.out.println (Matrice.length) ; // 1` ere dimension System.out.println (Matrice[0].length) ; // 2` eme dimension

Said Jabbour - CRIL UMR CNRS 8188 - Univ. Artois

POO - Licence Math-Info

Tableaux ( arrays )
DemoTableau.java class DemoTableau { public static void main(String[ ] args) { int[ ] unTableau; // declaration unTableau = new int[3]; // allocation de memoire unTableau[0] = 100; // initialisation unTableau[1] = 200; unTableau[2] = 300; System.out.println( Element 0: + unTableau[0]); System.out.println( Element 1: + unTableau[1]); System.out.println( Element 2: + unTableau[2]); } }

Said Jabbour - CRIL UMR CNRS 8188 - Univ. Artois

POO - Licence Math-Info

Tableaux multidimensionnels
DemoMultiTableau.java class DemoMultiTableau { public static void main(String[] args) { String[][] noms = {{Mr. , Mrs. , Ms. }, {Smith, Jones}}; System.out.println(noms[0][0] + noms[1][0]); System.out.println(noms[0][2] + noms[1][1]); } } $ javac DemoMultiTableau.java $ java DemoMultiTableau Mr. Smith Ms. Jones

Said Jabbour - CRIL UMR CNRS 8188 - Univ. Artois

POO - Licence Math-Info

Pour copier un tableau


D enition de la m ethode (dans la classe System) : public static void arraycopy (Object src, int posSrc, Object dest, int posDest int longueur) Exemple dutilisation : DemoArrayCopy.java class DemoArrayCopy { public static void main(String[] args) { char[] source = { d, e, c, a, f, e, i, n, e}; char[] destin = new char[4]; System.arraycopy(source, 2, destin, 0, 4); System.out.println(new String(destin)); } }
Said Jabbour - CRIL UMR CNRS 8188 - Univ. Artois POO - Licence Math-Info

Op erateurs
Par ordre de priorit ee : postifx unaires (prexes) multiplicatifs additifs d ecalage relationnels egalit e bitwise AND bitwise excl. OR bitwise incl. OR conjonction disjonction conditionnel aectation ++ ++ + - ! */% +>> << >>> < > <= >= instanceof == != & | && || ? : = += -= *= /= %= &= = | = <<= >>= >>>=
POO - Licence Math-Info

Said Jabbour - CRIL UMR CNRS 8188 - Univ. Artois

Op erateurs (2)

Quelques remarques : Op erateur ++ (resp. ) pr ex e evalue lexpression avant lincrementation (resp. d ecrementation) Op erateurs && et || pr esentent le short circuit behaviour : le deuxi` eme op erande est evalu e seulement si n ecessaire. Op erateur + est utilis e aussi pour la concatenation des Strings.

Said Jabbour - CRIL UMR CNRS 8188 - Univ. Artois

POO - Licence Math-Info

Lop erateur instanceof

DemoInstanceof1.java class DemoInstanceof1 { public static void main(String[] args) { Pere obj = new Pere(); System.out.println(obj instanceof Pere: + (obj instanceof Pere)); System.out.println(obj instanceof Fils : + (obj instanceof Fils)); } } class Pere {} class Fils extends Pere {}

Said Jabbour - CRIL UMR CNRS 8188 - Univ. Artois

POO - Licence Math-Info

Lop erateur instanceof (2)

$ javac DemoInstanceof1.java $ java DemoInstanceof1 obj instanceof Pere: true obj instanceof Fils: false

Said Jabbour - CRIL UMR CNRS 8188 - Univ. Artois

POO - Licence Math-Info

Lop erateur instanceof (3)

DemoInstanceof2.java class DemoInstanceof2 { public static void main(String[] args) { Fils obj = new Fils(); System.out.println(obj instanceof Pere: + (obj instanceof Pere)); System.out.println(obj instanceof Fils: + (obj instanceof Fils)); } } class Pere {} class Fils extends Pere {}

Said Jabbour - CRIL UMR CNRS 8188 - Univ. Artois

POO - Licence Math-Info

Lop erateur instanceof (4)

$ javac DemoInstanceof2.java $ java DemoInstanceof2 obj instanceof Pere: true obj instanceof Fils: true

Said Jabbour - CRIL UMR CNRS 8188 - Univ. Artois

POO - Licence Math-Info

Commandes basiques
Aectation : Variable OpAectation Expression ; Bloc de commande : { Commande ; Commande ; ... ; } Contrle de ux : if ( Expression ) Commande if ( Expression ) Commande else Commande switch ( Expression ) f case ExpConstante : Commande ... [default : Commande] } while ( Expression ) Commande do Commande while ( Expression ) ; for (Commande ; [Expression] ; [Commande]) Commande
Said Jabbour - CRIL UMR CNRS 8188 - Univ. Artois POO - Licence Math-Info

Commandes basiques (2)

Commandes de ramication : break [Identicateur] ; continue [Identicateur] ; return [Expression] ;

Said Jabbour - CRIL UMR CNRS 8188 - Univ. Artois

POO - Licence Math-Info