Estudos
Explicação
Neste programa a definição das classes filho CLS_MEDICO e CLS_ADVOGADO que herdam o atributo NOME da classe pai CLS_PESSOA e utilizam o método PROFISSÃO() que existe nas três classes. Assim sendo, são definidos os objetos: PROFISSIONAL (instanciado a partir da classe cls_pessoa como sendo um objeto de ligação, por meio do sinalizador (&) entre esse objeto e os demais, no sentido de garantir que o método PROFISSÃO() retorne para o objeto PROFISSIONAL uma das ações definidas como retorno do efeito da ação polimórfico universal paramétrico), PROFIS1 (instanciado a partir da classe cls_advogado), PROFIS2 (instanciado a partir da classe cls_médico) e PROFIS3 (instanciado a partir da classe cls_pessoa). Cada um dos objetos definidos possui os métodos PEGNOME() e PROFISSÃO(). O método PROFISSÃO() de cada classe tem uma mensagem diferente de retorno para cada uma das classes filhos definidas. Para cada objeto instanciado a partir de uma das classes filho, o método PROFISSÃO() retorna um valor diferente para o objeto PROFISSIONAL, dependendo da atribuição estabelecida nos demais objetos.
O vínculo de efeito de polimorfismo universal paramétrico ocorre com o uso do sinalizador (&) do objeto a ser parametrizado e seu vínculo com os objetos atribuídos e precedidos do símbolo &, que são os objetos fornecedores de recursos. Neste contexto, a funcionalidade definida para cada objeto: PROFIS1, PROFIS2 e PROFIS3 no método PROFISSÃO() é transferida para o objeto PROFISSIONAL, que pode assim assumir uma das formas de operação estabelecidas nos objetos PROFIS1, PROFIS2 e PROFIS3, daí ser o objeto PROFISSIONAL polimórfico, pois pode assumir a funcionalidade de cada um dos métodos PROFISSÃO() a partir da atribuição dos recursos dos objetos PROFIS1, PROFIS2 e PROFIS3. Esse efeito é produzido pelas linhas de código:
PROFISSIONAL ← &PROFIS1;