Vous êtes sur la page 1sur 62

01/10/2020

Cours Programmation Orienté


Objet

Mourad Kmimech
mkmimech@gmail.com
2020/2021

1
01/10/2020

Introduction générale
&
historique

2
01/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

3
01/10/2020

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

4
01/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

5
01/10/2020

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

6
01/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

7
01/10/2020

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

8
01/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

9
01/10/2020

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/Sbas niveau


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

Cours POO 10

10

10
01/10/2020

Chapitre 1

Éléments de base du langage


JAVA

11

11
01/10/2020

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

12
01/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

13
01/10/2020

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

14
01/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

15
01/10/2020

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

16
01/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

17
01/10/2020

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

18
01/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

19
01/10/2020

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

20
01/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

21
01/10/2020

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

22
01/10/2020

Les expressions en java


Les opérateurs
Les opérateurs de comparaison

Cours POO 23

23

23
01/10/2020

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

24
01/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

25
01/10/2020

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

26
01/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

27
01/10/2020

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

28
01/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

29
01/10/2020

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

30
01/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

31
01/10/2020

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

32
01/10/2020

Premier Programme JAVA

33

33
01/10/2020

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
– …

Cours POO 34

34

34
01/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

35
01/10/2020

Chapitre 2

Les principes de la
programmation Objet

« Objet, classe »

36

36
01/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

37
01/10/2020

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

38
01/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

39
01/10/2020

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

40
01/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

41
01/10/2020

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

42
01/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

43
01/10/2020

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

44
01/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

45
01/10/2020

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

46
01/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

47
01/10/2020

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

48
01/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

49
01/10/2020

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

50
01/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

51
01/10/2020

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

52
01/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

53
01/10/2020

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

54
01/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

55
01/10/2020

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

56
01/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

57
01/10/2020

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;
System.out.println(V2.count);
count++;
Voiture.count=22;
id=count; System.out.println(V1.count);
} }
}
Cours POO 58

58

58
01/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

59
01/10/2020

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

60
01/10/2020

Objets, Classes
Méthodes de classe: class Test
• Ex : {
class MathTool void methode1()
{ final static double PI=3.14; {
static double getPI() double i =
MathTool.power(6);
{return(PI);}
}
static double diametre(double rayon) void méthode2()
{return(2*PI*rayon);} {
MathTool t=new
static double power(double x) MathTool();
{return (x*x);} double i = t.power(6);
}
}
}
Cours POO 61

61

61
01/10/2020

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

62

Vous aimerez peut-être aussi