Premiers principes de la programmation objet

Page 1 sur 34Lecteur de document UniversityLib

Premiers principes de la programmation objet

Software Engineering · notes

Browse all programmation documents

Premiers principes

de la programmation objet

Gr gory Bonnet, Yann Mathet, Bruno Zanuttini

14 septembre 2015

Gr gory Bonnet, Yann Mathet, Bruno Zanuttini

G nie logiciel

1/34

Programmation objet

Objet :

(cid:73) propri t s (attributs), valeurs ( tat)

(cid:73) op rations (m thodes)

(cid:73) identit (adresse)

Classe :

(cid:73) d nit un type dobjets

(cid:73) ensemble dobjets (en intension)

(cid:73) propri t s communes (attributs)

(cid:73) op rations communes (m thodes)

Un objet est une instance de sa classe

Gr gory Bonnet, Yann Mathet, Bruno Zanuttini

G nie logiciel

2/34

Pourquoi programmer en objet ?

(cid:73) Perennit des objets (6= fonctionnalit s)

(cid:73) Modularit

(cid:73) R utilisabilit

(cid:73) Structuration des donn es manipul es

(cid:73) Encapsulation

(cid:73) Abstraction, traitements g n riques

(cid:73) Facilit des tests

(cid:73) etc.

Gr gory Bonnet, Yann Mathet, Bruno Zanuttini

G nie logiciel

3/34

Exemples de classes

H ritage

Classes abstraites et interfaces

Autres notions

Notation UML

Gr gory Bonnet, Yann Mathet, Bruno Zanuttini

G nie logiciel

4/34

Classe centr e sur les attributs

(cid:73) getName, getPrice : accesseurs

(cid:73) setPrice(oat) : mutateur

(cid:73) available est encapsul

Gr gory Bonnet, Yann Mathet, Bruno Zanuttini

G nie logiciel

5/34

Classe centr e sur les op rations

Gr gory Bonnet, Yann Mathet, Bruno Zanuttini

G nie logiciel

6/34

Classe g n rale

Gr gory Bonnet, Yann Mathet, Bruno Zanuttini

G nie logiciel

7/34

Exemples de classes

H ritage

Classes abstraites et interfaces

Autres notions

Advertisement

Notation UML

Gr gory Bonnet, Yann Mathet, Bruno Zanuttini

G nie logiciel

8/34

H ritage

La classe F h rite de la classe M :

(cid:73) F a tous les attributs de M

(cid:73) F peut avoir des attributs suppl mentaires

(cid:73) F a toutes les m thodes de M

(cid:73) certaines m thodes peuvent tre d nies 6= dans F (red nition)

(cid:73) F peut avoir des m thodes suppl mentaires

(cid:73) les instances de F peuvent tre manipul es comme des instances de M

(polymorphisme)

(cid:73) Java : class F extends M

Gr gory Bonnet, Yann Mathet, Bruno Zanuttini

G nie logiciel

9/34

Exemples de classes

H ritage

Classes abstraites et interfaces

Autres notions

Notation UML

Gr gory Bonnet, Yann Mathet, Bruno Zanuttini

G nie logiciel

10/34

Classes abstraites

D nitions :

(cid:73) m thode abstraite : d clar e mais non d nie ce niveau de la

hirarchie de classes

(cid:73) classe abstraite : sans instances directes

(cid:73) m thodes abstraites classe abstraite

(cid:73) classe abstraite sans m thode abstraite possible (on ne veut pas

dinstance ce niveau)

(cid:73) classe abstraite avec m thodes d nies possible (tout nest pas

abstrait)

Gr gory Bonnet, Yann Mathet, Bruno Zanuttini

G nie logiciel

11/34

Monstres

Gr gory Bonnet, Yann Mathet, Bruno Zanuttini

G nie logiciel

12/34

Monstres

class Fight {

. . .

public void hit (Monster m1, Monster m2) {

m2.decreaseLifePoints(m1.hitForce()) ;

}

}

Gr gory Bonnet, Yann Mathet, Bruno Zanuttini

G nie logiciel

13/34

Biologie

(cid:73) S quence dADN : ATTGCATATCCGATTACA. . .

(cid:73) Prot ine : CYWCCGRKRAQ. . .

Gr gory Bonnet, Yann Mathet, Bruno Zanuttini

G nie logiciel

14/34

Biologie

(cid:73) Sequence abstraite sans m thode abstraite

Advertisement

(cid:73) Sequence factorise la gestion de liste

(cid:73) Pas dinstance de Sequence

(cid:73) Pas ou peu de traitements g n riques sur Sequence

Gr gory Bonnet, Yann Mathet, Bruno Zanuttini

G nie logiciel

15/34

Interfaces

D nitions :

(cid:73) ensemble de d clarations de m thodes

(cid:73) impl menter d nir ces m thodes

(cid:73) pas dattribut (sauf nal static)

(cid:73) Java : class C implements I1, I2, I3. . .

Utilisations principales :

(cid:73) d nir un type tels traitements applicables

(cid:73) d nir un type telles op rations disponibles

Gr gory Bonnet, Yann Mathet, Bruno Zanuttini

G nie logiciel

16/34

Tri

Gr gory Bonnet, Yann Mathet, Bruno Zanuttini

G nie logiciel

17/34

Tri

class Quicksort {

. . .

public List<Ordered> getOrderedList () {

. . .

if (element1.isGreaterThan(element2)) {

. . .

}

. . .

}

}

Gr gory Bonnet, Yann Mathet, Bruno Zanuttini

G nie logiciel

18/34

M diath que

Gr gory Bonnet, Yann Mathet, Bruno Zanuttini

G nie logiciel

19/34

Une architecture classique

Gr gory Bonnet, Yann Mathet, Bruno Zanuttini

G nie logiciel

20/34

Exemples de classes

H ritage

Classes abstraites et interfaces

Autres notions

Notation UML

Gr gory Bonnet, Yann Mathet, Bruno Zanuttini

G nie logiciel

21/34

D l gation

Gr gory Bonnet, Yann Mathet, Bruno Zanuttini

G nie logiciel

22/34

Instances versus classes : "Static"

M thodes dinstance :

(cid:73) m thodes standards

(cid:73) d pendent de l tat courant de linstance (et darguments)

Advertisement

(cid:73) appel es sur un objet (instance)

(cid:73) exemples : accesseurs, mutateurs

(cid:73) exemples : p.evaluate(0.1), this.evaluate(5.33)

M thodes de classe :

(cid:73) Java : static

(cid:73) ne d pendent que de la classe (et darguments)

(cid:73) appel es sur une classe

(cid:73) exemples : main

(cid:73) exemple : Integer.parseInt("0347"), Polynomial.add(p1,p2)

Attributs : de classe ou dinstance galement

Gr gory Bonnet, Yann Mathet, Bruno Zanuttini

G nie logiciel

23/34

Polymorphisme

List<Appartment> appartments=new List<Appartment> () ;

appartments.add(new Appartment(400)) ;

appartments.add(new AgencyAppartment(350,75)) ;

Appartment a=appartments.get(1) ;

System.out.println(""+a.getRent()) ; / 425 /

Gr gory Bonnet, Yann Mathet, Bruno Zanuttini

G nie logiciel

24/34

M thodes virtuelles, liage dynamique (1/2)

Gr gory Bonnet, Yann Mathet, Bruno Zanuttini

G nie logiciel

25/34

+d marrer():void+avancer():void+tourner():void-roues : Roue[ ]#moteur : MoteurV hicule+tourner():void+tournerLeVolant():void+mettreLeClignotant():void-volant : VolantVoiture{mettreLeClignotant();tournerLeVolant();}+tourner():void+tournerLeGuidon():void+sePencherVersLInt rieur():void-guidon : GuidonV lo{sePencherVersLInt rieur();tournerLeGuidon();}M thodes virtuelles, liage dynamique (2/2)

(cid:73) Par polymorphisme, une r f rence de type V hicule peut r f rencer :

un V hicule (si non abstract) OU une Voiture OU un v lo

(cid:73) Quelle est la di rence entre v lo.tourne() et v hicule.tourner() si :

V lo v lo=new V lo() ; V hicule v hicule = v lo ;

Gr gory Bonnet, Yann Mathet, Bruno Zanuttini

G nie logiciel

26/34

Code de test : V hicule[ ] parcAuto=new V hicule[2];parcAuto[0]=new Voiture();parcAuto[1]=new V lo();for (int i=0;i<parcAuto.length;i++) { parcAuto .d marrer(); parcAuto .avancer(); parcAuto .tourner(); }R f rences versus Instances

(cid:73) Une instance na pas de nom, et il existe entre 1 et n r f rences sur

elle un instant donn (sinon > garbage collector)

(cid:73) Une r f rence est capable de r f rencer tous les objets de son type,

mais aussi, par POLYMORPHISME de son (ses) sous-type(s), etc.

Elle peut Jtre de type abstrait.

(cid:73) Une instance nest, par construction, JAMAIS ABSTRAITE. Toutes

ses m thodes existent, m me si elle est r f renc e par une r f rence

abstraite, la classe ayant servi linstancier tant par d nition non

abstraite.

(cid:73) Le code ex cuter pour une invocation donn e de m thode nest pas

toujours connu la compilation. Cest le liage dynamique. Le code

r ellement ex cut est toujours celui qui correspond la (re)d nition

de m thode situ e LE PLUS BAS dans la hi rarchie de classes

vis- -vis du TYPE REEL de lobjet.

Gr gory Bonnet, Yann Mathet, Bruno Zanuttini

G nie logiciel

27/34

H ritage ou Association (1/3)

(cid:73) Attention, en d couvrant la conception objet, on voit de lh ritage

partout

(cid:73) Ne pas oublier lassociation, compl ment indispensable de lh ritage

(cid:73) Lh ritage se justie si le polyorphisme qui en d coule fait sens

(cid:73) Test s mantique : une instance dune classe lle EST UN l ment de

la classe m re

(cid:73) Exemple : un cabriolet EST UNE voiture qui EST UN v hicule

Advertisement

(cid:73) Contre exemple : un cercle NEST PAS un point. Son centre est un

point (association)

Gr gory Bonnet, Yann Mathet, Bruno Zanuttini

G nie logiciel

28/34

H ritage versus Association (2/3)

Gr gory Bonnet, Yann Mathet, Bruno Zanuttini

G nie logiciel

29/34

+ translate(dx:double, dy:double)- x : double- y : doublePoint- rayon : doubleCercle{x+=dx;y+=dy;}{// d l gation :centre.translate(dx,dy);}+ translate(dx:double, dy:double)- rayon : double- centre : PointCercle1H ritage ou Association (3/3)

(cid:73) Tout ne se d crit pas de facon hi rarchique (h ritage)

(cid:73) Essayons avec toutes les vari t s de pizzas

(cid:73) On cr e la classe de base Pizza

(cid:73) On cr e une sous-classe PizzaAuJambon, ajoutant les fonctionnalit s

propres lingr dient jambon

(cid:73) Puis une sous-classe PizzaAuFromage

(cid:73) Mais quid de la classe PizzaAuFormageEtAuJambon ?

(cid:73) Avec 10 ingr dients, tout cela explose... et le code devient forc ment

redondant

(cid:73) > voir les design-patterns correspondants

Gr gory Bonnet, Yann Mathet, Bruno Zanuttini

G nie logiciel

30/34

Visibilit

Attributs et m thodes :

(cid:73) public : accessible partout

(cid:73) private : accessible dans la classe seulement

(cid:73) private accessible aussi dans autres instances de la classe

(cid:73) protected : accessible dans classe et sous-classes

(cid:73) package : accessible dans le package (Java)

Surcharge :

(cid:73) surcharge de m thode en augmentant visibilit possible

(cid:73) restriction de visibilit impossible

Gr gory Bonnet, Yann Mathet, Bruno Zanuttini

G nie logiciel

31/34

Exemples de classes

H ritage

Classes abstraites et interfaces

Autres notions

Notation UML

Gr gory Bonnet, Yann Mathet, Bruno Zanuttini

G nie logiciel

32/34

Diagrammes complets

Gr gory Bonnet, Yann Mathet, Bruno Zanuttini

G nie logiciel

33/34

Utilisation parcimonieuse

(cid:73) Simplier : moyen de communication

(cid:73) Diagramme complet redondant avec le code et donc inutile

(cid:73) Ne montrer que ce qui est pertinent dans le contexte

(cid:73) Prendre 6= points de vue

(cid:73) Distinguer pr sentation de limpl mentation vs de lutilisation

(cid:73) Attributs/m thodes priv s : cacher sauf impl mentation

(cid:73) Cf. exemples de ce diaporama

Gr gory Bonnet, Yann Mathet, Bruno Zanuttini

G nie logiciel

34/34