1 Cours POOv
1 Cours POOv
orientée objets
Salima Hassas
Université Claude Bernard-lyon 1
Plan du cours (1/2)
Introduction
Pourquoi la programmation orientée objets?
Quelques bons concepts
Des Types de Données Abstraits (TDA) au
Modèle Orienté Objets (MOO)
Exemples illustratifs
Que permet la programmation orientée objets de
plus/ à la programmation par type de données
abstraits
Concepts de base de la programmation
orientée objets
Plan du cours (2/2)
Concepts de base
Objets: classes et instances
Encapsulation
Protection des données et du code
Polymorphisme
surcharge
Héritage
Héritage simple et multiple
Réutilisation de code (spécialisation)
Relations entre classes
Association, agrégation, composition
Les langages objets
Simula
Premier langage objet, Oslo 1967
Extension d’Algol 60 aux types abstraîts
Programmation évènementielle
Eiffel
Inspiré de Simula 67
Préoccupations Génie-Logiciel
(Protections, pré-post conditions, héritage multiples,etc)
Les langages objets
Smalltalk
Envoi de messages(72), notion de meta-classe
Notion de tout objet
C++ (86-87)
Extension de C à l’objet
Java (94)
Compromis entre C++ et Smalltalk
Machine virtuelle
Introduction
Problèmes de génie logiciel
« software is not enough »
Spécification
Développement
Protection
Mise au point
Maintenance
Evolution
Introduction
Problèmes de génie logiciel
« software is not enough »
Spécification
Développement
Protection
Mise au point
Maintenance
Evolution
Par exemple
TDA Liste, Pile, File, Arbre, ..etc
Mais !!!
Opérations: introduisant même concepts, noms différents
Insertion/suppression, affichage dans une liste, dans un arbre,
..etc
Données: pas de protection (en dur) : pas d’encapsulation
Règles de bonne programmation
Introduction
Liste Pile
Inserer Empiler
Liste x Element x Position-> Liste Pile x Element -> Pile
Supprimer Dépiler
Liste x Position -> Liste Pile -> Pile
Afficher_Pile:
Afficher_liste:
Pile -> Pile
Liste-> Liste
…
…
Inserer empiler
Inserer Inserer dans une liste
Pile
Liste
Supprimer Supprimer
Pb de spécificité? Pb de réutilisation?
Figure simple (carré, rectangle, ..) Affichage, Déplacement, ..
Calcul compliqué non spécifique..
Introduction
Première solution: les TDA
Encapsulation et protection de
données
exécute
30
Déposer(somme)
{solde=solde+somme}
Concepts de base
Mode de fonctionnement?
Compte bancaire
Titulaire: Personne attributs
Envoi de messages entre Solde: flottant
objets: Retirer (somme:flottant)
Un message contient le nom Déposer (somme: flottant) méthodes
d’une méthode, et la liste des
arguments ..
La réponse à la réception d’un
message consiste à exécuter la CC
méthode associée
Envoi de message: Déposer (30) Titulaire: Dupont
Solde: 2534 2564
exécute
30
Déposer(somme)
{solde=solde+somme}
Concepts de base
Classes et instances
Une classe définit la description
Compte bancaire
d’une famille d’objets ayant la
même structure (partie Titulaire: Personne attributs
déclarative) et le même Solde: flottant
comportement (partie Retirer (somme:flottant)
procédurale) Déposer (somme: flottant) méthodes
Description d’un concept ..
Concepts de base
Classes et instances Compte bancaire
Une classe définit la description
d’une famille d’objets ayant la Titulaire: Personne attributs
même structure (partie déclarative) Solde: flottant
et le même comportement (partie Retirer (somme:flottant)
procédurale) méthodes
Déposer (somme: flottant)
Description d’un concept
..
Une instance correspond à un
exemplaire concret de la classe,
avec des valeurs d’attributs définis
(l’objet) CC
Objet concret créé à partir du moule
fourni par la définition de classe Titulaire: Dupont
(instanciation)
Solde: 2534
Concepts de base
Classes et instances Compte bancaire
Une classe définit la description
d’une famille d’objets ayant la Titulaire: Personne attributs
même structure (partie déclarative) Solde: flottant
et le même comportement (partie Retirer (somme:flottant)
procédurale) méthodes
Déposer (somme: flottant)
Description d’un concept
..
Une instance correspond à un
exemplaire concret de la classe, Instanciation
avec des valeurs d’attributs définis
(l’objet) CC
Objet concret créé à partir du moule
fourni par la définition de classe Titulaire: Dupont
(instanciation)
Solde: 2534
Concepts de base
Classes et instances
La classe CARRE
Description du concept : Carré Nombre de coté: 4
La classe CARRE Nombre de sommets: 4
attributs Liste de sommets
Un carré contient : Longueur cote:
4 cotés
4 sommets
Une liste de sommets Périmètre: 4* Longueur cote
Une longueur de coté
Surface: Longueur cote^2
Affichage() …
On peut effectuer les opérations
suivantes sur un carré Rotation (sommet)..
méthodes Rotation (Axe) ..
Calcul du périmètre
Calcul de la surface
Affichage, translation,
rotation/sommet, rotation/axe
Concepts de base
Classes et instances
L’objet Carré1
Instanciation d’un objet de la classe Carré
L’objet Carré1
Nombre de coté: 4
attributs
Nombre de sommets: 4
Carré1 a des valeurs d’attributs définis : Liste de sommets
4 cotés Longueur cote: 4
4 sommets
Une liste de sommets définie:
(0,0),(0,4), (4,0), (4,4) Périmètre: 4* Longueur cote
Une longueur de coté: 4 Surface: Longueur cote^2
Affichage
Les opérations sont celles de la classe méthodes
Carré Rotation (sommet)
Calcul du périmètre Rotation (Axe) ..
Calcul de la surface
Affichage, translation,
rotation/sommet, rotation/axe
Concepts de base
Classes, sous classes et instances
Classe/sous-classe
Une classe contient un ensemble de propriétés (attributs,
méthodes) à partir desquelles on peut définir des sous-classes
plus spécifiques, complétant les propriétés de la classe mère.
généralisation
Sous-classe Super classe
spécialisation
Concepts de base
Classes, sous classes et instances
La classe Polygone
Exemple
Nombre de coté:
Nombre de sommets
Liste de sommets La classe Triangle
La classe CARRE Base
Longueur cote: Périmetre Hauteur
Surface
Périmetre: Affichage Périmetre:
4* Longueur cote Rotation (sommet) Surface:
Surface: Rotation (Axe) .. Base*Hauteur/2
Longueur cote^2
Concepts de base
Classes, sous classes et instances
Exemple La classe Polygone
Nombre de coté: Héritage:
Héritage: Nombre de sommets
Liste de sommets La classe Triangle
La classe CARRE Base
Longueur cote: Périmètre Hauteur
Surface
Périmètre: Affichage Périmètre:
4* Longueur cote Rotation (sommet) Surface:
Surface: Rotation (Axe) .. Base*Hauteur/2
Longueur cote^2
T1 Instanciation
C1 Instanciation
3,
4, 3,
4, (0,0)(2,4)(4,0)
(0,0)(0,4)(4,0)(4,4) 4
4 4
Concepts de base
Classes, sous classes et instances
Définitions
Même nom de méthode (surface), mais code différent selon la classe qui reçoit le message
Concepts de base
Généricité
Méthode générique
Une méthode dont le code est indépendant du type de ses arguments
Ex: insertion dans une pile, parcours d’un arbre, etc
Classe Générique
Classe dont toutes les méthodes sont génériques
Exemple:
Les classes contenaires : classe Liste, classe arbre, classe graphe, etc
Les opérations de manipulation de ces données est indépendant du
type des éléments qu’elles contiennent
Héritage simple
Chaque sous-classe admet une et une seule classe mère (super
classe)
Graphe d’héritage = arbre dont la racine est la super classe la plus
générale
Relation d’héritage = relation d’ordre total => pas de conflits
Concepts de base
Héritage simple
Objet
Article
Ref, désignation
PrixTTC, prixHT,..
Vetement
Electroménager ArticleDeLuxe
Coloris
DureeGarantie taille
Poids PrixTTC
Article
Ref, désignation
PrixTTC, prixHT,..
Vetement
Electroménager ArticleDeLuxe
Coloris
DureeGarantie taille
Poids PrixTTC
Héritage multiple
Une sous classe peut avoir plus d’une super classe
super classes
Relation d’héritage= relation d’ordre partiel => classes non
comparables
Concepts de base
Héritage multiple
Transport
Objet
PrixTransport
Article
Ref, désignation Périssable Fragile
PrixTTC, prixHT,.. PrixTransport PrixTransport
Electroménager Vetement
ArticleDeLuxe Coloris
DureeGarantie
Poids PrixTTC taille
crémerie
chemise
Aspirateur Téléviseur CaviarFrais
NiveauSonore Type col
Taille écran Provenance oeufs Type manches
Depression Télécommande Poids
Débit
Concepts de base
Partage d’information: Héritage
Héritage multiples et situations conflictuelles
Conflit
Propriétés homonymes appartenant à des classes de hiérarchie
d’héritage différentes (classes non comparables)
super classe
Relation d’héritage
sous classe
Concepts de base
Classes concrètes/ Classes abstraites
Classe abstraite
Son rôle est le regroupement de propriétés communes
Doit apparaître comme un nœud au niveau de la hiérarchie
N’admet pas d’instances concrètes
Ex: classe humain, classe figue géométrique
Classe concrète
Doit apparaître comme feuille au niveau de la hiérarchie
Super
Fait référence à la classe contenant la super méthode recherchée
Super méthode=la première méthode (avec le nom recherché)
rencontrée dans la hiérarchie de l’objet
En java:utilisé juste par les méthodes d’initialisation
1 possède 1..*
Personne Véhicule
propriétaire propriété
Concepts de base
Relations Conceptuelles entre Objets
Association particulière (Agrégation ou composition)
Un objet fait partie (ou compose physiquement) un autre objet
Exemple
La tête fait partie du corps
Le dossier fait partie (compose) la chaise
Notation
1 est composé de
Polygone 3..* Point
Concepts de base
Implémentation des associations
L’association d’une classe A à une classe B est implantée par la
définition d’un attribut de type A dans la classe B.
Le nom de l’attribut est le rôle (s’il est défini) dans l’association
La tête d’une association de cardinalité multiple définit un attribut de
type collection
Exemple
Attribut: Liste de points dans une classe Polygone
1 est composé de
Polygone 3..* Point
Concepts de base
Héritage, Typage et Liason