Test Java
Test Java
Test Java
CAP 2
1. ¿Qué es una máquina virtual? un programa
que simula una máquina abstracta, la cual funciona aislando al programa que corre sobre
ella de los distintos hardware y sistemas operativos. De esta forma, para el programa que
estamos utilizando, la maquina donde corre es siempre igual.
Para crear un test case, en el menú File seleccionamos New…/Junit Test Case, elegimos la
versión de JUnit que usaremos (JUnit 4), un nombre de package (red.user.java) y un
nombre para el Test Case (UnitTests). Luego presionamos el botón Finish.
CAP 3
El ciclo for-each es una herramienta muy útil cuando tenemos que realizar recorridos
completos de colecciones, por lo que lo usaremos en numerosas ocasiones antes que ciclos
for o while que nos obligan a estar pendientes de más cuestiones (por ejemplo, en este caso
con el while, de llevar un contador, llamar en cada iteración a un método, etc.). Un for
extendido en principio recorre todos y cada uno de los elementos de una colección. Sin
embargo, podemos introducir un condicional asociado a una sentencia break; que aborte el
recorrido una vez se cumpla una determinada condición. Escribe y compila el siguiente
código ejemplo de uso de un for extendido:
9. ¿Cuáles son las palabras claves relacionadas con el manejo de excepciones?
Si un método lanza excepciones, ya sea porque su propio código las lanza o no las atrapa,
debe especificarlas como parte de la firma del mensaje e indicarlas luego de los argumentos
utilizando la palabra throws seguido de los nombres de estas separadas por coma. Java
permite que los mensajes tengan argumentos variables, por ejemplo, si queremos pasar un
cierto número de parámetros en un envío y cierto número en otro, y queremos que además
sea invocado el mismo método
10. ¿Con que tipo de dato se pueden utilizar los operadores lógicos?
Los operadores lógicos se pueden aplicar a operandos de tipo números enteros o punteros.
Los operadores lógicos interpretan los operandos de puntero como valores de números
enteros sin signo. Al igual que los operadores lógicos y relacionales en D, los operandos
son verdaderos (true) si tienen un valor de número entero distinto a cero y falsos (false) si
tienen un valor de numero entero cero.
Cap 4
1. ¿De cuántas clases se puede heredar?
Java permite múltiples niveles de herencia, pero no la herencia multiple, es decir una clase sólo
puede heredar directamente de una clase ascendiente. Por otro lado, una clase puede ser
ascendiente de tantas clases descendiente como se desee (un único padre, multitud de hijos).
2. ¿Cuántas interfaces puede implementar una clase?
Una clase puede implementar varias interfaces, pero sólo puede tener una clase ascendiente
directa. Una clase abstracta pertenece a una jerarquía de clases mientras que una interfaz no
pertenece a una jerarquía de clases. En consecuencia, clases sin relación de herencia pueden
implementar la misma interfaz.
3. ¿Qué es un atributo?
Son las características individuales que diferencian un objeto de otro y determinan su
apariencia, estado u otras cualidades. Los atributos se guardan en variables denominadas de
instancia, y cada objeto particular puede tener valores distintos para estas variables.
5. ¿Qué es this?
This hace referencia al objeto actual de la clase, es decir, a una instancia concreta de la clase y
nos sirve para usar los métodos y atributos de esa clase desde alguno de sus métodos, para
llamar a otro de sus constructores o simplemente para pasarle el objeto completo a algún otro
método u objeto
6. ¿Qué es super?
una variable local en un método y a una variable de la superclase que tiene el mismo nombre. El
programa también utiliza super para invocar al constructor de la superclase desde en constructor
de la subclase
7. ¿Cómo funcionan los argumentos variables?
Java permite que los mensajes tengan argumentos variables, por ejemplo, si queremos pasar un
cierto número de parámetros en un envío y cierto número en otro, y queremos que además sea
invocado el mismo método.
8. ¿Cuáles son las características de los constructores?
Tiene el mismo nombre que la clase a la que pertenece.
En una clase puede haber varios constructores con el mismo nombre y distinto número
de argumentos (se puede sobrecargar)
No se hereda.
Debe declararse público (salvo casos excepcionales) para que pueda ser invocado desde
cualquier parte donde se desee crear un objeto de su clase.
9. Enumere algunas diferencias entre el alcance estático y el alcance de
instancia.
Los elementos estáticos están asociados a la clase, pero no pertenecen a ella; el compilador,
junto con la JVM, manejan el acceso a ellos. Estos elementos son globales. Los métodos
estáticos son resueltos en tiempo de compilación y no resultan del envío de un mensaje. Es
posible acceder a los métodos estáticos de una clase padre usando el nombre de una clase hija.
Debemos saber que en ellos no se usa this ni super. En cambio, los métodos de instancia son
resueltos en tiempo de ejecución y resultan del envío de un mensaje. Esto da una flexibilidad
que no se tiene con los métodos estáticos ya que el comportamiento está dado por cómo
relacionamos los objetos durante la ejecución, en vez de forzarlo en tiempo de compilación a un
código específico
CAP 5
1. ¿Qué es una clase abstracta?
Salvo las estáticas, las demás son para uso interno de la clase en la que se definen.
Generalmente se utilizan para modelar conceptos que están fuertemente ligados a una clase y
que no tienen sentido fuera de ella, ya que su uso es en conjunto.
Las clases anónimas o anonymous classes son aquellas que son locales, que no tienen nombre y
sólo existen para especificar el comportamiento de la única instancia que tienen. Estas clases
son muy útiles para implementar mecanismos de callback (de aviso y respuesta asincrónica).
Generalmente los if presentan una oportunidad para mejorar el diseño y evitar preguntar una y
otra vez lo que ya se sabe. Este esfuerzo por construir un contexto de conocimiento es una
pérdida de recursos (procesamiento). Es mejor tratar de llevar esas decisiones al plano del
diseño.
5. ¿Tiene sentido marcar una clase como abstract y final al mismo tiempo?
Las clases abstractas, por definición, no pueden ser marcadas como final, ya que su propósito es
que sirvan como base para otras clases. Recordemos que el principio de ocultamiento de la
información vale también entre clases de la misma jerarquía.
primero debemos saber que poseen un nombre que explica la intensión del método. Es
importante para tener código claro. Segundo, pueden no crear un objeto nuevo por cada uso.
Tercero, pueden devolver objetos de un subtipo en vez del tipo en el que están definidos, y así
lograr un grado de flexibilidad extra.
7. ¿Cuál es el problema de que un objeto tenga muchos atributos?
En la jerga de la orientación a objetos, se dice que una clase en una clase dios cuando tiene
muchos atributos, muchos métodos. Generalmente estos métodos responden a distintas
responsabilidades. Estas clases deben ser refactorizadas inmediatamente, y separarlas en varias
clases más chicas que modelen correctamente las responsabilidades por separado.
Cuando hablamos de alta cohesión, estamos hablando de que las funcionalidades y capacidades
similares y con el mismo propósito deben estar lo más cerca posible. Esto significa que los
elementos que están relacionados deben, en conjunto, cumplir una tarea específica. Y su
existencia tiene que estar para cumplir con esa funcionalidad.
Bajo acoplamiento significa que los elementos deben tener poca dependencia entre sí. Cuanta
más dependencia tiene un elemento, más restricciones tiene al cambio. Asimismo, los
elementos de los que depende también están restringidos a cambiar libremente. A más
dependencia, obtendremos menos flexibilidad
El principio Abierto/Cerrado dice que un elemento debe estar abierto para la extensión y
cerrado para su modificación. El elemento tiene que ser una caja negra para los usuarios de este.
Debe ser posible extender sus funcionalidades, pero no realizar modificaciones internas.