0% ont trouvé ce document utile (0 vote)
46 vues207 pages

POO Java - GI19

Transféré par

Walid Boutahar
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
46 vues207 pages

POO Java - GI19

Transféré par

Walid Boutahar
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Programmation Orientée Objet

en Java
1ère année du Cycle Ingénieur
- Génie Informatique GI19-

HALLOU Amal
[email protected]

Année Universitaire 2022- 2023


INTRODUCTION

Langage de programmation :
Outil qui permet de donner des ordres à la machine, décrire des
instructions
doit être compréhensible par la machine

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


INTRODUCTION

Langage de programmation :
L’ordinateur ne comprend que le langage binaire (langage machine
ou natif):
- Les instructions et les données à traiter sont codées sous
forme de bits (Binary digit)
Difficilement compréhensible par l’être humain

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


INTRODUCTION

Langage de programmation :
L’ordinateur ne comprend que le langage binaire (langage machine
ou natif):
- Les instructions et les données à traiter sont codées sous
forme de bits (Binary digit)
Difficilement compréhensible par l’être humain

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


INTRODUCTION

Langage de programmation :

Je parle dans un 00101100


langage complexe et 100011011
nuancé 110100100

Langage de programmation

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


INTRODUCTION

Langage de programmation :

Code source
(langage de
programmation)

Code binaire
(exécutable)

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


INTRODUCTION

Langage de programmation :
•le langage assembleur
Permet d’exprimer les instructions élémentaires par des symboles
MOV AX, [0110]
ADD AX, [0112]
MOV [0114], AX

- Un assembleur permet la traduction des instructions (symboles) en


codes binaires
Mais: très proche du langage machine, dépend du type de
processeur
7

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


INTRODUCTION

Langage de programmation :
•Langages évolués :
Proches du langage humain (une syntaxe proche de l'anglais)
compréhensibles
Indépendants du processus
permettent une plus grande portabilité
Permettent de manipuler des données et expressions complexes

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


INTRODUCTION

Langage de programmation :
•Langages évolués :

1982
1954 1959 1963 1970 1976 C++; 1986 1990 1994 2000
FORTRAN COBOL BASIC Pascal SmallTalk PostScript Eiffel Ruby PHP C#

1958 1961 1966 1972 1980 1985 1987 1991 1995


Algol; Simula Logo C; Ada, Haskell; Perl Python Java
Lisp ML Caml
Prolog

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


INTRODUCTION

Langage de programmation :
•Langages évolués :
1. Langages Compilés
2. Langages Interprétés

10

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


INTRODUCTION

Langage de programmation :
•Langages évolués :
1. Langages Compilés
Programme Programme
(Code Compilateur intermédiaire Sortie
source) (Code objet)

Exécution
analyse lexicale analyse sémantique
analyse syntaxique

2. Langages Interprétés
Programme
(Code Interpréteur Sortie
source)
11

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


INTRODUCTION

Langage de programmation :
•Langages évolués :

Compilateur : Interpréteur :
traduit le programme entier une traduit au fur et à mesure les
fois pour toutes instructions du programme à
chaque exécution
+ plus rapide à l’exécution + exécution instantanée
+ sécurité du code source appréciable pour les débutants

- il faut recompiler à chaque - exécution lente par rapport à


modification la compilation
12

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


INTRODUCTION

Langage de programmation :
Un langage de programmation permet de décrire des
comportements à un ordinateur.
Une famille de langages de programmation est l'ensemble des
langages qui supportent un même paradigme de représentation

Un paradigme est un point de vue particulier sur la réalité,


un style ou une manière de programmer
Chaque paradigme de programmation :
•un ensemble particulier de stratégies d'analyse et de descriptions
•une approche particulière sur tout problème 13

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


INTRODUCTION

Langage de programmation :
Les paradigmes de programmation
•La programmation impérative
•La programmation orientée objet
•La programmation déclarative
•Autres (programmation événementielle, concurrente,…)

14

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


INTRODUCTION

Langage de programmation :
Les paradigmes de programmation
•La programmation impérative
Manipulation explicite de la mémoire par des instructions de haut
niveau
-Programmation structurée
-Programmation procédurale

15

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


INTRODUCTION

Langage de programmation :
Les paradigmes de programmation
•La programmation orientée objet
Modélisation des données sous la forme d’objets, métaphore du
monde réel

16

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


INTRODUCTION

Langage de programmation :
Les paradigmes de programmation
•La programmation déclarative
Décrire les données du problèmes, puis demander au programme
de le résoudre
-La programmation descriptive
-La programmation fonctionnelle
-La programmation logique

17

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


PLAN

Partie I

Les bases du langage Java


(La programmation impérative)

Partie II
La Programmation Orientée Objet en
Java

18

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


Partie I : Les bases du langage Java

19

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


Partie I : Les bases du langage Java
PLAN
1. Introduction
2. Premiers pas en Java
3. Tableaux
4. Fonctions

20

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


1. INTRODUCTION
La programmation impérative
-le paradigme de programmation le plus ancien
-Les opérations sont décrites en termes de séquences d'instructions
exécutées par l'ordinateur pour modifier l'état du programme
-La grande majorité des langages de programmation sont
impératifs

21

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


1. INTRODUCTION
La programmation impérative
Programme
 instruction 1
 instruction 2
 ...
 instruction n
Instruction : ordre destiné à produire un résultat
(modification du contexte environnant)
Ordre d’exécution important !

22

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


1. INTRODUCTION
La programmation impérative
Eléments de base des langages de programmation impératifs
•La déclaration de variables
•l'affectation d'une expression à une variable
•la séquence,
•le test
•la boucle

23

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


1. INTRODUCTION
Le langage Java

•mise au point par Sun Microsystems (racheté par Oracle en 2010)


•permet de produire des logiciels indépendants de toute
architecture matérielle
• Java est utilisé dans : les systèmes embarqués, les téléphones
mobiles, les ordinateurs individuels, les serveurs, les applications
d’entreprise, les superordinateurs, etc.

24

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


1. INTRODUCTION
Le langage Java

Programme Programme
en Java Compilateur intermédiaire
Sortie
.java Java (Bytecode)
.class

Exécution
interpréteur Java
=
machine virtuelle Java
+ bibliothèque de classes
(API)

25

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


1. INTRODUCTION
Le langage Java

La machine virtuelle de Java JVM


write once, run anywhere
-définie en 1995 par la société Sun Microsystems
-mentionne le jeu d'instructions du processeur, le format des fichiers
exécutables et l'interface de programmation de la bibliothèque
standard
-simulée par un logiciel tel que le Java Runtime Environment 26

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


1. INTRODUCTION
Le langage Java
Outils pour la programmation en Java :
•JRE (Java Runtime Environment) ou JDK (Java Development Kit)
•IDE : environnement de développement
Eclipse IDE

27

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


2. PREMIERS PAS EN JAVA
a. Premier programme en Java : tous les programmes Java sont
composés d'au moins une classe

le point de
démarrage
public class prog1 { du
public static void main(String[] args) { programme
//mon premier programme
System.out.print("Hello World ! \n");
}
}
bonjour.java un fichier précompilé a
l'extension .class
fichier source 28

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


2. PREMIERS PAS EN JAVA
b. Les commentaires :
placés entre les délimiteurs /* et */ (commentaire sur plusieurs
lignes) ou bien après // (commentaire sur une ligne)
Commentaire d’entête de fichier : Explique ce que contient ce
fichier
Commentaire de fonction de bloc : Explique la fonction et l’usage
du fragment du code qui suit
Commentaire de ligne : Déclaration de variable; Début de boucle;
Astuces, …
Les meilleurs programmeurs commentent leur code au fur et à
mesure de son écriture

29

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


2. PREMIERS PAS EN JAVA
c. Les variables :
une variable est une abstraction d'une location mémoire (ou
adresse mémoire)
Les variables servent à stocker les valeurs des données utilisées
pendant l’exécution d’un programme
Elles sont caractérisées par :
- Un nom (Identificateur).
- Un type (entier, réel…).
Les variables doivent être déclarées avant d’être utilisées.
Le format de base pour la déclaration d’une variable est :
type x,y;
30

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


2. PREMIERS PAS EN JAVA
c. Les variables :
Types
Un type décrit et structure un ensemble de valeurs possibles
 Types simples ou primitifs
 Types composés

Toutes les variables sont typées :

31

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


2. PREMIERS PAS EN JAVA
c. Les variables :
Types primitifs
•Types entiers :
-byte, short, int, long : types numériques servant au stockage des
nombres entiers signés (positifs, négatifs ou nuls) (1 octet (8 bits),
2, 4, 8 respectivement)
•Types flottants
-float, double : nombre à virgule flottante en simple ou en double
précision (4 ou 8 octets)
float f1 = 2.5f; // ajout de f pour type float
float f2 = 2.5e3f; // 2.5 x 10 a la puissance 3

double d1 = 2.5; // pourrait s’écrire 2.5d (default : double)


32

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


2. PREMIERS PAS EN JAVA
c. Les variables :
Types primitifs
•Type booléen
boolean prend l’une des deux valeurs true et false (1 octet)
•Type caractère
char symbole du clavier (lettre en majuscule ou minuscule, chiffre,
ponctuation et symboles) (2 octets)

33

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


2. PREMIERS PAS EN JAVA
d. Les opérateurs :
•Un opérateur est un symbole d’opération qui permet d’agir sur
des variables ou de faire des “calculs”
•Une opérande est une entité (variable, constante ou expression)
utilisée par un opérateur
•Une expression est une combinaison d’opérateur(s) et
d’opérande(s) (une combinaison de constantes, de variables,
d’opérateurs et d’appels de fonctions.)

34

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


2. PREMIERS PAS EN JAVA
d. Les opérateurs :
Opérateurs arithmétiques
Opérateur Syntaxe
Addition expr1 + expr2
Soustraction expr1 - expr2
Multiplication expr1 * expr2
Division expr1 / expr2
Modulo expr1 % expr2

Si les deux opérandes sont entiers alors / est une division entière
(5/2 vaut 2 et non 2.5)
% calcule le reste de la division entière de deux entiers ( 5%2 35
vaut 1)
A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19
2. PREMIERS PAS EN JAVA
d. Les opérateurs :
Opérateurs relationnels

Opérateurs Syntaxe
relationnels
Inférieur expr1 < expr2
Inférieur ou égale expr1 <= expr2
Supérieur expr1 > expr2
Supérieur ou égale expr1 >= expr2

36

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


2. PREMIERS PAS EN JAVA
d. Les opérateurs :
Opérateurs de comparaison
comparer deux variables d’un même type primitif

Opérateurs de Syntaxe
comparaison
Égal à expr1 = = expr2
Différent de expr1 != expr2
inférieur strict expr1 < expr2
inférieur ou égal expr1 <= expr2
supérieur strict expr1 > expr2
supérieur ou égal expr1 >= expr2
37

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


2. PREMIERS PAS EN JAVA
d. Les opérateurs :
Opérateurs de comparaison

typeVariable nomVariable;
nomVariable = uneValeur;

L’affectation écrit dans l’emplacement mémoire associé à


nomVariable la valeur uneValeur

38

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


2. PREMIERS PAS EN JAVA
d. Les opérateurs :
Opérateurs de comparaison
Variable finale :
Variable ne pouvant être affectée qu'une seule fois : Constante

final int x=4; final int x=4;


y=x+3; x=3;

39

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


2. PREMIERS PAS EN JAVA
d. Les opérateurs :
Opérateurs de comparaison

La conversion (= transtypage) d’un type primitif en un autre se fait


de la manière suivante :
typeVariableA variableA=(typeVariableA)valeurB;

40

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


2. PREMIERS PAS EN JAVA
d. Les opérateurs :
Opérateur d’affectation combinée (ou d'assignation)
permettent de simplifier des opérations: ajouter une valeur dans
une variable et stocker le résultat dans la variable , …

var = var op expr;



var op= expr;
On trouve des raccourcis pour tous les opérateurs arithmétiques
binaires : «+=», «-=», «*=», «/=», «%=»

41

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


2. PREMIERS PAS EN JAVA
d. Les opérateurs :
Opérateur d’affectation combinée (ou d'assignation)

i = 3; i+= 12; /* i =15 */


i = 3; i-= 7; /* i =-4 (i de type int)*/
i = 3; i *= 4; /* i =12
i = 3; i/= 2;
i = 3; i%= 2;

42

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


2. PREMIERS PAS EN JAVA
d. Les opérateurs :
Opérateurs d’incrémentation et de décrémentation
opérateurs qui ajoutent 1 à l’opérande («++») ou qui retranchent
1 de l’opérande («--»)

var = var +1;  var ++;


var = var -1;  var --;

43

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


2. PREMIERS PAS EN JAVA
d. Les opérateurs :
Opérateurs d’incrémentation et de décrémentation
Le suffixe:
Post-incrémentation var ++;
Post-décrémentation var --;
Le préfixe:
Pré-incrémentation ++var;
Pré-décrémentation --var;

a = i ++; a = i --; a = --i; a = ++ i;


   
a =i ; a =i ; i=i- i=i-1; a =i i=i+1; a =i
i=i+1; 1; ; ; 44

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


2. PREMIERS PAS EN JAVA
d. Les opérateurs :
Opérateurs d’incrémentation et de décrémentation

i =3; i =3;
a = i ++; a = ++i;

i =3; i =3;
a = i --; a = --i;

45

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


2. PREMIERS PAS EN JAVA
e. Les entrées/sorties :
Une entrée/sortie : un échange de données entre le programme et
une autre source (la mémoire, un fichier, le programme lui-même…)
toutes les entrées/sorties sont gérés par des flux (= streams)
-Lecture du clavier
-Affichage sur la console
-Lecture/écriture dans un fichier

Un flux est une série d’informations envoyée sur un canal de


communication entre deux entités

46

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


2. PREMIERS PAS EN JAVA
e. Les entrées/sorties :
Dans un système d’exploitation, il existe trois flux standards:
•entre l’application et l’écran pour transmettre une information
(System.out)
•entre l’application et l’écran pour indiquer une erreur (System.err)
•entre le clavier et l’application (System.in)

Le package java.io fournit un mécanisme d’entrée/sortie au


moyen de flux de données, de caractères, d’objets

47

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


2. PREMIERS PAS EN JAVA
e. Les entrées/sorties :
Les sorties :
Ecrire des messages dans l’écran

System.out.println(“Bienvenue”);

int x=3,y=5;
int z=x+y;
System.out.println(“x+y=“+z);

48

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


2. PREMIERS PAS EN JAVA
e. Les entrées/sorties :
Les sorties :
Séquences d’échappement :
 « Bonjour, je suis une apostrophe : ’»
System.out.println("Bonjour, je suis une apostrophe : \’");
 « Bonjour, je suis un guillemet : " »
System.out.println("Bonjour, je suis un guillemet : \"");
 « Bonjour, je suis un antislash : \ »
System.out.println("Bonjour, je suis un antislash: \\");
 Le message « Une nouvelle ligne va me suivre » et revient à la ligne
System.out.println("Une nouvelle ligne va me suivre \n");
 Le message « Entre moi » suivie d’une tabulation, suivie du message
« et lui, il y a une tabulation », puis suivie d’une nouvelle ligne 49

A. HALLOU
System.out.println("Entre moi \t et lui, il y a une tabulation \n GI19
PROGRAMMATION ORIENTÉE OBJET EN JAVA
");
2. PREMIERS PAS EN JAVA
f. Les entrées/sorties :
Les entrées :
Lire une variable ou expression insérée par l’utilisateur
-Instancier tout d’abord un objet Scanner :

import java.util.Scanner;
Scanner scan = new Scanner(System.in);
System.out.println(“Veuillez entrez votre age ");
int age= scan.nextInt();
System.out.println(“vous avez " + age +” ans”);

50

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


2. PREMIERS PAS EN JAVA
f. Les entrées/sorties :
Les entrées :
Lire une variable ou expression insérée par l’utilisateur

int i = scan.nextInt();
double d = scan.nextDouble();
long l = scan.nextLong();
byte b = scan.nextByte();

System.out.println(“Veuillez entrez votre nom ");


String nom= scan.nextLine();
System.out.println(“Bonjour " + nom);

51

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


2. PREMIERS PAS EN JAVA
g. Les structures de contrôle :
-servent à orienter l’exécution du programme
-conditionnent l’exécution des instructions à la valeur courante d’une
expression
•Exécution conditionnelle d’un fragment de code si une certaine
condition est vérifiée : tests ou structures alternatives
•Exécution répétitive d’un fragment du code si une certaine condition
est vérifiée : boucles ou structures répétitives
Les conditions de contrôle sont des expressions logiques booléennes

52

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


2. PREMIERS PAS EN JAVA
g. Les structures de contrôle :
Les structures alternatives :
•L’instruction if … else
Exécuter une instruction ou un bloc d’instructions si une condition est
vérifiée
Syntaxe :
if(expression)
if (expression) instruction instruction1
else
instruction2

53

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


2. PREMIERS PAS EN JAVA
g. Les structures de contrôle :
Les structures alternatives :
•L’instruction if … else
Les instructions if-else peuvent être imbriquées l'une dans l'autre
Les accolades déterminent le bloc d’instructions qui dépend du if ou
du else: si la condition est vraie toutes les instructions du bloc sont
exécutées
if(condition1)
{
if(condition2) instruction1;
instruction2;
}
else
instruction3;
instruction4; 54

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


2. PREMIERS PAS EN JAVA
g. Les structures de contrôle :
Les structures alternatives :
•L’instruction if … else
Les instructions if-else peuvent être imbriquées l'une dans l'autre
Lorsque le bloc d’instructions qui dépend d’un if ou d’un else se
compose d’une seule instruction, il est possible d’omettre les accolades
Le else se rapporte toujours au premier if le précédant

if(condition1)
{ if(condition1)
if(condition2) instruction1; if(condition2) instruction1;
} else instruction2;
else instruction2; instruction3;
instruction3; 55

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


2. PREMIERS PAS EN JAVA
g. Les structures de contrôle :
Les structures alternatives :
•La condition ternaire
condition ? expression1: expression2
Cette expression est équivalente à :

if(condition)
expression1
else
expression2

56

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


2. PREMIERS PAS EN JAVA
g. Les structures de contrôle :
Les structures alternatives :
•La condition ternaire

if(a > b)
max = b;
max = a;
if(a > b)
else
max = a;
max = b ;

max = (a >b) ? a : b ;

57

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


2. PREMIERS PAS EN JAVA
g. Les structures de contrôle :
Les structures alternatives :
•L’instruction switch
« un programme qui permet d’afficher, selon l’entier entré par
l’utilisateur, le jour de la semaine correspondant.
1 lundi, … , 7 dimanche , >7 erreur »
-L'écriture de ce raisonnement en une suite d'instructions if-else est,
quoique faisable, gênante.
On utilise l’instruction d’aiguillage switch

58

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


2. PREMIERS PAS EN JAVA
g. Les structures de contrôle :
Les structures alternatives :
•L’instruction switch
réalise un aiguillage vers différentes instructions en fonction de la
valeur d’une expression de contrôle (le sélecteur)
Syntaxe : nécessairement une valeur entière ou chaîne de
caractères

switch (expression){
case expression1: instructions
case expression2: instructions

default : instructions
} 59

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


2. PREMIERS PAS EN JAVA
g. Les structures de contrôle :
Les structures alternatives :
•L’instruction switch
Les instructions de chaque case ne sont pas des instructions
composées. Il n’y a pas d’accolades
L’instruction break provoque la sortie immédiate du switch
Il est plus que conseillé d’utiliser systématiquement break; à la fin de
chaque séquence d’instruction

60

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


2. PREMIERS PAS EN JAVA
g. Les structures de contrôle :
Les structures alternatives :
•L’instruction switch
switch(choix)
{
case 1 : System.out.print("le jour correspondant est : ");
System.out.println(" Lundi \n");
case 2 : System.out.print(" le jour correspondant est : ");
System.out.println("mardi \n");

case 7 : System.out.print(" le jour correspondant est : ");
System.out.print("dimanche \n");
default : System.out.println("erreur \n");
}

61

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


2. PREMIERS PAS EN JAVA
g. Les structures de contrôle :
Les structures alternatives :
•L’instruction switch
switch(choix)
{
case 1 : System.out.print("le jour correspondant est : ");
System.out.println(" Lundi \n"); break;
case 2 : System.out.print(" le jour correspondant est : ");
System.out.println("mardi \n"); break;

case 7 : System.out.print(" le jour correspondant est : ");
System.out.print("dimanche \n"); break;
default : System.out.println("erreur \n");
}

62

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


2. PREMIERS PAS EN JAVA
g. Les structures de contrôle :
Les structures répétitives :
•L’instruction while :
permet l'exécution répétée d'une instruction ou d'un bloc d'instructions
tant qu'une certaine condition est vraie.
Syntaxe :

while(expression)
instruction

Tant que l’expression est vraie, on exécute l’instruction ou le bloc


d’instructions (entre accolades)
Si l’expression est dès le début fausse, l’instruction n’est jamais
effectuée. 63

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


2. PREMIERS PAS EN JAVA
g. Les structures de contrôle :
Les structures répétitives :
•L’instruction while :

int i=1;
int i=1;
while(i<10){
while(i<10){
System.out.println("à l'intérieur ");
System.out.println ("à l'intérieur");
i++;
}
}
System.out.println("à l'extérieur");
System.out.println("à l'extérieur");
Boucle
Boucle
infinie
limitée

64

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


2. PREMIERS PAS EN JAVA
g. Les structures de contrôle :
Les structures répétitives :
•L’instruction do … while( ) :
presque identique à l'instruction while.
Sauf que la condition est testée après avoir exécuté l'instruction ou le
bloc d'instructions annexe
Syntaxe :
do{
instructions
} while(expression);

L’instruction est d’abord exécutée, puis l’expression est évaluée. Si


elle est vraie, on reboucle sur l’exécution de l’instruction
L’instruction est toujours exécutée au moins une fois 65

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


2. PREMIERS PAS EN JAVA
g. Les structures de contrôle :
Les structures répétitives :
•L’instruction do … while( ) :

int i=1; int i=1;


while(i<10){ do{
System.out.println("à l'intérieur "); System.out.println("à l'intérieur ");
i++; i++;
} } while(i<10);
System.out.println("à l'extérieur"); System.out.println("à l'extérieur");

66

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


2. PREMIERS PAS EN JAVA
g. Les structures de contrôle :
Les structures répétitives :
•L’instruction for :
permet l'exécution répétitive d'une instruction ou d'un bloc d'instructions
un nombre bien déterminé de fois et cela, grâce à un compteur.
Syntaxe : expr1: initialisation
expr2: la boucle est effectuée tant
for (expr1;expr2; expr3) que cette condition est vraie
instructions; expr3: ce qu’il faut faire à chaque
fin de boucle (la mise à jour)

expr1 ne s'effectue qu'une seule et unique fois durant tout le passage


par la boucle for et cela au tout début 67

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


2. PREMIERS PAS EN JAVA
g. Les structures de contrôle :
Les structures répétitives :
•L’instruction for :
expr1;
for (expr1; expr2; expr3) équivalent while (expr2){
instructions instructions
expr3;
}

int i=1;
int i;
while(i<10){
for ( i=1;i<10;i++){
System.out.println("à l'intérieur ");
System.out.println("à l'intérieur ");
i++;
}
}
System.out.println("à l'extérieur");
System.out.println("à l'extérieur");
68

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


2. PREMIERS PAS EN JAVA
g. Les structures de contrôle :
Les structures répétitives :
•L’instruction for :

for ( ; ; )
System.out.print("Je suis une boucle infinie \n ");
Boucle infinie

for (i=2, j=4; i<5 && j>2; i++, j--)


System.out.print("i="+i+" et j="+j+"\n");

69

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


2. PREMIERS PAS EN JAVA
g. Les structures de contrôle :
Les structures répétitives :
•L’instruction break :
- permet de quitter la boucle la plus interne, ou bien la case dans
lesquels elle se trouve
- On ne sort que d’un seul niveau
- Elle n’a de sens que si utilisée avec les boucles while, switch, do-while
et for
Syntaxe :
break;

70

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


2. PREMIERS PAS EN JAVA
g. Les structures de contrôle :
Les structures répétitives :
•L’instruction continue :
- sauter l’itération courante de la boucle la plus interne, dans laquelle
elle se trouve, et à passer à l’itération suivante sans effectuer les
interactions restantes du passage actuel
Syntaxe :
continue;

71

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


2. PREMIERS PAS EN JAVA
Exercice 1 :
Écrire un programme en Java demandant à l’utilisateur
de deviner une lettre. L’utilisateur a le droit d’essayer
jusqu’à trouver la bonne réponse.
La bonne réponse est ‘a’ ou ‘A’.
Exercice 2 :
Ecrire un programme en Java qui permet à l’utilisateur
de saisir des caractères jusqu’à ce qu’il choisit de
s’arrêter. Le programme affiche à la fin le nombre de
lettres ‘e’ insérés.
Exercice 3 :
Écrire un programme en Java où l’utilisateur saisit un
entier n. Le programme devra calculer et afficher n!. 72

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


3. LES TABLEAUX
Un tableau :
un ensemble d'éléments de même type désigné par un identificateur
unique
chaque élément est repéré par un "indice" précisant sa position au
sein de l'ensemble (le premier élément est d’indice 0)

73

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


3. LES TABLEAUX
Un tableau :
a) Tableaux d’une dimension :
Déclaration :
Type_tableau nom_du_tableau [ ] = new Type_tableau[taille];
Type_tableau[ ] nom_du_tableau = new Type_tableau[taille];
int tableauEntier[] = new int[8];
//Ou
int[] tableauEntier2 = new int[8];

? ? ? ? ? ? ? ?

indice 0 1 2 3 4 5 6 7

74

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


3. LES TABLEAUX
Un tableau :
a) Tableaux d’une dimension :
Accès aux éléments :
Chaque élément est accédé par l’intermédiaire d’un indice (un entier)

identificateur[indice_tableau]

75

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


3. LES TABLEAUX
Un tableau :
a) Tableaux d’une dimension :
Initialisation d’un tableau :
Déclaration et initialisation d'un tableau avec définition implicite de
taille:
•int[] table1 = {17,-9,4,3,57};
•char[] table2 = {'a','j','k','m','z'};
•float[] table3 = {-15.7f,75,-22.03f,3,57};

Java initialise les tableaux par défaut à 0 pour les int, byte,…

76

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


3. LES TABLEAUX
Un tableau :
a) Tableaux d’une dimension :
Initialisation d’un tableau :
On peut initialiser un tableau en utilisant une boucle :
int i;
int tab[]=new int[5];
for (i=0; i<5; i++)
tab[i]=3*i-1;

char[] table2 = new char[7];


for (int i = 0 ; i<= table2.length-1; i++)
table2[i] =(char)('a'+i);
77

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


3. LES TABLEAUX
Un tableau :
a) Tableaux d’une dimension :
Taille d’un tableau :
la taille d'un tableau quelque soit son type, peut être obtenue par
l’attribut length
int[ ] table1 = {17,-9,4,3,57};
int taille;
taille = table1.length;

Le premier élément d'un tableau est numéroté 0, le dernier length-1

char[] table2 = new char[7];


for (int i = 0 ; i<= table2.length-1; i++)
table2[i] =(char)('a'+i); 78

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


3. LES TABLEAUX
Un tableau :
a) Tableaux d’une dimension :
tableau de caractères :
On peut utiliser la méthode println pour un tableau de caractères

char[] tableau= new char[2];


tableau[0] = 'h';
tableau[1] = 'a';
System.out.println(tableau);

79

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


3. LES TABLEAUX
Un tableau :
a) Tableaux d’une dimension :
Exercice :
réaliser un programme qui permet de déterminer, à partir de vingt
notes d'élèves (fournies en données), combien d'entre elles sont
supérieures à la moyenne de la classe.

80

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


3. LES TABLEAUX
Un tableau :
b) Tableaux à n dimensions :
Tableau à deux dimensions :

int[][] table= new int[2][3];//deux lignes de dimension 3 chacune

for(int i = 0;i<2;i++)
table[1][i] = 3*i-1;

// dans une instruction de boucles imbriquées:


for(int i=0;i<2;i++)
for(int k=0;k<3;k++)
table[i][k]=i+k;
81

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


3. LES TABLEAUX
Un tableau :
b) Tableaux à n dimensions :
Tableau à deux dimensions :

la taille du tableau :

int[][] table = new int[2][3];


int taille;
taille = table.length; // taille = 2 (nombre de lignes)
taille = table[0].length; // taille = 3 (nombre de colonnes)
taille = table[1].length; // taille = 3 (nombre de colonnes)

82

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


4. LES FONCTIONS
La programmation procédurale :
apparue vers 1970.
appliquer la méthode "Diviser pour régner", et décomposer le
problème en sous-problèmes plus simples
écrire un programme qui résout un problème revient toujours à
écrire des sous-programmes qui résolvent des sous parties du
problème initial
Factoriser une suite d’instructions souvent répétées en
procédure ou fonction que l’on peut appeler autant de fois que l’on
veut

83

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


4. LES FONCTIONS
La programmation procédurale :
 Les fonctions : réalisent des traitements en se servant des valeurs de
certaines variables et renvoient un résultat (comme des fonctions
mathématiques : y=f(x, y,. . . ))
 Les procédures : réalisent seulement des traitements mais ne renvoies
aucun résultat
En Java : pas de différence entre fonctions et procédures
 fonctions censées renvoyer une valeur d’un type spécifié ou ne rien
envoyer

84

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


4. LES FONCTIONS
•Une fonction= un sous-programme qui permet d'effectuer un ensemble
d'instructions par simple appel de la fonction dans le corps du
programme principal
•Les fonctions permettent d'exécuter dans plusieurs parties du
programme une série d'instructions
une simplicité du code
une taille de programme minimale

85

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


4. LES FONCTIONS
•Une fonction = un bloc d’instructions ayant :
•Un type pour les valeurs qu’elle retourne (type du résultat)
•Un nom (nom de la fonction)
•Une liste de paramètres typés, entre parenthèses (paramètres)

Paramètres Fonction Résultat


NomFonction

86

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


4. LES FONCTIONS
•Définition de fonction :
public static void nom_fonction( ){ corps }
public static void nom_fonction(arguments){corps }
public static type_retour nom_fonction( ){corps}
public static type_retour nom_fonction(arguments){corps}

Il est interdit de définir des fonctions à l’intérieur


d’une autre fonction

87

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


4. LES FONCTIONS
•Définition de fonction :
public static void nom_fonction(arguments){corps }
public static type_retour nom_fonction(arguments){corps}

Arguments ou paramètres de la fonction :


type1 arg1, . . ., typen argn définissent les types et les noms des
paramètres de la fonction
La liste d’arguments (éventuellement vide) et le nom de la fonction,
constitue ce que l’on appelle la signature de la fonction

88

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


4. LES FONCTIONS
•Définition de fonction :

public static int Pair(int x) public static void Affiche()


{ {
if (x%2 == 0) System.out.println("Bonjour");
return 1; }
else

return 0;
}

89

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


4. LES FONCTIONS
•Définition de fonction :
L’instruction return :
permet la terminaison anticipée de la fonction
 Peut exister en plusieurs exemplaires

public static int ValeurAbsolue ( int X ){


if (X > =0 ) return X;
else
return – X;
System.out.println("ce message ne sera pas affiché");
}

90

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


4. LES FONCTIONS
•Définition de fonction :
L’instruction return :
permet la terminaison anticipée de la fonction
L’exécution de cette commande a deux effets :
1. fixe la valeur de retour ;
2. termine l’exécution de la fonction

91

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


4. LES FONCTIONS
•Définition de fonction :
L’instruction return :
Une fonction peut très bien renvoyer un tableau. Il suffit pour cela
qu’elle le déclare comme type de retour

public static double[] creerTableau(int taille, double valeur) {


double [] t= new double [taille]; // création du tableau
for (int i= 0; i < taille; i++)
t[i]= valeur;
return t;
}

92

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


4. LES FONCTIONS
•Appel de fonction :
On appelle une fonction en donnant son nom, suivi de la valeur des
paramètres de l’appel, dans l’ordre de définition
nom_fonction(arguments);
nom_fonction( );

Une fonction peut-être appelée plusieurs fois dans la fonction main ou


dans une autre fonction

93

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


4. LES FONCTIONS
•Appel de fonction :
public static int ValeurAbsolue ( int X ) {
int valeur;
if (X >=0 )
valeur = X;
else
valeur = - X;
return valeur;
}
public static void main (String[] args)
{
int val1;
val1 = ValeurAbsolue (3);
System.out.println("la valeur absolue est : "+val1);94
A. HALLOU } PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19
4. LES FONCTIONS
•Appel de fonction :
Le passage de paramètre se fait par valeur.
Le paramètre est une variable créée lors de l’appel de la fonction,
qui reçoit une copie de la valeur qu’on lui passe
Une modification d’un paramètre ne modifie pas a priori la variable
correspondante du programme principal

95

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


4. LES FONCTIONS
•La récursivité :
- Une fonction peut s'appeler elle-même: on dit que c'est une fonction
récursive
 Toute fonction récursive doit posséder un cas limite (cas trivial) qui
arrête la récursivité

public static int fact (int n ){


if (n==0) /*cas trivial*/
return (1);
else
return (n* fact(n-1) );
}

96

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


4. LES FONCTIONS
•La surcharge des fonctions :
donner le même nom à deux fonctions différentes, à condition que les
signatures soient différentes

void afficher(int)
Type de retourNom Paramètre

La signature de la fonction
-Pour avoir deux fonctions avec le même nom, on peut changer :
- le nombre des paramètres
- le type de chacun de ces paramètres

97

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


4. LES FONCTIONS
•Passage de tableaux en argument :
Pour un tableau passé en paramètre, java passe la référence du
tableau (son adresse, en fait).
le tableau d’origine et celui vu par la procédure occupent le même
espace mémoire

public static void afficherTableau(int t[]) {


for (int i=0;i<t.length;i++) {
System.out.println(t[i]);
}
}

98

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


4. LES FONCTIONS
•Variables locales et globales :
On peut déclarer une variable soit
 Dans un bloc d’instruction : variable locale
 En dehors d’un bloc d’instruction, dans une classe: variable globale

99

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


4. LES FONCTIONS
•Variables locales et globales :
 Variable locale
Une variable déclarée à l’intérieur du corps d’une fonction ou d’un
bloc d’instruction n’est visible qu’à l’intérieur du corps du bloc. Elle est
créée à l'appel du bloc et détruite à la fin de son exécution

void f( ){
int i =4; // une première variable locale i }
void g( ){
int i=3;// une autre, différente de la première }
main( ){
i=5; // ici, on ne voit ni l’une ni l’autre : erreur
f ( );
g( );}
100

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


4. LES FONCTIONS
•Variables locales et globales :
 Variable globale
Une variable déclarée en dehors du corps d’une fonction est visible de
toutes les fonctions de la classe dans lequel elle est déclarée

static int i; // variable visible dans tout le fichier


void f( ){
i=4; } // On la voit et on l’utilise ici
void g( ){
i=3; } // On la voit et on l’utilise ici
main( ){
i=5; // On la voit et on l’utilise ici
f ( );
g( );}
101

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


4. LES FONCTIONS
•Variables locales et globales :
 Variable globale
Lorsqu’une variable locale a le même nom qu’une variable globale,
celle-ci est masquée à l’intérieur du bloc ou la variable locale est
définie
static int i; // variable visible dans tout le fichier
void f( ){
int i; // la variable locale masque la variable globale
i=4; // Ici, on utilise donc la variable locale
}
main( ){
i=5; // On la voit et on l’utilise ici
f ( );
g( );}
102

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


4. LES FONCTIONS
Exercices :
1) Ecrire une fonction max permettant de retourner le max de deux
réels
2) Ecrire une fonction fact permettant de retourner le factoriel d’un
entier donné
3) Ecrire une fonction contenu permettant d’afficher le contenu d’un
tableau d’entiers passé en paramètre. La taille du tableau est aussi
passé en paramètre de la fonction
4) Ecrire une fonction max3 permettant de retourner le max de trois
réels en faisant appel à la fonction max écrite dans l’exercice
précédent
5) Ecrire une fonction max2 qui demande à l’utilisateur de saisir trois
réels et qui affiche leur max
103

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


4. LES FONCTIONS
Exercices :
6) Ecrire un programme qui demande à l’utilisateur de saisir le
nombre de notes à saisir, saisi ces notes, incrémente les valeurs
saisies et les affiche
7) Ecrire une fonction chercherMotif qui permet de chercher un entier
dans un tableau, elle retourne son indice si l’entier existe et -1 sinon
8) Ecrire une fonction minTab qui permet de chercher le plus petit
élément dans un tableau d’entier à partir d’une case donnée index
9) Ecrivez une fonction récursive qui calcule le terme n de la suite de
Fibonacci définie par : u1=U(0)=1; u2=U(1)=1
U(n)=U(n-1)+U(n-2) , n>2

104

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


Partie II : Programmation Orientée Objet

105

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


Partie II : Programmation Orientée Objet
PLAN
1. Introduction
2. Classes et Objets
3. Héritage
4. Associations entre les classes

106

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


1. INTRODUCTION

a) Le paradigme linéaire
Programme = suite d’instructions s’exécutant de façon linéaire, de
la première instruction du fichier source et ligne après ligne jusqu’à
la dernière instruction du programme

- simple à mettre en œuvre

- ne permet pas de développer de


grosses applications
- ne favorisent pas la réutilisation du code

107

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


1. INTRODUCTION

b) Le paradigme procédurale
Programme = suite d’instructions s’exécutant de façon linéaire,
ainsi qu’une série de fonctions (procédures) qui s’appellent entre
elles

- Facilite la maintenance d’un programme

-Dissocier les données des fonctions qui


les manipulent

108

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


1. INTRODUCTION

c) Le paradigme orienté objet


Programme = collection d’objets dissociés, identifiés et possédant
des caractéristiques
-améliorer la réutilisation des outils existants et favoriser la
spécialisation de ces mêmes outils
-une nouvelle entité, appelée objet, a été créée afin de regrouper
les fonctions et les données

109

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


1. INTRODUCTION

c) Le paradigme orienté objet


trois techniques fondamentales :
•L’encapsulation
•L’héritage
•Le polymorphisme

110

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


1. INTRODUCTION

c) Le paradigme orienté objet


trois techniques fondamentales :
•L’encapsulation : réunir au sein d’une même entité appelée classe
des données (variables) et des traitements (fonctions) et gérer les
droits d’accès à ces éléments
•L’héritage : réutiliser les classes existantes
•Le polymorphisme : permet à deux objets (appartenant à deux
classes différentes) de réagir différemment au même appel de
méthode

111

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


2. CLASSES ET OBJETS

L’Objet : un ensemble de données sur lesquelles des procédures


peuvent être appliquées (méthodes)
La Classe (famille d’objets) = la déclaration d’un type de donnée
qui permet de créer des objets (instances de classe)

112

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


2. CLASSES ET OBJETS

Nom Objet
Classe
Voiture V1: Voiture
marque
couleur Champs ou marque = M1
matricule attributs couleur = grise
matricule = 995
démarrer
arrêter démarrer
Méthodes arrêter

113

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


2. CLASSES ET OBJETS

L’Objet : se caractérise par :


• Un état : la combinaison de ses propriétés (attributs)
• Un comportement : ce qu'il est capable de réaliser, la manière
dont il réagira à des messages extérieurs, ... (méthodes)
Appeler une méthode d'un objet, on utilise le point pour séparer
l'objet de sa méthode :
objet.methode()
• Une identité : permet de différentier les objets dans un
programme.
114

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


2. CLASSES ET OBJETS

a) Exemple : Chaînes de caractères


String = une suite ou une séquence de caractères
en Java un string est un objet
La classe String :
dispose de 11 constructeurs et plus de 40 méthodes pour examiner
les caractères d'une chaîne, comparer, chercher, extraire,…

115

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


2. CLASSES ET OBJETS

a) Exemple : Chaînes de caractères


Construction d'un String
String prenom = new String("Nada");
Ou
String prenom = "Nada";

116

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


2. CLASSES ET OBJETS

a) Exemple : Chaînes de caractères


Comparaison de strings :
str1.equals(str2)
Retourne true si str1 et str2 ont la même séquence de caractères,
false sinon
Ou
str1.compareTo(str2)
Retourne 0 si les deux chaînes sont égales, une valeur négative
si str1 est plus petit que str2, ou une valeur positive si str2 est plus
petit que str1
117

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


2. CLASSES ET OBJETS

a) Exemple : Chaînes de caractères


Concaténation :
String s3 = s1.concat(s2);
Ou
String s3 = s1 + s2;

118

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


2. CLASSES ET OBJETS

a) Exemple : Chaînes de caractères


Longueur d'une chaîne de caractères :
length( );

String txt = "nouveau cas";


int n=txt.length( );
n=11

119

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


2. CLASSES ET OBJETS

a) Exemple : Chaînes de caractères


Extraction de caractères :
public String substring(int debut, int fin);
retourne un string qui débute au caractère à la position debut et
va jusqu'au caractère à la position fin -1

msg = "nouveau texte";


txt = msg.substring(0, 6);
Retourne la chaîne "nouveau"

120

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


2. CLASSES ET OBJETS

a) Exemple : Chaînes de caractères


Extraction de caractères :
public String substring(int debut);
retourne un string qui débute au caractère à la position debut et
va jusqu'au dernier caractère du string

msg = "nouveau texte";


txt = msg.substring(6);
Retourne la chaîne "u texte"

121

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


2. CLASSES ET OBJETS

a) Exemple : Chaînes de caractères


Extraction de caractères :
public String substring(int debut);
retourne un string qui débute au caractère à la position debut et
va jusqu'au dernier caractère du string

msg = "nouveau texte";


txt = msg.substring(6);
Retourne la chaîne "u texte"

122

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


2. CLASSES ET OBJETS

a) Exemple : Chaînes de caractères


Extraction de caractères :
charAt(index);

msg = "nouveau texte";


char c= msg.charAt(1);
Retourne le caractère ‘o’
. Le paramètre index peut avoir une valeur comprise entre 0
et msg.length() - 1

123

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


2. CLASSES ET OBJETS

a) Exemple : Chaînes de caractères


Conversions diverses :
•Les méthodes toLowerCase et toUpperCase : obtenir une chaîne
respectivement en minuscules et en majuscules.
•La méthode trim : obtenir une nouvelle chaîne sans espaces au
début ou à la fin
•La méthode replace(oldChar, newChar) : remplacer tous les
caractères oldChar d'une chaîne par des caractères newChar.

124

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


2. CLASSES ET OBJETS

a) Exemple : Chaînes de caractères


StringBuilder :

String s1 = "Bonjour" ;
String s2 = "le monde !" ;
StringBuilder sb = new StringBuilder() ;
sb.append(s1).append(" ").append(s2) ;
String s3 = sb.toString() ;

125

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


2. CLASSES ET OBJETS

b) Créer une classe :


un objet est une instance d’une classe : la matérialisation concrète
d'une classe
Une classe sert à définir un modèle d'objets
Une fois qu’on créé une classe, on peut créer autant d’objets du
même type que l’on veut

126

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


2. CLASSES ET OBJETS

b) Créer une classe :

class Voiture{
//définition de la classe
}

Par convention :
-Le nom des classes commence par une majuscule

127

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


2. CLASSES ET OBJETS

b) Créer une classe :


Une classe est définie par :
•des attributs : variables contenant les caractéristiques des objets
du modèle
•des méthodes : fonctions permettant de manipuler les objets
modélisés
•quelquefois des classes internes

128

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


2. CLASSES ET OBJETS

b) Créer une classe :

class Voiture {
//Attributs
String marque, couleur;
int matricule;
//Méthodes
boolean demarrer(){
System.out.println("voiture démarrée");
return true;}
void arreter(){
System.out.println("voiture arrétée"); }
}
129

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


2. CLASSES ET OBJETS

c) Créer un objet :

public class Main {


public static void main(String[] args) {
Voiture v1=new Voiture();
v1.couleur="blanc";
v1.matricule=2;
System.out.println(v1.couleur + " " +v1.matricule);
}
}

130

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


3. CLASSES ET OBJETS

d) Encapsulation et droits d’accès :


chaque attribut et chaque méthode d'une classe peut posséder
son propre droit d'accès :
-public : accessible à tous, peut être appelé depuis l'extérieur de
la classe
-private : accessible uniquement aux fonctions membres de la
même classe
- pas de mot-clé : accessible par toutes les classes du package
-protected (voir plus loin)

131

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


3. CLASSES ET OBJETS

d) Encapsulation et droits d’accès :


A x = new A( );
class A{
private int a; -Les fonctions f et h auront accès
private void f(); à a, c, f et h
- x.a et x.f() seront interdits à
public char c; l’extérieur de la classe A
- x.c sera toujours possible
void h(); - x.h sera possible uniquement
} dans les classes du même
package que la classe A

132

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


3. CLASSES ET OBJETS

d) Encapsulation et droits d’accès :


Encapsulation : réunir au sein d’une classe des données (attributs)
et des traitements (méthodes), en plus d’un système de protection :
cacher le fonctionnement interne d’une classe et ainsi éviter que
les objets de cette classe soient utilisés de façon non conforme
tous les attributs d'une classe doivent toujours être privés
afin de contrôler les modifications des variables de classe

133

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


3. CLASSES ET OBJETS

d) Encapsulation et droits d’accès :


chaque classe peut posséder son propre droit d'accès :
-public : peut être instanciée par n’importe quelle autre classe
-pas de mot-clé : instanciable uniquement dans les classes du
même package

134

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


3. CLASSES ET OBJETS

e) Accesseurs et mutateurs :
pour pouvoir manipuler les attributs déclarés « private » d’une
classe, il faut prévoir des méthodes spéciales ayant le droit d’accès
«public », permettant de manipuler ces données :
des accesseurs (getters) permettant d'accéder aux attributs
des mutateurs (setters) permettant de modifier les attributs

135

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


3. CLASSES ET OBJETS

e) Accesseurs et mutateurs :
* Les accesseurs (getters) :
Un accesseur = une méthode permettant de récupérer le contenu
d'un attribut protégé.
-Son type de retour est le type de la variable à renvoyer
-ne possède aucun argument

Convention :
-commencer le nom de l'accesseur par le préfixe get

136

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


3. CLASSES ET OBJETS

e) Accesseurs et mutateurs :
* Les accesseurs (getters) :
class Voiture {
private String marque, couleur;
private int matricule;

boolean demarrer(){ String getMarque(){


System.out.println("voiture return marque;}
démarrée"); String getCouleur() {
return true;} return couleur;}
void arreter(){ int getMatricule() {
System.out.println("voiture return matricule;}
arrétée"); } }
137

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


3. CLASSES ET OBJETS

e) Accesseurs et mutateurs :
* Les mutateurs (setters) :
Un mutateur = une méthode permettant de modifier le contenu
d'un attribut protégé. (Contrôler les valeurs données aux attributs
)
-A comme paramètre la valeur à assigner à l’attribut (donc du
type de l’attribut)
-Ne renvoie pas de valeur

Convention :
commencer le nom du mutateur par le préfixe set
138

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


3. CLASSES ET OBJETS

e) Accesseurs et mutateurs : String getMarque(){


* Les mutateurs (setters) : return marque;}
String getCouleur() {
class Voiture { return couleur;}
private String marque, couleur; int getMatricule() {
private int matricule; return matricule;}

boolean demarrer(){ void setMarque(String m){


System.out.println("voiture marque= m;}
démarrée"); void setCouleur(String c) {
return true;} couleur= c;}
void arreter(){ void setMatricule(int mat) {
System.out.println("voiture matricule = mat;} 139
arrétée"); } }
A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19
3. CLASSES ET OBJETS

f) Constructeurs d’une classe :


méthodes permettant de contrôler l’initialisation des objets d’une
classe
Un constructeur d’une classe : une méthode appelée
automatiquement à chaque fois que l'on crée un objet basé sur
cette classe
- Son nom est le même que celui de la classe
- Elle ne retourne rien et ne spécifie pas de type de retour (pas
même void)
- Elle ne peut être appelée explicitement

140

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


3. CLASSES ET OBJETS

f) Constructeurs d’une classe :


méthodes permettant de contrôler l’initialisation des objets d’une
classe
Un constructeur d’une classe :
Permet de signaler à la machine virtuelle JVM qu’il faut réserver
de la mémoire pour l’objet de la classe, et donc pour tous ses
attributs

141

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


3. CLASSES ET OBJETS

f) Constructeurs d’une classe :

class Voiture {
private String marque, couleur;
private int matricule;

Voiture(){
//initialisation des attributs
marque="";
couleur = "noire";
matricule =0;
}
} 142

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


3. CLASSES ET OBJETS

f) Constructeurs d’une classe :


Appel (automatique) du constructeur :
- Si un constructeur est déclaré
dans la classe Voiture, celui-ci est
appelé automatiquement
Sinon, un constructeur par défaut
(à voir plus loin) est appelé par
public static void main(String[] args) le compilateur
{
Voiture v=new Voiture();
//
} 143

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


3. CLASSES ET OBJETS

f) Constructeurs d’une classe :


On peut surcharger le constructeur :
Voiture(String _marque){
//initialisation des attributs
marque= _marque;
couleur = "noire";
matricule =0;}
public static void main(String[] args){
Et donc on peut instancier un
objet de la classe Voiture de Voiture v1=new Voiture();
deux manières différentes : Voiture v2=new Voiture("M1");144
A. HALLOU } ORIENTÉE OBJET EN JAVA
PROGRAMMATION GI19
3. CLASSES ET OBJETS

f) Constructeurs d’une classe :

Et donc on peut instancier un public static void main(String[] args){


objet de la classe Voiture de Voiture v1=new Voiture();
deux manières différentes : Voiture v2=new Voiture("M1");
}

v1 : {marque= " "; v2 : {marque= "M1";


couleur = "noire"; couleur = "noire";
matricule =0;} matricule =0;} 145

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


3. CLASSES ET OBJETS

f) Constructeurs d’une classe :


On peut surcharger le constructeur :

Voiture(String _marque, String _couleur, int _matricule){


//initialisation des attributs
marque= _marque;
couleur = _couleur;
matricule =_matricule;
}

146

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


3. CLASSES ET OBJETS

v1 : {marque= " ";


f) Constructeurs d’une classe : couleur = "noire";
matricule =0;}

public static void main(String[] args){


Voiture v1=new Voiture();
Voiture v2=new Voiture("M1");
Voiture v3=new Voiture("M2","bleue",168);
}
V3 : {marque= "M2";
v2 : {marque= "M1";
couleur = "bleue";
couleur = "noire";
matricule =168;}
147

A. HALLOU matricule =0;} PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


3. CLASSES ET OBJETS

g) Le mot-clé « this » :
= fait référence à l'objet courant (L’instance courante de la classe)
L'intérêt de this se fait sentir dans le cas suivant :
 Lorsque les attributs de l'objet sont masqués par des
déclarations qui utilisent les mêmes noms :

void setMarque(string marque) {


this.marque= marque;
}

148

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


3. CLASSES ET OBJETS

Exercice :
Ecrivez une classe Compte qui représente un compte de banque,
ayant comme attributs le numéro de compte, le nom et prénom de
son propriétaire et le solde du compte.
-Déclarez un constructeur qui initialise les informations du compte
-Ajoutez des méthodes pour retirer de l'argent, pour déposer de
l'argent et pour afficher le montant actuel.
Dans la fonction main, créez deux objets c1 et c2 de type
Compte, et faites des appels aux méthodes de Compte.

149

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


3. CLASSES ET OBJETS

Il y a trois grands types de variables dans une classe/objet


•Les variables d'instance : définissent les caractéristiques de l’objet
(Les attributs)
•Les variables de classe : communes à toutes les instances de la
classe (les attributs statiques)
•Les variables locales : variables déclarées et utilisées dans les
méthodes de la classe

150

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


3. CLASSES ET OBJETS

h) Membres statiques (ou membres de la classe) :


-Attribut statique :
attribut qui appartient à la classe et non pas aux objets instanciés
à partir de la classe
commun à toutes les instances de la classe

class Voiture{
public Voiture() {
… }
private static int nombre_voitures; 151

A. HALLOU } PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


3. CLASSES ET OBJETS

h) Membres statiques (ou membres de la classe) :


-Attribut statique :
Un attribut déclaré comme statique (et notamment publique) se
comporte comme une variable globale

System.out.println("Nombre de voitures ajoutees:"+


nombre_voitures");

152

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


3. CLASSES ET OBJETS

h) Membres statiques (ou membres de la classe) :


-Attribut statique : class Voiture {
//Attributs
private String marque, couleur;
private static int matr=0;
private int matricule;
//Méthodes
Voiture(){
matricule=++matr;}
Voiture(String couleur,String marque){
matricule=++matr;
this.marque=marque; 153

A. HALLOU this.couleur=couleur;}
PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19
3. CLASSES ET OBJETS

h) Membres statiques (ou membres de la classe) :


-Méthode statique :
méthode qui appartient à la classe et non aux objets instanciés à
partir de la classe
class Voiture {
private String marque, couleur;
private static int matr=0;
private int matricule;
static int nombre_voitures(){
return matr;}
} 154

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


3. CLASSES ET OBJETS

h) Membres statiques (ou membres de la classe) :


-Méthode statique :
ne peut pas accéder aux attributs d’un objet

155

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


3. CLASSES ET OBJETS

h) Membres statiques (ou membres de la classe) :


-Méthode statique :
On peut accéder à cette fonction (si elle est déclarée publique) de
partout

public static void main(String[] args) {


System.out.println(Voiture.nombre_voitures());
}

156

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


3. CLASSES ET OBJETS

Exercice :
Ecrivez une classe Date qui représente une date avec un(des)
constructeur(s) adéquat(s) et une méthode void afficher() qui
affiche la date à l'écran au format jj/mm/aaaa (ou équivalent).
Ecrivez une méthode Date lendemain() qui retourne la date du
lendemain.
NB : Vous pouvez utiliser des méthodes privées qui convertissent
une date en le nombre de jours depuis le 1er janvier de l'an 1, et
inversement.
On suppose que les mois de l'année ont tous 30 jours. Une année
a donc 360 jours. 157

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


4. HÉRITAGE

class Voiture { class Moto {


private String marque, couleur; private String marque, couleur;
private int matricule; private int matricule;

boolean demarrer(){ boolean demarrer(){


System.out.println("voiture System.out.println("moto
démarrée"); démarrée");
return true;} return true;}
void arreter(){ void arreter(){
System.out.println("voiture System.out.println("moto
arrétée"); } arrétée"); }

158

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


4. HÉRITAGE

Spécialiser Classe fille


Voiture
Véhicule

Classe Moto
Mère
Généraliser Classe fille

159

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


4. HÉRITAGE

L’héritage est une technique qui permet de créer une classe à


partir d'une autre classe qui lui sert de modèle, de base de départ
Il y a héritage quand on peut dire : "A est un B"

Exemples :
•"Un étudiant est une personne", ou "Un médecin est un personne"
La classe Etudiant hérite de Personne, La classe Médecin hérite
de Personne

•Une hirondelle est un oiseau  Hirondelle hérite d'Oiseau


•Un hibou est un oiseau  Hibou hérite d'Oiseau 160

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


4. HÉRITAGE

L’héritage est une technique qui permet de créer une classe à


partir d'une autre classe qui lui sert de modèle, de base de départ
personnaliser une classe existante de sorte qu’elle se conduise
de façon particulière en :
 lui ajoutant des fonctionnalités
 modifiant le comportement des méthodes déjà existantes
L’héritage ne modifie pas la classe de base : il construit une
sous-classe
éviter de réécrire un même code source plusieurs fois

161

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


4. HÉRITAGE

class Voiture extends Vehicule {


}
class Vehicule { Classe fille
private String marque, couleur;
private int matricule; Voiture

boolean demarrer(){
System.out.println("vehicule Moto
démarrée"); Généraliser
return true;} Classe fille
void arreter(){
class Moto extends Vehicule {
System.out.println("vehiculearr
}
été"); }

162

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


4. HÉRITAGE

• Instanciation d’une classe fille :

Si une classe fille ne possède pas de constructeur, alors son


instanciation déclenche le constructeur de sa classe mère (si
définie)

163

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


4. HÉRITAGE

• Instanciation d’une classe fille :


class Vehicule {
//Attributs
class Voiture extends Vehicule { private String marque,
} couleur;
private static int matr=0;
public static void main(String[] args){ private int matricule;
//Méthodes
Vehicule vh=new Vehicule( );
Vehicule(){
Voiture v=new Voiture( ); matricule=++matr;
} this.couleur="noire";}
}
Appel du constructeur de la classe mère

164

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


4. HÉRITAGE

• Instanciation d’une classe fille :

mot clé super : faire appel aux variables de la classe mère dans
les constructeurs des classes filles
récupérer les éléments de l'objet de base, et de les envoyer à
l’objet fils

165

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


4. HÉRITAGE

• Instanciation d’une classe fille :

class Vehicule {
class Voiture extends Vehicule { //Attributs
private int n_places; private String marque,
Voiture(){ couleur;
super(); private static int matr=0;
n_places=5; private int matricule;
} //Méthodes
} Vehicule(){
matricule=++matr;
Appel du constructeur de la classe
this.couleur="noire";}
mère
}

166

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


4. HÉRITAGE

•Attributs spécifiques à une classe fille :


On peut ajouter un ou plusieurs attributs à une classe fille

Bus

Voiture
Véhicule

Moto

167

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


4. HÉRITAGE

•Attributs spécifiques à une classe fille :


On peut ajouter un ou plusieurs attributs à une classe fille
class Vehicule {
private String marque, couleur;
class Bus extends Vehicule{ private int matricule;
int nombre_places; boolean demarrer(){
void avancer(){ System.out.println("vehicule
System.out.println("Le bus avance démarrée");
sur 8 roues"); return true;}
} void arreter(){
void capacite(){ System.out.println("vehicule
System.out.println("Nombre de arrété"); }
places : "+nombre_places); void avancer(){
} System.out.println("le vehicule 168
} avance"); }
A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19
4. HÉRITAGE

• Attributs spécifiques à une classe fille :


class Vehicule {
//Attributs
private String marque,
class Voiture extends Vehicule { couleur;
private int n_places; private static int matr=0;
Voiture(String marque){ private int matricule;
super(marque); //Méthodes
n_places=5; Vehicule(){
} matricule=++matr;
} this.couleur="noire";}
Vehicule(String marque){
Appel du constructeur de la classe mère matricule=++matr;
this.couleur="noire";
this.marque=marque} 169
}
A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19
4. HÉRITAGE

•Attributs spécifiques à une classe fille :


class Vehicule { class Voiture extends Vehicule {
private String marque, couleur; private String matricule;
private int matricule; void avancer(){
boolean demarrer(){ System.out.println("La voiture avance sur 4
System.out.println("vehicule roues");
démarrée"); }
return true;} }
void arreter(){
System.out.println("vehicule
arrété"); } le membre matricule défini dans Voiture
void avancer(){ remplace l’attribut matricule hérité de la
System.out.println("le classe Véhicule
vehicule avance"); } Mais, on peut accéder à l’attribut matricule
hérité (super.matricule) 170

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


4. HÉRITAGE

•Le droit d’accès « protected » :


Le droit d’accès « protected » signifie que les éléments ne seront
pas accessibles depuis l'extérieur de la classe, sauf si c'est une
classe fille
seules les méthodes et les variables déclarées public ou
protected peuvent être utilisées dans une classe héritée
En Java, réellement, un élément déclaré « protected » est
accessible uniquement aux sous-classes d'un autre package ou de
toute classe du même package

171

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


4. HÉRITAGE

•Le droit d’accès « protected » :


class Voiture extends Vehicule {
Voiture(){
System.out.println("La voiture avance sur 4 roues");
}
} class Vehicule {
//Attributs
protected String marque,
couleur;
private static int matr=0;
protected int matricule;
//Méthodes
Vehicule(){
matricule=++matr;
this.couleur="noire";} 172
}
A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19
4. HÉRITAGE

• Le polymorphisme :
permet à deux objets de deux classes différentes, de réagir
différemment au même appel de méthode
• Une méthode surchargée diffère de la méthode originale par le
nombre ou le type des paramètres qu'elle prend en entrée
• Une méthode polymorphe a un squelette identique à la méthode
de base, mais traite les choses différemment. Elle se trouve dans
une autre classe et donc, par extension, dans une autre instance
de cette autre classe.

173

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


4. HÉRITAGE
class Vehicule {
private String marque, couleur;
private int matricule;
• Le polymorphisme :
boolean demarrer(){
System.out.println("vehicule
démarrée");
return true;}
class Voiture extends Vehicule { void arreter(){
void avancer(){ System.out.println("vehicule
System.out.println("La voiture avance sur 4 arrété"); }
roues"); void avancer(){
}} System.out.println("le vehicule
class Moto extends Vehicule { avance"); }
void avancer(){
System.out.println("La moto avance sur 2
roues");
}}
174

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


4. HÉRITAGE

• Le polymorphisme :
Toutes les classes Java héritent des méthodes de la classe Object:
- equals() : prend un objet en paramètre et qui permet de tester
l'égalité d'objets
- toString(): retourne un String décrivant l'objet en question
- …

175

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


4. HÉRITAGE

• Le polymorphisme :
•Constructeur de copie

permet de créer une copie d’un objet


Voiture v=new Voiture();
Voiture v_copie=new Voiture(v);
v et v_copie sont deux instances différentes qui ont les mêmes
valeurs de leurs attributs

176

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


4. HÉRITAGE

• Le polymorphisme :
•Constructeur de copie

Java ne crée pas de constructeur de copie par défaut

Voiture(Voiture v){
marque=v.marque;
couleur=v.couleur;
matricule=v.matricule;
}

177

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


4. HÉRITAGE

• Le polymorphisme :
•La méthode toString()

La méthode toString() par défaut retourne la classe et la


référence de l’instance
On peut redéfinir cette méthode dans n’importe quelle classe :
public String toString() {
String s="***** Voiture ******"+"\nMarque "+marque;
s+="\nCouleur "+couleur;
s+="\nMatricule "+matricule+"\n*******\n";
return s;
} 178

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


4. HÉRITAGE

• Le polymorphisme :
•La méthode toString()

La méthode toString() peut être appelée de deux manières :

System.out.println(v.toString());

System.out.print(v);

179

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


4. HÉRITAGE

• Le polymorphisme :
•La méthode equals()

La méthode equals() par défaut détermine si l’objet qui appelle


la méthode est égal à l’objet qui est passé en argument.

Voiture v_copie=v; Voiture v_copie=new Voiture(v);


if(!v==v_copie)) if(!v.equals(v_copie))
System.out.print(false); System.out.print(false);
else else
System.out.print(true); System.out.print(true);
180

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


4. HÉRITAGE

• Le polymorphisme :
•La méthode equals()

La méthode equals() de la classe Object peut être redéfinie


dans n’importe quelle classe
public boolean equals(Object o) {
if(o==this) return true;
if(!(o instanceof Voiture)) return false;
Voiture v=(Voiture)o;
if(marque==v.marque && couleur==v.couleur &&
matricule==v.matricule)
return true;
181
return false;
A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19
4. HÉRITAGE

• Covariance des variables: (transtypage)


On peut affecter un élément enfant à un élément parent
public static void main(String[] args){
Vehicule vh=new Vehicule( );
Voiture v=new Voiture( );
vh=v;
}

 l’objet « vh » ne pourra accéder qu’aux attributs et méthodes


de «v» qui sont hérités de la classe Vehicule
182

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


4. HÉRITAGE

• Covariance des variables:


L'inverse est par contre faux !
public static void main(String[] args){
Vehicule vh=new Vehicule( );
Voiture v=new Voiture( );
v=vh;
}
Ceci plante et est strictement interdit
 Attention au sens de l'affectation
183

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


4. HÉRITAGE

• Covariance des variables:


public static void main(String[] args){
Vehicule vh=new Vehicule( );
Voiture v=new Voiture( );
Vehicule[] tableau=new Vehicule[5];
tableau[0]=vh;
tableau[1]=v;
for(int i=0;i<5;i++)
tableau[i].avancer();
}
184

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


4. HÉRITAGE

• Classe finale :
Une classe peut être définie « final » pour empêcher qu’elle soit
héritée! (classe immuable)

185

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


4. HÉRITAGE

Exercice
1. Créez une classe DateEvenement qui hérite de Date et associe à
une date donnée un événement (String) qui la caractérise. Ajoutez
des Constructeurs et les méthodes setEvenement, Equals, toString,
2. Créez une classe de base Article qui contient 2 champs, son
nom et son prix, ainsi que les constructeurs, accesseurs et mutateurs
3. Créez ensuite la classe ArticleEnSolde qui hérite d'Article et qui
contient en plus un champ remise. getPrix devra renvoyer le prix
en tenant compte de la remise

186

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


4. HÉRITAGE

•Héritage multiple : l’héritage multiple est interdit en Java!

Caméra
void demarreProjection() { ... } Caméscope

Magnétophone void enregistreFilm() {


demarreProjection();
void demarreEcoute() { ... }
demarreEcoute();
}
187

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


4. HÉRITAGE

•Héritage multiple :
la notion d’interface :
un ensemble de spécifications de méthodes (sans données).

-Lorsqu’une classe "implémente" une interface, elle doit fournir


effectivement les méthodes correspondantes.
-Une classe peut implémenter autant d’interfaces qu’elle le
souhaite, indépendamment de la notion d’héritage.

188

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


4. HÉRITAGE

•Classe abstraite :
Une classe qui ne peut pas être instanciée
Sert à définir des Superclasses
abstract class Animal{ }
permet de définir des méthodes abstraites qui n'ont pas de
corps
abstract void crier();
Le corps sera défini au niveau des classes filles ^^
une méthode abstraite ne peut exister que dans une classe
abstraite
189

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


4. HÉRITAGE

•Classe abstraite :
abstract class Animal{
abstract void crier();}
class Chien extends Animal {
void crier(){
System.out.println("Le chien aboie");}
}

class Chat extends Animal {


void crier(){ public static void main(String args[]){
System.out.println("Le chat miaule");} Animal chat = new Chat();
} Animal chien = new Chien();
chat.crier();
chien.crier(); 190

}
A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19
4. HÉRITAGE

•Interface :
Une classe totalement abstraite : ne comporte que des méthodes
abstraites
interface I{
public void fct();
public String B;}

pour faire en sorte qu'une classe utilise une interface :

class A implements I { class C extends V implements I {

191

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


4. HÉRITAGE

•Interface :
-Toute classe qui implémente une interface doit obligatoirement
redéfinir les méthodes de l'interface
-Une classe peut définir plusieurs interfaces

192

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


4. HÉRITAGE
Exercice 1 :
-Ecrivez une classe Animal qui comporte une méthode abstraite
qui s’appelle cri() et une redéfinition de la méthode toString qui
retourne simplement la chaîne de caractères "Je suis un animal".
-Ajoutez une classe Chat qui hérite de la classe Animal et qui :
définit la méthode cri() afin de retourner la chaîne de caractères
"Miaaaw !", redéfinit la méthode toString afin de retourner la
chaîne de caractères "Je suis un chat !".
-Ajoutez une troisième classe Chien qui hérite de la classe Animal
qui définit la méthode cri() afin de retourner la chaîne de
caractères "Haw haw !", et contient une redéfinition de la
méthode toString qui retourne la chaîne de caractères "Je suis un
chien !"
193

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


4. HÉRITAGE
Exercice 2 :
-Ecrivez une interface Operations, qui déclare deux méthodes : plus
et moins ayant toutes les deux un objet quelconque comme
paramètre
-Ecrivez deux classes qui implémentent l’interface Opertaions :
Complexe permettant de manipuler les complexes, et Reel
permettant de manipuler les réels
-Ajoutez maintenant une interface Affichage qui déclare une
méthode afficher(). Les classes Complexe et Reel doivent
également implémenter cette interface.

194

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


5. ASSOCIATIONS ENTRE CLASSES

Si on veut préciser le fait qu’un véhicule appartient à une personne


-On peut ajouter les informations concernant le propriétaire du
véhicule comme attributs dans la classe Véhicule
-- une personne est caractérisée par :
* son nom et prénom
* son cin
* son numéro de permis

195

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


5. ASSOCIATIONS ENTRE CLASSES

Si on veut préciser le fait qu’un véhicule appartient à une personne

class Vehicule {
private String marque, couleur;
private int matricule;
private String m_nom, m_prenom, m_cin;
private int m_num_permis;
Mais,
-Si une personne possède plusieurs véhicules?
-On doit saisir à chaque fois les mêmes informations sur le
propriétaire de ces véhicules!
196

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


5. ASSOCIATIONS ENTRE CLASSES

 Solution :
- Créer une classe Personne
- Supprimer les attributs correspondant au propriétaire de
la classe Véhicule
- Associer la classe Personne à la classe Véhicule

197

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


5. ASSOCIATIONS ENTRE CLASSES

 Solution :
- Créer une classe Personne
- Supprimer les attributs correspondant au propriétaire de
la classe Véhicule
- Associer la classe Personne à la classe Véhicule

198

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


5. ASSOCIATIONS ENTRE CLASSES

 Solution :
- Créer une classe Personne

class Personne {
private String m_nom, m_prenom, m_cin;
private int m_num_permis;
}

199

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


5. ASSOCIATIONS ENTRE CLASSES

 Solution :
- Supprimer les attributs correspondant au propriétaire de
la classe Véhicule

class Vehicule {
private String marque, couleur;
private int matricule;

200

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


5. ASSOCIATIONS ENTRE CLASSES

 Solution :
- Associer la classe Personne à la classe Véhicule
* Ajouter un objet de type Personne à la classe Voiture :

class Vehicule {
private String marque, couleur;
private int matricule;
private Personne proprio;

201

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


5. ASSOCIATIONS ENTRE CLASSES

 Solution :
- Associer la classe Personne à la classe Véhicule
* Ajouter un objet de type Personne à la classe Voiture :

import Package1;
class Vehicule {
private String marque, couleur;
private int matricule;
private Personne proprio;
Si les deux classes sont des packages différents, il faut
importer le package de la classe Personne
202

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


5. ASSOCIATIONS ENTRE CLASSES

 Si on veut également voir à partir d’un objet Personne les


voitures qu’il possède
•Ajouter une collection d’objet de type Voiture à la classe Personne

203

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


5. ASSOCIATIONS ENTRE CLASSES

Exercice
1. Créez une classe de base Article qui contient 2 champs, son nom
et son prix, ainsi que les constructeurs, accesseurs et mutateurs
2. Créez ensuite la classe ArticleEnSolde qui hérite d'Article et qui
contient en plus un champ remise. getPrix devra renvoyer le prix
en tenant compte de la remise
3. Créez la classe Commande qui permet de gérer une collection
d'Articles. Définissez entre autre la fonction prixTotal() qui
renverra la somme des prix des articles du Commande.

204

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


4. HÉRITAGE

•Classe interne et anonyme :


-Une classe java peut contenir une autre classe, appelée Classe
interne
public class A {
class B{
….
}

}

205

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


4. HÉRITAGE

•Classe interne et anonyme :


-Une classe interne peut être déclarée sans nom, on l’appelle alors
classe anonyme
public class A {
class B{
….
}

}

206

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19


Fin

207

A. HALLOU PROGRAMMATION ORIENTÉE OBJET EN JAVA GI19

Vous aimerez peut-être aussi