/*
   Ejemplo de utilización de herencia dinámica
  
   jbgarcia@uvigo.es
  */



  object Empleado
    attribute + nombre = "Juan nadie" ;
    attribute + salario = 18000 ;

    method + toString ( )
    {      
      return nombre ;
    }    

    method + ponSalario ( s )
    {      
      salario = s ;
      return ;
    }    
  endObject

  object Directivo : Empleado
    method + toString ( )
    {      
      reference toret = super ( ) ;

      return toret.concat ( " (directivo)" ) ;
    }    
  endObject

  object EmpleadoAuxiliar : Empleado
    method + toString ( )
    {      
      reference toret = super ( ) ;

      return toret.concat ( " (empleado)" ) ;
    }    
  endObject

  object EmpleadoEmpresa : EmpleadoAuxiliar ( salario < 20000 ),
                           Directivo ( salario >= 20000 )
    method + toString ( )
    {      
      return super ( ) ;
    }    
  endObject

  object AppDinamica : ConsoleApplication
    method + doIt ( )
    {      
      reference empl = EmpleadoEmpresa.copy ( "" ) ;

      System.console.write ( empl ) ;
      System.console.lf ( ) ;

      empl.ponSalario ( 40000 ) ;

      System.console.write ( empl ) ;
      System.console.lf ( ) ;

      return ;
    }    
  endObject