Está en la página 1de 9

CAP 1

1. ¿Cuáles son los conceptos básicos de paradigma?


Es la forma de ver y entender la realidad, gracias a un conjunto de teorías y métodos que
representan la organización del pensamiento.
2. ¿Qué es el encapsulamiento y el ocultamiento de la información?
Es reunir los objetos que puedan hacer parte de una misma entidad, lo que aumenta la
unión de los componentes en el sistema
3. ¿Qué beneficios trae el encapsulamiento y el ocultamiento de la información?
favorece la reutilización (de conocimiento, secundariamente de código), en la adaptación a los
cambios y la simplicidad
4. ¿Para qué sirven los tipos?
Para definir un conjunto de objetos que comparten características, que tienen sentido en un
determinado contexto
5. ¿Qué es el polimorfismo?
Propiedad por la que es posible enviar mensajes sintácticamente iguales o objetos de distintos
tipos, el único requisito que deben cumplir los objetos que se utilizan de manera poli
formica es saber responder al mensaje que se les envía.
6. Defina herencia
Mecanismo para compartir automáticamente métodos y datos entre classes, subclases y
objetos. Permite crear nuevas clases introduciendo las variaciones con respecto a su clase
padre. Herencia simple: una subclase puede heredar datos y métodos de una clase simple
así como añadir o sustraer ciertos comportamientos. Herencia múltiple: posibilidad de
adquirir métodos y datos de varias clases simultáneamente.
7. Diferencias entre el tipado y la clasificación
La subclasificación se parece al subtipado aunque no hay que confundirse, la
subclasificación no fuerza al subtipado. Podríamos tener una clase que hereda de otra, pero
sin compartir entre ellas un concepto de tipo para crear una jerarquía de tipos.
8. ¿Para que se utiliza la agregación?
La agregación es una relación que define que un objeto es parte de otro objeto.
9. ¿Qué condición debe cumplir un modelo para ser una buena representación?
Debe representar el conocimiento que se tiene en un sistema de modo que facilite su
interpretación, formalizando los factores relevantes para los objetivos del modelado
10. ¿Por qué es necesario utilizar objetos?

Un objeto es una unidad dentro de un programa de computadores que consta de un estado y


de un comportamiento, que a su vez constan respectivamente de datos almacenados y de
tareas realizables dura.
Estos objetos interactúan unos con otros, en contraposición a la visión tradicional en la cual
un programa es una colección de subrutinas o simplemente una lista de instrucciones para el
computador. Cada objeto es capaz de recibir mensajes, procesar datos y enviar mensajes a
otros objetos de manera similar a un servicio.

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.

2. ¿Por qué triunfó Java frente a otras tecnologías?


triunfó gracias a Internet, en un comienzo lo hizo a través de las applets, pequeñas
aplicaciones embebidas en las páginas web que se ejecutan en los navegadores.

3. ¿Cuál es la diferencia entre el JRE y SDK?


SDK es un kit de desarrollo de software y JRE Es un eterno de ejecución del java

4. ¿Qué es y para qué sirve Eclipse?

Es un software con un entorno de desarrollo de software principalmente trabaja JAVA


5. ¿Qué es TDD?

es un estilo para plantear el desarrollo de un software, que se basa en el hecho de que el


programador vuelca su conocimiento sobre determinado problema en forma de aserciones.

6. ¿Cuál es el principal beneficio de desarrollar utilizando TDD?


hace que el programador sea el usuario de su propio código primero,
logrando que él mismo pueda darse cuenta de cuán amigable y fácil de usar es el API
desarrollado, también facilita el mantenimiento del software

7. ¿Que se utiliza JUnit?


En Eclipse contamos con un plugin ya instalado que nos permite utilizar JUnit con unos
pocos clics.

8. ¿Cómo se define un test case en JUnit?


A través de un método estático como por ejemplo public class Cap2UnitTests
9. ¿De qué manera se define un test en JUnit?

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.

10. ¿En qué clase están definidas las aserciones?

al método estático (perteneciente a la clase Assert, recordemos el import static)


assertEquals. Este método recibe dos parámetros que compara para saber si son iguales o
no. En este caso recibe el resultado de evaluar 1+2 (en Java esto no es un envío de mensaje,
sino que lo ejecuta directamente la máquina virtual) y el número 3. En Java, así como en
muchos otros lenguajes, se evalúan primero los parámetros y luego con los resultados se
envía el mensaje.

CAP 3

1. ¿Para qué se usa final?


es un modificador que puede aplicar a clases, métodos variables y argumentos, y puede
tener un significado distinto en cada caso. En las clases significa que se puede extender
heredando. En caso de los métodos, que las subclases de la clase que lo contiene no pueden
redefinirlo. En las variables (tanto las de instancia como las de clase, así como en las
definidas en el cuerpo de los métodos) significa que se puede asignar valor sólo una vez.
Finalmente, en el caso de los argumentos de los métodos, quiere decir que esa variable no
se puede escribir (reasignarle un valor nuevo).
2. ¿Qué diferencias hay entre el while y el do while?
Básicamente en uno primero se ejecuta la comprobación, mientras que el otro se ejecuta el
código dentro de él y despues la comprobación. Un ejemplo sencillo. El código del While
podría no ejecutarse si la condición no se cumple, mientras que con el Do While tu código
se ejecuta al menos una vez.
3. ¿Para qué sirve la estructura if/else/else if?
Para tomar decisiones sobre un valor preexistente. Es decir, si una condición basada en ese
valor preexistente se cumple (si esa condición es verdadera), el programa tomará un
camino. Si no (si esa condición es falsa), el programa tomará otro.

4. ¿Qué son las expresiones?


Una expresión es una combinación de variables, operadores y envíos de mensajes que
evalúan un valor. El tipo del valor dependerá de los tipos de los elementos involucrados

5. ¿Qué es una sentencia?


Las sentencias son la unidad completa de ejecución. En general finalizan con un punto y
coma (;) que las separa, salvo en el caso de los ciclos y las estructuras.
6. ¿Un bloque es una sentencia?
Un bloque es una secuencia de sentencias encerradas entre llaves ({ y }) y puede ser usado
en cualquier lugar donde va una sentencia (ya que un bloque es un sentencia). Los bloques
en general se utilizan como el cuerpo de las estructuras (como los ciclos) aunque también se
los puede utilizar solos, ya que definen un alcance léxico para los nombres. Esto quiere
decir que se puede redefinir una variable en un bloque, así el código del bloque accede a
esta y el código fuera del bloque accede a la primera definición.
7. ¿En qué difiere un import static de uno normal?
Las instrucciones de import deben ir después de la declaración de paquete y antes de la
definición de la clase. Finalmente podemos importar todos los métodos estáticos de una
clase si agregamos el modificador static a la instrucción import de una clase.
8. ¿De qué forma se relacionan el for normal y el for each?

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.

4. ¿Qué son los getters y los setters?


Setters: Del Inglés Set, que significa establecer, pues nos sirve para asignar un valor inicial a un
atributo, pero de forma explícita, además el Setter nunca retorna nada (Siempre es void), y solo
nos permite dar acceso público a ciertos atributos que deseemos el usuario pueda modificar.
Getters: Del inglés Get, que significa obtener, pues nos sirve para obtener (recuperar o acceder)
el valor ya asignado a un atributo y utilizarlo para cierto método.

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.

 No puede devolver ningún valor (incluyendo void).

 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

10. ¿Existe un this cuando estamos en el alcance estático?


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.

CAP 5
1. ¿Qué es una clase abstracta?

Definen el comportamiento esperado para un conjunto de objetos. Estos objetos pertenecen a


una subclasificación de la clase abstracta, ya que una clase abstracta no puede tener instancias.
2. ¿En qué se diferencia una clase estática de una interna?

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.

3. ¿Para qué se utilizaría una clase anónima?

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).

4. ¿Debemos evitar los ifs? ¿Cuándo tiene sentido Usarlos?

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.

6. Enumere algunas ventajas de usar static Factory methods

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.

8. Si un cambio en una clase repercute en muchas otras ¿Qué está pasando?

Si tenemos un cambio que en el dominio es pequeño y en nuestro sistema repercute en muchos


lados, es claro que nuestro diseño no lo ha modelado correctamente. No solo para cambios, sino
también para nuevos descubrimientos
sobre el dominio deben contemplar la continuidad. En nuestro diseño es fácil observar que un
cambio en las reglas es fácilmente aceptado, ya que tenemos bien discriminados los vecindarios
y las células.

9. ¿A que nos referimos cuando hablamos de alta cohesión y bajo acoplamiento?

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

10. ¿Qué dice el principio de abierto y cerrado?

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.

También podría gustarte