test dans les objets andrés farias – [email protected]@emn.fr

21
Test dans les objets Test dans les objets Andrés Farias – [email protected] http://www.emn.fr/farias/dess gl

Upload: firmin-maurel

Post on 03-Apr-2015

108 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Test dans les objets Andrés Farias – afarias@emn.frafarias@emn.fr

Test dans les objetsTest dans les objets

Andrés Farias – [email protected]://www.emn.fr/farias/dessgl

Page 2: Test dans les objets Andrés Farias – afarias@emn.frafarias@emn.fr

PlanPlan

IntroductionQu’est-ce qu’un objet?Qu’est-ce qu’une classe?

Descriptions comportementaux Méthodologies formelles

Propriétés d’intérêt Les test dans les objet avec une

description comportemental.

Page 3: Test dans les objets Andrés Farias – afarias@emn.frafarias@emn.fr

Des procédures aux objetsDes procédures aux objets

Programmation dirigée par les traitements :Ecole de programmation Algol (1968)

• programme = {procédures} {données} avec = Méthodes d’analyses = décomposition modulaire en

arbrechaque module étant isolé des autres (boîte noire)

Inconvénients :Couplage fort entre structures de données et procédures

analyse d’impact au moindre changement de contexteMéthode de développement figé

analyse conception développement testsCycle de développement long, répercussion des erreurs

de conception

Page 4: Test dans les objets Andrés Farias – afarias@emn.frafarias@emn.fr

Qu’est-ce qu’un objet?Qu’est-ce qu’un objet?

Intuition :« Nous manipulons des objets matériels complexes dont nous connaissons uniquement le mode d’emploi sans se soucier des principes physiques,théoriques, techniques nécessaires à leur réalisation. Nous savons utiliser des outils pour effectuer une tâche quelconque. Nous savons créer de nouveaux outils par assemblage ou combinaison d’outils préexistants. La notion d’objet informatique permet la transposition de ce que nous savons faire dans la vie de tous les jours à l’univers informatique. »

(Jean-François Perrot)

Page 5: Test dans les objets Andrés Farias – afarias@emn.frafarias@emn.fr

Qu’est-ce qu’un objet?Qu’est-ce qu’un objet?

Avantages :Mécanismes intellectuels partagés par le

plus grand nombre d’utilisateursTraitement = collaboration (échange de

messages) entre les objets (représentation informatique des objets réels)• Couplage faible traitement / objets • Analyse d’impact localisé dans les objets (ou les

groupes d’objets)• Développement incrémental, cycle raccourci

Programmation dirigée par les données

Page 6: Test dans les objets Andrés Farias – afarias@emn.frafarias@emn.fr

Qu’est-ce qu’un objet? Qu’est-ce qu’un objet? Réponse :Réponse :

Entité individuelle repérée par une adresse unique

Formé de plusieurs champsvariables d’instances en Smalltalkdonnées membres en C++attributs en Java

A chaque champ est associée une valeur, valeurs des champs = état de l’objet

Reçoit des messages et les traite en activant la procédure correspondante. des messages auxquels un objet peut répondre = comportement de l’objet

Page 7: Test dans les objets Andrés Farias – afarias@emn.frafarias@emn.fr

Qu’est-ce qu’un objet?Qu’est-ce qu’un objet?

METHODES CHAMPS

INTERFACE OBJET• abstraction de données :

encapsulation représentation interne et implantation

• modularité / maintenance lieu unique évolution structurelle / comportementale

• réutilisabilitétel quel, par spécialisation, par composition

• lisibilité / compréhensionCode moins chargé et plus naturel...

Page 8: Test dans les objets Andrés Farias – afarias@emn.frafarias@emn.fr

Les langages à objets à classesLes langages à objets à classes

Exemple un objet anonyme représentant un point à l’écran

x

y

getX():IntegergetY():IntegersetX(Integer):voidsetY(Integer):void

Accesseurs

Modifieurs, setteurs ?

voir():void {display(.,x,y);}centrer():void {this.setX(0); this.setY(0);}avancer():void {this.setX(this.getX()+1);}descendre():void {this.setY(this.getY()-1);}

Page 9: Test dans les objets Andrés Farias – afarias@emn.frafarias@emn.fr

Les langages à objets à classesLes langages à objets à classes

Comment interagir avec un objet ? La métaphore de l’envoi de messagesPenser envoi de messages et non activation

de procédures style de programmation et de conception plus souple

Point p = new Point (3, 4); Point q = new Point(3, 5); Point origine = new Point(0,0);boolean val = p.estOrigine(); % Faux val = origine.estOrigiine(); % Vraival = q.estIsole(); % Faux

Page 10: Test dans les objets Andrés Farias – afarias@emn.frafarias@emn.fr

Langages à objets : trois Langages à objets : trois principesprincipes

Recours à la simulation : notion d’objetexécution du programme par activation du modèlealgorithme <> animation d’un modèle réduit

Distinction entre concept (abstrait) et instance (concrète)définition / exemple, classe / instance

Classification de concepts, relation de généralisation / spécialisation caractéristique majeure de la programmation par

objets ?Ne fontionne pas comme espéré… (réalisation

informatique délicate)

Page 11: Test dans les objets Andrés Farias – afarias@emn.frafarias@emn.fr

Les langages à objetsLes langages à objets

Algol

SimulaC Pascal Ada

Lisp

Smalltalk

Eiffel

Self

CLOS

C++Objective C

Ada 95

Java

Object Pascal

Delphi

Page 12: Test dans les objets Andrés Farias – afarias@emn.frafarias@emn.fr

Qu’est-ce qu’une classe ?Qu’est-ce qu’une classe ?

Texte structuré qui contient :Le nom des champs communs à toutes les instances

de la classe.Une liste de procédures agissant sur ces champsLes seules variables libres (n’ayant pas encore de

valeur) sont les variables d’instance

Création d’un objet instanciation par moulage (structure de données dupliquée)valeurs propres à l’objet stocké par celui-cimodèle et liste de procédures stockés par la classe lien à l’exécution : chaque objet instance d’une classe

contient l’adresse du code compilé de sa classe.

Page 13: Test dans les objets Andrés Farias – afarias@emn.frafarias@emn.fr

Les langages à objets à Les langages à objets à classesclasses

Qu’est-ce qu’une classe ? Représentation de la classe Position et de quelques instances.

x

ygetX():IntegergetY():IntegersetX(Integer):voidsetY(Integer):void

voir():void {display(.,x,y);}centrer():void {this.setX(0); this.setY(0);}estIsole ():boolean {this.setX(this.getX()+1);}estOrigine():boolean {this.setY(this.getY()-1);}

Class Position

13 P

42 Q

26 R

Page 14: Test dans les objets Andrés Farias – afarias@emn.frafarias@emn.fr

Les langages à objets à Les langages à objets à classesclasses

Conclusion provisoire sur les classes.Instances <<concrètes>> versus

classes <<abstraites>>• Types de données abstrait, clusters,

paquetage en Ada.Intension et extension d’une class:

• Extension d’une classe = ensemble des instances de cette classe

• Intension d’une classe = description intensionnel des instances de cette classe (un ensemble de programmes)

Page 15: Test dans les objets Andrés Farias – afarias@emn.frafarias@emn.fr

Les langages à objets à Les langages à objets à classesclasses

Polymorphisme (1er niveau) :

comportement polymorphe des objets <<dessinables>> / méthode voir()

Point p;Rectangle r;Cercle c;// activation procédure voir() sur classe Pointp.voir(); // activation procédure voir() sur classe Rectangler.voir(); // activation procédure voir() sur classe Cerclec.voir();

Page 16: Test dans les objets Andrés Farias – afarias@emn.frafarias@emn.fr

Les langages à objets à Les langages à objets à classesclasses

Qu’est-ce que l’héritage ? classe A hérite de classe B Point de vue intensionnel (héritage statique)

• Attributs(B) Attributs(A)• Si Protocole(C) = ensemble des méthodes auquel

un objet c instance de C sait répondre alors Protocole(B) Protocole(A)

Intension(B) Intension(A) un moyen efficace de réutiliser du code ! On écrit que ce qui est supplémentaire ou les comportements qui changent.

Page 17: Test dans les objets Andrés Farias – afarias@emn.frafarias@emn.fr

Les langages à objets à Les langages à objets à classesclasses

Qu’est-ce que l’héritage ? classe A hérite de classe B Point de vue extensionnel (héritage

dynamique)• Toute instance de A est une instance de B

(Attention la réciproque est fausse !) Extension(A) Extension(B)

A est sous-classe de B, B est super-classe de A• Relation d’héritage est une relation d’ordre, le

diagramme de Hasse de cette relation s ’appelle le graphe d ’héritage (en général un arbre)

Page 18: Test dans les objets Andrés Farias – afarias@emn.frafarias@emn.fr

Les langages à objets à Les langages à objets à classesclasses

La classe PointColoré étends (spécialise) la classe Point

xy

voir():void {display(.,x,y);}centrer():void {this.setX(0); this.setY(0);}avancer():void {this.setX(this.getX()+1);}descendre():void {this.setY(this.getY()-1);}

Class Point

xy

voir():void {display(.,x,y);}centrer():void {this.setX(0); this.setY(0);}avancer():void {this.setX(this.getX()+1);}descendre():void {this.setY(this.getY()-1);}Blanchir():void {this.setColor = « blanch »;}

Class PointColoré color

Page 19: Test dans les objets Andrés Farias – afarias@emn.frafarias@emn.fr

Tests dans les objetsTests dans les objets

Les tests dans les objets servent a vérifier si l’objet fait effectivement ce qu’il est sensé de faire.

Transformer chaque spécification fait au niveau de la documentation en un test pour vérifier la spécification.

Lancer le test.

Page 20: Test dans les objets Andrés Farias – afarias@emn.frafarias@emn.fr

Tests dans les objets (2)Tests dans les objets (2)

Création de test est difficile: Pour créer des tests il faut transformer

des spécifications qui sont par fois informelles en méthodes qui vont tester un objet.

Le domaine des valeurs d’entré pour le test seront probablement des objets (et par fois du même type a celui qui est testé) :• Domaine infini.• Génération des objets difficile.

Page 21: Test dans les objets Andrés Farias – afarias@emn.frafarias@emn.fr

Tests dans les objets (3)Tests dans les objets (3)

Réduction des tests:Étant donné que la réalisation des test

est difficile est elle n’est pas exhaustif nous proposons de diminuer les test à faire.

Déplacement des spécifications dans la documentation: Prend des spécification d’un certain

type et étudier l’impact dans le modèle objet lors de leur intégration.