5.5 KiB
title: "Génie logiciel, Séance 3 et 4, Les concepts de la programmation orienté objet" author: [SCHINDLER Hugo] date: \today titlepage: true ...
\newpage
Les concepts de la programmation orienté objet
I/ Les dosses
Une dosse définit les propriétés de tous les objets qui lui sont associés.
Nom | Rectangle |
---|---|
Donnés (attributs) | Largeur |
Longueur | |
Opérateur (méthode) | périmètre |
Surface | |
Redimensionnement |
Constructeur Même nom que la dosse, pas de type de retour
Surcharge d'une méthode:
- même nom de méthode
\Rightarrow
signature doit être différent - paramètre différents
\Rightarrow
signature doit être différent - type de retour différents
Signature d'une méthode :
- Nom de la méthode
- Nombre de paramètres
- Type de paramètre
- Type de la valeur de retour
Visibilité des éléments d'une classe :
- Privée (private) élément uniquement visible que dans la classe dans laquelle ils sont définis.
- Public élément visible à l'extéreieur de la classe.
En-tête des méthodes | Attributs + corps des méthodes |
---|---|
Partie publique | Partie privée |
Interface | Implémentaion |
L'encapsulation est un concepte de la POO qui consiste à masquer les détails d'implémentation de la classe et à ne rendre visible que la partie interface.
II/ Les objets
Les objets sont des instances particulières de la classe.
L'état d'un objet est par définition la valeur de ses attributs.
Le comportement d'un objet est définit pas ses méthodes.
L'identité d'un objet est une valeur (adresse) qui lui est associé au moment de sa création. Cette valeur n'est jamais modifiée.
Objet = état + comportement + identité
Cycle de vie d'un objet:
- création d'un objet par le développeur
- utilisation de l'objet par le développeur
- description de l'objet par une machine virtuelle de Java ou Garbage collector
III/ Les messages
L'envoie d'un message d'un objet A vers un objet B se traduit par l'eécution d'une méthode dans l'objet qui reçoit le massage B.
Mot clef référence sur l'objet courant this.
IV/ L'héritage
La sous-classe ou classe dérivée possède une relation d'héritage avec la classe de base ou super classe.
On a une spécialisation (vers la sous classe) ou une généralisation (vers la classe de base)
Exemple :
Compte d'epargne et Compte cournat héritent des propriétés de Compte bancaire.
La relation d'héritage traduit une relation "est un"" ou "est une sous classe". exemple : le compte cournat est une calsse dérivée du compte bancaire.
Conclusion:
L'héritage évite la duplication de code et favorise la réutilisation
Language JAVA
Relation d'héritage \rightarrow
Remarques :
-
Visibilité des attributs protégé (comprmis entre public et privée). L'élément est visible dans la classe où il est défini et dans les classes dérivées. Ou pour accéder à un attribut, on peut aussi faire une fonction dans la classe de base.
-
Redéfinition des méthodes : re définir la méthode retirer dans la classe compteCourant
public void retirer(double montant){ if (solde+montantCourant >= montant) solde=solde-montant; }
-
Affectation entre un objet d'une classe de base et un objet d'une classe dérivée:
Comtebancaire CB; CompteCourant CC= new CompteCourant(...); CB=CC; CB.retirer(500);
On a le droit de faire une affection entre un objet d'une classe de base et un objet d'une classe dérivée
Que ce passe t'il ? Synthaxiquement : correct lors de la compilation. Exécution : Méthode retirer du CompteCourant qui est appelé; mécanisme d'identification de type (RTTI)
CB.emettreChequier();
est synthaxiquement incorrect.
V/ Le polymorphisme
Livre, Polycopie, Revue scientifique.
Livre : titre, auteur, éditeur, nombre de pages.
Revue scientifique : titre, éditeur nombre d'articles.
Polycopié : titre, auteur, éditeur.
1ere solution (sans polymorphisme)
3 classes indépendantes
Pas élégante
Pas facilement maintenable
2ème solution (avec le polymorphisme)
Utilisation de l'héritage.
Appel de la classe supérieur super
Conclution: Le ploymorphisme est la possiblité pour un même message (editer) de déclancher des opérations différntes selon les objets auquel il est adressé.
VI/ Les classes et les méthodes abstraites :
Exemple :
- Rectange
- Cercle
- Triangle
Calcul du périmètre et de la surface
Mot clef abstract pour éviter de définir des classes inutiles. Une méthode abstraite implique de définir la classe comm étant abstraite. La réciproque n'est pas forcéménet vrai.
Classe de méthode abstraites :
- On ne peut pas instancer une classe abstraite.
- Les méthodes abstraites doivnet obligatoiremnet etre redifini dan skes classes derivées
1ere solution :
Forme f=new Forme();
f.preimètre(); {0, 0}
2ème solution :
Forme f=new Forme();
NON car classe abstraite
Remarques:
Classe abstraite :
- Sans attributs
- Toutes les méthodes abstraites
Interface Même chose que abstract
public **Interface** Forme{
public double surface();
public double rectangle();
}
public class Ractangle implements Forme{
}
Même chose pour les classes Cercle et Triangle