Les templates sont définis par rapport à une métaclasse donnée et sont hérités par et disponibles pour les enfants de cette métaclasse. Dans l'exemple suivant, le template de définition spécifié sur la métaclasse parent est utilisé dans l'évaluation du template de contenu sur la métaclasse enfant.
GTL prend en charge les concepts orientés objet suivants comme faisant partie de l'héritage :
Polymorphisme - Les templates sont liés de façon dynamique. En d'autres termes, le choix du template à évaluer est effectué au moment de la conversion. Le polymorphisme permet au code de template défini sur un classificateur d'utiliser des templates définis sur ses enfants (classe, interface), le template utilisé n'a pas à être défini sur la métaclasse parent. Combinée avec les héritages, cette fonctionnalité permet de partager le code de template.
Dans l'exemple suivant, le contenu de %definition% dépend de la nature de l'objet traité (classe ou interface) :
Redéfinition de template - Un template défini par rapport à une métaclasse peut être redéfini sur une classe enfant. Le template défini sur l'enfant remplace le template définir sur le parent pour les objets de métaclasses enfant. Vous pouvez visualiser le parent rédéfini en utilisant la commande Afficher la super-définition dans le menu contextuel de la classe enfant, et spécifier l'utilisation du template parent en utilisant l'opérateur qualifiant "::". Par exemple :
Le même nom de template "isAbstract" est utilisé dans deux catégories différentes : Classifier et Class. "false" est la valeur d'origine qui a été redéfinie par la nouvelle valeur "true". Vous pouvez récupérer la valeur d'origine en utilisant la syntaxe suivante : <metaclassName::template>, dans ce cas :
%isAbstract% %Classifier::isAbstract%
Surcharge de template - Vous pouvez avoir plusieurs définitions du même template qui s'appliquent à différentes conditions. Les templates peuvent également être définis sous les critères et stéréotypes (voir Critères (Profile) et Stéréotypes (Profile)), et les conditions correspondantes sont combinées. Lors de la conversion, chaque condition est évaluée et le template approprié (ou, en l'absence de correspondance, le template par défaut) est appliqué. Par exemple: