Qualificação de modelo de GDL
Um modelo e todos os modelos derivados direta ou indiretamente desse modelo formam uma árvore de herança ou subárvore. No entanto, modelos derivados que redefiniram *Construções de nome são excluídos dessa árvore.
Quando um modelo é nomeado em uma lista de *Membros, o analisador GDL considera o modelo nomeado e todos os modelos derivados do modelo nomeado como um candidato à associação. Se houver mais de um modelo nessa árvore de herança que se qualifique, o analisador selecionará o modelo que mais se ajusta aos critérios a serem associados à entrada de dados. Para se qualificar como o modelo que representará uma determinada entrada de dados, o modelo deve atender aos seguintes critérios:
Um modelo declarado como *Virtual é desqualificado automaticamente. No entanto, todos os modelos derivados são considerados.
O constructo *Name do modelo deve corresponder à palavra-chave da entrada de dados. Observe que *Name pode ser herdado.
Se a entrada de dados for um constructo, um elemento na lista *Instâncias do modelo deverá corresponder ao nome da instância do constructo de dados. Além disso, cada modelo base do qual o modelo qualificado herda também deve atender a esse requisito. Nem todos os modelos em uma cadeia de herança são necessários para ter uma entrada *Instâncias; aqueles que não têm essa entrada são considerados que atenderam a esse requisito por padrão.
Se mais de um modelo em uma árvore de herança for qualificado, os seguintes critérios adicionais serão considerados:
- Se um modelo se qualificar fazendo com que cada modelo em sua cadeia de herança atenda ao requisito de nome de instância por padrão ou usando o caractere curinga <ANY> e se outro modelo qualificado tiver um ou mais modelos em sua cadeia de herança atender ao requisito de nome da instância com uma correspondência explícita, o modelo que usa a correspondência explícita será usado.
- Dos modelos de qualificação restantes, o modelo mais derivado será usado.
- Dos modelos de qualificação restantes, o modelo definido mais recentemente será usado.