POO Java
POO Java
POO Java
fondamentaux
des réseaux
informatiques
Plan
Abdelali Saidi
Introduction
Structure
d’une classe
Héritage
La classe
abstraite et 1 Introduction
l’interface
2 Structure d’une classe
La classe
Object 3 Héritage
4 La classe abstraite et l’interface
5 La classe Object
1/29
Principes
fondamentaux
des réseaux
informatiques
Plan
Abdelali Saidi
Introduction
Structure
d’une classe
Héritage
La classe
abstraite et 1 Introduction
l’interface
2 Structure d’une classe
La classe
Object 3 Héritage
4 La classe abstraite et l’interface
5 La classe Object
2/29
Principes
fondamentaux
des réseaux
informatiques
Programmer en Java
Abdelali Saidi
Introduction
Structure
d’une classe
Héritage Environnement
La classe
abstraite et • Le coude source : le fichier .java
l’interface
La classe
• L’exécutable : le fichier .exe
Object
• Compilation : la commande javac
• Exécution : la commande java
• IDE : Eclipse, Netbeans ...
2/29
Principes
fondamentaux
des réseaux
informatiques
Plan
Abdelali Saidi
Introduction
Structure
d’une classe
Héritage
La classe
abstraite et 1 Introduction
l’interface
2 Structure d’une classe
La classe
Object 3 Héritage
4 La classe abstraite et l’interface
5 La classe Object
3/29
Principes
fondamentaux
des réseaux
informatiques
Structure d’une classe
Abdelali Saidi
Qu’est-ce qu’une classe ?
Introduction
Structure
Une classe est une sorte de type complexe qui nous permet de
d’une classe créer des variables pouvant stocker plusieurs valeurs de
Héritage
plusieurs types. Cette variable est appelé un objet et le fait de
La classe
abstraite et
créer un objet est dit instancier un objet.
l’interface
La classe Caractéristiques
Object
• Il est recommandé d’écrire une classe par fichier .java
• Le premier caractère de l’identifiant d’une classe s’écrit en
majuscule
• Les champs et les méthodes s’écrivent en Camel case
• La surcharge : il est possible d’avoir plusieurs méthodes
qui ont le même nom. À condition qu’elles aient des
signatures différentes.
3/29
Principes
fondamentaux
des réseaux
informatiques
Structure d’une classe
Abdelali Saidi
Premier exemple d’une classe
Introduction
On suppose qu’on voudrait créer un programme Java qui nous
Structure
d’une classe permettra de manipuler les informations de quelques étudiants.
Héritage Les étapes à suivre sont :
La classe
abstraite et
• Créer une classe qui nous permettra de créer des objets
l’interface pouvant stocker ces informations
La classe • Indiquer les champs pour stocker les valeurs
Object
• Implémenter les méthodes pour manipuler ses objets
• Créer une deuxième classe contenant la fonction main()
pour tester la classe
NB 1 : Il est possible de créer les deux classes dans un même
fichier. Mais, il est recommandé de mettre chaque classe du
projet dans un fichier à part.
NB 2 : D’autres éléments à ajouter à la classe qu’on verra à la
suite du cours
4/29
Principes
fondamentaux
des réseaux
informatiques
Structure d’une classe
Abdelali Saidi
Introduction
Premier exemple d’une classe
Structure
d’une classe
5/29
Principes
fondamentaux
des réseaux
informatiques
Structure d’une classe
Abdelali Saidi
Premier exemple d’une classe
Introduction
Structure
• Cette classe nous permettra de créer des objets pouvant
d’une classe
stocker l’identifiant, le nom, le prénom et l’année de
Héritage
naissance de chaque personne.
La classe
abstraite et • La méthode afficheAge() nous permettra d’afficher l’age
l’interface
La classe
de chaque personne.
Object • Le mot clé this indique l’objet caché
• Au niveau de java, l’appel à une méthode passe souvent
par un objet. Autrement dit, si on veut appeler une
méthode, on doit commencer par créer un objet de la
même classe et appeler la méthode de la manière suivante
: Classe.méthode(). Par exemple : p.afficheAge()
• Le mot clé this permet à la méthode d’accéder aux champs
de l’objet qu’on a utilisé pour appeler la méthode
Par la suite, il faut penser à une classe de test
6/29
Principes
fondamentaux
des réseaux
informatiques
Structure d’une classe
Abdelali Saidi
Premier exemple d’une classe
Introduction
Héritage
public static void main(String[] args) {
La classe
abstraite et Personne p = new Personne();
l’interface
La classe
Object
p.id = 1;
p.nom = "Saidi";
p.prenom = "Soundous";
p.anneeDeNaissance = 2016;
p.afficheAge(2021);
}
}
7/29
Principes
fondamentaux
des réseaux
informatiques
Structure d’une classe
Abdelali Saidi
Introduction
Structure
d’une classe
Premier exemple d’une classe
Héritage
La classe
• Le mot clé new nous permet d’instancier la classe (créer
abstraite et
l’interface un objet)
La classe • La méthode Personne() s’appelle un constructeur
Object
• On accède aux champs de l’objet p de la manière suivante
: p.champ
• La méthode afficheAge() appelé de cette manière affichera
l’age de p
8/29
Principes
fondamentaux
des réseaux
informatiques
Structure d’une classe
Abdelali Saidi
Introduction
Structure
d’une classe
Visibilité d’un membre d’une classe
Héritage
Au niveau de l’exemple précédent, nous avons omis la visibilité
La classe des membres de la classe Personne. Dans ce cas, les membres
abstraite et
l’interface
auront la visibilité par défaut et seront accessibles au niveau du
La classe package en entier. Sinon, nous avons les visibilités suivantes
Object
aussi :
• public : accessible partout dans le programme
• private : accessible seulement à l’intérieur de la classe
• protected : accessible dans la classe, les classes qui en
hérite et dans tous le package
9/29
Principes
fondamentaux
des réseaux
informatiques
Structure d’une classe
Abdelali Saidi
Introduction
La classe
programme ne peut pas assurer l’intégrité des données fournis
Object par l’utilisateur. La recommandation est de déclarer les champs
sensibles avec la visibilité private et d’implémenter des
méthodes qui permettront d’accéder et de modifier ces champs.
Ces méthodes s’appellent les accesseurs. Nous en avons deux :
• Les getters : pour récupérer les valeurs des champs cachés
• Les setters : pour les modifier
10/29
Principes
fondamentaux
des réseaux
informatiques
Structure d’une classe
Abdelali Saidi Exemple - Les accesseurs
Introduction
Structure
public class Personne {
d’une classe .
Héritage .
La classe private int anneeDeNaissance;
abstraite et
l’interface
La classe
int getAnneeDeNaissance() {
Object return this.anneeDeNaissance;
}
void setAnneeDeNaissance(int
anneeDeNaissance) {
this.anneeDeNaissance =
anneeDeNaissance;
}
.
.
}
11/29
Principes
fondamentaux
des réseaux
informatiques
Structure d’une classe
Abdelali Saidi
La classe
abstraite et
public static void main(String[] args) {
l’interface Personne p = new Personne();
La classe .
Object
.
p.setAnneeDeNaissance(2016);
System.out.println(p.getNom());
p.afficheAge(2021);
}
}
12/29
Principes
fondamentaux
des réseaux
informatiques
Structure d’une classe
Abdelali Saidi
Les constructeurs
Introduction Le constructeur est une méthode particulière qui permet
Structure
d’une classe
d’instancier une classe. Elle se caractérise par :
Héritage
• Dans une classe, si aucun constructeur n’est définit, il y
La classe aura un constructeur par défaut
abstraite et
l’interface
• Son rôle est d’initialiser tous les champs d’un objet par les
La classe
valeurs neutres selon son type.
Object
• Elle n’a pas de retour
• Elle porte le même nom que la classe
• On peut créer autant de constructeurs qu’on veut (à
condition qu’ils aient des signatures différentes)
• À la création du premier constructeur, le constructeur par
défaut n’est plus
• Il est recommandé de créer un constructeur qui remplacera
dans ce cas le constructeur par défaut
13/29
Principes
fondamentaux
des réseaux
informatiques
Structure d’une classe
Abdelali Saidi
Exemple - constructeur
Introduction
14/29
Principes
fondamentaux
des réseaux
informatiques
Structure d’une classe
Abdelali Saidi
Introduction
Exemple - constructeur
Structure
d’une classe
La classe
Object Personne p = new Personne();
Personne p = new Personne(2000);
Personne p = new
Personne("Sulaiman","Saidi");
}
}
15/29
Principes
fondamentaux
des réseaux
informatiques
Plan
Abdelali Saidi
Introduction
Structure
d’une classe
Héritage
La classe
abstraite et 1 Introduction
l’interface
2 Structure d’une classe
La classe
Object 3 Héritage
4 La classe abstraite et l’interface
5 La classe Object
16/29
Principes
fondamentaux
des réseaux
informatiques
Héritage
Abdelali Saidi
Introduction Présentation
Structure L’héritage est un concept de la programmation orienté objet
d’une classe
qui permet à une classe d’hériter les caractéristiques d’une
Héritage
La classe
autre classe.
abstraite et
l’interface
Caractéristiques
La classe
Object • En Java, l’héritage multiple n’est pas autorisé
• Tous les membres public et protected sont accessibles dans
les classes dérivés
• Polymorphisme : Redéfinir une méthode de la classe
parente dans la classe dérivée
• Pour empêcher l’héritage d’une fonction, il faut la déclarer
avec le mot clé final
16/29
Principes
fondamentaux
des réseaux
informatiques
Structure d’une classe
Abdelali Saidi
Introduction
Structure
d’une classe
Exemple - héritage
Héritage
public class Etudiant extends Personne {
La classe
abstraite et .
l’interface .
La classe .
Object
}
}
17/29
Principes
fondamentaux
des réseaux
informatiques
Structure d’une classe
Abdelali Saidi
Introduction
Héritage
Il reste à :
La classe • Définir les champs et les méthodes spécifiques à cette
abstraite et
l’interface sous-classe
La classe
Object
• Définir les constructeurs
• Il est possible de masquer un champ ou une méthode de la
classe parente. Il suffit d’utiliser le même nom pour le
champ et la même signature pour la méthode.
• À la définition d’un constructeur, il est possible d’appeler
le constructeur de la classe parente avec le mot clé super
18/29
Principes
fondamentaux
des réseaux
informatiques
Structure d’une classe
Abdelali Saidi
La classe
abstraite et
private int cne;
l’interface private String filiere;
La classe
Object
public Etudiant(){};
public Etudiant(int cne, String nom, String
prenom){
super(nom,prenom);
this.cne = cne;
}
... les accesseurs
19/29
Principes
fondamentaux
des réseaux
informatiques
Structure d’une classe
Abdelali Saidi
Introduction
Exemple - héritage (suite)
Structure
d’une classe
Héritage ...
La classe void afficheAge(){
abstraite et System.out.println("L’age de l’etudiant
l’interface
"+this.nom+" "+this.prenom+" est :
La classe
Object "+this.age);
}
void afficheCne(){
System.out.println(this.cne);
}
}
20/29
Principes
fondamentaux
des réseaux
informatiques
Structure d’une classe
Abdelali Saidi
La classe
abstraite et public static void main(String[] args) {
l’interface
p.afficheAge();
e.afficheAge();
}
}
21/29
Principes
fondamentaux
des réseaux
informatiques
Plan
Abdelali Saidi
Introduction
Structure
d’une classe
Héritage
La classe
abstraite et 1 Introduction
l’interface
2 Structure d’une classe
La classe
Object 3 Héritage
4 La classe abstraite et l’interface
5 La classe Object
22/29
Principes
fondamentaux
des réseaux
informatiques
La classe abstraite et l’interface
Abdelali Saidi
Introduction
Structure
d’une classe
Héritage Présentation
La classe Une classe abstraite et l’interface sont des classes qui ne sont
abstraite et
l’interface utilisées que si elles sont héritées. Elles peuvent contenir des
La classe méthodes sans implémentation (que la signature) et leurs
Object
utilisation oblige les classes qui les héritent (ou implémentent
quand on parle d’interfaces) de redéfinir toutes leurs méthodes.
Cela a un impact positif lors de la collaboration au niveau d’un
projet Java.
22/29
Principes
fondamentaux
des réseaux
informatiques
La classe abstraite et l’interface
Abdelali Saidi
La classe abstraite
Introduction
Pour déclarer une classe en tant que classe abstraite, il suffit
Structure
d’une classe d’utiliser le mot clé abstract. Exemple :
Héritage
La classe
public abstract class Personne {
abstraite et public abstract void uneMethodeAbstraite(){
l’interface
...
La classe
Object }
..
}
23/29
Principes
fondamentaux
des réseaux
informatiques
La classe abstraite et l’interface
Abdelali Saidi
Introduction
L’interface
Structure
d’une classe
L’interface est utilisée pour représenter des propriétés
Héritage transverses de classes. Autrement dit, elle nous permet d’avoir
La classe une idée sur le fait que telle ou telle classe possède telle ou telle
abstraite et
l’interface propriété.
La classe
Object
Caractéristiques :
• Pas besoin d’indiquer les mots clés public et abstract au
niveau des signatures des méthodes d’une interface
• Une interface peut hériter une autre ou plusieurs
• Une classe peut implémenter une ou plusieurs interfaces
• Une classe concrète doit absolument implémenter toutes
les interfaces qu’elle implémente
24/29
Principes
fondamentaux
des réseaux
informatiques
La classe abstraite et l’interface
Abdelali Saidi
L’interface
Introduction
Pour créer une interface :
Structure
d’une classe
public interface I1{
Héritage
void uneMethode(){};
La classe
abstraite et ..
l’interface
}
La classe
Object
Pour l’implémenter :
public classe Exemple implements I1{
void uneMethode(){
...
}
...
}
25/29
Principes
fondamentaux
des réseaux
informatiques
Plan
Abdelali Saidi
Introduction
Structure
d’une classe
Héritage
La classe
abstraite et 1 Introduction
l’interface
2 Structure d’une classe
La classe
Object 3 Héritage
4 La classe abstraite et l’interface
5 La classe Object
26/29
Principes
fondamentaux
des réseaux
informatiques
La classe Object
Abdelali Saidi
Introduction
Structure
d’une classe
26/29
Principes
fondamentaux
des réseaux
informatiques
La classe Object
Abdelali Saidi
La classe Object
Introduction
• La méthode toString() : permet de représenter un objet
Structure
d’une classe sous forme d’une chaine de caractères
Héritage • Exemple :
La classe
abstraite et
l’interface public String toString() {
La classe
String resultat = super.toString() ;
Object
return resultat ;
}
27/29
Principes
fondamentaux
des réseaux
informatiques
La classe Object
Abdelali Saidi La classe Object
Introduction • La méthode clone() : permet de dupliquer un objet. Il faut
Structure
d’une classe que la classe dont on veut cloner les instances, implémente
Héritage l’interface Cloneable pour autoriser le clonage.
La classe • Exemple :
abstraite et
l’interface
return p;
}
28/29
Principes
fondamentaux
des réseaux
informatiques
La classe Object
Abdelali Saidi
29/29