📝 Preguntas Autoevaluaciones
![](https://media.giphy.com/media/555LNFtAGCaTC0tffa/giphy.gif)
📕 Indice
- 1️⃣ Primer cuestionario de Promoción
- 2️⃣ Segundo cuestionario de Promoción
- 3️⃣ Tercer cuestionario de Promoción
- 4️⃣ Cuarto cuestionario de Promoción
- 5️⃣ Quinto cuestionario de Promoción
Creamos clases para
Seleccione una:
a)
Para poder encapsular la estructura de los objetos de forma que no sea accesibleb)
Representar la estructura y el comportamiento de todos los objetos que son instancias de la clasec)
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 modificarlasb)
A otros objetos a los que pueden enviarle mensajes usando el protocolo que dichos objetos exhibenc)
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 pideb)
Un conjunto de acciones (llamadas métodos) que se invocan desde los objetosc)
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 realizarseb)
Decide que variables puede modificar para cumplir con la acción que le requierenc)
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 ejecucionesb)
Se comienza con un código especial que invoca al primer objeto que correspondec)
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
Cuando un objeto o recibe un mensaje m()
Seleccione una:
a)
En función del tipo del objeto o se decide que hacerb)
Si encuentra el método m() correspondiente en su clase, lo ejecutac)
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 correspondientesb)
Implicará que se ejecute el método m() de la clase Ac)
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.
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 testeard)
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.
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 Dominiob)
describen el estado y cambios del sistema después de ejecutarse la operación, utilizando conceptos del modelo conceptual o del Dominioc)
muestran cómo se ejecutan las acciones dentro de la operaciónd)
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ónc)
El uso de composición entre objetos genera más alto acoplamiento que el uso de herenciad)
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 conocenc)
debe ser siempre bidireccional, es decir, navegable hacia las dos clasesd)
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álisisc)
representar las interacciones entre los objetos candidatos del Sistemad)
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
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.