Skip to content

Latest commit

 

History

History
396 lines (238 loc) · 17 KB

autoevaluaciones.md

File metadata and controls

396 lines (238 loc) · 17 KB

📝 Preguntas Autoevaluaciones


📕 Indice


1️⃣ Primer cuestionario de Promoción


Creamos clases para

Seleccione una:

  • a) Para poder encapsular la estructura de los objetos de forma que no sea accesible
  • b) Representar la estructura y el comportamiento de todos los objetos que son instancias de la clase
  • c) Para indicar el codigo que se ejecutara cada vez que una clase es invocada

rta : La respuesta correcta es: Representar la estructura y el comportamiento de todos los objetos que son instancias de la clase.


Para poder funcionar los objetos conocen

Seleccione una:

  • a) Las variables más importantes del programa para poder modificarlas
  • b) A otros objetos a los que pueden enviarle mensajes usando el protocolo que dichos objetos exhiben
  • c) Los nombres de los procedimientos de otros objetos para poder invocarlos

rta : La respuesta correcta es: A otros objetos a los que pueden enviarle mensajes usando el protocolo que dichos objetos exhiben


Cuando desarrollamos software con el paradigma de objetos, nuestros programas se pueden ver como:

Seleccione una:

  • a) Un conjunto de clases que ejecutan metodos cuando se les pide
  • b) Un conjunto de acciones (llamadas métodos) que se invocan desde los objetos
  • c) Un conjunto de objetos que colaboran entre si enviandose mensajes

rta : La respuesta correcta es: Un conjunto de objetos que colaboran entre si enviandose mensajes


Cuando un objeto recibe un mensaje

Seleccione una:

  • a) Invoca un procedimiento que decide cual es la acción a realizarse
  • b) Decide que variables puede modificar para cumplir con la acción que le requieren
  • c) Ejecuta el método que corresponde al mensaje recibido

rta : La respuesta correcta es: Ejecuta el método que corresponde al mensaje recibido


En un programa construido con objetos

Seleccione una:

  • a) Es imprescindible especificar siempre un objeto que será la raiz del sistema en todas las ejecuciones
  • b) Se comienza con un código especial que invoca al primer objeto que corresponde
  • c) No hay un objeto más importante que otros. El comienzo de una aplicación depende del flujo de control, de decisiones del desarrollador, del tipo de interacción, etc.

rta : La respuesta correcta es: No hay un objeto más importante que otros. El comienzo de una aplicación depende del flujo de control, de decisiones del desarrollador, del tipo de interacción, etc


2️⃣ Segundo cuestionario de Promoción

Cuando un objeto o recibe un mensaje m()

Seleccione una:

  • a) En función del tipo del objeto o se decide que hacer
  • b) Si encuentra el método m() correspondiente en su clase, lo ejecuta
  • c) Decide que método ejecutar chequeando los que tienen nombres iguales en la jerarquía

rta : La respuesta correcta es: Si encuentra el método m() correspondiente en su clase, lo ejecuta


Sabiendo que la expresión System.out.println("algo") imprime un string por la salida estándar, y dado el siguiente diseño, seleccione la afirmación correcta de la lista:

Seleccione una:

  • a) La expresión (new B()).actionOne() imprime "b" por la salida estándar.
  • b) La expresión (new B()).actionOne() imprime "b" y luego "a" por la salida estándar.
  • c) La expresión (new B()).actionOne() imprime "a" y luego "b" por la salida estándar.
  • d) La expresión (new B()).actionOne() imprime "a" por la salida estándar.

rta: La respuesta correcta es: La expresión (new B()).actionOne() imprime "b" por la salida estándar.


Sabiendo que la expresión System.out.println("algo") imprime un string por la salida estándar, y dado el siguiente diseño, seleccione la afirmación correcta de la lista:

Seleccione una:

  • a) La expresión (new B()).actionTwo() imprime "a" por la salida estándar.
  • b) La expresión (new B()).actionTwo() imprime "b" por la salida estándar.
  • c) La expresión (new B()).actionTwo() imprime "a" y luego "b" por la salida estándar.
  • d) La expresión (new B()).actionTwo() imprime "b" y luego "a" por la salida estándar.

rta : La respuesta correcta es: La expresión (new B()).actionTwo() imprime "b" por la salida estándar.


Supongamos que tenemos una clase A, con sub-clases B, C y D. En todas ellas tenemos una implementación del método m().

Supongamos que tenemos también la clase X con una variable de instancia i de tipo A.

Supongamos que como respuesta a un mensaje enviado a una instancia de X se ejecuta el método de mx()

Cuando se ejecuta la expresión i.m() en dicho método:

Seleccione una:

  • a) El objeto recepto x decide que método debe ejecutarse chequeando los tipos correspondientes
  • b) Implicará que se ejecute el método m() de la clase A
  • c) Implicará que se ejecute el método m() correspondiente a la clase a la que pertenece el objeto actualmente apuntado por la variable i

Rta : La respuesta correcta es: Implicará que se ejecute el método m() correspondiente a la clase a la que pertenece el objeto actualmente apuntado por la variable i


Sabiendo que la expresión System.out.println("algo") imprime un string por la salida estándar, y dado el siguiente diseño, seleccione la afirmación correcta de la lista:

Seleccione una:

  • a) La expresión (new B()).actionOne() imprime "b" por la salida estándar.
  • b) La expresión (new B()).actionOne() imprime "b" y luego "a" por la salida estándar.
  • c) La expresión (new B()).actionOne() imprime "a" por la salida estándar.
  • d) La expresión (new B()).actionOne() imprime "a" y luego "b" por la salida estándar.

rta: La respuesta correcta es: La expresión (new B()).actionOne() imprime "b" y luego "a" por la salida estándar.


3️⃣ Tercer cuestionario de Promoción


Seleccione la afirmación correcta

Seleccione una:

  • a) Es importante diseñar bien el programa y chequearlo entre pares para evitar escribir tests de unidad.
  • b) Es importante testear ni bien se termina de escribir el programa, y con tanta cobertura como sea posible.
  • c) Es importante testear temprano, y tanto como sea el riesgo del artefacto a testear
  • d) Es importante testear todos los métodos hasta alcanzar una cobertura mayor al 80% del código.

rta: La respuesta correcta es: Es importante testear temprano, y tanto como sea el riesgo del artefacto a testear


Seleccione la afirmación correcta

Seleccione una:

  • a) Para iterar una colección con un iterador, le envío el mensaje iterator() sin importar la clase de colección con la que trato.
  • b) Solo las colecciones indexadas (ArrayList, Vector, etc.) entienden el mensaje iterator() que permite recorrerlas.
  • c) El mensaje iterator() espera como parámetro la clase de iterador a utilizar, que dependen del tipo de colección que estamos iterando.
  • d) Para iterar una colección con un iterador, si es indexada (List) le envio el mensaje listIterator() y si es un conjunto (Set) le envío el mensaje setIterator()

rta : La respuesta correcta es: Para iterar una colección con un iterador, le envío el mensaje iterator() sin importar la clase de colección con la que trato.


Seleccione la afirmación correcta

Seleccione una:

  • a) Para filtrar una colección en Java, le envío en mensaje stream() con una expresión lambda como parámetro.
  • b) Para filtrar una colección en Java, es recomendable utilizar un iterador y una colección adicional en la que se acumula el resultado.
  • c) Para filtrar una colección en Java, utilizo la librería de Pipes and Filters que ofrecen los iteradores.
  • d) Para filtrar una colección en Java, es recomendable utilizar el protocolo de streams.

rta : La respuesta correcta es: Para filtrar una colección en Java, es recomendable utilizar el protocolo de streams.


Seleccione la afirmación correcta

Seleccione una:

  • a) Para escribir tests de particiones equivalentes identifico particiones, y elijo valores representativos dentro y fuera de cada partición para usarlos en los tests.
  • b) Para escribir tests de particiones equivalentes, identifico todos los valores posibles y los separo en particiones de tamaño equivalente para usarlas en mis tests.
  • c) Para escribir tests de particiones equivalentes debo asegurarme de incluir en todas las particiones al valor null, al mínimo, y al máximo.
  • d) Para escribir tests de particiones equivalentes identifico particiones, y elijo tantos valores de test de cada partición como complejidad tenga la misma (más compleja, más valores).

rta : La respuesta correcta es: Para escribir tests de particiones equivalentes identifico particiones, y elijo valores representativos dentro y fuera de cada partición para usarlos en los tests.


Seleccione la afirmación correcta

Seleccione una:

  • a) En Java, es recomendable que todos los objetos en una colección compartan un tipo.
  • b) En java, las colecciones solo admiten como contenido instancias de clases que implementan interfaces.
  • c) En Java, solo es posible agregar a una colección instancias de una misma clase, o de clases que comparten alguna superclase.
  • d) En Java, es recomendable que todos los objetos en una colección sean de la misma clase.

rta : La respuesta correcta es: En Java, es recomendable que todos los objetos en una colección compartan un tipo.


4️⃣ Cuarto cuestionario de Promoción

Un buen Diseño OO debe cumplir, entre otras, con las Heurísticas:

Seleccione una:

  • a) Bajo Acoplamiento y baja Cohesión.
  • b) Alto Acoplamiento y alta Cohesión.
  • c) Alto Acoplamiento y baja Cohesión.
  • d) Bajo Acoplamiento y alta Cohesión.

Retroalimentación: La respuesta correcta es: Bajo Acoplamiento y alta Cohesión


En los Contratos de Operaciones, las poscondiciones:

Seleccione una:

  • a) describen el estado del sistema antes de ejecutarse la operación, utilizando conceptos del modelo conceptual o del Dominio
  • b) describen el estado y cambios del sistema después de ejecutarse la operación, utilizando conceptos del modelo conceptual o del Dominio
  • c) muestran cómo se ejecutan las acciones dentro de la operación
  • d) muestran el estado del Sistema durante la ejecución de la operación

Retroalimentación: La respuesta correcta es: describen el estado y cambios del sistema después de ejecutarse la operación, utilizando conceptos del modelo conceptual o del Dominio


En Reuso de código (Herencia Vs. Composición):

Seleccione una:

  • a) Cuando la estructura de la nueva subclase es como la de la superclase, se aconseja usar herencia, no composición. El comportamiento heredado que no sirva, puede anularse o redefinirse.
  • b) El uso de herencia entre objetos genera más bajo acoplamiento que el uso de composición
  • c) El uso de composición entre objetos genera más alto acoplamiento que el uso de herencia
  • d) El reuso por composición, permite usar al objeto a través de su protocolo, sin necesidad de tener que conocer su implementación

Retroalimentación: La respuesta correcta es: El reuso por composición, permite usar al objeto a través de su protocolo, sin necesidad de tener que conocer su implementación


En UML, la relación de conocimiento entre objetos o instancias de clases:

Seleccione una:

  • a) se modela con una asociación hacia el/los objetos que se conocen, agregando solamente la multiplicidad.
  • b) se representa como un atributo que identifica al/los objetos que se conocen
  • c) debe ser siempre bidireccional, es decir, navegable hacia las dos clases
  • d) se modela con una asociación hacia el/los objetos que se conocen, agregando en el final de la asociación nombre (rol) y multiplicidad.

Retroalimentación: La respuesta correcta es: se modela con una asociación hacia el/los objetos que se conocen, agregando en el final de la asociación nombre (rol) y multiplicidad.


El Modelo Conceptual o del Dominio es útil para:

Seleccione una:

  • a) representar la solución del Sistema OO, mostrando la vista estática del Diseño final.
  • b) representar el dominio del problema en la etapa de Análisis
  • c) representar las interacciones entre los objetos candidatos del Sistema
  • d) mostrar el comportamiento (métodos) de las clases candidatas.

Retroalimentación: La respuesta correcta es: representar el dominio del problema en la etapa de Análisis

5️⃣ Quinto cuestionario de Promoción


Seleccione la afirmación correcta

Seleccione una:

  • a) ECMAScript es un lenguaje dinámico, en el que no se indica explícitamente el tipo de las variables.
  • b) ECMAScript es un lenguaje fuertemente tipado, en el que se declara el tipo de cada variable y parámetro, utilizando clases.
  • c) ECMAScript es un lenguaje fuertemente tipado, en el que se declara el tipo de cada variable y parámetro, utilizando interfaces.
  • d) ECMAScript puede utilizarse tanto como un lenguaje dinámico, en el que no es necesario indicar explícitamente el tipo de las variables o como un lenguaje fuertemente tipado.

Retroalimentación La respuesta correcta es: ECMAScript es un lenguaje dinámico, en el que no se indica explícitamente el tipo de las variables.


Seleccione la afirmación correcta:

Seleccione una:

  • a) Smalltalk es un lenguaje fuertemente tipado, en el que se declara el tipo de cada variable y parámetro, utilizando interfaces.
  • b) Smalltalk puede utilizarse tanto como un lenguaje dinámico, en el que no es necesario indicar explícitamente el tipo de las variables o como un lenguaje fuertemente tipado.
  • c) Smalltalk es un lenguaje fuertemente tipado, en el que se declara el tipo de cada variable y parámetro, utilizando clases.
  • d) Smalltalk es un lenguaje dinámico, en el que no se indica explícitamente el tipo de las variables.

Retroalimentación: La respuesta correcta es: Smalltalk es un lenguaje dinámico, en el que no se indica explícitamente el tipo de las variables.


Seleccione la afirmación correcta

Seleccione una:

  • a) Las clases de Smalltalk son objetos especiales, que solo entienden mensajes predefinidos para crear instancias. No es posible extender una clase para que entienda otros mensajes.
  • b) En Smalltalk las clases también son objetos, tienen sus propios atributos y métodos. El new, por ejemplo, es un mensaje de clase.
  • c) En Smalltalk, no existen las clases. El lenguaje se basa en prototipos que se clonan y especializan.
  • d) En Smalltalk, al igual que en java, tenemos métodos estáticos que se definen en las clases y se invocan directamente.

Retroalimentación La respuesta correcta es: En Smalltalk las clases también son objetos, tienen sus propios atributos y métodos. El new, por ejemplo, es un mensaje de clase.


Seleccione la afirmación correcta

Seleccione una:

  • a) En ECMAScript, cada objeto hereda comportamiento de su prototipo. El estado no se hereda.
  • b) En ECMAScript, cada objeto hereda estado de su prototipo. El comportamiento no se hereda.
  • c) Al no ser basado en clases sino en prototipos, ECMAScript no implementa el concepto de herencia.
  • d) En ECMAScript, cada objeto hereda comportamiento y estado de su prototipo.

Retroalimentación : La respuesta correcta es: En ECMAScript, cada objeto hereda comportamiento y estado de su prototipo.


Seleccione la afirmación correcta

Seleccione una:

  • a) ECMAScript es un lenguaje basado en clases si se lo usa en el navegador, y basado en prototipos si se lo usa en el servidor.
  • b) Al igual que Java y Smalltalk, que son lenguajes orientados a objetos basados en clases, ECMAScript es también basado en clases.
  • c) ECMAScript es un lenguaje basado en clases si se lo usa en el servidor, y basado en prototipos si se lo usa en el navegador.
  • d) A diferencia de Java y Smalltalk, que son lenguajes orientados a objetos basados en clases, ECMAScript es basado en prototipos.

Retroalimentación : La respuesta correcta es: A diferencia de Java y Smalltalk, que son lenguajes orientados a objetos basados en clases, ECMAScript es basado en prototipos.