Travailler avec Inheritance – un gain de temps et de santé mentale !
Avez-vous déjà modélisé plusieurs entités et réalisé qu'elles étaient très similaires, avec de nombreux attributs partagés ? L'utilisation de l'héritage peut vous faire gagner du temps et rendre votre projet plus maintenable ! Dans cet article, je vais vous montrer ce qu'est l'héritage et comment l'utiliser le plus efficacement possible.
Compréhension de base
Commençons par le modèle de domaine nouvellement créé, présenté ci-dessous. Comme vous pouvez le constater, de nombreux attributs sont partagés entre les entités :

Ici, je duplique trois attributs : Nom, Année et Nombre de passagers. Étant donné que ces trois attributs sont communs aux entités Voiture et Bateau, je peux les déplacer vers une nouvelle entité, que j'appellerai Véhicule. J'utiliserai cette nouvelle entité comme entité « généralisée ». Une fois l'entité Véhicule créée, il est facile de définir la généralisation en ouvrant les entités Voiture et Bateau et en sélectionnant Véhicule comme généralisation.

Maintenant que j'ai défini cette relation, mes entités Voiture et Bateau (les entités « spécialisées ») ont accès à tous les attributs du Véhicule ! Cela me permet de définir le Nom de ma Voiture et de mon Bateau et de le gérer à un seul endroit. Mais il est important de noter que cela ne signifie pas que mon Véhicule a accès aux attributs de mon Bateau et de ma Voiture. C'est une relation à sens unique.
Créer des entités spécialisées
Dans la section précédente, j'ai défini le modèle de domaine, en créant l'entité Véhicule et en définissant la relation d'héritage. Maintenant, je dois autoriser la création des entités. Il existe deux manières courantes de procéder :
- Créez un bouton pour chaque spécialisation de véhicule
- Créer un bouton pour le véhicule où je spécifie la spécialisation
La première option est la plus simple à mettre en œuvre, mais n'offre pas la meilleure expérience utilisateur. Voici l'interface utilisateur pour cette implémentation :

Chacun de ces boutons appelle un Microflow très similaire qui crée l’objet spécialisé – soit un véhicule, une voiture ou un bateau (notez que je peux toujours créer des véhicules qui ne sont pas des voitures ou des bateaux – comme une moto).
Cette méthode est très simple, mais elle comporte de nombreux microflux et boutons redondants. Imaginez que vous ayez dix spécialisations et donc dix boutons appelant dix microflux différents. Cela créerait une page confuse et encombrée.
C’est là que l’option deux devient intéressante !

Avec un seul bouton, cette page est beaucoup plus agréable. Ce bouton crée l'entité Véhicule généralisée, et à partir de cette page, je peux sélectionner la spécialisation que je souhaite créer.

Lorsque le type de véhicule est sélectionné, cliquez sur « Suivant » et créez l’entité spécialisée.
À partir de là, il est facile de créer l'entité spécialisée appropriée et de copier tous les détails pertinents. Mais assurez-vous de supprimer l'entité généralisée (Véhicule) afin de ne pas créer de données en double ou sales. Maintenant que j'ai créé mes entités, j'ai besoin d'un moyen d'afficher et de gérer mes véhicules.
Affichage et gestion
Une façon simple d'afficher et de gérer une liste de véhicules consiste à utiliser une vue de liste. Cela est particulièrement utile lorsque vous utilisez l'héritage, car vous pouvez définir un modèle différent pour chaque spécialisation.

L'utilisation de modèles me permet d'afficher des informations spécifiques à un bateau ou à une voiture en un seul endroit, plutôt que de devoir créer une page complexe. Cela vous permet également de vous spécialiser pour certains types et pas pour d'autres. Le « modèle par défaut » sera utilisé par toutes les spécialisations qui n'ont pas de modèle spécifique créé.
Maintenant que je peux visualiser ces éléments, je vais créer des boutons Modifier et Supprimer. Ce faisant, je dois également tenir compte de l'héritage et optimiser la réutilisabilité. Puisqu'un bateau est aussi un véhicule, mes boutons Modifier et Supprimer pour le bateau peuvent avoir un paramètre Bateau ou Véhicule ; seul le paramètre Véhicule permet la réutilisation sur les trois entités. Lors de l'édition, je devrai utiliser une séparation d'héritage.
Le diamant vert représente mon partage d'héritage. Après avoir effectué mon partage, je dois convertir mon véhicule en entité spécialisée, le cas échéant. Une fois cela fait, je peux commencer à utiliser l'entité comme sa version spécialisée. Pour la suppression, je n'ai pas besoin de faire un partage d'héritage. Étant donné que je supprime l'entité, la version spécialisée n'est pas pertinente : peu importe que je supprime un bateau ou une voiture, je la supprime simplement.
C'est une bonne leçon à apprendre, et elle peut être difficile à comprendre. À moins que je doive utiliser la version spécialisée (c'est-à-dire modifier des champs sur l'entité spécialisée ou afficher une page qui l'exige), je n'ai pas besoin d'effectuer un spit d'héritage.
Les grilles de données et les grilles de modèles prennent en charge nativement la fonctionnalité d'édition ci-dessus. De la même manière que nous avons configuré les modèles dans la vue Liste, nous pouvons sélectionner des pages pour les spécialisations à l'aide du bouton « Modifier » par défaut.

En plus des compromis habituels des grilles de données, des grilles de modèles et des vues de liste, je dois désormais faire des compromis spécifiques à l'héritage. La vue de liste permet d'afficher des données spécifiques, mais je dois gérer davantage de logique. Pour les grilles de données et les grilles de modèles, la plateforme gère une partie de ma logique, mais je ne peux afficher que les informations stockées sur l'entité générique.
Maintenant que j'ai expliqué comment créer et gérer des entités à l'aide de spécialisations, allez-y et essayez ! N'oubliez pas que l'utilisation de l'héritage a ses avantages et ses inconvénients, alors assurez-vous de les peser avant de l'utiliser. Quelques règles générales :
- N'utilisez jamais plus de deux couches d'héritage, car cela peut entraîner des problèmes de performances.
- N’utilisez l’héritage que dans un endroit logique – je peux avoir un bâtiment, une voiture et une personne, qui ont tous un champ Nom, Âge et Adresse, mais cela peut devenir déroutant s’ils sont intégrés dans une entité généralisée !