14
Pricipes 24/10/2016 1 Analyse et Conception Orientée Objet Enseignant: DJOUABRI Abderrezak www.djouabri.com Chapitre 1: Principes fondamentaux de l'orienté objet 1 Langages Orienté Objet (JAVA) Langages Modulaires ou Procédurales (C) Langages Linéaires (Fortran et Assembleur ) Générations des langages de programmation 2 Langages Linéaires Par exemple Fortran et Assembleur s'exécutent de façon linéaire. Chaque ligne du programme est lue puis exécutée jusqu'à la dernière. Il est possible de faire des sauts ou des boucles mais le principe reste le même (goto –» code spaghetti ). difficilement s'appliquer à des programmes complexes. les développeurs ne peuvent pas réutiliser des outils de programmation déjà écrits. 3 Langages Modulaires ou Procédurales Par exemple C, 4 un programme est un ensemble de données sur lesquelles agissent des procédures et des fonctions. Langages Modulaires ou Procédurales Par exemple C, 5 Programmer revenait à : définir un certain nombre de variables (structures, tableaux…) écrire des procédures pour les manipuler sans associer explicitement les unes aux autres Langages Modulaires ou Procédurales Par exemple C, réutiliser le code et d'éviter les redondances. Le principe est de regrouper un ensemble d'instructions dans des fonctions ou procédures. En effet, chaque tâche exécutée par un programme représente un nombre variable d'instructions. Ces instructions sont réunies (en bibliothèques) afin de pouvoir segmenter le code et favoriser la réutilisation de celui-ci. 6

Analyse et Conception Orientée Objet - djouabri.com Slides.pdf · 1 Chapitre 1: Principes fondamentaux de l'orienté objet Langages Orienté Objet (JAVA) ... Par exemple: JAVA, C++,

Embed Size (px)

Citation preview

Pricipes 24/10/2016

1

Analyse et Conception

Orientée ObjetEnseignant: DJOUABRI Abderrezak

www.djouabri.com

Chapitre 1: Principes fondamentaux de l'orienté objet1

Langages Orienté Objet (JAVA)

Langages Modulaires ou

Procédurales (C)

Langages Linéaires (Fortran et Assembleur )

Générations des langages de programmation2

Langages Linéaires Par exemple Fortran et Assembleur

• s'exécutent de façon linéaire.

Chaque ligne du programme est lue puis exécutée

jusqu'à la dernière.

• Il est possible de faire des sauts ou des boucles mais le

principe reste le même (goto –» code spaghetti ).

• difficilement s'appliquer à des programmes complexes.

• les développeurs ne peuvent pas réutiliser des outils de

programmation déjà écrits.

3Langages Modulaires ou Procédurales

Par exemple C, 4

un programme est un ensemble de données sur lesquelles agissent des procédures et des fonctions.

Langages Modulaires ou Procédurales

Par exemple C, 5

Programmer revenait à :

• définir un certain nombre de variables

(structures, tableaux…)

• écrire des procédures pour les manipuler

sans associer explicitement les unes aux autres

Langages Modulaires ou Procédurales

Par exemple C,

• réutiliser le code et d'éviter les redondances.

• Le principe est de regrouper un ensemble

d'instructions dans des fonctions ou procédures.

• En effet, chaque tâche exécutée par un programme

représente un nombre variable d'instructions. Ces

instructions sont réunies (en bibliothèques) afin de

pouvoir segmenter le code et favoriser la

réutilisation de celui-ci.

6

Pricipes 24/10/2016

2

Langages Modulaires ou Procédurales

Par exemple C,

Les questions qu’on peut poser dans ce cas :

1. Cette séparation (données, procédures) est elle utile ?

2. Pourquoi privilégier les procédures sur les données

(Que veut-on faire ?) ?

3. Pourquoi ne pas considérer que les programmes

sont avant tout des ensembles objets

informatiques caractérisé par les opérations qu’ils

connaissent ?

7Langages Orientés Objet

Par exemple: JAVA, C++, C#, Objective C, PHP,Python..

Les langages objets sont nés pour répondre à ces

questions.

Ils sont fondés sur la connaissance d’une

seule catégorie d’entités informatiques : les

objets.

8

Un objet incorpore des aspects statiques et

dynamiques au sein d’une même notion.

Langages Orientés Objet Par exemple: JAVA, C++, C#, Objective C, PHP,Python..

9

Un programme est constitué d’un ensemble

d’objets chacun disposant d’une partie procédures et d’une partie données. Les objets

interagissent par envoie de messages.

Langages Orientés Objet Par exemple: JAVA, C++, C#, Objective C, PHP,Python..

• une évolution de l'approche modulaire

• Elle lui apporte principalement trois

aspects primordiaux:

L'encapsulation, L'héritage et Le polymorphisme

10

Langages Orientés Objet Par exemple: JAVA, C++, C#, Objective C, PHP,Python..

POOLa POO est une méthode d’implémentation dans

laquelle les programmes sont organisés sous

formes de collections coopératives d’objets, dont

chacun représente une instance d’une classe

quelconque et dont toutes les classes sont

membres d’une hiérarchie de classes unis à travers

des relations d’héritage.

11Langages Orientés Objet

Par exemple: JAVA, C++, C#, Objective C, PHP,Python..

Algorithmique ObjetDans l’approche orienté objet un algorithme sera

essentiellement vu comme un ensemble d’objets auxquels l’utilisateur envoie des messages et qui s’en

envoient pendent le fonctionnement.Ces objets seront toujours pour l’utilisateur des boites noires et qui contiendront des variables locales,

inconnues de l’environnement, et qui ne s’y intéressera d’ailleurs pas. Le seul moyen d’accéder à ces objets

sera l’envoie des messages qu’ils sont capables de comprendre.

12

Pricipes 24/10/2016

3

Langages Orientés Objet Par exemple: JAVA, C++, C#, Objective C, PHP,Python..

Remarque :La spécification d’un système dans l’approche OO va s’axer principalement

sur la détermination des objets à

manipuler. Une fois cette étape réalisé le

concepteur n’aura plus qu’à réaliser les

fonctions de haut niveau qui s’appuient sur les objets et les familles d’objets définis

13 Avantages de l'Orienté Objet14

L'intérêt principal de l'OO réside dans le fait que

l'on ne décrit plus par le code des actions à réaliser

de façon linéaire mais par des ensembles cohérents

appelés objets.

facilité d'organisation, réutilisation, méthode plus

intuitive, possibilité d'héritage, facilité de

correction,

projets plus faciles à gérer.

15

L'OO est facilement concevable car il décrit

des entités comme il en existe dans le monde

réel.

Les modèles à objets ont été créés pour

modéliser le monde réel. "Dans un modèle à

objets, toute entité du monde réel est un objet,

et réciproquement, tout objet représente une

entité du monde réel".

Avantages de l'Orienté Objet 16 Avantages de l'Orienté Objet

Exemple modèle à objet vs monde réel

Objet Voiture

Entité Voiture

17

• factoriser le code en ensembles logiques.

Du point de vue de la programmation,

• écrire des programmes facilement lisibles

avec un minimum d'expérience, de taille

minimale et à la correction aisée. Ces

programmes sont, de plus, souvent très

stables

Avantages de l'Orienté Objet 18 Avantages de l'Orienté Objet

Les informations concernant un

domaine étant centralisées en objets, il

est facile de sécuriser le programme en

interdisant ou autorisant l'accès à ces

objets aux autres parties du

programme.

Pricipes 24/10/2016

4

19 Avantages de l'Orienté Objet

En général, en OO, cohabitent deux types de

développeurs: ceux qui conçoivent les objets et

ceux qui utilisent ces objets dans leurs

programmes. De cette façon, la programmation

objet permet de diviser la complexité. La

programmation objet permet d'obtenir des projets

stratifiés. Chaque protagoniste ne travaille que sur

des implémentations le concernant.

20 Concepts généraux de l'OO

Notion de classe

Une classe encapsule, c'est-à-dire regroupe des propriétés

(attributs ou variables d'instance) et des comportements

(méthodes)

classe Humain

Attribut classe

21 Concepts généraux de l'OO

classe Bras

Notion de classe

22 Concepts généraux de l'OO

Notion d'objet

Un objet est une entité logicielle :

• Ayant une identité

• Capable de sauvegarder un état

• Répondant à des messages précis en déclenchant des

activations internes appropriés qui changent l’état de

l’objet. Ces opération sont appelées méthodes qui

précisent le comportement de ces objets.

23 Concepts généraux de l'OO

Notion d'objet

Un objet est une instance de classe, c'est-à-dire un

exemplaire utilisable crée à partir de cette classe et en

valorisant certaines propriétés.

Notons que le concept de classe est abstrait : personne n'a

jamais vu d'Humain dans la nature alors que le concept

d'objet est fondamentalement concret : il est concevable de

croiser des personnes physiques, c'est-à-dire des instances

d'Humain.

24 Concepts généraux de l'OO

Notion d'objet

ali ou omar sont des instances de la classe Humain, c'est-à-dire des

humains ayant des propriétés spécifiques ( Ali est un humain aux yeux

noirs et Omar un humain aux yeux marrons ).

Exemple

Pricipes 24/10/2016

5

25 Concepts généraux de l'OO

Notion d'objet Exemple :

26 Concepts généraux de l'OO

Notion d'objet

Attributs Les attributs d’un objet sont l’ensemble des informations se présentant sous forme

de variable et permettant de représenter

l’état de l’objet.

27 Concepts généraux de l'OO

Notion d'objet

MessageUn message est une demande d’activation

d’une méthode envoyé à un objet.

28 Concepts généraux de l'OO

Notion d'objet MéthodesUne méthode est une fonction ou procédure

liée à un objet qui est déclenchée à la réception d’un message particulier : la

méthode déclenchée correspond

strictement au message reçu. La liste des

méthodes définies au sein d’un objet

constitue l’interface de l’objet pour l’utilisateur

29 Concepts généraux de l'OO

Notion d'objet

SignatureLa signature d’une méthode représente la précision de son nom, du type de ses arguments et du type de donnée retournée.

nomDeFonction :: typeArgument1 -> typeArgument2 -> ... -> typeArgumentN

30 Concepts généraux de l'OO

Notion d'objet

SignatureExemple:public void add (int a)public void add (double a)public void add (int a, int b)public void addition (int a, int b)

Pricipes 24/10/2016

6

31 Concepts généraux de l'OO

L'instanciation est l'action d'instancier, de créer un

objet à partir d'un modèle. Elle est réalisée par la composition de deux opérations : l'allocation et

l'initialisation. L'allocation consiste à réserver un espace mémoire au nouvel objet. L'initialisation

consiste à fixer l'état du nouvel objet. Cette

opération fait par exemple appel à l'un des constructeurs de la classe de l'objet à créer.

Instanciation

32 Concepts généraux de l'OO

Constructeur

Le constructeur est exécutée à l'instanciation de

l'objet. Il prend en argument des propriétés du nouvel

objet. Une classe peut avoir plusieurs constructeurs.

L'instanciation d'une voiture rouge se fait par

Voiture(rouge).

ou en lui précisant en plus sa marque de fabrique :

Voiture(rouge, Renault)

33 Concepts généraux de l'OO

Référence sur un objet

un objet est une zone mémoire qui est

pointée par une ou plusieurs références. Une

fois l'objet instancié, il correspond en réalité

à une zone mémoire donnée. Cette zone

mémoire, pour être utilisée doit être

référencée

34 Concepts généraux de l'OO

Référence sur un objet

ali-------------------Nom = ali……..

……..……..

E515:FB80

Humain ali = new Humain(ali);

Objet ali en mémoire

En réalité ali est une référence sur l’objet ali

35 Concepts généraux de l'OO

Référence sur un objet

ali-------------------Nom = ali……..

……..……..

E515:FB80

Humain ali = new Humain(Ali); Objet ali en mémoire

Humain omar = Ali;

E515:FB80

36 Concepts généraux de l'OO

Référence sur un objetali-----------------Nom = Ali……..……...E515:FB80

Humain ali = new Humain(ali);

Humain omar = new Humain(omar);

E515:FF90

omar-----------------Nom = omar……..……...

omar = ali; ?

1

2

3

Pricipes 24/10/2016

7

37 Concepts généraux de l'OO

Référence sur un objetali-----------------Nom = Ali……..……...E515:FB80

Humain ali = new Humain(ali);

Humain omar = new Humain(omar);

E515:FB80

omar-----------------Nom = omar……..……...

omar = ali; ?

1

2

3 Objet perdu (non référencé)

38 Propriétés (Concepts) de base de l'OO

La POO se base sur les notions clés suivantes :

Héritage

Encapsulation

Polymorphisme

Abstraction

39 Propriétés de base de l'OO

Abstraction L'abstraction est une technique qui vise à fournir un modèle

simplifié d'un domaine d'intérêt

Identifier les informations essentielles d'un objet concentrer sur la vue extérieure d'un objet Séparer le comportement d'un objet de sa mise en œuvre

40 Propriétés de base de l'OO

L'héritage

Procédé de réutilisation, dans lequel une nouvelle

fonctionnalité est obtenue par l'extension de la mise en œuvre d'une classe existante,

La classe de généralisation

explicitement Captures les attributs et les méthodes communes

La classe de spécialisation étend la mise en œuvre avec des attributs et des méthodes supplémentaires.

41 Propriétés de base de l'OO

L'héritage

On parle d’héritage

simple lorsqu’une

classe fille ne possède

qu’une classe mère.

1

42 Propriétés de base de l'OO

L'héritage

On parle d’héritage multiple lorsqu’une classe fille

possède plusieurs classes mères.2

Pricipes 24/10/2016

8

43 Propriétés de base de l'OO

L'héritage

L'héritage permet de spécialiser une

classe qui possédera non seulement les

propriétés et méthodes de sa mère mais

également d'autres méthodes

spécifiques ou redéfinies.

44 Propriétés de base de l'OO

L'héritage

Dans l'objet fille, on trouve:

De nouvelles méthodes ou propriétés

Des méthodes ou propriétés qui surchargent, c'est-à -

dire redéfinissent celles de la classe mère.

Les propriétés et méthodes de la classe mère qui

n'ont pas été surchargées

45 Propriétés de base de l'OO

L'héritage

Remarque: Les méthodes et propriétés peuvent être

héritées à un niveau n, c'est-à-dire qu'un

objet peut utiliser une méthode de la

mère de sa mère et ainsi de suite.

46 Propriétés de base de l'OO

L'héritage

Exemple d'héritage :

Quels sont les méthodes et les attributs Nouveaux ?Redéfinies ?

Non redéfinies ?

47 Propriétés de base de l'OO

surcharge

La surcharge d’une méthode ou d’un constructeur permet de définir plusieurs fois une même méthode/constructeur avec des arguments différents. Le compilateur choisit la méthode qui doit être appelée en fonction du nombre et du type des arguments .

redefinitionet

Précision

48 Propriétés de base de l'OO

surcharge redéfinitionet

Surcharge de constructeur

Pricipes 24/10/2016

9

49 Propriétés de base de l'OO

surcharge redéfinitionet

Surcharge de method

50 Propriétés de base de l'OO

surcharge redéfinitionet

La redéfinition d’une méthode héritée doit

impérativement conserver la déclaration de la méthode parent (type et nombre de paramètres, la valeur de

retour et les exceptions propagées doivent être identiques).Si la signature de la méthode change, ce n’est plus une

redéfinition mais une surcharge. Cette nouvelle méthode n’est pas héritée : la classe mère ne possède

pas de méthode possédant cette signature .

51 Propriétés de base de l'OO

surcharge redéfinitionet

52 Propriétés de base de l'OO

Des conseils sur l'héritage

Lors de la création d'une classe « mère » il faut

tenir compte des points suivants :

la définition des accès aux variables

d'instances, très souvent privées, doit être réfléchie entre protected et private ;

53 Propriétés de base de l'OO

Des conseils sur l'héritage

pour empêcher la redéfinition d'une méthode

(surcharge) il faut la déclarer avec le

modificateur final. Lors de la création d'une

classe fille, pour chaque méthode héritée qui

n'est pas final, il faut envisager les cas suivant :

54 Propriétés de base de l'OO

Des conseils sur l'héritage

la méthode héritée convient à la classe fille : on ne doit

pas la redéfinir ; la méthode héritée convient mais partiellement du fait de

la spécialisation apportée par la classe fille : il faut la redéfinir voir la surcharger. La plupart du temps une redéfinition commencera par appeler la méthode héritée

(via super) pour garantir l'évolution du code ; la méthode héritée ne convient pas : il faut redéfinir ou

surcharger la méthode sans appeler la méthode héritée lors de la redéfinition.

Pricipes 24/10/2016

10

55 Propriétés de base de l'OO

Encapsulation

Les informations d’emballage est

une manière pour cacher la

représentation interne

Toutes les interactions avec

l'objet est à travers une interface

publique prestations de service.

L’Encapsulation sert à séparer l'interface contractuelle d'une

abstraction et sa mise en œuvre.

56 Propriétés de base de l'OO

Encapsulation

Derrière ce terme se cache le concept même de l'objet :

réunir sous la même entité les données et les moyens de les

gérer,

57 Propriétés de base de l'OO

Encapsulation

L’encapsulation est le faite qu’un objet renferme

ses propres attributs et ses méthodes. Les détails

de l’implémentation d’un objet sont masqués aux

autres objets du système à objets. On dit qu’il y a

encapsulation de données et du comportement des

objets.

58 Propriétés de base de l'OO

Encapsulation

On précise trois modes d’accès aux attributs d’un objet.

Le mode public1

Le mode private2

Le mode protected3

59 Propriétés de base de l'OO

Encapsulation

On précise trois modes d’accès aux attributs d’un objet.

Le mode public1

Le mode private

Le mode protected

avec lequel les attributs

seront accessibles

directement par l’objet lui

même ou par d’autres

objets. Il s’agit du niveau le plus bas de protection

60 Propriétés de base de l'OO

Encapsulation

On précise trois modes d’accès aux attributs d’un objet.

Le mode public

Le mode private2

Le mode protected

avec lequel les attributs de

l’objet seront inaccessibles à partir d’autres objets : seules

les méthodes de l’objet pourront y accéder. Il s’agit du

niveau le plus fort de

protection.

Pricipes 24/10/2016

11

61 Propriétés de base de l'OO

Encapsulation

On précise trois modes d’accès aux attributs d’un objet.

Le mode public

Le mode private

Le mode protected3

cette technique de

protection est étroitement

associée à la notion

d’héritage. Seulement les

successeurs qui ont l'accès

62 Propriétés de base de l'OO

Encapsulation

Sous ce nouveau concept se cache également un

autre élément à prendre en compte : pouvoir

masquer aux yeux d'un programmeur extérieur

tous les rouages d'un objet et donc l'ensemble des

procédures et fonctions destinées à la gestion

interne de l'objet, auxquelles le programmeur

final n'aura pas à avoir accès.

63 Propriétés de base de l'OO

Polymorphisme

Le terme polymorphisme est certainement

celui que l'on appréhende le plus.

poly comme plusieurs et morphisme comme

forme.

Le polymorphisme traite de la capacité de

l'objet à posséder plusieurs formes.

64 Propriétés de base de l'OO

Polymorphisme

Une entité est polymorphe si à

l’exécution elle peut se référer

à des instances de classe

différentes.

65 Propriétés de base de l'OO

Polymorphisme

Capacité d'objets appartenant à différentes classes de répondre à des

appels de méthodes du même nom, chacun en fonction de comportement

spécifique à la classe appropriée

Les objets doivent présenter une interface

compatible avec le même nom de

méthode et les mêmes ensembles de

paramètres

Le programme n'a pas besoin de connaître

la classe exacte de l’objet à l'avance, donc

ce comportement peut être mis en œuvre au moment de l'exécution

66 Propriétés de base de l'OO

Polymorphisme Exemples

Pricipes 24/10/2016

12

67 Propriétés de base de l'OO

Polymorphisme Exemples

68 Propriétés de base de l'OO

Polymorphisme

Cette capacité dérive directement du principe

d'héritage vu précédemment. En effet, comme

on le sait déjà, un objet va hériter des champs

et méthodes de ses ancêtres. Mais un objet

garde toujours la capacité de pouvoir

redéfinir une méthode afin de la réécrire, ou

de la compléter.

69 Propriétés de base de l'OO

Polymorphisme

Le polymorphisme est un mécanisme

qui permet à une sous classe de redéfinir

une méthode dont elle a hérité tout en

gardant la même signature de la

méthode.

70 Propriétés de base de l'OO

Polymorphisme

Attention !

Le concept de polymorphisme ne doit pas être confondu

avec celui d'héritage multiple. En effet, l'héritage multiple

permet à un objet d'hériter des membres (champs et

méthodes) de plusieurs objets à la fois, alors que le

polymorphisme réside dans la capacité d'un objet à

modifier son comportement propre et celui de ses

descendants au cours de l'exécution.

71 Propriétés de base de l'OO

Le polymorphisme et le transtypage

Les objets sont dits polymorphes car ils possèdent plusieurs

types: le type de leurs classes et les types des classes

ascendantes.

Par exemple:

uneHonda est une Moto et

Un véhicule.

Véhicule

Moto

uneHonda

Instanciation

72 Propriétés de base de l'OO

Le polymorphisme et le transtypage

Dans certains cas, il est possible de forcer le

programme à 'voir' un objet comme un type

différent de son type initial, c'est le transtypage

ou cast.

Ce transtypage ne modifie par l'objet mais

indique seulement la façon de le voir.

Pricipes 24/10/2016

13

73 Propriétés de base de l'OO

Le polymorphisme et le transtypage

types de transtypages

qui sert à un objet à être vu

comme du type de sa mère. Ce

transtypage est fait de façon

implicite

Le transtypage ascendant

(implicite)Le transtypage descendant

qui sert à forcer une classe de

type mère à être vue comme

un type fille. Ce transtypage

n'est valide que si l'objet de

type mère était de type fille à

son instanciation.

74 Propriétés de base de l'OO

Le polymorphisme et le transtypage

Attention!

Une erreur courante est de penser qu'il y a cast de la

mère vers la fille: Une classe mère n'est pas du type de

sa fille! Un Véhicule n'est pas forcement une Voiture.

De nombreux problèmes métaphysiques s'en suivent

généralement. La bonne façon de raisonner lorsque

l'on veut affecter un type à un autre est de procéder

comme suit:

75 Propriétés de base de l'OO

Le polymorphisme et le transtypage

On fait A <- B ; A possède un type initial, le type que

l'on a donné à l'instanciation. Cette affectation est

valide si et seulement si B est du type initial de A.

Autrement dit, il faut que B soit de même type initial

que A ou d'un type dérivé de celui de A

76 Propriétés de base de l'OO

Le polymorphisme et le transtypage

Exemple:

maVoiture <- monVehicule :

est-ce une affectation valide?

Véhicule

Voiture

maVoiture

Instanciation

Instanciation

monVéhicule

77 Propriétés de base de l'OO

Le polymorphisme et le transtypage

Exemple:

maVoiture <- monVehicule

un Véhicule n'est pas

forcement une Voiture donc

cette affectation n'est pas

valide.

Véhicule

Voiture

maVoiture

Instanciation

Instanciation

monVéhicule

78 Propriétés de base de l'OO

Le polymorphisme et le transtypage

Exemple:

monVehicule <- maVoiture :

est-ce une affectation valide?

Véhicule

Voiture

maVoiture

Instanciation

Instanciation

monVéhicule

Pricipes 24/10/2016

14

79 Propriétés de base de l'OO

Le polymorphisme et le transtypage

Exemple:

monVehicule <- maVoiture :

monVehicule est de type initial

Véhicule et maVoiture est

également de type Véhicule car

Voiture dérive de Véhicule; donc

cette affectation est valide !

Véhicule

Voiture

maVoiture

Instanciation

Instanciation

monVéhicule

80 Propriétés de base de l'OO

Le polymorphisme et le transtypage

Polymorphisme paramétriqueun objet peut comporter plusieurs

méthodes de même nom et possédant

des arguments différents. Ce sont des

méthodes polymorphiques.

81 Propriétés de base de l'OO

Le polymorphisme et le transtypage

Polymorphisme paramétrique

• Voiture.rouler(chemin) la façon dont la voiture roule ne dépend

que du chemin.

• Voiture.rouler( chemin, meteo) la façon dont la voiture roule

dépend du chemin et de la météo.

• Voiture.rouler(chemin, meteo, circulation) la façon dont la

voiture roule dépend du chemin, de la météo et de la circulation.

exemple avec les constructeurs.

82 Propriétés de base de l'OO

composition

Procédé de réutilisation, dans lequel une

nouvelle fonctionnalité est obtenue par la

création d'un objet composé d'autres objets

La nouvelle fonctionnalité est

obtenue en déléguant la

fonctionnalité à l'un de l'objet étant

composé

la composition encapsule plusieurs

objets à l'intérieur d'un autre

83 Propriétés de base de l'OO

Les promesses de la conception orientée objet

Robustesse

Les modifications apportées au logiciel ne pas introduire de

régression

Extensibilité

Extension de nouvelles fonctionnalités nécessite peu d'effort

réutilisabilité

Développement d'un nouveau logiciel prend bénéfice des atouts

existants

84 Bibliographie