Um l 01 Concepts Objets

34
Analyse, Conception et Programmation Orientées Objets Model Driven Development Applications en UML 2.0 et Java Bruno Mermet 2011

description

Um l 01 Concepts Objets

Transcript of Um l 01 Concepts Objets

  • Analyse, Conception et Programmation Orientes Objets

    Model Driven Development

    Applications en UML 2.0 et JavaBruno Mermet

    2011

  • Plan Gnral

    Les concepts Objet Analyse et Conception Orientes Objets en UML

  • Les concepts Objet

  • Plan Gnral

    Du typage la notion de classe Les relations dhritage et de gnralisation Les liens entre les classes La gnricit

  • Donne de base Description

    un type : entier, chane de caractres, rel, etc. une valeur (12, mon texte, 7.28)

    Inconvnients ensemble de types limit typage statique pas de notion de sous-typage aspect statique seul abord

    Type dune donneEnsemble des valeurs possibles pour cette

    donne=

  • Les enregistrements Principe :

    dfinir des donnes comme produits cartsiens dautres donnes (exemple : entier entier chane)

    un enregistrement = un n-uplet exemples :

    (10, 20, rose) caractrise un point de lcran ((Durand, Paul), (Durand, Anne)) dsigne un

    couple

    Rutilisation : utilisation dun constructeur de type enregistrement

    un nom pour le type ensemble de champs nomms et typs

  • Enregistrements : exemple Introduction dun type livre :

    livre {titre : chane de caractres,auteur : chane de caractres,diteur : chane de caractres,anne de parution : date,nombre de page : entier,prix : rel}

    Utilisationsi RfProlog donne de type livre, alors RfProlog.titre dsigne

    son titre (et vaut The Art of Prolog)

  • Enregistrements : bilan

    Ensemble des types : extensible volont

    Typage : toujours statique toujours pas de notion de sous-type

    Passage au concept de classe et dobjet

  • Notions de classe et dobjet

    Comparaison Type Classe Donne Objet (instance dune classe) Champ Champ(*)

    Exemple : RfProlog serait un objet de classe Livre

    (*) ou attribut, ou variable dinstance

  • Classes et types :premires diffrences

    Type : point de vue statique les champs

    Classe : point de vue statique : tat

    les champs (avec valeur par dfaut ventuelle) les proprits (ou contraintes)

    point de vue dynamique : changements dtat les mthodes (dfinies au niveau de la classe, mais

    sappliquent sur les objets de cette classe), avec dventuelles pr-conditions et post-conditions.

  • Classes : premier exemple

    N.B. : si Toto objet de classe Personne, Modifier la situation de Toto se fait par Toto.ModifierSituation(Mari)

    PersonneNom : Chane de caractresPrnom : Chane de caractresDate de naissance : DateSituation de famille : Chane de caractres = ClibataireSexe : Chane de caractres

    Crer (nom, prnom, date, sexe)

    Crer (nom, prnom, date, sexe, situation)ModifierSituation (NouvelleSituation)

    Sexe = m ou Sexe = fNom

    Surcharge

  • Vie et mort dun objet Un objet :

    nait vit meurt

    Par classe, 3 types de mthodes : constructeurs destructeurs les autres !

    Rien nest possible sur un objet non cr Rien nest possible sur un objet dtruit

  • Persistance dun objet Mort dun objet classique :

    appel de son destructeur ; arrt du systme qui la cr.

    Inconvnient : pannes ; maintenance ; volution.

    Notion dobjet persistant Un objet persistant est un objet dont la vie continue

    aprs larrt du systme layant cr

  • Variables et mthodes de classe

    Cas gnral : champ : propre un objet impossibilit des objets dune mme classe de

    partager des donnes Variable de classe :

    mme donne pour tout les objets de la classe Mthodes de classe :

    ne sappliquent pas particulirement un objet voir comme des fonctions de bibliothques

  • Vers la rutilisabilit

    Comment factoriser les parties communes ?

    Elvenomprnomanne dtudecrer(nom, prnom)changerAnne()

    Personnelnomprnomfonctioncrer(nom,prnom)changerFonction(fonc)

    Parties communesParties diffrentes

  • Hritage : introduction

    Vocabulaire :Elve hrite/est une sous-classe/est une spcialisation de PersonnePersonne est une gnralisation/super-classe dElveOn emploi aussi les termes de classe mre/classe fille

    Personnenomprnomcrer(nom, prnom)

    Elve : Personneanne dtudechangerAnne()

    Personnel : PersonnefonctionchangerFonction(fonc)

    Une reprsentation possible

  • Hritage et sous-typage Autre lecture de la relation dhritage :

    un objet dune classe fille est-un objet de la classe mre

    Tout objet dun type dune classe fille peut tre utilis la place dun objet du type dune classe mre

    Sur lexemple : crer peut sappliquer pour un lve ou pour le personnel

    ! La rciproque nest pas vraie !

  • Redfinition et liaison dynamique Principe de la liaison dynamique :

    la mthode primtre de la classe Quadrilatre est redfinie dans LosangeP de type Paralllogramme, L de type Losange, Q de type Quadrilatre :

    Q := P, Q.primtre() calcule l1+l2+l3+l4Q := L, Q.primtre() calcule 4 l1

    Quadrilatrel1, l2, l3, l4 : relsPrimtre() {l1+l2+l3+l4}crer(p1, p2, p3, p4)

    Paralllogramme : Quadrilatre Losange : QuadrilatrePrimtre() {4 x l1}

  • Classes et mthodes abstraites Une classe abstraite C est une classe dont les

    seuls objets qui peuvent en tre membres sont membres dune sous-classe de C.

    Corollaire : il nest pas possible de crer un objet de classe C si C est une classe abstraite.

    Une mthode abstraite est une mthode dont la dfinition nest pas donne dans la classe courante, mais devra ltre dans des classes filles.

    Toute classe contenant au moins une mthode abstraite est une classe abstraite.

  • Hritage :disjonction ou recouvrement

    Si un mme objet ne peut pas tre membre de plusieurs sous-classes dune mme classe, on parle dhritage disjoint :

    Sinon, on parle dhritage avec recouvrement :

    uvre dart

    Tableau Morceau de musique

    Btiment

    Professionnel Habitation

    Exemple de notation (OMT) pour lhritage disjoint

    Exemple de notation (OMT) pour lhritage avec recouvrement

  • Hritage multiple Il y a hritage multiple si une classe peut hriter

    de plusieurs autres classes :Livre

    auteurtexte

    Morceau de musiquecompositeurpartition

    Opra

  • Hritages : proprits Transitivit :

    Si A hrite de B et si B hrite de C, alors A hrite de C.Donc si tout objet de A est-un objet de B et tout objet de B est-un objet de C, alors tout

    objet de A est-un objet de C (transitivit)

    RflexivitUne classe C ne peut pas hriter delle-mme ; par contre un objet instance de C est-un

    objet de C.

    Non Symtrique/AntisymtrieSi A hrite de B, B nhrite pas (et ne peut tre dclare comme hritant) de A.Par contre, si tout objet de A est-un objet de B et inversement, alors A = B (antisymtrie)

    CorollaireUn cycle dans la relation dhritage nest pas possible les relations dhritage dun systme forment un ensemble de graphes acycliques

    directs (DAG) La relation est-un est une relation dordre

  • Classes et mthodes terminales

    Une classe terminale est une classe dont aucune classe ne peut hriter

    Une mthode terminale est une mthode qui ne peut pas tre redfinie

    Usage rserver des cas bien particuliers

  • Liens entre classe (1)

    Comment : Par les champs

    en dclarant un champ de classe A dans une classe B Dans les mthodes

    en dclarant une variable locale de classe A dans une mthode de la classe B

    Par la dfinition explicite dune relationexemple :

    Enseignantnomprnom

    Matirenomvolume horaire

  • Agir sur un objet dune classe lie

    Actions possibles Lire la valeur dun champ :

    destination := nom_objet.nom_champ Modifier un champ :

    nom_objet.nom_champ := nouvelle_valeur Excuter une mthode :

    [rsultat :=] nom_objet.nom_mthode ([param dentre]) Remarques :

    symbole daffection (:=) dpend de la notation le texte entre crochets est optionnel

  • Actions sur objets : constat Rle des mthodes :

    factoriser du code commun ; Avoir un typage plus fort (ne sapplique que sur les

    objets de la classe C dans laquelle elle est dfinie ou dune classe hritant de C);

    nautoriser que certains changements dtat sur un objet.

    Mais possibilit dintervenir directement depuis

    l extrieur sur un champ dune mthode annule le dernier point

  • Gestion des droits daccs Consquence du constat prcdent :

    Pour chaque champ et chaque mthode, possibilit de dfinir des droits daccs pour les autres classes :

    droit dans C dans le dans les dans lespackage classes filles autres classes

    public oui oui oui ouiprotg oui oui oui nonpaquetage oui oui/non non nonpriv oui non non non

  • Assouplir et mieux contrler les droits (C++) Assouplir : cration de la notion dami :

    Si A est amie de C, alors A a la mme visibilit que C sur les champs et mthodes

    Augmenter le contrle : diffrents types dhritage : public, priv, protg :

    Rmq : En Java, paquetages classes amies

    public protg priv

    public public protgprotg protg protgpriv priv priv

    Type de dpartType dhritage

    Nouveaux types dans la classe fille selon le type dhritage

  • Encapsulation (1) Dfinition :

    Modifier les champs dun objet nest possible que par lintermdiaire des mthodes dfinies directement ou par hritage dans la classe de cette objet

    Principe : Les champs sont tous privs Les mthodes mises la disposition des autres

    classes sont dclares publiques N.B. : si classe vocation tre utilise comme classe

    mre, certains champs et mthodes pourront tre protgs

  • Encapsulation (2) Avantages :

    respect du troisime rle des mthodes (nautoriser que certains changements dtat pour un objet)

    possibilit de modifier la reprsentation interne dune classe (les champs) sans devoir refaire tous les projet lutilisant

    Consquence pour diffuser au public une classeprciser

    nom et rle de la classe ; profils et rles des diffrentes mthodes publiques si ncessaire, rle des champs et mthodes protgs

    = partie publique (par opposition la partie prive)

  • Rutilisation desstructures de donnes

    Problme liste dentiers

    ajouter un lment (entier) ; enlever le premier lment ; donner la longueur de la liste ; trier les entiers de la liste.

    liste de chanes de caractres : ajouter un lment (chanes) ; enlever le premier lment ; donner la longueur de la liste ; trier les chanes de la liste.

    Parties communesParties diffrentes

    Hritage inutilisable

  • Interface Dfinition

    Une interface est un ensemble nomm de profils de mthodes

    Implantation Une classe implante une interface si elle :

    le dclare implante toutes les mthodes spcifies dans linterface

    Utilisation Si une classe est relie un type dinterface donn,

    elle peut tre relie toute classe implantant cette interface.

  • Gnricit Principe : paramtrer une classe par une autre

    Liste EntierAjouter un lmentEnlever le premier lmentCalculer la longueur de la liste

    Dfinition dun objet : A : Liste Gnricit contrainte :

    But : permettre lutilisation dune fonction de la classe paramtre

  • Gnricit contrainte : exemple

    A : Liste : impossible B : Liste : possible ; B.ordonner() trie numriquement C : Liste : possible ; C.ordonner() trie alphabtiquement

    Liste ajouter un lmentsupprimer le dernier lmentcalculer la longueur de la listeordonner la liste =

    faire un tri bulle enutilisant la mthodecomparer dfiniesur les lments

    Boolenx : boolen

    Entierx : Entierbool comparer(y : entier)

    Chanex : Chanebool comparer(y : chane)

    Diapo 1Diapo 2Diapo 3Diapo 4Diapo 5Diapo 6Diapo 7Diapo 8Diapo 9Diapo 10Diapo 11Diapo 12Diapo 13Diapo 14Diapo 15Diapo 16Diapo 17Diapo 18Diapo 19Diapo 20Diapo 21Diapo 22Diapo 23Diapo 24Diapo 25Diapo 26Diapo 27Diapo 28Diapo 29Diapo 30Diapo 31Diapo 32Diapo 33Diapo 34