Vous êtes sur la page 1sur 36

13/01/2018

Chapitre III

NOTIONS DE CLASSES ET OBJETS


EN JAVA

© Imene Sghaier

ISET Nabeul
SEM2 & Mastère SEM1

OBJECTIFS ET ÉLÉMENTS DE CONTENU


 Objectifs spécifiques
 Introduire le concept de classe et sa notation
 Maîtriser la définition des attributs et méthodes d’une classe
 Maîtriser l’instanciation des objets et l’accès aux membres d’un objet
 Comprendre le concept des classes internes
 Maîtriser l’atout d’organisation « package »
 Comprendre la notion d’encapsulation et ses intérêts pratiques
 Comprendre les droits d’accès aux membres et aux classes
 Maîtriser le concept de surcharge des méthodes
 Eléments de contenu
 Introduction
 Notions d’objets et de classes
 Les attributs
 Les méthodes
 Mots clès static, final,null et this
 Attributs et méthodes
 Packages
 Encapsulation des propriétés
 Surcharge de méthodes
 Volume Horaire :
 Cours : 9 heures
2

Imene Sghaier-Programmation Orientée Objet en Java

1
13/01/2018

INTRODUCTION
 Ce chapitre traite des données de type objet, plus riches
que les données de type primitif.
 Les objets sont à la base de la programmation orientée
objets, la caractéristique principale du langage Java.
 Un objet possède des attributs (ou propriétés) qui
définissent son état et des fonctionnalités décrites par
des méthodes permettant d'effectuer des opérations
sur l'objet. Les attributs contiennent donc les
informations sur la valeur de l'objet tandis que les
méthodes représentent les opérations que l'on peut
effectuer sur l'objet.
 Un objet est défini par une classe. Il existe de
nombreux objets prédéfinis, notamment dans
la librairie standard Java 3

Imene Sghaier-Programmation Orientée Objet en Java

PLAN DU CHAPITRE
 Introduction
 Notions d’objets et de classes
 Les attributs
 Les méthodes
 Les constructeurs
 L’instanciation des objets
 L’accès aux attributs
 L’accès aux méthodes
 Mots clé this
 Mot clé null
 Mot clé static
 Méthode Main
 L'enchaînement de références à des variables et à des méthodes
 Destruction d’un objet
 Les Packages
 Encapsulation des propriétés
 Surcharge de méthodes
 Les classes internes
 Les tableaux d’objets
4

Imene Sghaier-Programmation Orientée Objet en Java

2
13/01/2018

NOTION DE CLASSE ET D’OBJET


 Dans Java, tout appartient (de type) à une classe sauf
les variables de types primitifs (int, float…).
 Contrairement aux données de type primitif qui
représentent des choses simples, les objets
représentent des choses plus spécialisées, plus
complexes comme une date, une image, un fichier, une
personne, etc.
 Un objet Java possède également des attributs et
des fonctionnalités.
 Ces dernières permettent d'effectuer des opérations
sur l'objet, tout comme on en faisait déjà avec les types
primitifs
 Chaque objet est décrit par une classe. Une classe
représente la moule avec laquelle on créé un objet 5

Imene Sghaier-Programmation Orientée Objet en Java

NOTION DE CLASSE ET D’OBJET


 Une classe est le support de l 'encapsulation : c'est un
ensemble de données et de fonctions regroupées dans
une même entité.
 Une classe est une description abstraite d'un objet.

 Les fonctions qui opèrent sur les données sont appelées


des méthodes.
 Les données caractérisant une classe s’appellent
attributs
 Instancier une classe consiste à créer un objet sur son
modèle.
 Entre classe et objet il y a, en quelque sorte, le
même rapport qu'entre type et variable.

Imene Sghaier-Programmation Orientée Objet en Java

3
13/01/2018

NOTION DE CLASSE ET D’OBJET


 Une classe comporte sa déclaration, des variables et la définition
de ses méthodes.
 Une classe se compose de deux parties : une en-tête et un corps.
 Le corps peut être divisé en 2 sections : la déclaration des données
et des constantes (attributs) et la définition des procédures et
fonctions (méthodes).
 Les méthodes et les données sont pourvues de modificateurs de
visibilité qui gère leur accessibilité par les composants hors de la
classe.
 Pour accéder à une classe, ses données et ses méthodes, il faut
déclarer une instance (ou un objet) de cette classe.
 Pour chaque instance d'une classe, le code est le même, seules les
données sont différentes à chaque objet.
 Les objets contiennent des attributs et des méthodes, les attributs
sont des variables ou des objets nécessaires au fonctionnement de
l'objet.
 En java, une application est un objet.
7

Imene Sghaier-Programmation Orientée Objet en Java

NOTION DE CLASSE ET D’OBJET: UNITÉ DE COMPILATION

 Le code source d'une classe est appelé unité de


compilation.
 Il est recommandé (mais pas imposé) de ne mettre qu'une
classe par unité de compilation.
 L'unité de compilation (le fichier) doit avoir le même nom
que la classe qu'elle contient.
 Un programme exécutable Java n’est autre qu’une classe
contenant une méthode main
 Le portail d’exécution d’une classe Java est la méthode :
public static void main(String[] args){
….}

Imene Sghaier-Programmation Orientée Objet en Java

4
13/01/2018

NOTION DE CLASSE ET D’OBJET: SYNTAXE

 Dans la pratique, à chaque classe correspond à un


fichier « .java » portant le même nom (avec la même
casse)

 Ce fichier porte la structure suivante


[Modificateur] class NomClasse
{
// Insérer ici les attributs et les méthodes
}

Imene Sghaier-Programmation Orientée Objet en Java

PLAN DU CHAPITRE
 Introduction
 Notions d’objets et de classes
 Les attributs
 Les méthodes
 Les constructeurs
 L’instanciation des objets
 L’accès aux attributs
 L’accès aux méthodes
 Mots clé this
 Mot clé null
 Mot clé static
 Méthode Main
 L'enchaînement de références à des variables et à des méthodes
 Destruction d’un objet
 Les Packages
 Encapsulation des propriétés
 Surcharge de méthodes
 Les classes internes
 Les tableaux d’objets
10

Imene Sghaier-Programmation Orientée Objet en Java

5
13/01/2018

LES ATTRIBUTS

 Syntaxe générale de définition d’un attribut


[< modificateur >] typeAttribut nomAttribut [=<expression>] ;

 Exemple
public class Etudiant {
public int niveau ;
public String groupe ;
/**String est une classe prédéfinie java, groupe est un objet
de type String**/
public String nom_prenom ;
private long NCI;
}
11

Imene Sghaier-Programmation Orientée Objet en Java

PLAN DU CHAPITRE
 Introduction
 Notions d’objets et de classes
 Les attributs
 Les méthodes
 Les constructeurs
 L’instanciation des objets
 L’accès aux attributs
 L’accès aux méthodes
 Mots clé this
 Mot clé null
 Mot clé static
 Méthode Main
 L'enchaînement de références à des variables et à des méthodes
 Destruction d’un objet
 Les Packages
 Encapsulation des propriétés
 Surcharge de méthodes
 Les classes internes
 Les tableaux d’objets
12

Imene Sghaier-Programmation Orientée Objet en Java

6
13/01/2018

LES MÉTHODES

 La syntaxe de la déclaration d'une méthode est :


modificateurs typeRetourné nomMéthode ( typ1 arg1, ...,typn argn ) {
// Définition des variables locales et du bloc d'instructions
// Les instructions
}

 Le type retourné peut être primitif ou peut correspondre


à une classe, dans ce cas la méthode renvoie un objet
appartenant à cette classe.
 Si la méthode ne retourne rien, alors on utilise void.

13

Imene Sghaier-Programmation Orientée Objet en Java

LES MÉTHODES
 Exemple
 On remarque bien l’utilisation de l’instruction
return pour renvoyer une valeur

14

Imene Sghaier-Programmation Orientée Objet en Java

7
13/01/2018

PLAN DU CHAPITRE
 Introduction
 Notions d’objets et de classes
 Les attributs
 Les méthodes
 Les constructeurs
 L’instanciation des objets
 L’accès aux attributs
 L’accès aux méthodes
 Mots clé this
 Mot clé null
 Mot clé static
 Méthode Main
 L'enchaînement de références à des variables et à des méthodes
 Destruction d’un objet
 Les Packages
 Encapsulation des propriétés
 Surcharge de méthodes
 Les classes internes
 Les tableaux d’objets
15

Imene Sghaier-Programmation Orientée Objet en Java

LES CONSTRUCTEURS

 Les constructeurs sont des méthodes:


 Systématiquement invoquée que lors de la création
d'un objet avec l’opérateur new
 Son nom doit obligatoirement correspondre à celui de la
classe et il n'est pas typé, pas même void,
 La définition d'un constructeur est facultative. S’il
n'est pas définie, la machine virtuelle appelle un
constructeur dit par défaut qui vide et sans
paramètre et qui créé automatiquement.
 Dès qu'un constructeur est explicitement défini, le
mécanisme par défaut, qui correspond à un
constructeur sans paramètres, est supprimé.
 Si on souhaite maintenir ce mécanisme, il faut définir
explicitement un constructeur sans paramètres.
16

Imene Sghaier-Programmation Orientée Objet en Java

8
13/01/2018

LES CONSTRUCTEURS

17

Imene Sghaier-Programmation Orientée Objet en Java

LES CONSTRUCTEURS
 Une classe peut avoir plusieurs constructeurs qui diffèrent
par le nombre et le type de leurs paramètres.
 Pour manipuler un objet, on déclare une référence sur la
classe de cet objet
Point p;
 Pour créer un objet, on instancie une classe en appliquant
l'opérateur new sur un de ses constructeurs. Une nouvelle
instance de cette classe est alors allouée en mémoire :
p = new Point(7,8);

18

Imene Sghaier-Programmation Orientée Objet en Java

9
13/01/2018

LES CONSTRUCTEURS

19

Imene Sghaier-Programmation Orientée Objet en Java

PLAN DU CHAPITRE
 Introduction
 Notions d’objets et de classes
 Les attributs
 Les méthodes
 Les constructeurs
 L’instanciation des objets
 L’accès aux attributs
 L’accès aux méthodes
 Mots clé this
 Mot clé null
 Mot clé static
 Méthode Main
 L'enchaînement de références à des variables et à des méthodes
 Destruction d’un objet
 Les Packages
 Encapsulation des propriétés
 Surcharge de méthodes
 Les classes internes
 Les tableaux d’objets
20

Imene Sghaier-Programmation Orientée Objet en Java

10
13/01/2018

L’INSTANCIATION D’OBJETS
 Une instanciation se décompose en trois phases
1. Création et initialisation des attributs en
mémoire
2. Appel des méthodes particulières : les
constructeurs
3. Renvoi d’une référence sur l’objet (son identité)

 Exemple :

MaClasse m = new MaClasse();


Point p=new Point(7,8);

21

Imene Sghaier-Programmation Orientée Objet en Java

L’ACCÈS AUX ATTRIBUTS

 Pour accéder aux attributs de l’intérieur de la


classe, il suffit d’indiquer le nom de l’attribut que
l’on veut y accéder.

22

Imene Sghaier-Programmation Orientée Objet en Java

11
13/01/2018

PLAN DU CHAPITRE
 Introduction
 Notions d’objets et de classes
 Les attributs
 Les méthodes
 Les constructeurs
 L’instanciation des objets
 L’accès aux attributs
 L’accès aux méthodes
 Mots clé this
 Mot clé null
 Mot clé static
 Méthode Main
 L'enchaînement de références à des variables et à des méthodes
 Destruction d’un objet
 Les Packages
 Encapsulation des propriétés
 Surcharge de méthodes
 Les classes internes
 Les tableaux d’objets
23

Imene Sghaier-Programmation Orientée Objet en Java

L’ACCÈS AUX ATTRIBUTS

 Pour accéder aux attributs de l’intérieur de la classe, il


suffit d’indiquer le nom de l’attribut que l’on veut y
accéder.
 Un attribut non statique n’est pas accessible de
l’extérieur ou dans une méthode statique. Pour
accéder de l’extérieur de la classe, on utilise la syntaxe
suivante : <nom_objet>.<nom_attribut>

24

Imene Sghaier-Programmation Orientée Objet en Java

12
13/01/2018

L’ACCÈS AUX ATTRIBUTS

 Un attribut non statique est accessible de l’extérieur ou


dans une méthode statique en utilisant la syntaxe
suivante : <nom_objet>.<nom_attribut>

25

Imene Sghaier-Programmation Orientée Objet en Java

PLAN DU CHAPITRE
 Introduction
 Notions d’objets et de classes
 Les attributs
 Les méthodes
 Les constructeurs
 L’instanciation des objets
 L’accès aux attributs
 L’accès aux méthodes
 Mots clé this
 Mot clé null
 Mot clé static
 Méthode Main
 L'enchaînement de références à des variables et à des méthodes
 Destruction d’un objet
 Les Packages
 Encapsulation des propriétés
 Surcharge de méthodes
 Les classes internes
 Les tableaux d’objets
26

Imene Sghaier-Programmation Orientée Objet en Java

13
13/01/2018

L’ACCÈS AUX MÉTHODES


 A l’intérieur d’une classe, les méthodes de cette classe seront appelées
en indiquant le nom et la liste des paramètres effectifs de la méthode.
 La liste des arguments effectifs doit concorder en nombre et en type
avec la liste des arguments formels.

27

Imene Sghaier-Programmation Orientée Objet en Java

L’ACCÈS AUX MÉTHODES


 A l’extérieur de la classe, l’invocation d’une méthode se fait comme
suit :
 <nom_objet>.<nom_méthode> ( [<liste des arguments effectifs>]
);
 La liste des arguments effectifs doit concorder en nombre et en type
avec la liste des arguments formels.

28

Imene Sghaier-Programmation Orientée Objet en Java

14
13/01/2018

L’ACCÈS AUX MÉTHODES: PASSAGE DE PARAMÈTRES


 Le mode de passage des paramètres dans les méthodes
dépend de la nature des paramètres :
 par référence pour les objets
 par copie pour les types primitifs

i est une
variable locale
de méthode2

29

Imene Sghaier-Programmation Orientée Objet en Java

PLAN DU CHAPITRE
 Introduction
 Notions d’objets et de classes
 Les attributs
 Les méthodes
 Les constructeurs
 L’instanciation des objets
 L’accès aux attributs
 L’accès aux méthodes
 Mots clé this
 Mot clé null
 Mot clé static
 Méthode Main
 L'enchaînement de références à des variables et à des méthodes
 Destruction d’un objet
 Les Packages
 Encapsulation des propriétés
 Surcharge de méthodes
 Les classes internes
 Les tableaux d’objets
30

Imene Sghaier-Programmation Orientée Objet en Java

15
13/01/2018

LE MOT CLÉ « THIS »


 La référence « this » peut être utile :
 Lorsqu’une variable locale (ou un paramètre) cache, en

portant le même nom, un attribut de la classe.


 Pour appeler un constructeur depuis un autre

constructeur.

Appel du constructeur à deux paramètres


en lui passant a et 2a

31

Imene Sghaier-Programmation Orientée Objet en Java

PLAN DU CHAPITRE
 Introduction
 Notions d’objets et de classes
 Les attributs
 Les méthodes
 Les constructeurs
 L’instanciation des objets
 L’accès aux attributs
 L’accès aux méthodes
 Mots clé this
 Mot clé null
 Mot clé static
 Méthode Main
 L'enchaînement de références à des variables et à des méthodes
 Destruction d’un objet
 Les Packages
 Encapsulation des propriétés
 Surcharge de méthodes
 Les classes internes
 Les tableaux d’objets
32

Imene Sghaier-Programmation Orientée Objet en Java

16
13/01/2018

LE MOT CLÉ « NULL »

 Il permet de représenter la référence qui ne référence


rien. C’est aussi la valeur par défaut d’initialisation des
attributs représentant des références.
 Si on accède à un objet dont la valeur est null il y aura
une erreur de type NullPointerException

33

Imene Sghaier-Programmation Orientée Objet en Java

PLAN DU CHAPITRE
 Introduction
 Notions d’objets et de classes
 Les attributs
 Les méthodes
 Les constructeurs
 L’instanciation des objets
 L’accès aux attributs
 L’accès aux méthodes
 Mots clé this
 Mot clé null
 Mot clé static
 Méthode Main
 L'enchaînement de références à des variables et à des méthodes
 Destruction d’un objet
 Les Packages
 Encapsulation des propriétés
 Surcharge de méthodes
 Les classes internes
 Les tableaux d’objets
34

Imene Sghaier-Programmation Orientée Objet en Java

17
13/01/2018

LE MOT STATIC : ACCÈS AUX MEMBRES STATIC

 Les attributs de classes sont définies avec le mot clé


static
 Chaque instance de la classe partage la même variable.

 Un attribut statique est un attribut de la classe, s’il est


modifié chez un objet il changera chez tous les objets de
la même classe (créés et futur aussi!!)
 Un attribut statique est accessible de l’intérieur d’une
classe exactement comme un attribut normal
 Un attribut statique est accessible de l’extérieur et dans
les méthodes statiques comme suit :
 <nom_objet>.<nom_attribut_ statique >

 <nom_classe>.<nom_attribut_ statique >


35

Imene Sghaier-Programmation Orientée Objet en Java

LE MOT STATIC : ACCÈS AUX MEMBRES STATIC

36

Imene Sghaier-Programmation Orientée Objet en Java

18
13/01/2018

LE MOT STATIC : ACCÈS AUX MEMBRES STATIC


 On ne peut pas appeler une méthode non statique dans
une méthode statique directement sans avoir instancié
un objet=> une méthode statique n’est accessible
à l’intérieur d’une classe que dans d’autres
méthodes statiques
 Une méthode statique est accessible de l’extérieur et
dans les méthodes statiques comme suit :
 <nom_objet>.<nom_méthode> ( [<liste des
arguments effectifs>] ) ou
 <nom_classe>.<nom_méthode> ( [<liste des
arguments effectifs>] ) ;
 Les méthodes statiques ne peuvent pas accéder à this
 La liste des arguments effectifs doit toujours concorder
en nombre et en type avec la liste des arguments
formels. 37

Imene Sghaier-Programmation Orientée Objet en Java

LE MOT STATIC : ACCÈS AUX MEMBRES STATIC

38

Imene Sghaier-Programmation Orientée Objet en Java

19
13/01/2018

LE MOT STATIC : ACCÈS AUX MEMBRES STATIC

39

Imene Sghaier-Programmation Orientée Objet en Java

LE MOT STATIC : ACCÈS AUX MEMBRES STATIC


 Exemple2 : La classe Math est une classe prédéfinie de
Java qui possède de nombreux membres statiques

40

Imene Sghaier-Programmation Orientée Objet en Java

20
13/01/2018

PLAN DU CHAPITRE
 Introduction
 Notions d’objets et de classes
 Les attributs
 Les méthodes
 Les constructeurs
 L’instanciation des objets
 L’accès aux attributs
 L’accès aux méthodes
 Mots clé this
 Mot clé null
 Mot clé static
 Méthode Main
 L'enchaînement de références à des variables et à des méthodes
 Destruction d’un objet
 Les Packages
 Encapsulation des propriétés
 Surcharge de méthodes
 Les classes internes
 Les tableaux d’objets
41

Imene Sghaier-Programmation Orientée Objet en Java

LA MÉTHODE: MAIN

 La déclaration d'une méthode main () se fait


toujours de cette façon:
public static void main (String args[]) { ... }
 Si vous déclarez un autre type de retour ou un autre
paramètre ou vous oubliez qu’elle soit static ça sera une
méthode normale nommée main
 La méthode main est le portail d’exécution: le point
d’entrée pour l’exécution d’une classe.
 NB:Si une méthode retourne un tableau alors les []
peuvent être précisés après le type de retour ou après la
liste des paramètres :
 Exemple :
int[] valeurs() { … }
int valeurs()[] { … } 42

Imene Sghaier-Programmation Orientée Objet en Java

21
13/01/2018

PLAN DU CHAPITRE
 Introduction
 Notions d’objets et de classes
 Les attributs
 Les méthodes
 Les constructeurs
 L’instanciation des objets
 L’accès aux attributs
 L’accès aux méthodes
 Mots clé this
 Mot clé null
 Mot clé static
 Méthode Main
 L'enchaînement de références à des variables et à des
méthodes
 Destruction d’un objet
 Les Packages
 Encapsulation des propriétés
 Surcharge de méthodes
 Les classes internes
 Les tableaux d’objets

43

Imene Sghaier-Programmation Orientée Objet en Java

L'ENCHAÎNEMENT DE RÉFÉRENCES À DES


VARIABLES ET À DES MÉTHODES

 Exemple : System.out.Println("bonjour");
 Deux classes impliqués :System et PrintStream.

 La classe System possède une variable nommée


out qui est un objet de type PrintStream.
 println() est une méthode de la classe PrintStream.

 L'instruction signifie : « utilise la méthode println()


de la variable out de la classe System ».

44

Imene Sghaier-Programmation Orientée Objet en Java

22
13/01/2018

PLAN DU CHAPITRE
 Introduction
 Notions d’objets et de classes
 Les attributs
 Les méthodes
 Les constructeurs
 L’instanciation des objets
 L’accès aux attributs
 L’accès aux méthodes
 Mots clé this
 Mot clé null
 Mot clé static
 Méthode Main
 L'enchaînement de références à des variables et à des méthodes
 Destruction d’un objet
 Les Packages
 Encapsulation des propriétés
 Surcharge de méthodes
 Les classes internes
 Les tableaux d’objets
45

Imene Sghaier-Programmation Orientée Objet en Java

DESTRUCTION D'UN OBJET

 La destruction des objets est prise en charge par le


ramasser de miettes de mémoire dit garbage collector
en Anglais (GC).
 Le GC détruit les objets pour lesquels il n'existe plus
de référence.
 Les destructions sont asynchrones (le GC est géré
dans un thread de basse priorité).
 Aucune garantie n'est apportée quant à la
destruction d'un objet.
 Tout objet possède la méthode finalize (qu’on ne voit
pas), celle-ci est appelée lorsque l'objet est détruit.

46

Imene Sghaier-Programmation Orientée Objet en Java

23
13/01/2018

DESTRUCTION D'UN OBJET


public class Circle {
public static void main(String[] args){
Circle c1;
if (condition) {
Circle c2 = new Circle(); // c2 référence une nouvelle instance
c1 = c2;
}
// La référence c2 n'est plus valide mais il reste une référence c1 sur l'instance
c1=null; // L'instance c1 ne possède plus de référence.
//Elle n'est plus accessible. A tout moment le GC peut détruire l'objet.

47

Imene Sghaier-Programmation Orientée Objet en Java

PLAN DU CHAPITRE
 Introduction
 Notions d’objets et de classes
 Les attributs
 Les méthodes
 Les constructeurs
 L’instanciation des objets
 L’accès aux attributs
 L’accès aux méthodes
 Mots clé this
 Mot clé null
 Mot clé static
 Méthode Main
 L'enchaînement de références à des variables et à des méthodes
 Destruction d’un objet
 Les Packages
 Encapsulation des propriétés
 Surcharge de méthodes
 Les classes internes
 Les tableaux d’objets
48

Imene Sghaier-Programmation Orientée Objet en Java

24
13/01/2018

LES PACKAGES
 Un package regroupe un ensemble de classes sous
un même espace de 'nommage'.
 Les noms des packages suivent le schéma :
name.subname ...
 Une classe Watch appartenant au package
time.clock doit se trouver dans le fichier
time/clock/Watch.class
 Les packages permettent au compilateur et à la
JVM de localiser les fichier contenant les classes à
charger.
 L'instruction package indique à quel package
appartient la ou les classe(s) de l'unité de
compilation (le fichier). Elle figure une seule fois
dans la source d’une classe 49

Imene Sghaier-Programmation Orientée Objet en Java

LES PACKAGES
 Les répertoires contenant les packages doivent être
présents dans la variable d'environnement
CLASSPATH
 Exemple
CLASSPATH = .;C:\Java\JDK\Lib\classes.zip; C:\rea_java\package
 En dehors du package, les noms des classes sont :
packageName.className
 L'instruction import packageName; permet
d'utiliser des classes sans les préfixer par leur nom
de package.
 Les API sont organisées en package (java.lang,
java.io, ...)
50

Imene Sghaier-Programmation Orientée Objet en Java

25
13/01/2018

LES PACKAGES

package graph.2D; package graph.3D;


public class Circle public class Sphere
{ ... } { ... }

package paintShop;
import graph.2D.*;
public class MainClass
{
public static void main(String[] args) {
graph.2D.Circle c1 = new graph.2D.Circle(50)
Circle c2 = new Circle(70);
graph.3D.Sphere s1 = new graph.3D.Sphere(100);
Sphere s2 = new Sphere(40);
// error: class Sphere not found
}
51

Imene Sghaier-Programmation Orientée Objet en Java

LES PACKAGES
 Un programme Java est un ensemble de paquetages
(hiérarchiques dans des répertoires)
 Exemple :
 java.lang
 java.sql
 monPaquetage.monSousPaquetage.monSousSousPaquetage
 Un package est un ensemble de classes
 Exemple:
 java.lang.Number

 Javax.swing.JButton

 Si non spécifié, la classe appartient à un paquetage anonyme


spécifié par le chemin de la classe.

52

Imene Sghaier-Programmation Orientée Objet en Java

26
13/01/2018

PLAN DU CHAPITRE
 Introduction
 Notions d’objets et de classes
 Les attributs
 Les méthodes
 Les constructeurs
 L’instanciation des objets
 L’accès aux attributs
 L’accès aux méthodes
 Mots clé this
 Mot clé null
 Mot clé static
 Méthode Main
 L'enchaînement de références à des variables et à des méthodes
 Destruction d’un objet
 Les Packages
 Encapsulation des propriétés
 Surcharge de méthodes
 Les classes internes
 Les tableaux d’objets
53

Imene Sghaier-Programmation Orientée Objet en Java

L’ENCAPSULATION: MODIFICATEUR DE VISIBILITÉ DE CLASSE

Modificateur Rôle

public La classe est accessible partout

private la classe n'est accessible qu'à partir


du fichier où elle est définie

néant la classe n'est accessible qu'à partir


du dossier/package où elle est
définie
54

27
13/01/2018

L’ENCAPSULATION : MODIFICATEURS D’ACCÈS POUR LES


MEMBRES

Modificateur Signification pour les membres et les classes


internes
public Accès possible partout où la classe est
accessible
néant Accès possible depuis toutes les classes du
même paquetage
private Accès restreint à la classe où est faite la
déclaration (du membre ou de la classe
interne)
55

L’ENCAPSULATION : MODIFICATEURS D’ACCÈS POUR LES


MEMBRES

 Exemple :

56

Imene Sghaier-Programmation Orientée Objet en Java

28
13/01/2018

L’ENCAPSULATION : LES ACCESSEURS


 Un accesseur est une méthode publique qui donne
l'accès à une variable d'instance privée.
 Par convention, les accesseurs en lecture
commencent par get et les accesseurs en écriture
commencent par set.
 Exemple :

57

Imene Sghaier-Programmation Orientée Objet en Java

PLAN DU CHAPITRE
 Introduction
 Notions d’objets et de classes
 Les attributs
 Les méthodes
 Les constructeurs
 L’instanciation des objets
 L’accès aux attributs
 L’accès aux méthodes
 Mots clé this
 Mot clé null
 Mot clé static
 Méthode Main
 L'enchaînement de références à des variables et à des méthodes
 Destruction d’un objet
 Les Packages
 Encapsulation des propriétés
 Surcharge de méthodes
 Les classes internes
 Les tableaux d’objets
58

Imene Sghaier-Programmation Orientée Objet en Java

29
13/01/2018

LA SURCHARGE DES MÉTHODES


 La surcharge est la capacité des objets d’une même hiérarchie de
classes à répondre différemment à une méthode de même nom,
mais avec des paramètres différents.
 Exemple:

59

PLAN DU CHAPITRE
 Introduction
 Notions d’objets et de classes
 Les attributs
 Les méthodes
 Les constructeurs
 L’instanciation des objets
 L’accès aux attributs
 L’accès aux méthodes
 Mots clé this
 Mot clé null
 Mot clé static
 Méthode Main
 L'enchaînement de références à des variables et à des méthodes
 Destruction d’un objet
 Les Packages
 Encapsulation des propriétés
 Surcharge de méthodes
 Les classes internes
 Les tableaux d’objets
60

Imene Sghaier-Programmation Orientée Objet en Java

30
13/01/2018

LES CLASSES INTERNES


 Une classe interne (ou imbriquée) est une classe définie à
l’intérieur d’une autre classe au même niveau qu’une
méthode ou attribut.
 Les classes internes sont visibles uniquement par les
méthodes de la classe dont laquelle sont définies.
 Elles ont accès à tous les éléments de la classe qui les
englobe (même privé).
 On ne peut pas accéder directement aux attributs et aux
méthodes de la classe interne. Toutefois, on peut les
appeler indirectement à travers la classe externe qui
l’englobe.
 Exemple
 Supposons qu’on veut représenter à l’intérieur de la classe
Rectangle une classe Point qui permet de représenter le
centre de rectangle. Cette classe Point sera interne à la
classe Rectangle.
61

Imene Sghaier-Programmation Orientée Objet en Java

LES CLASSES INTERNES

62

Imene Sghaier-Programmation Orientée Objet en Java

31
13/01/2018

LES CLASSES INTERNES

63

Imene Sghaier-Programmation Orientée Objet en Java

ÉCRIRE UNE CLASSE : EXEMPLE 1

class Cercle{
public double x, y; // Coordonnée du centre
private double r; // rayon du cercle
public Cercle(double r) {
this.r = r;
}
public double area() {
return 3.14159 * r * r;
}
}
public class MonPremierProgramme {
public static void main(String[] args) {//Méthode principale main
Cercle c; // c est une référence sur un objet Cercle
c = new Circle(5.0); // c est un objet de type Circle alloué en mémoire
c.x =10;
c.y = 10;
System.out.println("Aire de c :" + c.area()); }
}
64

Imene Sghaier-Programmation Orientée Objet en Java

32
13/01/2018

ÉCRIRE UNE CLASSE : EXEMPLE 2

class Etudiant {
public String n, p; //nom et prenom
public double n1,n2,m; // note1, note2 et moyenne
pulic int niveau;
public Etudiant(String a, String b) {
n=a; p=b;
}
public double moyenne() {
m=(n1+n2)/2;
return m;
}
}
public class TestEtudiant {
public static void main(String[] args) {
Etudiant e=new Etudiant(‘’Mohamed’’,’’Saleh’’);
e.n1 =8;
e.n2 = 12;
System.out.println(« Moyenne de e :" + e.moyenne()); }}
65

Imene Sghaier-Programmation Orientée Objet en Java

PLAN DU CHAPITRE
 Introduction
 Notions d’objets et de classes
 Les attributs
 Les méthodes
 Les constructeurs
 L’instanciation des objets
 L’accès aux attributs
 L’accès aux méthodes
 Mots clé this
 Mot clé null
 Mot clé static
 Méthode Main
 L'enchaînement de références à des variables et à des méthodes
 Destruction d’un objet
 Les Packages
 Encapsulation des propriétés
 Surcharge de méthodes
 Les classes internes
 Les tableaux d’objets
66

Imene Sghaier-Programmation Orientée Objet en Java

33
13/01/2018

LES TABLEAUX D’OBJETS

 Les tableaux (array en anglais) sont très utilisés


en programmation car ils permettent
d' organiser les données.
 À partir du moment où un programme doit manipuler un
grand nombre de données, il est intéressant de les
rassembler dans des tableaux.
 Exemple

Soit un programme chargé de retenir les données des


étudiants d'une faculté, il n'est pas intéressant de déclarer
des variables de type String pour
chaque étudiant pour leur nom ou d’autres de types
long pour leurs ids: celà prendra un temps énorme
=> Un tableaux d’objets étudiants va nous aider.
67

Imene Sghaier-Programmation Orientée Objet en Java

LES TABLEAUX D’OBJETS

 Un tableau est considéré comme un objet en java peu importe


le type de données qu’il comporte.
 Déclaration de tableau

type[] nomTableau;
Avec type est le type des objets (variable) à mettre
dans le tableau.
 Allocation de Mémoire pour les cases d-un tableau

nomTableau=new type[nombreCases];
 Déclaration & Allocation Mémoire

type[] nomTableau=new type[nombreCases];


 Remplissage

o Le remplissage est fait case par case, les cases sont indexées
par des numéros. 68

Imene Sghaier-Programmation Orientée Objet en Java

34
13/01/2018

LES TABLEAUX D’OBJETS

 Exemple
int tableau[]= new int[50]; // déclaration et allocation
OU int[] tableau = new int[50];
OU int tab[]; // déclaration
tab = new int[50]; //allocation
Etudiant groupe[]=new Etudiant[25];
tab[0]=3;
groupe[1]=new Etudiant(‘’Med’’,’’Haamza’’);
 Chaque élément du tableau est initialisé selon son
type par l'instruction new :
 0 pour les numériques,
 \0 pour les caractères,
 false pour les booléens
 null pour les chaînes de caractères et les autres objets. 69

Imene Sghaier-Programmation Orientée Objet en Java

LES TABLEAUX D’OBJETS

 La taille du tableau n'est pas obligatoire si le tableau


est initialisé à sa création.
int tableau[5] = {10,20,30,40,50};

int tableau[] = {10,20,30,40,50};


 Tableau bidimensionnel:
 int tableau[3][2] = {{5,1},{6,2},{7,3}};
 int[][] tabEntiers = {{1,2,3,4,5,6},{1,2,3,4},{1,2,3,4,5,6,7,8,9}};
 Le nombre d'éléments de chaque ligne peut ne pas être
identique.
 La variable length retourne le nombre d'éléments du
tableau.
70
 for (int i = 0; i < tableau.length ; i ++) { ... }
Imene Sghaier-Programmation Orientée Objet en Java

35
13/01/2018

LES TABLEAUX D’OBJETS: EXEMPLE 1

71

Imene Sghaier-Programmation Orientée Objet en Java

LES TABLEAUX D’OBJETS: EXEMPLE 2

72

Imene Sghaier-Programmation Orientée Objet en Java

36