jueves, 21 de mayo de 2009

Proceso de Selección - Parte II

Siguiendo con el proceso de selección, la segunda pregunta que he hecho a los candidatos como parte del proceso de entrevista es la siguiente.

Considerando la siguiente jerarquía de excepciones qué excepciones son válidas para completar la declaración del método foo() en la clase B (donde está la X).


  class A {
  :
  public foo(...) throws D {
    :
  }
  :
}

class B extends A {
  :
  public foo(...) throws X {
    :
  }
  :
}

En términos generales, esta pregunta intenta evaluar los conceptos básicos de herencia en la Programación Orientada a Objetos. Muchos de los candidatos se sienten intimidados e intentan responder (pocas veces exitósamente) aunque no tengan claro el concepto.

Para poder responder la pregunta, lo primero que hay que tener claro es la herencia. Mirando la declaración de excepciones se puede concluir que:

  • D es una excepción de tipo C
  • E es una excepción de tipo D y de tipo C

El concepto importante acá (en relación a la herencia) es que no necesariamente esto se pude intepretar al revés, es decir, que C es una excepción de tipo E. Una manera simple de ver esto es, por ejemplo, en la siguiente herencia:

Lo que se puede concluir inmediatamente es que:

  • Un perro es un animal
  • Un labrador es un perro

Sin embargo, no necesariamente aplica en el sentido inverso, por ejemplo, un perro no necesariamente es un labrador.

Tomando en cuenta todos estos elementos, las excepciones válidas para ser declaradas en X son D y E. Básicamente, D porque es equivalente en términos de la firma al método de la clase base y E porque es una excepción de tipo D también. Esto es lo que se conoce como Especialización.

1 comentario:

zongo dijo...

Deberías ver que pasa con las sicólogas donde trabajas, porque si tienes que hacer ese test a una persona que está postulando a un laburo, el proceso previo de filtro no está muy bueno.