Explicación de la Semana 2 - "Cuestionario"

Seguimos, la última parte: explicar las respuestas que se esperaban del cuestionario propuesto como parte del desafío de la Semana 2.

Letra del cuestionario

Contestar el siguiente cuestionario (en caso afirmativo indicar claramente en que parte del fuente, en caso negativo, justificarlo de forma detallada)
  1. ¿En qué parte del sistema se realiza "herencia"?
  2. ¿En alguna parte del sistema se usa "polimorfismo"?
  3. ¿Si tuviera que agregar otro tipo de usuario, como un Administrador, qué haría?
  4. Obtenga un ejemplo de "encapsulamiento" y explíquelo detalladamente.
Respuestas esperadas
  1. La idea era forzarlos a leer todo el sistema de arriba a abajo. Si contestaban algo genérico no estaba mal pero lo consideraba incompleto, y si nombraban un solo caso, también ;-). La respuesta esperada era en dos clases concretas, en TemplateSmarty y en Usuario.
  2. Esto también les obligaba a recorrer todo el sistema, otra vez. Aquí es donde hubieron mayores fallos, lo que identifica claramente que hay un problema de conceptos y no se entendió que significa "polimorfimo" (ya armaré material extra sobre el tema). La respuesta era "no".
  3. Hubo de todo aquí, pero repasemos el contexto: estamos buscando afirmar conceptos de POO, por lo tanto aunque hay muchas opciones válidas y aplicables en muchos contextos, aquí lo esperado era usar OO entonces la herramienta a utilizar era la herencia. Por lo tanto, para crear el Administrador podría heredar de la clase base Persona, o si la nueva clase es una especialización de Usuario, lo más probable que la herencia sea sobre esta última.
  4. Aquí era meramente una pregunta conceptual y muy general. Existen de sobra ejemplos sobre el tema en el código. La respuesta esperada es "el encapsulamiento es utilizado para esconder detalles de la implementación que no necesitan conocer los objetos que son clientes de la clase que brinda sus servicios". Esto se hace a través del uso de atributos/métodos "públicos y privados" y el encapsulamiento se consigue a menudo mediante la ocultación de la información. Todo esto sirve para reducir la dependencia externa con la implementación interna de la clase. Cuanto menos se sepa de su interior, más reutilizable es porque solo dependemos de lo que hace y no cómo se hace.
Bien, terminadas todas las explicaciones... si hay alguna que duden o discrepen, bienvenidos sus aportes en los comentarios de esta entrada.

PD: tal vez por el cansancio extremo puedo haber cometido un error sin darme cuenta, así que los que saben del tema no tengan reparos en corregirme ;-)

No hay comentarios.:

Entradas populares