Vous êtes sur la page 1sur 37

13/10/2020

Cours Programmation Orienté


Objet

Mourad Kmimech
mkmimech@gmail.com
2020/2021

Introduction générale
&
historique

1
13/10/2020

Qu’est-ce que Java ?


• Java est un langage de programmation OO.

• Il a été développé par SUN.

• Objectif:
– Exécution standardisé des programmes.
– Maintenance simplifié.
– Indépendance vis-à-vis des plateformes.

• Java est une plateforme, elle est constitué de :


– Un langage de programmation.
– La « Java Virtual Machine ».
– Des interfaces de programmation d’application (Java API)
– Un ensemble d’outils permettent la mise en œuvre de solution
logicielle. (javadoc, rmi,…)

Cours POO 3

Propriétés de Java
• Simplicité et productivité
- Syntaxe proche du C/C++
- Élimination de la notion de pointeur, structure…

• Intégration complète de l’OO

• Distribué
- La manipulation d’objet locaux ou distribué se fait de la même façon.

• Interprété
- Un programme java n’est pas compilé en code machine mais transformé en
code intermédiaire interprété.

• Gestion mémoire (« Garbage collector »)


- Un système de ramasse miette permet de décharger le programme d’une
gestion fastidieuse de la mémoire.

Cours POO 4

2
13/10/2020

Propriétés de Java
• Robustesse, fiabilité et sécurité
- Langage fortement typé.
- Interdiction de conversion de type impliquant une perte de précision.

• Ouverture
- Support intégré d’Internet
- Connexion intégrée aux bases de données (JDBC)
- Support des caractères internationaux
- Distribution et aspects dynamiques
- Performance

• Dynamique et mutithread
- Les classes sont charger au fur et a mesure des besoins.
- Mise à jour de l’application peut se faire classe par classe.
- Gestion multithreading simple : écouter de la musique en voyant une
animation flash.

Cours POO 5

Propriétés de Java
Portabilité : MonProg.java

• Le compilateur Java génère un


bytecode, c’est à dire un format
intermédiaire, neutre Compilateur java
architecturalement, conçu pour
faire transiter efficacement le
code vers des hardware différents
et/ou plateformes différentes.
MonProg.class
= bytecode
• Le bytecode ne peut-être
interprété que par le processeur
de la JVM JVM JVM JVM
MAC Windows UNIX

La devise de java : écrire une fois , exécuter partout


Cours POO 6

3
13/10/2020

Déploiement d’un programme (1/2)


Paradigme classique de la compilation

MonProg.c

Exécuté une seule fois Génère du code natif directement


Mais différent pour Compilateur exécutable, mais spécifique à
chaque environnement chaque environnement

MonProg.o

010110…

Cours POO 7

Déploiement d’un programme (2/2)


Paradigme classique de la compilation
• Chaque programme est compilé et interprété
• « Write once run everywhere »
MonProg.java
Traduit le programme en un code
intermédiaire
Exécuté une seule fois
Compilateur Appelé bytecode – indépendant de la
machine

MonProg.class

Chaque fois que le Lit le bytecode et l’exécute sur la


programme est exécuté Interpréteur machine

010110…

Cours POO 8

4
13/10/2020

La plateforme Java
• Plateforme = environnement hardware ou software sur lequel le
programme est exécuté.

• La Java « Platform » se compose de:


– La machine virtuelle JAVA (JVM)
• Une fois le programme java compilé et converti en Byte-Code,
c’est la JVM qui est capable d’interprété et de permettre au
processeur d’exécuter ce code.

– Les interface de programmation d’application (API)


• Ensemble de classe prédéfinit de java qui existe dans chaque
installation.
• Elles sont organisées sous forme de package. (E/S, Swing,
Awt…)

Cours POO 9

Versions de Java
Version Nbr Nbr nouveauté
classes packages

1.0 212 8

1.1 504 23 - Classe interne


- JVM plus performante
- Intégrationaux navigateur Web.

1.2 1520 59 - Swing


- Collections

1.3 1842 76 - Java SOUND


- JNDI

1.4 2991 135 - E/S bas niveau


- XML (SAX/DOM)
- SSL, Image, …

Cours POO 10

10

5
13/10/2020

Chapitre 1

Éléments de base du langage


JAVA

11

Commentaires
• Trois notations sont admises pour l’insertion de
commentaire :
 // commentaire sur une ligne.

 /* commentaire sur
plusieurs
lignes */

 /** commentaire d’explication utilisé par javadoc


sur une ou plusieurs lignes */

Cours POO 12

12

6
13/10/2020

Points virgules, blocs et blancs


• Toute instruction doit se terminer par un point virgule «;»

• Un bloc est une suite d’instruction délimité par «{» et «}».

• Les blancs sont autorisés entre les éléments du code sources.


(espace, tabulation et saut de ligne)

• Exemple:

{
x=2; {x=2;y=10;}
y=10;
}

Cours POO 13

13

identificateurs
• Un identificateur désigne tout objet que le programmeur
souhaite manipuler.

• Un identificateur java commence par une lettre, un trait de


soulignement « _ » ou le signe dollars « $ ».

• Les caractères suivant de l’identificateur peuvent contenir des


chiffres.

• Il y a une distinction entre majuscule et minuscule.

• Exemple:
– MaClasse, _maVariable, $maFonction, C1, … (Valide)
– 1var, -maclasse, fonction-recherche, … (non valide)

Cours POO 14

14

7
13/10/2020

Mots réservés / clé


Ce sont des identificateurs prédéfinis et ont un sens bien définit.

Abstract double int strictfp


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

Cours POO 15

15

Types de données
• Java prend en comptes les types de données suivant :

1. Les types primitifs

2. Les chaînes de caractères : Pour manipuler les chaînes de


caractères Java offre une classe appelée String. Une constante chaîne
de caractères est placée entre doubles cotes.

3. Les types par références : Contrairement aux types primitifs qui


possèdent des tailles standard et fixes, un type tableau ou un type
classe ne peut pas avoir une taille standard. Au lieu de manipuler
directement un objet de la classe ou un objet tableau, Java manipule
une autre donnée qui représente une référence à l’objet manipulé.
Pour cela classes ou types tableau sont appelés des types références.

Cours POO 16

16

8
13/10/2020

Types primitifs
• Catégorie logique : Type boolean
en java, un boolean n’est pas considéré comme une valeur
numérique. Seules valeurs possibles sont true ou false.
exemples:
boolean trouve=true;

• Catégorie caractère : Type char


le type ‘char’ permet de représenter les caractères isolés (c’est un
caractère Unicode représenté sur 16 bits). Elle est délimité par
deux apostrophes.
exemples:
char x=‘a’;
char omega=(char) 969;

Cours POO 17

17

Types primitifs
• Catégorie entier : types byte, short, int et long
il existe 4 types d’entiers en java.
chaque type est déclaré avec l’un des mots clés byte, short, int et long.

Type Taille Intervalle


byte 1O -2exp7 .. (2exp7)
short 2O -2exp15 .. (2exp15)
int 4O -2exp31 .. (2exp31)
long 8O -2exp63 .. (2exp63)

Exemple:
Int x=2;
Long y=3L;

Cours POO 18

18

9
13/10/2020

Types primitifs
• Catégorie flottant : type float et double
une constante numérique est flottante si elle contient un
point décimal, une partie exponentielle lettre E ou si elle sont
suivit par la lettre F ou D.

Exemple :
2.3F
2.3
2.3E4
4F

Remarque : les expression littérale flottante sont de type


double sauf si elles sont explicitement suivit par la lettre F.

Cours POO 19

19

Déclaration et affectation
• La déclaration et l’affectation s’effectue de manière similaire au C.

Exemple :
int x=0, y=0;
float z=2.3F;
double t=2.3;
char c=‘r’;

• Quand une constante est déclaré avec le modificateur final, elle ne


peut plus être modifier  c’est une constante nommée.
il est alors obligatoire de l’initialiser dans sa déclaration.

Exemple :
final double PI=3.14;

Cours POO 20

20

10
13/10/2020

Les expressions en java


Les opérateurs
Les opérateurs de calcul
Les opérateurs de calcul permettent de modifier mathématiquement la
valeur d'une variable

Cours POO 21

21

Les expressions en java


Les opérateurs
Les opérateurs d'incrémentation
• Ce type d'opérateur permet de facilement augmenter ou diminuer d'une
unité une variable. Ces opérateurs sont très utiles pour des structures
telles que des boucles, qui ont besoin d'un compteur (variable qui
augmente de un en un).

Un opérateur de type x++ permet de remplacer des notations lourdes
telles que x=x+1 ou bienx+=1

Cours POO 22

22

11
13/10/2020

Les expressions en java


Les opérateurs
Les opérateurs de comparaison

Cours POO 23

23

Conversion de type
• Si dans une expression les opérandes sont de différents type le résultat est alors
convertis vers le type le plus grand.
Exemple :
int x=2; long y=4, z;
z=x*y; //le résultat est alors convertis en long

• Pour l’affectation, la donnée a droite est convertie dans le type de celle de gauche.
Si le type de la destination est plus faible l’instruction est considéré erronée.
Exemple :
int i=2; long x=5;
x=i; //instruction légale
i=x; // instruction erronée
• On peut convertir explicitement une valeur en forçant la transformation. Le type
ciblé est placé entre () et est utilisé comme préfixe de l’expression dont on veut
modifier le type.
<nom_variable> = (<type>) <expression>
Exemple :
float z; z=(float) 14.33;
int x; x=(int) z; //x contient la valeur 14
Cours POO 24

24

12
13/10/2020

Les structures de base


Structure alternative : if..else
• if (<expression booléenne>)
{
//instruction ou bloc d’instruction a exécuter si condition= vrai.
}
else
{
//instruction ou bloc d’instruction a exécuter si condition= faux.
}

La partie else est optionnelle et peut être omise s’il n’y a pas d’actions a
effectuer lorsque la condition est fausse.

• Exemple :
int i=2; boolean fin;
if(i<0)
{fin=true; i=0;}
else i++;
Cours POO 25

25

Les structures de base


Structure alternative : switch
• switch (<expression >)
{
case <valeur 1> : <bloc 1> break;
case <valeur 2> : <bloc 2> break;
……
case <valeur n> : <bloc n> break;
default : <bloc n+1>
}

l’expression du switch doit être de type compatible avec un entier. Les


expression en flottant ou en double ne sont pas permises.

la spécification du break sont nécessaire pour gérer les ruptures de séquences.

Cours POO 26

26

13
13/10/2020

Les structures de base


Structure alternative : switch
Exemple: Exemple:
int k=0, i=2; int k=0, i=2;
switch(i) switch(i)
{ {
case 1: k+=20; break; case 1: k+=20;
case 2: k+=2; break; case 2: k+=2;
case 3: k+=10; break; case 3: k+=10;

} }

k=2 K=?

Cours POO 27

27

Les structures de base


Opérateur ternaire
varaiable = condition ? si_test_vrai : si_test_faux ;

C’est équivalent à :
If(codition)
si_test_vrai
Else
si_test_faux

Exemple:
int a=1,b=3;
int min=(a<b)?a:b; //parenthèse facultatives

Cours POO 28

28

14
13/10/2020

Les structures de base


Structure répétitive : while
while (<expression_booléenne>)
{
<instruction ou bloc>
}

Exemple:
int i=0;
System.out.println(‘‘je sais compter jusqu’a 10’’);
while (i<10)
{
System.out.println(i);
i++;
}

Cours POO 29

29

Les structures de base


Structure répétitive : do .. while
do
{
<instruction ou bloc>
}
while (<expression_booléenne>);

Exemple:
int i=10;
System.out.println(‘‘je sais compter jusqu’a 10 a l’envers’’);
do
{
System.out.println(i);
i--;
}
while(i>=0);

Cours POO 30

30

15
13/10/2020

Les structures de base


Structure répétitive : for
for (
<initialisation> ; <expression_booléenne> ; <incrémentation> )
{
<instruction ou bloc d’instruction>
}

Exemple:
 for (int i=0;i<=10;i++)
System.out.println(i);

 for ( ; ; )  boucle infinie

Cours POO 31

31

Convention d’écriture

• Classes
class BankAccount, class RacingBike
• Interfaces
interface Account
• Méthodes
deposer() getName()
• Packages
package coursJava
• Variables
int accountNumber, int x
• Constantes
MAXIMUM_SIZE

Cours POO 32

32

16
13/10/2020

Premier Programme JAVA

33

Comment développer une application?


Deux façons d’écrire des programmes Java:

• En écrivant le code dans un simple éditeur de texte


– Compilation et exécution du code en ligne de commande DOS

• En utilisant un environnement de développement (IDE)


– 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)
– Jcreator
– Eclipse
– …

Cours POO 34

34

17
13/10/2020

Une première application


Application HelloWorld
• Créer un fichier : HelloWorld.java
La première ligne du programme doit être
public class HelloWorld la déclaration de la classe

{ Tout programme doit contenir une méthode


public static void main (String[]args) main qui porte la signature ci-contre
{
System.out.println("Hello the World"); Écrire à l’écran “Hello the World”
}
} Fermer les accolades

 Compiler le programme : javac HelloWorld.java


 Le compilateur génère le bytecode dans le fichier :
HelloWorld.class
 Exécuter l’application : java HelloWorld
 « Hello the World » s’affiche à l’écran

Cours POO 35

35

Chapitre 2

Les principes de la
programmation Objet
« Objet, classe »

36

18
13/10/2020

Notion d’objet

• C’est une notion très proche de celle de la vie courante. On


représente en permanence le monde qui nous entour sous forme
d’objet plus ou moins abstrait (chaise, table,stylo, voiture,
animaux...).

• Cette vision d’un objet peut être différente en fonction de nos


besoins :
– Un conducteur voit une voiture comme un ensemble complexe de
commande pour la faire avancer, diriger et interagir avec d’autres véhicules.
– Un policier voit un ensemble de véhicule comme un ensemble d’objet qui
doivent respecter des règles de circulation. (camion ou voiture sont de
même type)
– Un garagiste voit un véhicule comme étant un ensemble d’objets qui
interagissent entre eux.

Cours POO 37

37

Notion d’objet

• Un objet est définit de la manière dont on peut interagir


avec lui et cela en fonction du problème à résoudre.

• Il correspond a un certain niveau d’abstraction de la


réalité et est représenté essentiellement par les services
qu’il peut nous rendre.

• Nous faisons tous en permanence un tel travail


d’abstraction pour pouvoir voir et comprendre
simplement le monde qui nous entour.

Cours POO 38

38

19
13/10/2020

Encapsulation, méthodes et invocation

• Un objet est une boite noire qui offre un certain nombre de


fonctions ou méthodes permettant d’interagir avec lui. Peut
importe comment il est construit de manière interne.

• La seule chose nécessaire pour pouvoir utiliser un objet est savoir


ce qu’il peut faire et surtout comment le lui demander.

• Ex: un poste de télé est une boite noir ayant pour interface : une
télécommande , écran, haut parleurs. Pour changer de chaîne il
suffit de demander a la boite noire de le faire pour nous en
appuyant sur un bouton.

• L’ensemble des méthodes proposées par un objet est appelé


interface de l’objet.

Cours POO 39

39

Encapsulation, méthodes et invocation


• On dit qu’un objet est encapsuler par son interface  la seule façon de
communiquer avec cet objet et d’invoquer une des méthodes de son interface.

• L’encapsulation d’un objet par son interface permet de masquer son contenu 
possibilité de modifier son contenue sans impacte pour le reste du monde.

• L’encapsulation constitue un des points centraux de l’approche objet. En faisant


cela on dit a l’objet ce qu’il doit faire et non comment il doit le faire.

• Ex: si on freine avec la voiture on ce contente d’appyer sur la pédale (méthode


freinage). Peut importe s’il sajit d’un frein a disque ou abs…

• Ex:un policer invoque la méthode arrêter en levant la main et il ne s’occupe pas


de la manière dont chaque véhicule s’arrête.

Cours POO 40

40

20
13/10/2020

Niveau d’abstraction et classes d’objets

• Plusieurs niveaux d’abstractions sont possible lorsque


l’on représente un certain objet réel.

• Ex: lorsqu’on regarde une table de cuisine, on fait


généralement abstraction des éléments qui la compose
physiquement pour ne voir que l’objet de notre cuisine
qui permet de ranger les couverts et servir de support
pour nos repas.

• En fait on range implicitement cette table de cuisine


particulière « instance » dans l’ensemble le plus grand de
celui des tables de cuisine ayant les même
fonctionnalités « classe ».

Cours POO 41

41

Niveau d’abstraction et classes d’objets

• Une table de cuisine est une table qui possède des caractéristiques
spécifiques. On dit que la classe des tables de cuisine est une
classe fille de la classe des tables et qu’elle hérite des
caractéristiques de cette classe tout en la spécialisent par l’ajout
de nouvelle fonctionnalités.

• Une classe fille est définie à partir de sa mère par héritage


(réutilisation de ce qui est déjà défini) et spécialisation (ajout de
nouvelles fonctionnalités).
Meubles

Tables Chaises

Table de cuisine Table de salon

Cours POO 42

42

21
13/10/2020

Polymorphisme

• C’est un mot Greg « plusieurs formes ».

• Signifie qu’une méthode peut être définit dans plusieurs classe et


que chaque classe peut implémenter (réaliser) cette méthode a sa
manière.

• Ex: lorsqu’on freine dans une voiture, on sais que la fonction


attendue est de stopper le véhicule. En fonction du type réel de
véhicule (de sa classe plus spécifique) les actions réelle sont très
différentes (abs, tambours,…). Le conducteur n’a pas besoin de ce
niveau de détail pour savoir s’arrêter.

Cours POO 43

43

Objets, Classes

• Qu’est ce qu’un objet?


– C’est l’unité de base de la conception OO.
– Il regroupe a la fois des données et des opérations qui permettent de manipuler ces
dernières.
– Les données sont généralement appelé attributs et les opérations sont appelées
méthode.
• Un objet est caractérisé par :
– Attributs typés.
– Méthodes.
– Identité, pour le distinguer des autres objets.

• Exemple:
– On peut modéliser une personne par l’objet Personne. Les attribut sont alors les
information concernant la personne (nom, prénom, DN,…). Et comme méthode on
aurais par exemple calcul_Age, calcul_salaire…

Cours POO 44

44

22
13/10/2020

Objets, Classes
• Qu’est ce qu’une classe?
– C’est une description d’un ensemble d’objets ayant des propriétés et des
comportements commun.
– Les objets sont a lors des représentations dynamique (ou « instanciation » )
vivante du modèle définit pour eux au travers de la classe.

• Une classe en java est définie en précisant son nom, en déclarant ces attributs
et en définissant ses méthodes.

• Syntaxe:
Class nom_classe
{
// déclaration des attributs
// déclaration des méthodes
}

Cours POO 45

45

Objets, Classes

• Exemple:

Class Rectangle
{
//declaration attributs
int long;
int larg;
// autres attributs eventuels
//declartion des fonctions
void allongerRectangle(int lg)
{ long+=lg;}
//… autres méthodes
}

Cours POO 46

46

23
13/10/2020

Objets, Classes

• Déclaration des attributs


[<modificateur_visiblité>] <type> <nom>[=<expression>]
public int x;
public int y=34;
private int z=2;

• Déclaration des méthodes


[<modificateur_visiblité>] <type_retour> <nom>([<arguments>])
{
// declaration variable
// les instructions
}

Cours POO 47

47

Objets, Classes

Création et initialisation des objets


1. Déclarer une variable de la classe que l’on désire instancier.
Cette variable n’est pas l’objet lui-même mais une référence à
cet objet.
Ex: Rectangle r1; // r1 ??

2. Allouer l’espace mémoire nécessaire à l’objet et renvoyer


l’adresse de l’objet à la variable référence. Cette opération ce
fait a l’aide de l’opérateur new au quel on passe le nom de la
classe.
ex : r1= new Rectange();

Cours POO 48

48

24
13/10/2020

Objets, Classes

Constructeur de classe
 Un constructeur est une méthode particulière appelée au
moment de la création d’un objet. Son role est d’initialiser
l’objet en fonction des paramètres fournis par l’utilisateur.

 Le nom du constructeur doit correspondre au nom de la


classe sans aucun type de retour.
 Ex:
Rectangle(int lg,int larg) {
longueur=lg; largeur=larg;
}

Cours POO 49

49

Objets, Classes

Constructeur de classe
 Une classe peut avoir plus qu’un constructeur

 Ex:
Rectangle (int lg,int larg) {
longueur=lg; largeur=larg;
}
Rectangle () {
longueur=0; largeur=0;
}

 Toute classe comporte au moins un constructeur. En effet, si aucun n’est


préciser on a le constructeur par défaut.

Cours POO 50

50

25
13/10/2020

Objets, Classes

Utiliser un objet
– Accès a un attribut :
• L’accès a un attribut dans une classe se fait toujours a l’intérieur d’une
méthode. Cette méthode peut intervenir a la classe elle-même ou a
autre classe.
• Si l’accès se fait de l’extérieur de la classe, alors on crée un objet de la
classe puis on applique cette syntaxe:
<nom_Objet>.<Nom_Attribut>

– Invocation d’une méthode :


• Même principe. A l’intérieur de la même classe c’est l’appel directe :
<nom_méthode>(<liste_arguments>);
• si a l’extérieur de la classe on utilise un objet.

Cours POO 51

51

Objets, Classes

Contrôle d’accès au membre :


– L’accès aux membre (données et méthodes) d’une classe peut être contrôlé.
En effet, l’utilisation du modificateur d’accès « private » pour un membre
rend impossible tout accès à ce membre à partir de l’extérieur.
– Ex :
Class Rectangle
{ private int longueur; private int largeur;
// déclaration des méthodes…
}
Class Test
{public static void main (String[] args){
Rectangle r=new Rectangle();
r.longueur=10; //instruction éronné}}

Cours POO 52

52

26
13/10/2020

Objets, Classes
Les références :
– Ce sont les variables qui permettent de désigner et manipuler les objets.
– Les seuls opérateurs sur les références sont des opérateurs logiques:
• ==: teste si 2 références désignent le même objet.
• != : teste si 2 référence ne désignent pas le même objet
• instanceof : retourne true si l’objet à gauche est une instance de la classe placé à sa droite
ou si la comparaison est faite entre un objet d’une classe implémentant une interface .
Sinon il retourne false.
– Ex :
Class Rectangle
{ private int longueur; private int largeur;
// déclaration des méthodes…
}
Class Test
{public static void main (String[] args){
Rectangle r=new Rectangle();
boolean val1=r instanceof Rectangle;//val=true
boolean val2=r instanceof Test;//val=false
}}

Cours POO 53

53

Objets, Classes
La référence this :
– Le mot clé this représente une référence sur l’objet courant (celui qui est entrain
d’exécuter la méthode contenant le this).
– La référence this peut être utile :
• Lorsqu’une variable locale ou paramètre cache, en portant le même nom, un attribut de la
classe.
• Pour déclencher un constructeur depuis un autre constructeur.
– Ex :
Class Date
{
int jour=1, mois=1, an=1990;
Date()
{an=2000; /* peut s’écrire : this.an=2000*/}
Date(int an)
{this.an=an; /* le paramètre en cache l’attribut an*/}
Date(int an, int mois, int jour)
{this.jour=jour;
this.mois=mois;
this(an); /* Appel du deuxième constructeur*/}
}

Cours POO 54

54

27
13/10/2020

Objets, Classes
La référence null :
– Le mot clé null permet de représenter la référence qui ne représente rien.
– On peut assigner cette valeur a n’importe quelle variable ou attribut
contenant une référence.
– C’est aussi la valeur par défaut d’initialisation des attributs représentant des
références.
– Ex :
Class Test
{
Voiture v1; //initialisation a null par défault.
void methode()
{

if (v1==null) v1=new Voiture();

}
}

Cours POO 55

55

Objets, Classes

Surcharge des méthodes :


– Java permet de réutiliser un même nom de méthode pour
plusieurs fonctionnalités. On dit que la méthode est
surchargée.
– Ex :
Une méthode qui permet l’affichage de son argument.
void print(int)
void print(float)
void print (double)
– Les méthodes surcharger sont soumise a certaines règles:
• Arguments suffisamment différent (nombre et/ou type)
• Le type de retour des méthodes surchargées peut être différent mais
cette différence a elle seule n’est pas suffisante.

Cours POO 56

56

28
13/10/2020

Objets, Classes

Passage de paramètre des méthodes:


– Java ne transmet les arguments de type simple que par valeur 
l’argument ne peut être modifié par la méthode appelée.
– Si une instance d’un objet est transmise comme argument a une méthode.
Le contenue de l’objet peut être modifié dans la méthode appelée et non sa
référence.
– Ex :
class Test
{ int val=11;
public void modif(int n)
{ n=22; }
public void modifObj(Test obj)
{ obj.val=22; }
public static void main(String a[])
{
Test t=new Test();
int n=0;
t.modif(n); System.out.println(n); //n=0;
t.modifObj(t); System.out.println(t.val); //val=22
}
}

Cours POO 57

57

Objets, Classes

Attributs de classe:
– C’est un attribut marqué par le mot clé static.
– Le mot clé static , utilisé pour un attribut, permet d’indiquer
que cet attribut est commun a tous les objets de la classe
concernée  si on modifie cet attribut pour un objet donné, il
sera modifié pour tous les objets de la classe.
– Ex :
public static void main (String[] args){
class Voiture Voiture V1=new Voiture();
{ static int count =0; Voiture V2=new Voiture();
int id; System.out.println(V1.count);
voiture(){ V1.count=55;
count++; System.out.println(V2.count);
id=count; Voiture.count=22;
System.out.println(V1.count);
} }
}
Cours POO 58

58

29
13/10/2020

Objets, Classes

Attributs de classe:
– On accède a un attribut statique :
• Via une instance quelconque de la classe : V1.id
• Via le nom de la classe : Voiture.id

– On peut associer static a final pour un attribut


constant et commun a tous les objets de la
classe.
final static float PI=3.14F;

Cours POO 59

59

Objets, Classes

Méthodes de classe:
– Une méthode de classe est une méthode de type static.

– Une méthode de classe est une méthode dont les actions


concernent la classe entière.

– Une méthode statique ne peut accéder qu’au attribut statique


de la classe.

– On peut invoquer une méthode statique soit :


• Sur la classe elle-même
• Sur un objet de cette classe

Cours POO 60

60

30
13/10/2020

Objets, Classes

Méthodes de classe: class Test


• Ex : {
class MathTool void methode1()
{ final static double PI=3.14; {
double i =
static double getPI() MathTool.power(6);
{return(PI);} }
void méthode2()
static double diametre(double rayon) {
{return(2*PI*rayon);} MathTool t=new
MathTool();
static double power(double x) double i = t.power(6);
{return (x*x);} }
}

} Cours POO 61

61

Objets, Classes

Méthodes de classe:
– Une méthode statique ne peut pas avoir de référence this
car elle peut être appelé sans l’intermédiaire d’un objet.

– On utilise généralement des méthodes static pour


rassembler un ensemble d’outil sur un certain objet.

– La méthode main est une méthode de classe, elle est la


première a être appelée quand on lance la JVM avec sa
classe. La méthode main peut être lancée sans qu’aucune
instance de la classe qui la contient n’existe.

Cours POO 62

62

31
13/10/2020

Chapitre 3

Tableaux et chaînes de caractères

63

Les tableaux

• En java le type tableau est assimilable à une classe et un


tableau est un objet référencé.

• Un objet tableau ne référence pas l’objet lui-même mais


uniquement l’adresse mémoire a qui il fait référence.

• Déclarer un tableau en java revient a réserver de la place


mémoire pour l’adresse de ce tableau.

• Pour créer un tableau il faut lui allouer l’espace mémoire


nécessaire après l’avoir déclaré.

Cours POO 64

64

32
13/10/2020

Les tableaux

Tableau à une dimension

– Déclaration :
<type> <nomTableau>[ ]; ou
<type> [ ]<nomTableau>;

– Exemples:
Int notes[]; // tableau entiers
char[] lettres; //tableau de caractères
short t1[100]; //instruction illégale car il n’est pas
//possible de définir un tableau de
//taille fixe à la déclaration.

Cours POO 65

65

Les tableaux

Tableau à une dimension

– Création :
la déclaration ne fait que réserver l’espace mémoire allant contenir
l’adresse du tableau. Cette place mémoire est identifié par le nom
du tableau.

l’allocation de la place mémoire se fiat par le mot clé new :


<nomTableau> = new <Type>[<dimension>];

– Exemple :
notes = new int[3];
notes Ox123
Ox123

Cours POO 66

66

33
13/10/2020

Les tableaux

Tableau à une dimension

– Initialisation:
Lorsqu’un tableau est créé. Chacun de ces éléments est initialisé.
Cette initialisation se fait a 0 si les éléments sont des entiers ou
des réels. A false s’ils sont des booléens et a null sinon.

– Exemples:
int tab={3, 5, 7}; // c’est équivalent a faire
int tab=new int[3]; tab[0]=3; tab[1]=5; tab[2]=7;

– La longueur d’un tableau peut être obtenue à partir de la variable


membre length.
<nomTableau>.length

Cours POO 67

67

Les tableaux

Tableau à une dimension

– Utilisation:
le premier élément d’un tableau commence a l’indice 0 et le dernier
élément a l’indice n-1 (n le nombre d’éléments du tableau).

l’accès à un éléments du tableau se fait en mettant l’indice de cet


élément entre crochets. Par ailleurs si on essaie d’accédé à un
élément qui ce trouve en dehors des bornes du tableau une erreur
sera générée.

– Utilisation:
in[] tab=new int[10];
tab[0]=1;
tab[10]=2;// erreur à la compilation

Cours POO 68

68

34
13/10/2020

Les tableaux

Tableau à deux dimensions


Un tableau a 2 dimensions est tableau dont chaque
composantes est formée par un tableau.

– Déclaration & création:


<type> [ ][ ]<nomTableau>=new <type> [N1][ ];
<nomTableau>[0]=new <type>[N21];
<nomTableau>[0]=new <type>[N22];…

– Exemples:
Int[][] notes=new int[3][];
notes[0]=new int[3];
notes[1]=new int[2];
notes[2]=new int[1];

Cours POO 69

69

Les tableaux

Tableau à une dimension

– Déclaration & création:


si le tableau a deux dimension est rectangulaire, on peut le créer
comme suit :
<type>[][]<nomtableau>=new<type>[N1][N2];
N1: nombre de tableau-élément.
N2: nombre d’élément de chaque tableau-élément.

– Exemple :
créer une matrice carré :
int [][] matrice= new int[2][2];
matrice[0][0]=1; matrice[0][1]=1;
matrice[1][0]=1; matrice[1][1]=1;

Cours POO 70

70

35
13/10/2020

Les tableaux

Tableau à une dimension


– Le nombre de tableau-élément peut être
obtenue en utilisant la variable length.

– Exemple:
int[][] tab={{1,0,9},{2,8},{8,5,7}};
tab.length3
tab[1].length2

Cours POO 71

71

Les chaînes de caractères

Le type String (chaîne) sert a représenter des séquences de


caractère. Une chaîne constante est délimité par des
guillemets.

String est une classe qui est fourni avec l’API Java, elle décrit
des objets qui contiennent une chaîne de caractère constante
et permet un traitement très riches des chaînes de caractères.

Elle dispose des opérateurs + ou += pour concaténation des


chaînes de caractères.

Exemple:
String s=‘‘il est beau java’’;

Cours POO 72

72

36
13/10/2020

Les chaînes de caractères

Quelques méthodes de la classe String:

• int length() : retourne le nombre de caractère de la chaîne.

• int indexOf(char c, int i) : retourne la position du caractère c à partir


de la position i.

• String substring(int i, int j): retourne une chaîne extraite de la chaîne


sur laquelle est appliquée la méthode en partant de la position i a la
position j.

• boolean equals(String s) : effectue la comparaison sémantique de 2


chaînes.

• char charAt(int i) : retourne le caractère qui se trouve à la position i.

Cours POO 73

73

37

Vous aimerez peut-être aussi