Fork me on GitHub

Comment Simplifier Un Modele Objet

ScreenShot016

Voici un tutoriel expliquant comment simplifier un modèle objet devenu trop complexe ou lourd à gérer. Une méthode basique est appliquée, autour d’un objet classique : la personne et ses informations.

Méthode

  1. Utiliser un modèle brut
    1. Remettre à plat le modèle
    2. Réaliser un exemple de données
  2. Gérer les relations uniques (1-1)
    1. Identifier
    2. Rapatrier ces données dans l’objet principale
  3. Gérer les relations multiples (1-N)
    1. Identifier
    2. Sortir ces données
  4. Utiliser des abstractions
  5. Gérer les excès de modélisation
    1. Supprimer les abstractions inutiles
    2. Limiter le nombre de niveaux de relation

Exemple : la personne

ScreenShot003

1. Modèle de base

Remettre à plat le modèle, sans abstractions, avec 1 seul niveau de relation.

ScreenShot001

Réaliser un exemple de données pour comprendre les relations dans le modèle.

ScreenShot002

2. Gérer les relations uniques (1-1)

Nom, prénom et date de naissance : identifiant unique d’une personne physique.

ScreenShot004

Rapatrier ces données dans l’objet principal

ScreenShot005

3. Gérer les relations multiples (1-N)

Sortir ces données de l’objet principal. Pour Facebook et Twitter : techniquement, il est possible d’avoir plusieurs comptes.

ScreenShot006

4. Utiliser des abstractions

Chercher à faire des regroupements, Rester généraliste.

ScreenShot012

5. Gérer les excès de modélisation

Supprimer les abstractions inutiles (les erreurs permettent d’avancer).

ScreenShot009

Exemple :

  • « Web » n’apporte pas de valeur
  • Seul les sites principaux nous intéressent (retour à une relation 1-1)
  • Facebook et Twitter ne seront pas utilisés comme contacts

ScreenShot010

Limiter le nombre de niveaux de relation.

ScreenShot011

Exemple : les sous-types « pro » et « perso » n’ont pas de particularité -> ils migrent vers un niveau plus haut

ScreenShot014

Exemple de modèle finalisé

ScreenShot015

Hi, I'm Damien

Software Developer

LinkedIn GitHub Twitter

Founder of this blog, love Java and Open Source stuff. Follow him on Twitter.