UP | HOME

Méthodes pour factoriser du code - Héritage et agrégation avec délégation - Exemple des entiers naturels

Les exercices qui suivent concernent une architecture en couches et passent en revue différentes méthodes de factorisation du code pour de telles architectures :

Lors du TP1, il a été possible de réutiliser du code dans deux contextes différents :

La possibilité d'une réutilisation doit se comprendre dans le cadre de la discipline suivie, qui requiert de stratifier une classe d'implémentation en plusieurs couches avec les dépendances locales suivantes en simplifiant légèrement :

medias/modTyp16_classeImplem-couches.svg

Couches d'une classe d'implémentation

Ainsi dans le premier cas, où seul l'état variait, seules les couches en contact devaient être modifiées. Dans le second cas, où seules les implémentations des services variaient, il était possible de conserver les couches inférieures, les attributs et les accesseurs (ainsi que des fabriques).

Cependant, la recopie textuelle (le "copier-coller") n'est pas une bonne pratique en programmation. Imaginons qu'on veuille faire évoluer le code copié, pour l'améliorer ou le corriger : dans ce cas, toutes les copies doivent être mises à jour, ce qui suppose qu'on en conserve un référencement exhaustif. Plutôt que de recopier, on préfère factoriser : le facteur commun est alors partagé. Nous allons étudier les méthodes de factorisation, fondées sur l'héritage et l'agrégation avec délégation.

Calcul
Via des int Récursif
Etat Int positif int / int int / récursion
Inductif
inductif / int inductif / récursion

Les quatre combinaisons possibles

Table of Contents

Héritage - Approche ascendante ("bottom-up")

Analyser dans le TP1 l'utilisation de l'héritage.

medias/modTyp16_tp1_architecture.png

Approche ascendante - Factorisation de l'état, des accesseurs et de certaines fabriques

Héritage - Approche descendante

Factoriser les services algébriques dans une classe abstraite AlgebreNatParInt.

medias/modTyp16_tp1_varia_topDown.png

Approche descendante - Factorisation de la couche haute

Héritage multiple (Java 8 seulement)

Factoriser la couche haute et la couche basse, en utilisant l'héritage multiple. Réaliser les quatre implémentations possibles.

medias/modTyp16_tp1_varia_multiInheritance.png

Héritage multiple - Factorisation des deux couches

Agrégation avec délégation

Factoriser la couche haute et la couche basse, en utilisant lagrégation avec délégation. Réaliser les quatre implémentations possibles.

medias/modTyp16_tp1_varia_aggregationDelegation.png

Agrégation avec délégation - Factorisation des deux couches

Last Updated 2015-10-07T15:46+0200. Comments or questions: Send a mail.