Les primitives java, conditions, boucles..
Object, classes, Carcatéristiques...
Héritage et accessibilité (package, visibilité)
polymorphisme
Tableau et collections
Connexion base de données via JDBC
Le polymorphisme est souvent limité au seul contexte des hiérarchies de classes (sous-typage). Mais savez-vous qu'il en existe d'autres formes et que, historiquement, son utilisation en programmation objet est la plus récente de toutes?
Au cours de ce talk, nous tenterons de définir ce qu'est le polymorphisme pour ensuite découvrir combien ce concept est... polymorphe!
Objectif général : Développer en orienté objet avec Python
Objectifs opérationnels :
- Organiser le code grâce aux classes
- Sécuriser une classe avec l’encapsulation
- Réutiliser et factoriser du code avec l’héritage
- Invoquer des méthodes de même nom, quel que soit le type d'objet sur lequel elles opèrent, sans avoir à effectuer au préalable une vérification de type grâce au polymorphisme
Ce cours présente comment définir de nouveaux objets en définissant des classes. Un objet est une instance d'une classe qui définit les variables d'instances (attributs) et méthodes (fonctionnalités) que les objets créés à partir de la classe auront.
Les primitives java, conditions, boucles..
Object, classes, Carcatéristiques...
Héritage et accessibilité (package, visibilité)
polymorphisme
Tableau et collections
Connexion base de données via JDBC
Le polymorphisme est souvent limité au seul contexte des hiérarchies de classes (sous-typage). Mais savez-vous qu'il en existe d'autres formes et que, historiquement, son utilisation en programmation objet est la plus récente de toutes?
Au cours de ce talk, nous tenterons de définir ce qu'est le polymorphisme pour ensuite découvrir combien ce concept est... polymorphe!
Objectif général : Développer en orienté objet avec Python
Objectifs opérationnels :
- Organiser le code grâce aux classes
- Sécuriser une classe avec l’encapsulation
- Réutiliser et factoriser du code avec l’héritage
- Invoquer des méthodes de même nom, quel que soit le type d'objet sur lequel elles opèrent, sans avoir à effectuer au préalable une vérification de type grâce au polymorphisme
Ce cours présente comment définir de nouveaux objets en définissant des classes. Un objet est une instance d'une classe qui définit les variables d'instances (attributs) et méthodes (fonctionnalités) que les objets créés à partir de la classe auront.
Voici le chapitre sur les classes et les objets en C++.
Si vous avez des remarques ou suggestions afin de le parfaire.
N’hésitez pas à me contacter via mon email:
pr.azizdarouichi@gmail.com.
Bonne lecture.
Ce cours présente la notion d'héritage entre classes qui permet de construire une relation de type "is-a". On crée une sous-classe à partir d'une super-classe, pour en hériter une partie de ses membres. On peut ensuite y ajouter des membres spécifiques. Ce cours présente également la redéfinition de méthodes, et comment utiliser les modificateurs de visibilité des membres.
Nous avons vu dans le chapitre précédent « La pensée objets » et comment créer des classes et instancier des objets. Deux concepts clés ont été expliqués via le projet 2 : l’encapsulation et les constructeurs. Dans ce chapitre, nous allons nous intéresser à la relation entre les classes via les notions de composition et d’héritage
covadis tutorial , power point , realisation projet route , travaux publics , travaux publics , travaux publics , travaux publics , travaux publics , travaux publics , travaux publics , travaux publics , travaux publics , travaux publics , travaux publics , travaux publics , travaux publics , travaux publics , travaux publics , travaux publics , travaux publics , travaux publics , travaux publics , travaux publics , travaux publics , travaux publics , vvtravaux publics , travaux publics , travaux publics , travaux publics , travaux publics , travaux publics , travaux publics , travaux publics , travaux publics , travaux publics , travaux publics , travaux publics , travaux publics , travaux publics , travaux publics , travaux publics , travaux publics , travaux publics , travaux publics , travaux publics , travaux publics , travaux publics , travaux publics , travaux publics , travaux publics , travaux publics , travaux publics , travaux publics , travaux publics , travaux publics , route ,route ,route, route, route, route, route, route, route, route, route, route, route, projet routiere , projet routiere , projet routiere , projet routiere , projet routiere , projet routiere , projet routiere , projet routiere , projet routiere , projet routiere , projet routiere , projet routiere , projet routiere , projet routiere , projet routiere , projet routiere , projet routiere , projet routiere , projet routiere , projet routiere , projet routiere , projet routiere , projet routiere , projet routiere , projet routiere , projet routiere , projet routiere , projet routiere , projet routiere , projet routiere , projet routiere , projet routiere , projet routiere , projet routiere , projet routiere , projet routiere , projet routiere , projet routiere , projet routiere , projet routiere , projet routiere , projet routiere , projet routiere , projet routiere , projet routiere , projet routiere , projet routiere , projet routiere , projet routiere , projet routiere , projet routiere , projet routiere , projet routiere , projet routiere , projet routiere , projet routiere , projet routiere , projet routiere , projet routiere , projet routiere , projet routiere , projet routiere , projet routiere , projet routiere , projet routiere , projet routiere , projet routiere , projet routiere , projet routiere , projet routiere , projet routiere , projet routiere , projet routiere , projet routiere , projet routiere , projet routiere , projet routiere , projet routiere , projet routiere , projet routiere , projet routiere , projet routiere , projet routiere , projet routiere , vprojet routiere , projet routiere , projet routiere , projet routiere , vprojet routiere , projet routiere , projet routiere , projet routiere , projet routiere , projet routiere , projet routiere , projet routiere , projet routiere , projet routiere , projet routiere , projet routiere , projet routiere , projet routiere , projet routiere , projet routiere , projet routiere , projet routiere , p
L’équipe du projet BeBoP a proposé un webinaire le 30 mai 2024 pour découvrir comment la technologie vidéo, combinée à l’intelligence artificielle, se met au service de l’analyse du comportement des taurillons.
BeeBOP diaporama webinaire : Et si l’IA permettait de compléter l’observatio...
Chapitre 4 la programmation oriénté objet
1. Chapitre 4
Héritage & polymorphisme
Cours réalisé par:
Mme Meriem Ennigrou
Support de cours POO
1
2. Définition
2
Technique permettant de définir une nouvelle classe
appelée classe fille ou sous-classe à partir d’une
classe de base appelée classe mère ou super classe
La classe fille hérite tous les membres de sa classe
mère : attributs et méthodes et rajoute ses propres
membres qui la diffère de sa classe mère
JAVA ne permet que l’héritage simple alors que
l’héritage multiple n’est pas accepté. Une classe ne
peut avoir qu’une seule classe mère.
Syntaxe
class nomClasseFille extends nomClasseBase
{//définition des propriétés spécifiques à la sous-classe}
3. Héritage en JAVA
3
Une sous-classe ne peut accéder aux propriétés
private de sa classe mère
Une sous-classe peut accéder aux propriétés
protected, public et par défaut de sa classe mère
4. Héritage en JAVA
4
class c1 {
public int A;
protected int B;
int C;
private int D;
}
class c3 {
...
}
class c5 {
...
}
A B C D
Accessible par c2 o o o -
Accessible par c3 o o o -
Accessible par c4 o o - -
Accessible par c5 o - - -
Package P1 Package P2
class c4 extends c1 {
...
}
class c2 extends c1 {
...
}
5. Redéfinition de méthodes
5
Il est possible qu’une classe fille redéfinit une des
méthodes de la classe mère on parle alors de
redéfinition. Dans ce cas, la méthode redéfinie sera
de même nom, de même type et de mêmes
paramètres
Redéfinition ≠ surdéfinition (surcharge) : méthodes
de même nom mais de paramètres différents
Une méthode redéfinie dans une sous-classe peut
appeler celle qui est définie dans la super-classe.
Comme les 2 méthodes sont de même nom et afin
d’éviter l’appel récursif à la méthode de la sous-
classe, on utilise le mot clé super qui désigne la
6. Mot clé super
6
Le constructeur de la sous-classe peut appeler celui
de la classe mère.
Le mot clé super désigne dans ce cas le
constructeur de la classe mère
Attention le constructeur de la classe fille doit
comporter au moins les paramètres de la classe
mère
L’instruction d’appel du constructeur de la classe
mère doit être la première instruction dans le
constructeur de la classe fille
7. Redéfinition de méthodes - Exemple
7
class Personne
protected String nom;
protected String prenom;
Personne (String n, String p){
this.nom=n;
this.prenom=p;}
public void toString () {
System.out.println(nom + " " + prenom);}
}
class Etudiant extends Personne {
private String groupe;
Etudiant (String n, String p, String g) {
super(n,p);
this.groupe=g;}
pubic void toString(){
super.toString();
System.out.println(" inscrit en " + groupe);}
}
8. Exercice
8
Implémenter les classes Personne, Enseignant et
Etudiant comme suit :
Classe Personne Classe
Enseignant
Classe Etudiant
Attributs nom
prénom
rue
ville
nbPersonnes
specialite
remplaçant *
nbEnseignants
diplomeEnCours
moyenne
nbEtudiants
Méthodes Personne(n,p,r,v)
toString()
nbPersonnes()
ModiferPersonne(r,v)
Enseignant(n,p,r,v,s)
toString()
nbEnseignants()
affecterRemplaçant(e)
Etudiant(n,p,r,v,d,m)
toString()
nbEtudiants
* L’enseignant pouvant remplacer l’enseignant courant en cas de besoin
12. Exercice – Correction
12
Class Etudiant extends Personne{
private String diplomeEnCours;
private double moyenne;
private static int nbEtudiants = 0;
Etudiant (String n, String p, String r, String v, String d,
double m ) {
super(n,p,r,v);
this.diplomeEnCours=d;
this.moyenne=m;
nbEtudiants++;
}
public String toString(){
return super.toString() + "n Diplôme en cours : "
+diplomeEnCours + "de moyenne " + moyenne;
}
static int nbEtudiants(){return nbEtudiants;}
public double moyenne() {return moyenne;}
}
13. Exercice
13
Ecrire le main dans une autre classe appelée Principale
permettant de créer une personne, un étudiant et
deux enseignants e1 et e2 tels que e2 est le
remplaçant de e1. Ce programme permettra
également d’afficher le nombre de personnes,
d’étudiants et d’enseignants créés à chaque fois
14. Exercice – Correction
14
public class Principale{
public static void main (String [] args){
String a = JOptionPane.showInputDialog("Entrer le nom");
String b = JOptionPane.showInputDialog("Entrer le prénom");
String c = JOptionPane.showInputDialog("Entrer la rue");
String d = JOptionPane.showInputDialog("Entrer la ville");
Personne p = new Personne(a,b,c,d);
System.out.println(p.toString());
p.nbPersonnes();
a = JOptionPane.showInputDialog("Entrer le nom de l’étudiant");
b=JOptionPane.showInputDialog("Entrer le prénom de
l’étudiant");
c = JOptionPane.showInputDialog("Entrer la rue de l’étudiant");
d=JOptionPane.showInputDialog("Entrer la ville de l’étudiant");
String f = JOptionPane.showInputDialog("Entrer le diplôme");
double m = Double.parseDouble(JOptionPane.showInputDialog
("Entrer la moyenne"));
Etudiant e = new Etudiant(a,b,c,d,f,m);
15. Exercice – Correction
15
System.out.println(e.toString());
Personne.nbPersonnes();
Etudiant.nbEtudiant();
a = JOptionPane.showInputDialog("Entrer le nom de
l’enseignant1");
b=JOptionPane.showInputDialog("Entrer le prénom de
l’enseignant1");
c = JOptionPane.showInputDialog("Entrer la rue de
l’enseignant1");
d=JOptionPane.showInputDialog("Entrer la ville de
l’enseignant1");
String g = JOptionPane.showInputDialog("Entrer la spécialité de
l’enseignant1");
Enseignant e1 = new Enseignant(a,b,c,d,g);
a = JOptionPane.showInputDialog("Entrer le nom de
l’enseignant2");
b=JOptionPane.showInputDialog("Entrer le prénom de
l’enseignant2");
c = JOptionPane.showInputDialog("Entrer la rue de
l’enseignant2");
16. Exercice – Correction
16
d=JOptionPane.showInputDialog("Entrer la ville de
l’enseignant2");
String g = JOptionPane.showInputDialog("Entrer la spécialité de
l’enseignant2");
Enseignant e2 = new Enseignant(a,b,c,d,g);
e1.affecterRemplacant(e2);
System.out.println(e1.toString());
System.out.println(e2.toString());
Personne.nbPersonnes();
Etudiant.nbEtudiant();
Enseignant.nbEnseignant();
}
}
17. Exercice
17
Ecrire un autre programme main dans une autre classe
appelée Principale2 permettant de créer un tableau
de 5 étudiants et de calculer la moyenne
arithmétique de leur moyenne
18. Exercice – Correction
18
public class Principale2{
public static void main (String [] args){
Etudiant[] T = new Etudiant[5];
String a = new String();
String b = new String();
String c = new String();
String d = new String();
String f = new String();
double m;
int i;
for (i = 0; i<T.length; i++) {
a = JOptionPane.showInputDialog("Entrer le nom de l’étudiant
" + i);
b = JOptionPane.showInputDialog("Entrer le prénom de
l’étudiant " + i);
c = JOptionPane.showInputDialog("Entrer la rue de l’étudiant
" + i);
d = JOptionPane.showInputDialog("Entrer la ville de
l’étudiant " + i););
19. Exercice – Correction
19
String f = JOptionPane.showInputDialog("Entrer le diplôme");
m = Double.parseDouble(JOptionPane.showInputDialog ("Entrer la
moyenne"));
T[i] = new Etudiant(a,b,c,d,f,m);
}
int s=0;
for (i = 0; i<T.length; i++) s=s+T[i].moyenne();
System.out.println("la moyenne arithmétique est " + s/5);
}
}
20. Les classes et méthodes finales
20
Une classe est dite finale si elle ne peut plus être
héritée par une autre classe
Elle correspond à une feuille dans une
représentation arborescente de l’héritage
Pour déclarer une classe finale on la fait précéder
par le mot clé final
final class nomClasse
Une méthode déclarée dans une classe mère est
dite finale si elle ne peut plus être redéfinie dans
les classes filles
Pour déclarer une méthode finale on utilise final
public final type nomMéthode (paramètres)
21. Les classes et méthodes abstraites
21
Une méthode d’une super-classe est dite abstraite
si elle n’a pas de corps, elle a juste une signature.
Une méthode abstraite doit donc être redéfinie
dans l’une des sous-classes.
Une méthode abstraite ne peut pas être exécuté
Pour déclarer une méthode abstraite on utilise le
mot clé abstract dans son entête.
public abstract type nomMéthode (paramètres)
22. Les classes et méthodes abstraites
22
Une classe est dite abstraite si elle contient au
moins une méthode abstraite
Cette classe ne peut pas être instanciée (on ne peut
pas créer d’objets de cette classe)
Seules les sous-classes qui redéfinissent toutes les
méthodes abstraites sont instanciables
Pour déclarer une classe abstraite on la fait
précéder par le mot clé abstract
Une sous-classe d’une classe abstraite ne
redéfinissant pas toutes les méthodes abstraite est-
elle-même abstraite
23. Les classes et méthodes abstraites –
Exemple
23
class abstract Forme{
public abstract double perimetre();
public abstract double surface();
}
class Cercle extends Forme{
private int rayon;
private Point centre;
public double perimetre() { return 2 * Math.PI * r ; }
}
class Rectangle extends Forme{
...
public double perimetre() { return 2 * (hauteur+
largeur); }
}
...
Forme[] formes= {new Cercle(2), new Rectangle(2,3), new
Cercle(5)};
double som_perimetres = 0;
for(int i=0; i<formes.length; i++)
som_perimetres = formes[i].perimetre();
24. Les interfaces
24
Une interface est une classe abstraite particulière :
Qui ne contient aucun attribut
Peut contenir des constantes
Toutes ses méthodes sont abstraites
Pour déclarer une interface, on utilise le mot clé interface
public interface nomInterface {
//liste des signatures des méthodes}
Il doit y avoir une(des) classe(s) qui implémente les
méthodes d’une interface
Si une classe implémente une interface elle doit
implémenter toutes les méthodes de cette interface
Une classe peut implémenter une ou plusieurs interfaces.
On utilise le mot clé implements une seule fois
public class nomClasse implements interface1,