Vous êtes sur la page 1sur 87

LOG210 UML & METHODES AGILES

1. Architectures logicielles et modularité


ARCHITECTURES LOGICIELLES ET MODULARITÉ
• PRINCIPES ET PROBLÉMATIQUE DU GÉNIE LOGICIEL.
• DE LA PROGRAMMATION STRUCTURÉE À L’APPROCHE ORIENTÉE OBJET
• LES CONCEPTS OBJET.
ABSTRACTION.
ENCAPSULATION ET DISSIMULATION DES INFORMATIONS.
SURCHARGE.
HÉRITAGE.
POLYMORPHISME.
• UML

2
Principes et problématique du génie logiciel.

Système d’Information=Matériels + Logiciels

20%

Matériels
Logiciel
80%

Ce matériel est relativement fiable et le marché est standardisé.

Les problèmes liés à l’informatique sont essentiellement


des problèmes de logiciel.

3
Principes et problématique du génie logiciel.

Un logiciel est un ensemble de programmes, qui permet à un ordinateur ou à un


système informatique d’assurer une tâche ou une fonction en particulier (exemple :
logiciel de comptabilité, logiciel de gestion des prêts).

Le développement de grands logiciels par de grandes équipes pose d’importants


problèmes de conception et de coordination.

Le développement d’un logiciel est une phase absolument cruciale qui monopolise l’essentiel du
coût d’un produit et conditionne sa réussite et sa pérennité.

4
Principes et problématique du génie logiciel.

Enquête sur des milliers de projets, de toutes tailles et de tous secteurs

5
Principes et problématique du génie logiciel.
60%

50%

40%

30%

20%

10%

0%
2011 2012 2013 2014 2015

Réussis: achevés dans les délais et pour le budget impartis, avec


toutes les fonctionnalités demandées
Mitigés: achevés et opérationnels, mais livrés hors délais, hors
budget ou sans toutes les fonctionnalités demandées
Ratés: abandonnés avant la fin ou livrés mais jamais utilisés

6
Principes et problématique du génie logiciel.

7
Principes et problématique du génie logiciel.

8
Principes et problématique du génie logiciel.

Cette crise de l’industrie du logiciel était principalement


due à :

• Erreurs humaines;
• L’augmentation des coûts ; Génie logiciel
• Les difficultés de maintenance et d’évolution ;
• La non fiabilité ;
• Négligence de la phase d'analyse des besoins du client
• Le non respect des spécifications ;
• Le non respect des délais.
• Ne répond pas aux besoins Idée : appliquer les méthodes classiques d'ingénierie au domaine du logiciel

9
Principes et problématique du génie logiciel.

Définition : Ensemble des méthodes, des techniques et des outils


dédiés à la conception, au développement et à la maintenance des
systèmes informatiques

Génie logiciel

Objectif : Avoir des procédures systématiques pour des logiciels de


grande taille afin que:
● la spécification corresponde aux besoins réels du client
● le logiciel respecte sa spécification
● les délais et les coûts alloués à la réalisation soient respectés

10
Principes et problématique du génie logiciel.

Ainsi, le génie logiciel touche au cycle de vie des logiciels :

• l’analyse du besoin, Génie logiciel


• l’élaboration des spécifications,
• la conceptualisation,
• le développement,
• La validation et la vérification
• La maintenance
Pour chaque activité : Utilisation et production de documents

11
Principes et problématique du génie logiciel.

12
Principes et problématique du génie logiciel.

l’analyse du besoin

Comprendre les besoins du client


Objectifs généraux, environnement du futur système,
ressources disponibles, contraintes de performance...

13
Principes et problématique du génie logiciel.

Spécification

● Établir une description claire de ce que doit faire le logiciel


(fonctionnalités détaillées, exigences de qualité, interface, architecture
générale, ...)
● Clarifier le cahier des charges (ambiguïtés, contradictions)

14
Principes et problématique du génie logiciel.

Conceptualisation

● Élaborer une solution concrète réalisant la spécification


● Description architecturale en composants (avec interface et fonctionnalités)
● Réalisation des fonctionnalités par les composants (algorithmes, organisation
des données)
● Réalisation des exigences non-fonctionnelles (performance, sécurité...)

15
Principes et problématique du génie logiciel.

Développement

● C’est la traduction dans un langage de programmation des


fonctionnalités définies lors de phases de conception.
● Choix de l'environnement de développement, du/des
langage(s) de programmation, de normes de développement...

16
Principes et problématique du génie logiciel.

Validation et vérification

● s’assurer que les besoins du client sont satisfaits (au niveau de la


spécification, du produit fini...)
● des tests pour s’assurer que le logiciel satisfait sa spécification

17
Principes et problématique du génie logiciel.

Maintenance

● Correction : identifier et corriger des erreurs trouvées après la


livraison
● Adaptation : adapter le logiciel aux changements dans

l'environnement (format des données, environnement


d'exécution...)
● Perfection : améliorer la performance, ajouter des

fonctionnalités, améliorer la maintenabilité du logiciel

18
Principes et problématique du génie logiciel.

Répartition des efforts

19
Principes et problématique du génie logiciel.

Répartition des efforts

Rapport effort / erreur /coût

20
Principes et problématique du génie logiciel.

Une démarche de développement logiciel repose sur :


• Un formalisme ( exemple : orientation objet )
• Une méthode ( Merise , SADT , FUSION , OMT , RUP / UML , … )
• Un processus et un cycle de vie

21
Principes et problématique du génie logiciel.

Choix du formalisme

Il existe deux paradigmes de programmation très populaires dans le développement


logiciel que les développeurs conçoivent et programment:

• La décomposition fonctionnelle (ou l’approche procédurale)


• L’approche objet (sur laquelle est basée UML)

22
Principes et problématique du génie logiciel.

Choix du formalisme LA DÉCOMPOSITION FONCTIONNELLE

Un programme est composé de plusieurs


procédures (ou fonctions) : Données
 qui effectuent un traitement sur des
données (procédure)
 qui retournent une valeur après leur Traitement 1
invocation (fonction)
Traitement 2
Certains langages ne distinguent pas
procédures et fonctions. Traitement 3
Exemples de langages procéduraux ou
fonctionnels : Fortran, Lisp, C, …

23
Principes et problématique du génie logiciel.

Choix du formalisme LA DÉCOMPOSITION FONCTIONNELLE

• Elle met en évidence les fonctions à assurer


• Propose une approche hiérarchique
descendante et modulaire.
• Pour réaliser une fonction du logiciel, on peut
utiliser un ensemble d'autres fonctions, déjà
disponibles (Exemple Enregistrer et
enregistrer sous)

24
Principes et problématique du génie logiciel.

Choix du formalisme LA DÉCOMPOSITION FONCTIONNELLE

On découpe une tâche complexe à effectuer en une hiérarchie d’actions à


réaliser de plus en plus simples, petites et précises:

1. ROULER EN VOITURE:
1. METTRE MOTEUR EN MARCHE:
1. METTRE CONTACT
2. DÉMARRER MOTEUR
2. DÉMARRER VOITURE:
1. METTRE POINT MORT
Pour décrire, on utilise le verbe.
2. PASSER LA PREMIÈRE
3. EMBRAYER EN ACCÉLÉRANT
3. ROULER:
1. ACCÉLÉRER
2. FREINER
3. PASSER VITESSE

25
Principes et problématique du génie logiciel.

Choix du formalisme LA DÉCOMPOSITION FONCTIONNELLE

Rouler en voiture

Mettre moteur en marche Démarrer Rouler

Démarrer moteur Point mort Passer la 1ere Embrayer


Mettre contact
en accélérant

Accélérer Freiner Passer


vitesse

26
Principes et problématique du génie logiciel.

Choix du formalisme LA DÉCOMPOSITION FONCTIONNELLE

Les fonctions sont interdépendantes : une simple mise à jour du logiciel à un point
donné, peut impacter en cascade d'autres fonctions.

27
Principes et problématique du génie logiciel.

Choix du formalisme LA DÉCOMPOSITION FONCTIONNELLE

L’approche fonctionnelle dissocie le problème de la représentation des données, du problème


du traitement de ces données.

28
Principes et problématique du génie logiciel.

Choix du formalisme LA DÉCOMPOSITION FONCTIONNELLE

Lorsque le logiciel évolue, il faut faire évoluer les


structures de données et les fonctions en
parallèle (probablement dans des modules
différents).

Maintenir cette cohérence est laborieuse parce que


données et fonctions sont dispersées.

La dispersion données/fonctions nuit à l’extensibilité et réutilisabilité!

29
Principes et problématique du génie logiciel.

Choix du formalisme L’APPROCHE ORIENTÉE OBJET

L’approche orientée objet considère le logiciel


D
comme une collection d’objets dissociés,
T
identifiés et possédant des caractéristiques.
D D

T T

D D
La fonctionnalité du logiciel émerge alors de
l’interaction entre les différents objets qui le T T

constituent.

30
Principes et problématique du génie logiciel.

Choix du formalisme L’APPROCHE ORIENTÉE OBJET


Un programme est composé de plusieurs objets
qui contiennent : D
 des données "internes" T
 des traitements manipulant ces données
internes ou d'autres données D
D

Les données d'un objet sont appelés ses T T

attributs et ses traitements sont ses méthodes


(ou opérations). D D

T T
Exemples de langages orientés-objet :
SmallTalk, C++, Java, …

31
Principes et problématique du génie logiciel.

Choix du formalisme L’APPROCHE ORIENTÉE OBJET


Regroupement des données et des traitements
en une entité autonome: l ’objet D

T
Protection des données (encapsulation)
Organisation hiérarchique (héritage)
D D

Facilité d’écriture et de mise au point T T


Réutilisabilité
Maintenabilité D D

T T

32
Principes et problématique du génie logiciel.

OBJET

Entité / chose liée au domaine d’application. Un objet peut représenter n’importe quelle
chose du domaine d’application que nous voulons clairement identifier.

L ’ état d ’ un objet est défini par un ensemble d ’ attributs (ou variables


d’instance) que contient l’objet.

Selon les langages, on parle de :


• attributs ou champs: UML
• données membres ou variables d’objets : C++, Java
• propriétés : VisualBasic

33
Principes et problématique du génie logiciel.

OBJET

Entité / chose liée au domaine d’application. Un objet peut représenter n’importe quelle
chose du domaine d’application que nous voulons clairement identifier.

L ’ état d ’ un objet est défini par un ensemble d ’ attributs (ou variables


d’instance) que contient l’objet.

Exemple : valeurs des attributs


Objet : hôpital ⇓
Attribut1 : nom : Hassan 2
Attribut2 : adresse : Quartier Charaf Agadir
Attribut3 : superficie: 10000 m2

34
Principes et problématique du génie logiciel.

OBJET

Entité / chose liée au domaine d’application. Un objet peut représenter n’importe quelle
chose du domaine d’application que nous voulons clairement identifier.

L ’ état d ’ un objet est défini par un ensemble d ’ attributs (ou variables


d’instance) que contient l’objet.

Autre exemple :
Objet : monCarré
longeurCôté : 10
Attributs positionX : 100
positionY : 200

35
Principes et problématique du génie logiciel.

OBJET

Entité / chose liée au domaine d’application. Un objet peut représenter n’importe quelle
chose du domaine d’application que nous voulons clairement identifier.

Le comportement d’un objet est défini par un ensemble d’opérations (fonctions


ou procédures) qui agissent sur les attributs de l’objet.
Selon les langages, on parle de

opération : langages d ’analyses, tels que UML (Unified Modeling Language)

méthodes ou fonctions membres : C++, Java, VisualBasic

Ces méthodes offrent les techniques de passages de paramètres et les


techniques de retour de valeur propres au langage

36
Principes et problématique du génie logiciel.

OBJET

Entité / chose liée au domaine d’application. Un objet peut représenter n’importe quelle
chose du domaine d’application que nous voulons clairement identifier.

Le comportement d’un objet est défini par un ensemble d’opérations (fonctions


ou procédures) qui agissent sur les attributs de l’objet.

Exemple : Autre exemple :


Objet : hôpital Objet : monCarré
Méthode1 : imprimerAdresse() modifierTaille()
Méthode2 : changerNom() déplacer()
Méthodes dessiner()
calculerAire()

37
Principes et problématique du génie logiciel.

Exemple: Gestion d'une bibliothèque

Germinal
E. Zola
Le Monde Alice Dupont Anne Durand
Directrice Lectrice

Arsène Deschamps
Le seigneur des anneaux Michel Martin Lecteur
J.R.R.Tolkien Bibliothécaire

38
Principes et problématique du génie logiciel.

LA CLASSE

Des objets similaires peuvent être informatiquement décrits par une même abstraction
: une classe
 même structure de données et méthodes de traitement
 valeurs différentes pour chaque objet
Classe Lecteur
Classe Livre Classe Employé -nom, prénom
-titre, auteur Classe Journal -nom, prénom, statut
-titre

Germinal
E. Zola
Le Monde Alice Dupont Anne Durand
Directrice Lectrice

Michel Martin
Le seigneur des anneaux
J.R.R.Tolkien 39
Bibliothécaire Arsène Deschamps
Lecteur
Principes et problématique du génie logiciel.

LA CLASSE

Une classe est un type de données abstrait qui précise des caractéristiques (attributs et
méthodes) communes à toute une famille d’objets et qui permet de créer (instancier) des
objets possédant ces caractéristiques.

Classe Lecteur
Classe Livre Classe Employé -nom, prénom
-titre, auteur Classe Journal -nom, prénom, statut
-titre

Germinal
E. Zola
Le Monde Alice Dupont
Directrice

40
Principes et problématique du génie logiciel.
Objets
Classe
LA CLASSE
monCarre
Nom de la classe Carré Instanciation
10
100
longeurCôté
positionX 200
Attributs
positionY

modifierTaille() autreCarre
calculerAire() Instanciation 20
Méthodes déplacer()
dessiner()
100
50

41
Principes et problématique du génie logiciel.

L’ABSTRACTION

Le principe de l’abstraction se traduit par l’extraction des concepts généraux sur lesquels
raisonner, puis instancier les solutions sur les cas particuliers

Exemple : dans l’objet monCarré, nous n’avons pas défini un attribut appelé couleur.

Doit-on en conclure que notre abstraction de l’objet monCarré est incomplète ou pas
bonne ?

42
Principes et problématique du génie logiciel.

L’ABSTRACTION

Le principe de l’abstraction se traduit par la définition d’attributs spécifiques (et de méthodes


qui opèrent sur eux).

Exemple : dans l’objet monCarré, nous n’avons pas défini un attribut appelé couleur.

Doit-on en conclure que notre abstraction de l’objet monCarré est incomplète ou pas
bonne ?
Pas nécessairement

Cela dépend de la nature de l’application pour laquelle nous avons besoin de l’objet monCarré
et du niveau d’abstraction exigé.

43
De la programmation structurée à l’approche orientée objet

 Approche procédurale :
"Que doit faire mon programme ?"
 Approche orientée-objet :
"De quoi doit être composé mon programme ?"
 Cette composition est conséquence d'un choix de modélisation
fait pendant la conception

44
Principes et problématique du génie logiciel.

Une démarche de développement logiciel repose sur :


• Un formalisme ( exemple : orientation objet )
• Une méthode ( Merise , SADT , FUSION , OMT , RUP / UML , … )
• Un processus et un cycle de vie

45
Pour programmer une application, il ne convient pas de se
lancer tête baissée dans l’écriture du code : il faut d’abord
organiser ses idées, les documenter, puis organiser la
réalisation en définissant les modules et étapes de la
réalisation. C’est cette démarche antérieure à l’écriture que
l’on appelle modélisation ; son produit est un modèle.

En génie logiciel :
• Modélisation = spécification + conception
• Aider la réalisation d'un logiciel à partir des besoins du client

46
Principes et problématique du génie logiciel.
Choix d’une méthodologie

47
Principes et problématique du génie logiciel.
Choix d’une méthodologie

48
Principes et problématique du génie logiciel.
Choix d’une méthodologie

49
Principes et problématique du génie logiciel.
Choix d’une méthodologie

50
Principes et problématique du génie logiciel.

Une démarche de développement logiciel repose sur :


• Un formalisme ( exemple : orientation objet )
• Une méthode ( Merise , SADT , FUSION , OMT , RUP / UML , … )
• Un processus et un cycle de vie

51
Principes et problématique du génie logiciel.
Choix d’un processus
Processus ou cycle de vie

Un processus de développement représente un ensemble d’étapes ou activités


successives permettant la production d’un système logiciel dans les délais ( et
le budget ) fixés par le client et répondant aux besoins des utilisateurs .

52
Principes et problématique du génie logiciel.
Choix d’un processus
• Un procédé logiciel (software process) est un ensemble d’activités conduisant à la
production d’un logiciel.
• Ils sont aussi appelés cycle de vie d’un logiciel (SDLC)
• Un procédé définit les étapes qui le composent ainsi que leur enchaînement
• Les Cycles de vie de logiciels sont complexes et dépendent fortement des acteurs qui
dirigent les activités
• Les activités des procédés ne peuvent être automatisées mais il y a des outils de support,
appelés outils CASE (Computer-Aided Software Engineering)

53
Principes et problématique du génie logiciel.
Choix d’un processus

Procédé logiciel ou cycle de vie, pourquoi?

• Pour maîtriser les gros projets


• Pour découper le projet et affecter correctement les tâches
• Pour anticiper et gérer les risques

54
Principes et problématique du génie logiciel.
Choix d’un processus
• Il existe deux types de méthodes:

Méthodes
classique

Méthodes
agiles

55
Principes et problématique du génie logiciel.
Choix d’un processus
• Il existe deux types de méthodes:

Méthodes
• Aucun modèle n’est meilleur que l’autre
classique
• Le choix se fait selon certains critères tels que
Quelle
la nature du projet, sa taille, la nature du client
méthode
et les compétences de l’équipe
choisir?
Méthodes
agiles

56
Principes et problématique du génie logiciel.
Choix d’un processus

Modèle en cascade

57
Principes et problématique du génie logiciel.
Choix d’un processus

Modèle en V

58
Principes et problématique du génie logiciel.
Choix d’un processus

Modèle en Y

59
Pour programmer une application, il ne convient pas de se
lancer tête baissée dans l’écriture du code : il faut d’abord
organiser ses idées, les documenter, puis organiser la
réalisation en définissant les modules et étapes de la
réalisation. C’est cette démarche antérieure à l’écriture que
l’on appelle modélisation ; son produit est un modèle.

En génie logiciel :
• Modélisation = spécification + conception
• Aider la réalisation d'un logiciel à partir des besoins du client

60
UML: Unified Modeling language

Langage :
● Syntaxe et règles d'écriture
● Notations graphiques normalisées

… de modélisation :
● Abstraction du fonctionnement et de la structure du système
● Spécification et conception

… unifié :
● Fusion de plusieurs notations antérieures : Booch, OMT, OOSE
● Standard défini par l'OMG (Object Management Group)
● Dernière version : UML 2.5.1 (7/ 2017)

En résumé : Langage graphique pour visualiser, spécifier, construire et documenter un logiciel

61
Juin 1999 UML 1.3

Janvier 1997 UML 1.0

UML 0.9

Octobre 1995 Méthode unifiée 0.8

Booch’93 OMT-2

Autres méthodes Booch’91 OMT-1 OOSE Partenaires


UML: Unified Modeling language

MODÉLISATION GRAPHIQUE:

63
UML: Unified Modeling language

64
Diagramme UML

UML: Unified Modeling language

Classe Objet Use case Etats-transitions Séquence Collaboration Activité Composant Deploiement

Modèles statiques Modèle d'usage Modèles dynamiques Modèles architecturaux

65
DEMARCHE GENERALE

La démarche proposée est parfois appelée "Approche dirigée par les cas". Elle consiste en:

Vue des cas d'utilisation


1. Identification des acteurs qui agissent sur le système à étudier
2. Définition et description des cas d'utilisations qui montreront les interactions entre les acteurs actifs externes et le
système vu comme une boîte noire,
3. Construction de diagrammes de collaboration entre les acteurs et le système afin de visualiser les échanges
d'information,
4. Pour chaque cas d'utilisation seront décrits les principaux scénarios qui visualisent la chronologie des échanges
entre les acteurs et le système,
Vue logique
5. A chaque scénario sera associé un diagramme de séquence qui mettra en avant l'aspect temporel des
interactions entre les objets de l'application qui participent au scénario,
6. En parallèle avec les diagrammes précédent, seront construits les diagrammes de classes qui visualisent
l'architecture du logiciel, la hiérarchie et les associations entre classes

66
Acteur
s
1
Cas d'utilisation Diagrammes de
2 collaboration
3

Scénarios
4 Démarche dirigée
par les cas

Diagrammes de Diagrammes de séquence


classes 5
6
Une autre démarche est possible, c'est "L'approche dirigée par les classes" où sont d'abord identifiées les classes de
l'application puis les cas d'utilisation

67
UML: Unified Modeling language

UML est une notation, pas une méthode


UML est un outil indépendant de la méthode
UML est un langage de modélisation objet : il convient à toutes
les méthodes objets et convient à tous les langages objets (
C++ , Java , Eiffel , VB , etc… )

68
Principes et problématique du génie logiciel.

Principes de base

● Décomposition en sous-problèmes : traiter chaque aspect séparément,


chaque sous-problème plus simple que problème global

• Modularité : partition du logiciel en modules interagissant, remplissant une


fonction et ayant une interface cachant l'implantation aux autres modules

69
Principes et problématique du génie logiciel.

Principes de base
● Couplage: « Une entité (fonction, module, classe, package, composant) est couplée à une autre si
elle dépend d’elle. »

● Couplage faible: « Désigne une relation faible entre plusieurs entités (classes, composants),
permettant une grande souplesse de programmation, de mise à jour.

Ainsi, chaque entité peut être modifiée en limitant l ’ impact du changement au reste de
l’application. »

● Le couplage fort: « Au contraire, tisse un lien puissant qui rend l’application plus rigide à
toute modification de code. »


70
Principes et problématique du génie logiciel.

Couplage fort

71
Principes et problématique du génie logiciel.

Couplage faible

72
Principes et problématique du génie logiciel.

Couplage

Mesure de l’interdépendance relative entre modules.

« Le couplage entre modules doit être maintenu au strict nécessaire ».

73
Principes et problématique du génie logiciel.

Cohésion
En général, il y a cohésion procédurale lorsque des procédures (ou fonctions) sont

ensemble dans un même module parce qu’on veut qu’elles interviennent dans un
ordre précis par rapport à un produit et/ou l ’ accomplissement d ’ un travail. Ces
fonctions n’ont pas nécessairement de relations entre elles. Toutefois, si on modifie
l’ordre, le module peut devenir dysfonctionnel.

Exemple :
lire_chaine_caractere() lire_notes()
valider_chaine_caractere() calculer_Moyenne()
afficher_chaine_caractere() Afficher_Moyenne()

74
Principes et problématique du génie logiciel.


Dans une bonne décomposition modulaire, la
cohésion doit être la plus élevée possible et le
couplage le plus faible possible.

75
De la programmation structurée à l’approche orientée objet

LA DÉCOMPOSITION FONCTIONNELLE

? Comment évaluer la découpe fonctionnelle descendante et la


programmation procédurale en termes de modularité, de couplage
et de cohésion?

76
De la programmation structurée à l’approche orientée objet

LA DÉCOMPOSITION FONCTIONNELLE

Séparer données et fonctions sur ces données entraîne:

Un fort couplage par les données,


Une Perte de cohésion (par dispersion).

Le code est donc peu extensible et peu réutilisable!

77
De la programmation structurée à l’approche orientée objet

L’APPROCHE ORIENTÉE OBJET

L’approche orientée objet considère le logiciel comme une


collection d’objets dissociés, identifiés et possédant des
caractéristiques.

78
Les concepts objet

L’ENCAPSULATION

L’encapsulation consiste à masquer les détails d’implémentation d’un objet, en définissant


une interface. L’interface est la vue externe d’un objet, elle définit les services accessibles
(offerts) aux utilisateurs de l’objet.

Mais vu de l ’extérieur, c ’est à dire par les autres objets,


un objet n’est connu que par son interface
C ’est une boîte noire.

L’encapsulation garantit l’intégrité des données, car elle permet


d’interdire, ou de restreindre, l’accès direct aux attributs des objets.

79
Les concepts objet

L’ENCAPSULATION

L'encapsulation permet de définir des niveaux de visibilité des éléments de la classe. Ces
niveaux de visibilité définissent les droits d'accès aux données selon que l'on y accède par une
méthode de la classe elle-même, d'une classe héritière, ou bien d'une classe quelconque. Il
existe trois niveaux de visibilité:

•publique: les fonctions de toutes les classes peuvent accéder aux données ou aux méthodes
d'une classe définie avec le niveau de visibilité public. Il s'agit du plus bas niveau de protection
des données
•protégée: l'accès aux données est réservé aux fonctions des classes héritières, c'est-à-dire
par les fonctions membres de la classe ainsi que des classes dérivées
•privée: l'accès aux données est limité aux méthodes de la classe elle-même. Il s'agit du niveau
de protection des données le plus élevé.

80
Les concepts objet

L’HÉRITAGE

On parle d’héritage lorsque l’on a affaire à des objets et des classes et de généralisation /
spécialisation uniquement pour des classes.

On distingue deux types d’héritage :

· l’héritage simple
· l’héritage multiple

On va factoriser les attributs et les méthodes communs à plusieurs classes dans une classe
principale : on parle de généralisation. Les classes dérivées deviennent des sous-classes : on parle
de spécialisation.

81
Les concepts objet

L’HÉRITAGE

Personne
CompteBancaire
Nom
Prénom Montant
Adresse
Age
Généralisation CompteChèque CompteEpargne
ChangerNom
ChangerAdresse Intérêts
ChangerAge
ChèquierEmis

Débiter(1) Débiter(2)

Professeur Etudiant

Statut Filière
Matière
ChangerFilière
ChangerStatut Spécialisation CompteChèqueRémunéré
ChangerMatière

82
Les concepts objet

L’HÉRITAGE

Intérêts de l’héritage :
• L’héritage permet la réutilisation du code. En effet lorsque l’on va instancier une classe
spécialisée, le code des attributs et des méthodes de la classe héritée ne seront pas
implémentés à nouveau.
• L’autre avantage de l’héritage et qu’il permet l’organisation hiérarchique des classes. C’est
à dire qu’il rend plus aisé l’exploration et la maintenance d’une bibliothèque de classe pour
une équipe de développement.

83
Les concepts objet

LE POLYMORPHISME

Le polymorphisme est la possibilité pour un même message de déclencher des


traitements différents, suivant les objets auxquels il est adressé. Le mécanisme
de polymorphisme permet donc de donner le même nom à des traitements
différents.
Voiture

n° immatriculation

Porsche 911 Renault 21

AccélérerAFond AccélérerAFond

84
Les concepts objet

LE POLYMORPHISME

Intérêt du polymorphisme : Le polymorphisme permet de donner le même


nom à des traitements différents ou encore, permet le choix dynamique d’un
traitement en fonction de l’objet auquel il est appliqué (en effet le choix de la
méthode polymorphe à exécuter est déterminé à l’exécution du programme.
C’est pour cela qu’on dit qu’elle est dynamique, par opposé à statique qui est
déterminé lors de la compilation).

85
Les concepts objet

LA 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 .

86
Les concepts objet

LA 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 .

87

Vous aimerez peut-être aussi