Intitulé du cours: Programmation Java
Chapitre 2 :
Concept de Classe et Objet
Filière: 2ème année – BTS Informatique de Gestion
Enseignante: Abid Arij
tt_arij.abid@imset
.tn
Année de formation 2024/2025
Plan
Objectifs du module
Introduction
Définition d’une classe :
–Syntaxe générale
–Exemple : La classe Cercle
Exécution d’un programme java
Les modificateurs d’accessibilité
Les getters et setters
Les constructeurs
Les objets :
–Instanciation
–Accès aux attributs et méthodes
Surcharge des méthodes
Attributs statiques
Les packages
Objectifs du module
À la fin du module, l'apprenant doit être capable de :
● Comprendre la notion de classe en Java et sa syntaxe de base.
● Créer et manipuler des objets en Java.
● Utiliser les modificateurs d’accessibilité pour contrôler la visibilité des attributs et méthodes.
● Implémenter des getters et setters pour encapsuler les données.
● Construire des classes avec différents types de constructeurs. Instancier des objets et accéder
à leurs attributs et méthodes.
● Comprendre et appliquer la surcharge des méthodes. Gérer des attributs statiques dans une
classe.
● Organiser le code en utilisant des packages.
● Exécuter et tester un programme Java.
3
Introduction
classe
Objet
POO
Constructeurs
encapsulation
POO
Définition
d’une classe
classe
5
Définition d’une classe
Une classe regroupe :
un ensemble de données (appelées attributs)
un ensemble de méthodes de traitement de ces données.
•On parle d’encapsulation pour désigner le regroupement
des données et des méthodes dans une classe.
6
Définition d’un POO
objet
classe
Objet
Définition d’ Un objet
Propriétés Comportement
Portes Démarrer le moteur
Moteur Tourner à gauche
Volant Tourner à droite
Roues Arrêter le moteur
Couleur Accélérer
Phare Freiner
Coffre Ouvrir le coffre
Carrosserie Allumer les phares
8
Définition d’un objet
•Un objet est une variable comme les autres, en conséquence Il faut qu’il soit déclaré avec son type.
•Le type d’un objet est un type composé (par rapport aux types primitifs simple entier, réel, …)
qu’on appelle une classe.
9
Classe et objet
● Classe : Structure définissant un objet.
Elle correspond à la déclaration de l’ensemble des attributs et des méthodes qui composeront un objet.
● Objet : Une instance d’une classe.
Un objet est créé à partir d’une classe et représente une concrétisation de celle-ci.
10
Classe et objet
11
Exemple :
12
Classe Vs objet
On appelle classe la structure d'un objet, c'est-à-dire la déclaration de l'ensemble des entités qui
composeront un objet.
▪ Un objet est donc « issu » d'une classe, c'est le produit qui sort d'un moule.
▪ En réalité on dit qu'un objet est une instanciation d'une classe
objet = instance
Une classe est composée de deux parties :
• Les attributs (parfois appelés données membres) : il s'agit des données représentant l'état de l'objet
• Les méthodes (parfois appelées fonctions membres): il s'agit des opérations applicables aux objets
13
Exemple : la classe Cercle
Un cercle est caractérisé par :
–Les coordonnées de son centre
–La valeur de son rayon
Les traitements à appliquer sur un cercle :
–Calculer le périmètre
–Calculer la surface
–Changer le rayon
–Déplacer le cercle
14
Définition de la classe Cercle
Nous allons créer une classe qui contient :
• Deux attributs x et y pour stocker les coordonnées du centre.
• Un attribut rayon pour stocker la taille du cercle.
• Un constructeur pour initialiser ces valeurs.
• Une méthode changer Rayon pour modifier la valeur du rayon.
• Une méthode deplacer pour modifier les coordonnées du centre.
15
rayon
Périmètre du cercle : P=2×π×r
Surface du cercle : S=π×r2
π (Pi) = 3,1416
16
17
Les modificateurs d’accessibilité
•Lors de la conception d’un programme java, le programmeur doit identifier les objets et les
données appartenant à chaque objet mais aussi des droits d’accès qu’ont les autres objets
sur ces données.
•L’encapsulation de données dans un objet permet de cacher ou non leur existence aux
autres objets du programme pour des raisons de sécurité.
•Une donnée peut être déclarée soit en droit accès : public, private, protected.
•On les appelle les modificateurs d’accessibilité
18
Les modificateurs d’accessibilité
19
🌍 public – accessible partout
● Visibilité : Accessible de partout (dans tous les packages).
• Utilisation : Pour rendre les membres ou classes disponibles pour tous les autres
packages.
20
🔒 private
• Description : accessible seulement dans la même classe
• Utilisation :
Pour masquer les détails d'implémentation et protéger les données sensibles.
Les Attributs et méthodes sont souvent déclarés private pour cacher leur implémentation et les protéger
contre toute modification externe.
Une classe ou une interface ne peut pas être déclarée private.
21
Exemple avec private
:
22
protected
• Description : L'élément est accessible dans la même classe, dans les sous-classes
(héritage) et dans les classes du même package.
• Utilisation :
• Utile pour permettre l'accès aux membres d'une classe parente à ses sous-classes
tout en restreignant l'accès aux autres classes extérieures.
23
Exemple avec protected
:
24
📦 Par défaut (aucun modificateur
• Description : L'élément est accessible uniquement dans le même package.
spécifié)
C'est ce qu'on appelle l'accès par défaut ou package-private .
• Utilisation :
• Si aucun modificateur n'est spécifié, l'élément est accessible uniquement aux classes
du même package.
Exem
ple
25
Quand Utiliser Chaque Modificateur ?
MODIFICATEUR Usage recommandé
public Pour les classes, méthodes ou attributs qui doivent être
accessibles partout.
private Pour les attributs et méthodes qui ne doivent être utilisés qu’à
l’intérieur de la classe.
protected Pour les membres qui doivent être accessibles aux sous-classes
mais pas au monde extérieur.
Par défaut Pour les membres qui doivent être partagés uniquement entre les
classes d’un même package.
26
Tableau Récapitulatif des
Modificateurs
MODIFICATEUR CLASSE PACKAGE SOUS-CLASSE MONDE
(GLOBAL)
public ✅ ✅ ✅ ✅
protected ✅ ✅ ✅ ❌
Par défaut ✅ ✅ ❌ ❌
private ✅ ❌ ❌ ❌
27
Règles sur les droits d’accès
Pour respecter la notion d’encapsulation des données, il est recommandé
de respecter les règles suivantes :
Toute classe doit avoir un modificateur public
Tous les attributs d’une classe ont le modificateur private afin d’interdire
un accès direct à ces attributs.
Les méthodes sont généralement public sauf si on veut définir une méthode
propre uniquement à cette classe.
Lorsque un attribut est définit private, l’accès à sa valeur se fera avec
les méthodes : getter et setter.
28
Les getters et setters
Pour la manipulation des attributs private, on utilise:
Un mutateur (setter): est une méthode qui permet de définir la valeur d'une variable
particulière
• Un accesseur (getter): est une méthode qui permet d'obtenir la valeur
d'une variable particulière.
▪ Le setter et le getter doivent être déclarés public
29
Les getters et setters
•Une méthode qui a pour but de modifier la valeur d’un attribut d’une classe à la syntaxe :
public void setNom_attribut(type_p parametre){
nom_attribut = parametre;
}
•Une méthodes qui a pour but de récupérer (retourner) la valeur d’un attribut à la syntaxe :
public type_attribut getNom_attribut(){
return nom_attribut;
}
•Chaque attribut lui sera associé donc une méthode getter et une autre setter quand il est
définit en droit d’accès private.
30
Les constructeurs
Objet
classe
POO
Constructeurs
31
avec new
Les constructeurs
Un constructeur est une méthode spéciale qui est appelée lors de l'instanciation d'un objet avec new.
Un constructeur en Java est une méthode pour créer (ou initialiser) un objet d'une classe.
Il permet d'initialiser l'objet avec des valeurs spécifiques.
•Chaque classe peut définir une ou plusieurs méthodes particulières appelées constructeurs.
•Un constructeur d’une classe de données est une méthode invoquée dans une autre classe exécutable
pour la création d’un objet de la classe données.
•Cette méthode, qui peut être vide, effectue les opérations nécessaires à l’initialisation d’un objet.
32
Les constructeurs
Remarques importantes :
Le nom du constructeur est toujours le même que celui de la classe.
Chaque constructeur doit avoir le même nom que la classe où il est défini
et n’a aucune valeur de retour (c’est l’objet créé qui est renvoyé).
•Plusieurs constructeurs peuvent être définis s’ils acceptent des paramètres d’entrée différents.
● Si aucun constructeur n'est défini, Java crée un constructeur par défaut sans argument.
Exemple:
classe
constructeur
==> Il n’a pas de type de retour (pas de void, ni int, etc.).
33
Les constructeurs
constructeur
Classe exécultable
34
📚 Les types de constructeurs :
Constructeur par défaut (explicite)
Constructeur avec paramètres
35
🧩 À quoi sert un constructeur ?
Il sert à :
• Créer un objet à partir d’une classe.
• Initialiser les variables (appelées attributs) de cet objet avec des valeurs.
🔑 Caractéristiques d’un constructeur :
• Il porte exactement le même nom que la classe.
• Il n’a pas de type de retour (pas même void).
• Il peut être surchargé (plusieurs constructeurs avec différents paramètres).
🧭 Pourquoi on utilise un constructeur ?
• Pour donner des valeurs aux objets dès leur création.
• Pour éviter d’avoir à appeler plein de méthodes set() après avoir créé l’objet.
• Pour personnaliser chaque objet.
● Si vous ne créez pas un constructeur dans votre classe, le compilateur va
automatiquement vous créer un constructeur par défaut implicite,
● La plateforme java différencie entre les différents constructeurs déclarés au sein d’une même classe en
se basant sur le nombre des paramètres et leurs types.
36
Les constructeurs
Utilisation :
37
🧠 À retenir :
•Le constructeur sert à initialiser un objet.
•Il s'appelle automatiquement lors de la création avec new.
•Il peut avoir 0, 1 ou plusieurs paramètres.
•Il permet de gagner du temps et d’avoir un code plus propre.
38
Exemple :
Constructeur de la classe Cercle
•Ajouter à la classe Cercle, un constructeur avec :
–3 paramètres
–2 paramètres
–1 paramètre (rayon)
–aucun paramètre mais initialise le rayon à 1.
39
Les objets : Instanciation
•Un objet est une instance d’une classe et est référencé par une variable
ayant un état (valeur).
•Pour créer un objet, il est nécessaire de déclarer une variable dont le
type est la classe à instancier, puis de faire appel à un constructeur de
cette classe en utilisant l’opérateur new
Syntaxe
nom_de_la_classe nom_objet;
nom_objet = new nom_de_la_classe(…);
40
Les objets : Instanciation
•On peut simplifier la syntaxe précédente en :
Syntaxe
nom_de_la_classe nom_objet = new constructeur_de_la_classe(…);
•Si le constructeur appelé nécessite des paramètres d’entrée, ceux-ci
doivent être précisés entre ces parenthèses (comme lors d’un appel
classique de méthode).
•Exemple : créer plusieurs instances de la classe Cercle avec différents
constructeurs.
41
Les objets : Accès aux attributs et aux méthodes
•Pour accéder à un attribut associée à un objet, il faut préciser l’objet qui
le contient.
•Le symbole . (point) sert à séparer l’identificateur de l’objet de l’identificateur
de la variable
•Syntaxe : nom_objet.nom_attribut
•Exemple : accès aux attributs d’un objet produit
•La même syntaxe est utilisée pour appeler une méthode d’un objet.
•Syntaxe : nom_objet.nom_methode();
•Exemple : accès aux méthodes d’un objet produit
42
Exécution d’un programme java
•Pour écrire un programme avec le langage java, le programmeur écrit
des classes correspondant aux données de son programme.
•Les traitements à effectuer sur les objets de cette classe sont
programmés dans les méthodes de celle-ci.
•En général, on définit une autre classe, dite exécutable, dont une
méthode appelée main() qui manipulera des instances de ces classes
appelées objets.
43
La classe exécutable « Main »
44
public : Indique que la classe est accessible depuis d'autres classes.
class MainPersonne : Définit une classe appelée MainPersonne.
● Cette classe contient la méthode main, qui est le point d'entrée d'un programme Java.
2. Définition de la méthode main
public : La méthode est accessible par l'extérieur (nécessaire pour le point d'entrée d’un programme en Java).
static : Permet d'exécuter main sans créer d'objet (instance) de la classe MainPersonne.
void : Indique que la méthode ne retourne pas de valeur.
main(String[] args) : main est le nom obligatoire de la méthode principale en Java.
C'est le point d'entrée du programme en Java. Lorsqu'on exécute un programme Java, c'est cette méthode qui
est exécutée en premier.
String[] args : C'est un tableau de chaînes de caractères qui permet de passer des arguments au programme
lors de son exécution.
Les objets : Accès aux attributs et aux méthodes
•Pour référencer l’objet “courant” (celui dans lequel se situe la ligne de
code), le langage Java fournit le mot-clé this
•Sa présence est indispensable dans le cas où apparait une confusion
de notation.
46
Surcharge des méthodes
Une méthode est une fonction définie dans une classe qui peut être
appelée sur un objet.
Une classe peut contenir des méthodes de même nom, avec des
paramètres différents,
On dit que la méthode est surchargée
47
Attributs d’instance et attributs de classe
Attributs d’instance
● Chaque instance de la classe possède ses propres valeurs des variables.
public class Etudiant{
public String nom;
Etudiant(String nom){
this.nom=nom;}
Etudiant etud1=new Etudiant (“Ahmed");
Etudiant etud2=new Etudiant (“Marwa");
Utilisation: On invoque les attributs d’instance avec le nom de l’instance
Class Test{
Public static void main(String[] args){
Etudiant etudiant = new Etudiant();
System.out.println(etudiant.nom); }
} 48
49
Attributs statiques
•Lors de la création d'une nouvelle instance d’une classe, cet objet
possède ces propres attributs afin de pouvoir y stocker des valeurs
spécifiques à lui.
•Ainsi pour la classe Cercle, les attributs x , y et rayon ont des valeurs
différentes d'un objet cercle à un autre.
•Il est parfois utile de spécifier qu'un attribut doit posséder la même
valeur pour toutes les instances, autrement dit avoir une seule valeur
partagée par toutes les instances de la classe.
50
Attributs statiques
•Si on change la valeur de cet attribut, ce changement sera partagé et connu de
toutes les instances.
•Ce sont d'une certaine manière des variables globales au niveau d'une classe.
•Les attributs statiques sont déclarées avec le mot clé static.
C'est pourquoi une telle variable est appelée variable de classe ou variable
statique.
•les variables de classe sont préfixées par une référence à un objet ou le nom de
la classe (objetClasse1.attribut ou Classe1.attribut).
51
Méthodes statiques
•Une méthode static sera appelée directement avec le nom de la classe
ou elle est définit, sans avoir besoin de créer une instance pour faire cet
appel.
•Par exemple la fonction main d’une classe exécutable Cl1 sera appelée
par la machine virtuelle JVM avec Cl1.main()
52
Constantes de classe
•Ce sont des cas particuliers de variables de classe, dont les valeurs ne
doivent pas être changées.
•On les déclare en combinant les mots clés final avec static.
•Par exemple, dans la classe Math, Math.PI est une constante définie
par :
public static final double PI= 3,141592653589;
53
Les packages
•Un package représente une arborescence indiquant au compilateur quel
chemin il faut emprunter pour retrouver la classe.
•Par exemple, si le package est java.util, il va effectuer sa recherche
dans le répertoire java/util
•Le mot clé import permet d’importer les classes d’un package,
exemples :
–import nomPackage.nomClasse; // Importer une classe d'un package
–import nomPackage.*; //Importer toutes les classes d'un package
54
Un package peut contenir des sous packages : chaque sous-package
est séparé de son parent avec un point « . » Il n'y a pas de limite sur le niveau de profondeur.
package com.bts.tp2
55
À quoi sert la méthode toString() en
Java ?
● La méthode toString() est une méthode définie dans la classe Object, qui est la classe parente de
toutes les classes en Java.
● Elle permet de renvoyer une représentation sous forme de chaîne de caractères (String) d'un objet. Par
défaut, si vous n'overridez pas cette méthode dans votre classe, elle retourne une chaîne contenant le
nom de la classe suivi du code de hachage de l'objet (par exemple : Rectangle@1b6d3586).
56
Java
L'encapsulation en
Objet
classe
POO
Constructeurs
Encapsulation
57
L'encapsulation
L'encapsulation est l'un des quatre piliers de la programmation orientée objet (POO) en Java,
C'est un principe fondamental qui consiste à regrouper les données (attributs) et les méthodes
qui les manipulent dans une même classe, tout en restreignant l'accès direct aux données pour garantir
leur intégrité et leur sécurité.
58
L'encapsulation est un principe fondamental de la programmation orientée objet (POO) qui consiste à cacher les détails
internes d'une classe et à contrôler l'accès aux données via des méthodes publiques.
59
🔥 Avantages de l'encapsulation
Avantages Explication
Sécurité Empêche la modification non contrôlée des attributs.
🎯 Contrôle
Permet de valider les données avant modification.
🏗 Maintenabilité
Facile à modifier sans impacter le reste du programme.
🏢 Réutilisabilité Permet d'utiliser les classes dans d'autres projets sans
souci.
🔄 Flexibilité Possibilité de changer l'implémentation interne sans affecter
les utilisateurs de la classe.
60
Question 1 :
Quelle affirmation est correcte concernant une classe en Java ?
A) Une classe ne peut contenir que des méthodes.
B) Une classe est une instance d'un objet.
C) Une classe est une structure qui définit des attributs et
des méthodes.
D) Une classe ne peut pas être instanciée.
Question 2:
Que signifie l'instanciation d’un objet ?
A) La déclaration d'une variable
B) La création d'un objet à partir d'une classe
C) L'héritage d'une classe
D) La suppression d'une instance
Question 3:
Quel modificateur d’accès permet de restreindre l’accès d’un attribut aux méthodes de la même
classe uniquement ?
A) public
B) private
C) protected
D) default
Explication : Un attribut private ne peut être accessible qu'à l'intérieur de la classe qui le définit
Question 4:
Pourquoi utilise-t-on les getters et setters en Java ?
A) Pour protéger l'accès direct aux attributs privés
B) Pour exécuter le programme plus rapidement
C) Pour éviter la surcharge des méthodes
D) Pour instancier des objets
Explication : Les getters et setters permettent d'encapsuler les données en restreignant l'accès
direct aux attributs tout en offrant des méthodes pour les récupérer ou les modifier.
Question 5:
Quelle est la principale fonction d’un constructeur en Java ?
a) Exécuter automatiquement un programme
b) Initialiser un objet lors de sa création
c) Déclarer une variable statique
Question 6:
Que se passe-t-il si une classe ne définit aucun constructeur ?
a) Java génère automatiquement un constructeur par
défaut.
b) La classe ne pourra pas être instanciée.
c) Java affichera une erreur de compilation.
d) La classe sera abstraite par défaut.
Explication : Java génère automatiquement un constructeur par défaut.