// Dinamica.pwl
object Persona
attribute + nombre = "juan";
attribute + salario = 18000;
method + toString()
{
return nombre.concat( "\n" );
}
method + ponSalario(s)
{
salario = s;
return;
}
endObject
object Empleado : Persona
method + toString()
{
return nombre.concat( " (empleado)\n" );
}
endObject
object Directivo : Persona
method + toString()
{
return nombre.concat( " (directivo)\n" );
}
endObject
object EmpleadoEmpresa : Empleado( salario < 20000 ),
Directivo( salario >= 20000)
method + toString()
{
return super();
}
endObject
object Dinamica : ConsoleApplication
method + doIt()
{
reference miEmplEmpt = EmpleadoEmpresa.copy("");
System.console.write("\nEjemplo Dinámica\n");
System.console.write( miEmplEmpt.toString() );
System.console.lf();
miEmplEmpt.ponSalario( 30000 );
System.console.write( miEmplEmpt.toString() );
System.console.lf();
return;
}
endObject
---
Con la siguiente salida:
Ejemplo Dinámica
juan (empleado)
juan (directivo)
Exceptuando a Cecil, que tiene algo parecido, creo que no existe nada igual, además Cecil a) es un lenguaje declarativo y b) es para clases.
No hay comentarios:
Publicar un comentario