Vous êtes sur la page 1sur 23

Cours: Programmation Java

Filière: 2 ème LSI


Enseignante: Dr. Majdoub Manel

2023-2024 Programmation JAVA 2eme SI 1


Plan du cours

Chapitre 1 Introduction
Chapitre 2 Objets et Classes
Chapitre 3 Encapsulation et Surcharge
Chapitre 4 Héritage et Polymorphisme
Chapitre 5 Classes abstraites et Interfaces
Chapi
Chapitre 6 Les collections
tre 5
Chapitre 7 Les exceptions

18/09/2023 POO 2eme SI 2


Chapitre III: Encapsulation et Surcharge
Objectifs

• Notion de package

• Encapsulation des classes

• Encapsulation des attributs/méthodes

• Surcharge des méthodes

18/09/2023 POO 2eme SI 4


Package

Package: Un package peut être considéré comme une bibliothèque de classes .


Il permet de regrouper un certain nombre des classes relativement liées.
Les packages peuvent être organisés d’une manière hiérarchique en sous-packages et ainsi de
suite

Pour utiliser ensuite le package ainsi créé, on l'importe dans le fichier :


import nomPackage.*;

Quelques packages prédéfinis:


Le package math permet d’utiliser les fonctions mathématiques ;
Dans io tout ce qu'il faut pour manipuler les entrées, les sorties, ...
sql contient les classes et méthodes pour interfacer vos applications avec des bases de
données (interface JDBC).
18/09/2023 POO 2eme SI 5
Package

18/09/2023 POO 2eme SI 6


Encapsulation

L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles
pour les autres objets.

L'encapsulation est une manière de définir une classe de telle sorte que ses attributs
ne puisse pas être directement manipulés de l'extérieur de la classe, mais
seulement indirectement par l'intermédiaire des méthodes.

18/09/2023 POO 2eme SI 7


Les modificateurs d’accès

Les attributs et les méthodes sont précédés lors de la déclaration par l’un
des modificateurs de visibilité suivants : « public », « private », « protected »
et Néant.
Une méthode, classe ou attribut sont déclarés comme publiques « public »
s’ils doivent être visibles à l’intérieur et à l’extérieur quelque soit leur
package.
 Une méthode, classe ou attribut ne sont pas précédés par un modificateur
de visibilité explicite (Néant) ne vont être visibles qu’à l’intérieur de même
package. C'est-à-dire seules les classes de même package peuvent accéder
aux attributs et méthodes de classes « amies ».

18/09/2023 POO 2eme SI 8


Les modificateurs d’accès

Une méthode ou attributs définis comme étant privés « private » s’ils sont
accessibles uniquement par les méthodes de la classe en cours. Ils ne sont
pas accessibles ailleurs.

 Une méthode ou attribut sont définis comme protégés « protected » s’ils


ne peuvent être accessibles qu’à travers les classes dérivées ou les classes de
même package.

18/09/2023 POO 2eme SI 9


Les modificateurs d’accès

Modificateurs d’accès des classes et interfaces


public Accès toujours possible
Néant Accès possible depuis les classes du même paquetage

Modificateurs d’accès pour les attributs et les méthodes

public Accès possible partout où la classe est accessible


néant Accès possible depuis toutes les classes du même paquetage

protected Accès possible depuis toutes les classes de même paquetage ou


depuis les classes dérivées

private Accès restreint à la classe où est faite la déclaration (du membre ou


de la classe interne)

18/09/2023 POO 2eme SI 10


Encapsulation des attributs

L’attribut public
public class A {
public int x;


}

class B { class C extends A { class D {


A a=new A(); A a=new A(); A a=new A();
a. x = t ; a. x = t ; a. x = t ;
} this.x = t ; }
}

La variable public est visible par toutes les classes


18/09/2023 POO 2eme SI 11
Encapsulation des attributs

L’attribut private

public class A {
private int y;

}

class B { class C extends A { class D {


A a=new A(); A a=new A(); A a=new A();
a. y = t ; a. y = t ; a. y = t ;
} }
y= t;
}

La variable private n'est accessible que depuis l'intérieur même de la classe.

18/09/2023 POO 2eme SI 12


Encapsulation des attributs

L’attribut default (par défaut)

public class A {

… int z ;
}

class B { class C extends A { class D {


A a=new A(); A a=new A();
A a=new A();
a.z= t ; a. z = t ; a. z = t ;
z = t; }
}
}

La variable default n'est accessible que depuis les classes faisant partie
du même package.
18/09/2023 POO 2eme SI 13
Encapsulation des attributs

L’attribut protected

public class A {


protected int w ;

}
class C extends A {
class B { A a=new A(); class D {
A a=new A(); a. w = t ; A a=new A();
a.w= t ; this.w = t; a. w = t ;
} } }

La variable protected est accessible uniquement aux classes d'un package


et à ses sous-classes (même si elles sont définies dans un package différent.)
18/09/2023 POO 2eme SI 14
Encapsulation des méthodes (1/5)

Méthode public

public class A {
public void meth1()
{ }

}

class B { class C extends A { class D {


A a=new A(); A a=new A(); A a=new A();
a.meth1() ; a.meth1() ; a.meth1() ;
} this.meth1(); }
}
La méthode public est visible par toutes les classes

18/09/2023 POO 2eme SI 15


Encapsulation des méthodes (1/5)

Méthode private

public class A {
private void meth2 ()
{ }

}

class B { class C extends A { class D {


A a=new A(); A a=new A(); A a=new A();
a.meth2() ; a.meth2() ; a.meth2() ;
} this. meth2(); }
}

La méthode private n'est accessible que depuis l'intérieur même de la classe.

18/09/2023 POO 2eme SI 16


Encapsulation des méthodes (1/5)

Méthode default (par défaut)

public class A {
void meth3 () {}

}

class B { class C extends A { class D {


A a=new A(); A a=new A(); A a=new A();
a.meth3() ; a.meth3() ; a.meth3() ;
} meth3() ; }
}

La méthode default n'est accessible que depuis les classes faisant


partie du même package.

18/09/2023 POO 2eme SI 17


Encapsulation des méthodes (1/5)

Méthode protected
public class A {
Protected void meth4()
{}

}

class B {
class C extends A { class D {
A a=new A();
A a=new A(); A a=new A();
a.meth4() ; a.meth4() ; a.meth4() ;
}
this.meth4() ; }
}
La méthode protected est accessible uniquement aux classes d'un package
et à ses sous-classes (même si elles sont définies dans un package différent.)

18/09/2023 POO 2eme SI 18


Les modificateurs d’accès

Pour la manipulation des attributs private, il faut :


•Un getter commence par get, suivi d’un nom, qui est en général le nom de
l’attribut, commençant par une majuscule. Il retourne une valeur en général
du même type que l’attribut associé

•Le setter associé commence par set, suivi du nom de l’attribut. Il prend en
paramètre un unique argument, du même type que le type de l’attribut
Le setter et le getter doivent être déclarés public
public class Produit {
private float prix;
public void setPrix(float prix)
{
this.prix=prix; }
public float getPrix()
{ return prix; } }
18/09/2023 POO 2eme SI 19
Surcharge des méthodes

En Java, on peut surcharger une méthode, c’est-à-dire, ajouter une


méthode qui a la même signature qu’une méthode existante public
public double calculerMoyenne()
public double calculerMoyenne(double [] desNotes)

En Java, il est interdit de surcharger une méthode en changeant le


type de retour
Les méthodes comme les constructeurs peuvent être surchargées:
(overloaded)
 Leur nom est le même
Le nombre ou le type de leurs paramètres varie

18/09/2023 POO 2eme SI 20


Surcharge des méthodes

class Affiche {
void print (int i) { System.out.println ("entier = "+i); }
void print (float f) { System.out.println ("réel = "+f); }
void print (String s) { System.out.println ("chaîne de
caractères =" +s); }
}
class TestAffiche {
public static void main (String []args){
Affiche a = new Affiche() ;
a.print(4.2f); // Affiche ?
a.print("hello"); // Affiche ?
a.print(4); // Affiche ? } }

18/09/2023 POO 2eme SI 21


Exercice 1

Corriger les erreurs


public class Pixel {
private int x;
private int y;
public Pixel(int x, int y) {
this.x = x;
this.y = y;
}
public boolean sameAs(Pixel p) {
return (this.x==p.x) && (this.y==p.y);
}}
class Test {
public static void main(String[] args) {
Pixel p0 = new Pixel(0,0);
Pixel p1 = new Pixel(1,3);
boolean b = p0.sameAs(p1);
p0.x = 1;
System.out.println(p0.x + ‘’\t’’+ p0.y);}}
18/09/2023 POO 2eme SI 22
Exercice2

1. Créer une classe Temps qui contient 3 attributs entiers privés : heure, minute, seconde
2. Définir les constructeurs suivants en utilisant chaque fois que c’est possible la référence
this.
Temps (int heure)
Temps (int heure, int minute)
Temps (int heure, int minute, int seconde)

3. Ecrire une méthode affiche() qui affiche le temps sous la forme suivante :
"Il est ……..heures ……..minutes……..seconde’’ .
4. Ecrire la méthode main qui permet d’utiliser les trois types de constructeur suivis de la
méthode affiche() et qu’obtient-on à l’exécution ?

18/09/2023 POO 2eme SI 23

Vous aimerez peut-être aussi