Vous êtes sur la page 1sur 36

PROGRAMMATION JAVA

AU : 2021 - 2022
Auditoire : 2ème Année Licence Multimédia

DR. Jihen KHALFALLAH

jihen_khalfallah@yahoo.fr
PLAN DU COURS

• Chapitre 1 : Introduction à la POO


• Chapitre 2 : Syntaxe du langage Java
• Chapitre 3 : Concept de classe et objet
• Chapitre 4 : Héritage

2
PROGRAMMATION JAVA

Chapitre 3: Concept de classe et objet

Auditoire : 2ème Année Licence Multimédia

DR. Jihen KHALFALLAH


jihen_khalfallah@yahoo.fr
Plan
• 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
• La destruction des objets
• Surcharge des méthodes
• Attributs statiques
• Les packages
Dr J. Khalfallah 2LM (ISITCom) – Programmation java 4
Introduction
• La programmation orientée-objet propose une approche
centrée sur les données.
• Le programmeur Java va d’abord identifier un ensemble
d’objets, tel que chaque objet représente une entité réelle
décrite par un ensemble de données.
• Cet objet sera utilisé ou manipulé par le programme (classe
exécutable).
• Ensuite, le programmeur va écrire les traitements, associés à
chaque objet.
• Un objet peut être vu comme une entité regroupant un
ensemble de données et de méthodes de traitement.
Dr J. Khalfallah 2LM (ISITCom) – Programmation java 5
Notion de classe/objet
• Une classe regroupe un ensemble de données (appelées
attributs) et 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.
• Qu’est-ce qu’un objet?
 Une boîte noire qui reçoit et envoie des messages

I’m
How are
fine!
you?
6
Notion de classe/objet
Un objet a :
• une adresse en mémoire (identifie l’objet)
• un comportement (ou interface)
• un état interne
- Le comportement est donné par des fonctions ou procédures,
appelées méthodes
- L’état interne est donné par des valeurs de variables d’instances
Classe États Comportements
Nom, race, âge, couleur Aboyer, chercher le baton,
chien
mordre, faire le beau
N , type, solde, ligne de crédit Retrait, virement, dépôt,
Compte consultation du solde
Plaque, marque, couleur, vitesse Tourner, accélérer, s’arrêter, faire
Voiture le plein, klaxonner
7
7
Syntaxe générale
modificateur class Nom_classe {
/* déclaration des attributs */
modificateur type_a1 attribut1;
modificateur type_a2 attribut2;
...

/* déclaration des méthodes */


modific type_m1 nom_methode1(type_p1 param1, ...)
{
Corps de methode1
}
...

Dr J. Khalfallah 2LM (ISITCom) – Programmation java 8


Exemple : la classe Cercle
• Une classe est une collection d’attributs (données)
et méthodes (procédure ou fonction) qui opèrent
sur ces données.
• Un cercle est caractérisé par: Cercle
– Les coordonnées de son centre coordonneesCentre
– La valeur de son rayon rayon
• Les traitements à appliquer sur un cercle: getPerimetre()
– Calculer le périmètre getSurface()
getRayon()
– Calculer la surface
deplacer()
– Changer le rayon
– Déplacer le cercle 9
Composition de classe dans Java
package banque;
Corps de la classe
import java.lang.*;
public class CompteBancaire{
Déclaration de
private String nom ;
la classe
private int solde ;
Variables d’instance ou
« champs » public CompteBancaire(String n,int s) {
nom = n ;
Définition du solde = s;
constructeur }

public String getNom() { return nom ; }


Méthodes d’accès
public void setNom (String n) {nom = n;}

void depot (int montant) {
public
Définition solde += montant;
des }
méthodes public void retrait (int montant){
solde -= montant;
} }

Dr J. Khalfallah 2LM (ISITCom) – Programmation java 10


La classe en Java
 Une classe est un moule pour créer des objets
 Une description de la boîte noire : ce qu’il contient, ce qu’il peut faire
 Un type d’objet
 Une classe est composée de :
 variables d’instance, ou champs
 qui donnent l’état des instances

 accesseurs et modificateurs (get et set)


 qui permettent de lire et modifier les variables d’instance

 constructeurs
 qui permettent de créer des nouvelles instances de la classe (objets)

 méthodes
 qui indiquent les types de messages qui peuvent être envoyés
aux instances

Dr J. Khalfallah 2LM (ISITCom) – Programmation java 11


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.

Dr J. Khalfallah 2LM (ISITCom) – Programmation java 12


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é

Dr J. Khalfallah 2LM (ISITCom) – Programmation java 13


Les modificateurs d’accessibilité
Mot-clé Portée
Les attributs, méthodes ou classes publiques sont accessibles par
public
tout objet.

Les attributs, méthodes ou classes définies comme privées ne sont


private accessibles directement que dans la classe dans laquelle elles sont
définies.
Les attributs, méthodes ou classes définies comme protégées ne
protected sont accessibles que par la classe dans laquelle elles sont définies.
ou les classes filles.

"rien" Idem à public

Dr J. Khalfallah 2LM (ISITCom) – Programmation java 14


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.
– Il existe deux types de méthodes:
 les accesseurs en lecture, dit aussi accesseur (get)
 les accesseurs en modification, dit aussi modificateur (set)
Dr J. Khalfallah 2LM (ISITCom) – Programmation java 15
Les getters et setters
• Une méthode qui a pour but de modifier la valeur d’un
attribut d’une classe a 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 a 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.
Dr J. Khalfallah 2LM (ISITCom) – Programmation java 16
Les constructeurs
 Un constructeur est une méthode automatiquement
appelée au moment de la création de l’objet.
 Un constructeur est utile pour procéder a toutes les
initialisations nécessaires lors de la création de la classe.
 Le constructeur porte le même nom que le nom de la classe
et n’a pas de valeur de retour.
 Toute classe possède au moins un constructeur. Si le
programmeur ne l'écrit pas, il en existe un par défaut, sans
paramètres, de code vide.
 Pour une même classe, il peut y avoir plusieurs constructeurs,
de signatures différentes
Dr J. Khalfallah 2LM (ISITCom) – Programmation java 17
Les constructeurs
 L'appel de ces constructeurs est réalisé avec le new auquel on
fait passer les paramètres.
 L'appel de new déclenche l'allocation mémoire nécessaire au
stockage du nouvel objet créé et l'initialisation de ses attributs,
 Déclenchement du "bon" constructeur
 Il se fait en fonction des paramètres passés lors de l'appel
(nombre et types). C'est le mécanisme de "lookup".
 Attention
 Si le programmeur crée un constructeur (même si c'est un
constructeur avec paramètres), le constructeur par défaut n'est
plus disponible.

Dr J. Khalfallah 2LM (ISITCom) – Programmation java 18


Exemple : Constructeur de la classe Cercle c

• 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.

Dr J. Khalfallah 2LM (ISITCom) – Programmation java 19


Exemple : Constructeur de la classe Cercle c
public class Cercle{
// définition des attributs
double x,y; //coordonnées du cercle
double rayon; //rayon du cercle

// constructeur avec trois arguments


public Cercle(double xCentre, double yCentre, double r)
{
x = xCentre;
y = yCentre;
rayon = r;
}
// constructeur avec deux arguments
public Cercle(double xCentre, double yCentre)
{
x = xCentre;
y = yCentre;
}
Dr J. Khalfallah 2LM (ISITCom) – Programmation java 20
Exemple : Constructeur de la classe Cercle c

// constructeur avec un argument


public Cercle(double r)
{
rayon = r;
}
// constructeur sans arguments
public Cercle()
{
rayon = 1.0;
}

Dr J. Khalfallah 2LM (ISITCom) – Programmation java 21


Ajout de méthodes à la classe Cercle
public class Cercle{
// définition des attributs
double x,y; //coordonnées du cercle
double rayon; //rayon du cercle

// méthodes pour retourner le périmètre et la


surface
public double getSurface() {
return PI*rayon*rayon;
}
Corps de méthode

public double getPerimetre() {


return 2*PI*rayon;
}
}
Dr J. Khalfallah 2LM (ISITCom) – Programmation java 22
Les objets : Instanciation
• Un objet est une instance d’une classe et est référencé par une
variable ayant un état (valeur).
• 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.
• 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;
// déclaration d’une référence
nom_objet = new nom_de_la_classe(…);
23
// création de l'objet par l'opérateur new
Les objets : Instanciation
• On peut simplifier la syntaxe précédente en :
nom_de_la_classe nom_objet = new
constructeur_de_la_classe(…);
// création de l'objet(instanciation)
• 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.
Dr J. Khalfallah 2LM (ISITCom) – Programmation java 24
Quelques exemples
 La classe « chien » définit:
 Les attributs d’un chien (nom, race, couleur, âge…)
 Les comportements d’un chien (Aboyer, chercher le baton,
mordre…)
 Il peut exister dans le monde plusieurs objets (ou instances) de
chien
Classe Objets
Chien Mon chien: Bill, Teckel, Brun, 1 an
Le chien de mon voisin: Hector, Labrador, Noir, 3 ans
Compte Mon compte à vue: N°210-1234567-89, Courant, 1.734 DT, Mon
compte épargne: N°083-9876543-21, Epargne, 27.000 DT
Voiture Ma voiture: ABC-123, VW Polo, grise, 0 km/h
La voiture que je viens de croiser: 102TU5968, Porsche, noire,
170 km/h
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 Cercle
c.rayon
• 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 Cercle
c.deplacer();

Dr J. Khalfallah 2LM (ISITCom) – Programmation java 26


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.
• Exemple : utilisation de this dans la classe Cercle
Public class Cercle{
private double x,y,rayon;
public Cercle (double x,double y,double rayon)
{
this.x=x;
this.y=y;
this.rayon=rayon;
}
Dr J. Khalfallah
} 2LM (ISITCom) – Programmation java 27
La destruction des objets
 La destruction des objets est prise en charge par le garbage
collector (GC).
 Le GC détruit les objets pour lesquels il n'existe plus de
référence.
 La récupération de mémoire peut être aussi invoquée
explicitement pas le programmeur à des moments bien précis
avec la commande System.gc().
 Certaines situations nécessitent un nettoyage spécial que le GC ne
peut pas effectuer :
 Par exemple, certains fichiers ont été ouverts pendant la durée
de vie de l’objet et vous voulez vérifier qu’ils sont correctement
fermés quand l’objet est détruit.
 Pour cela, la méthode spéciale finalize(), peut être définie.
 Cette méthode (si elle est présente) est appelée par le GC
lorsque l'objet est détruit pour assurer un nettoyage spécial.
Dr J. Khalfallah 2LM (ISITCom) – Programmation java 28
La destruction des objets
public class Cercle {
...
void finalize() {
System.out.println("Je suis garbage collecte");
}
}
...
Cercle c1;
if (condition) {
Cercle c2 = new Cercle();
// 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 ne possède plus de référence. Elle
n'est plus accessible.
…// A tout moment le gc peut detruire l'objet.
System.gc();
29
Résultat : Affichage (je suis grabage collecte)
La méthode toString()
• Cette méthode (définit dans la classe de base Object) permet de
retourner une chaine de caractère contenant le nom de la classe
et les valeurs des attributs de celle-ci.
• Très utile pour les affichages.
Exemple :
public String toString() {
return "Compte [ numero= " + this.numero + ",
proprietaire= " + this.proprietaire + ", montant= "
+ this.montant + "]";
}

Dr J. Khalfallah 2LM (ISITCom) – Programmation java 30


Surcharge des méthodes
• Le surcharge (sur-définition) appliqué à un constructeur ou à
une méthode est le processus permettant dans une même
classe de donner le même nom à plus qu’un constructeur ou
une méthode.
• Le compilateur saura identifier exactement la variante appelée,
en fonction de sa signature (l’entête).
• les méthodes surchargées doivent se distinguer par des
signatures clairement différentes :
– nombre d'arguments différents
– et/ou types d'arguments différents

Dr J. Khalfallah 2LM (ISITCom) – Programmation java 31


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.

Dr J. Khalfallah 2LM (ISITCom) – Programmation java 32


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.
• Exemple : ajouter un attribut statique indiquant le nombre de cercles
crées dans la classe Cercle.
private static int nbrCercles=0;

Dr J. Khalfallah 2LM (ISITCom) – Programmation java 33


Constantes de classe
• Ce sont des cas particuliers d’attributs 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;

Dr J. Khalfallah 2LM (ISITCom) – Programmation java 34


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

Dr J. Khalfallah 2LM (ISITCom) – Programmation java 35


Exercice
Créer une classe Point permettant de manipuler un point d’un plan
caractérisé par deux coordonnées x et y.

Définir les méthodes suivantes:


une méthode saisir() :
permet de saisir les coordonnées cartésiennes du point.
 une méthode deplacer (float, float)
effectuant une translation définie par ses deux arguments.
une méthode afficher()
permet d’afficher les coordonnées cartésiennes du point.
Les coordonnées du point seront des attributs privés.

Dr J. Khalfallah 2LM (ISITCom) – Programmation java 36

Vous aimerez peut-être aussi