0% ont trouvé ce document utile (0 vote)
39 vues38 pages

Concepts de POO en Java : Héritage et Classes

Transféré par

Chiraz Ben Boubaker
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
39 vues38 pages

Concepts de POO en Java : Héritage et Classes

Transféré par

Chiraz Ben Boubaker
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

POO

Programmation Java

08/11/2021 1
Concepts abordés


Héritage


Polymorphisme

08/11/2021 2
Héritage


En Orienté Objets, on emploie le terme généralisation pour
désigner la relation de classification entre un élément plus
général et un élément plus spécifique.


En fait, le terme généralisation désigne un point de vue porté
sur un arbre de classification.

08/11/2021 3
Héritage


Par exemple, un animal est un concept plus général qu’un chat,
un chien ou un raton laveur.


Inversement, un chat est un concept plus spécialisé qu’un
animal

08/11/2021 4
08/11/2021 5
Héritage multiple


Les classes peuvent avoir plusieurs super- classes


Dans ce cas, la généralisation est dite multiple et plusieurs
flèches partent de la sous classe vers les différentes super-
classes.

08/11/2021 6
08/11/2021 7
Héritage multiple


Une classe peut hériter de plusieurs classes


Possible en UML


Possible en C++ ou Python par exemple


Interdit en java → utilisation des interfaces

08/11/2021 8
Avantages


vision descendante → la possibilité de reprendre intégralement
tout ce qui a déjà été fait et de pouvoir l'enrichir.


vision ascendante → la possibilité de regrouper en un seul
endroit ce qui est commun à plusieurs.

08/11/2021 9
Syntaxe


class classe_fille extends classe_mere
{
// Instructions
}

08/11/2021 10
Surcharge


La surcharge est un moyen d’offrir la notion de signature
variable, elle est résolue statiquement par le compilateur.

08/11/2021 11
Exemple

08/11/2021 12
Classe abstraite


Les classes abstraites ne sont pas instantiables directement;
elles ne donnent pas naissance à des objets, mais servent de
spécifications plus générales -de type- pour manipuler les
objets instances (d’une) ou plusieurs de leurs sous-classes.


La propriété abstraite peut également être appliquée à une
opération afin d’indiquer que le corps de l’opération doit être
défini explicitement dans les sous-classes.

08/11/2021 13
Classes abstraites


Si une classe contient, au moins une méthode abstraite →
Classe abstraite


Si toutes les méthodes sont abstraites → Interface

08/11/2021 14
Classe abstraite

08/11/2021 15
Rappel


Règles de visibilité :

+ public : attributs/méthodes publics accessibles à partir
d’autres objets


- private : attributs/méthodes publics accessibles uniquement
par la classe


# protected : attributs/méthodes publics accessibles à partir de
la classe + sa descendance
08/11/2021 16
Constructeur


La classe dérivée doit prendre en charge la construction de la
classe de base


Pour construire un Avion, par exemple, il faut construire d'abord
un Véhicule


Le constructeur de la classe de base (Véhicule) est donc
appelé avant le constructeur de la classe dérivée (Avion)

08/11/2021 17
Constructeur


Si un constructeur de la classe dérivée appelle explicitement un
constructeur de la classe de base, cet appel doit être
obligatoirement la première instruction de constructeur


Il doit utiliser pour cela, le mot clé « super »

08/11/2021 18
Notion de getters et de
setters

Un getter est une méthode qui permet d'accéder aux variables
des objets en lecture


Un setter permet de faire de même chose en écriture


→ Permet d’accéder à des variables private

08/11/2021 19
Exemple

public class Chanson


{
private String Titre = " ";
private String Artiste = " ";
private String Duree = "";

08/11/2021 20
public void setArtiste(String Artiste)
{
this.Artiste = Artiste;
}

public String getArtiste()


{
return Artiste;
}
08/11/2021 21
public void setTitre(String Titre)
{
this.Titre = Titre;
}

public String getTitre()


{
return Titre;
}
08/11/2021 22
public void setDuree(String Duree)
{
this.Duree = Duree;
}

public String getDuree()


{
return Duree;
}
}
08/11/2021 23
→ Dans notre cas pour récupérer le titre de la chanson, on fait
appel à la méthode getTitre()

08/11/2021 24
Exercice

08/11/2021 25
Exercice


La classe « Etudiant » hérite de la classe « Personne »


La classe « Professeur » hérite de la classe « Employe » et la
classe « Employe » hérite de la classe Personne


Un Etudiant est une Personne


Un Professeur est un Employe et un Employe est une Personne

08/11/2021 26
Classe Personne

public class Personne


{
protected int id;
protected String nom;
protected String prenom;
private static int count;

08/11/2021 27
Classe Personne

public Personne(String nom, String prenom)


{
this.id = ++count;
this.nom = nom;
this.prenom = prenom;
}

08/11/2021 28
Classe Personne

public String toString()


{
return "Je suis " + this.nom+ " "+ this.prenom + "";
}
}

08/11/2021 29
Classe Etudiant

public class Etudiant extends Personne


{
private String cne;
public Etudiant(String nom, String prenom, String cne)
{
super(nom, prenom);
this.cne = cne;
}
08/11/2021 30
Classe Etudiant

public String toString()


{
return super.toString() + " mon CNE est: " + this.cne;
}
}

08/11/2021 31
Classe Employé

public class Employe extends Personne


{
protected double salaire;
public Employe(String nom, String prenom, double salaire)
{
super(nom, prenom);
this.salaire = salaire;
}
08/11/2021 32
Classe Employé

public String toString()


{
return super.toString() + " mon salaire est: " + this.salaire;
}
}

08/11/2021 33
Classe Professeur

public class Professeur extends Employe


{
private String specialite;
public Professeur(String nom, String prenom, double salaire, String
specialite)
{
super(nom, prenom, salaire);
this.specialite=specialite;
}
08/11/2021 34
Classe Professeur

public String toString() {


return super.toString()+" ma specialite est: "+this.specialite;
}
}

08/11/2021 35
Main ()

public class Application


{
public static void main(String[] main)
{
Employe[] employes = new Employe[2];
employes[0] = new Employe("AAA", "BBB", 10000);
employes[1] = new Employe("CCC", "DDD", 10000);
System.out.println("La liste des employes : ");
for (Employe e : employes)
System.out.println("\t" + e);
08/11/2021 36
Main()

Etudiant[] etudiants = new Etudiant[2];


etudiants[0] = new Etudiant("MMM", "NNN", "12345");
etudiants[1] = new Etudiant("OOO", "PPP", "56789");
System.out.println("La liste des etudiants : ");
for (Etudiant e : etudiants)
System.out.println("\t" + e);

08/11/2021 37
Main()

Professeur[] professeurs = new Professeur[2];


professeurs[0] = new Professeur("VVV", "WWW", 5700, "JAVA");
professeurs[1] = new Professeur("XXX", "YYY", 5000,"UML");
System.out.println("La liste des professeurs : ");
for (Professeur p : professeurs)
System.out.println("\t" + p);
}
}

08/11/2021 38

Vous aimerez peut-être aussi