Universidad Carlos III de Madrid

Ingeniería de Telecomunicación

Enero-Mayo 2010 / January-May 2010

Orientación a Objetos y Herencia (I)

Lab Section1. Laboratorio: Repaso

TimeTOTAL: 90 min

Exercise Section1.1. Conceptos Básicos Java

Time20 min

Objetivo

Comprobar si se conocen ciertos conceptos clave de Java.

Ejercicio

Responde por escrito a las siguientes preguntas:

  • ¿Qué editor de textos vas a usar para crear los fuentes de sus programas? ¿Sabes usarlo?

  • ¿Cuál es el PATH del compilador java que vas a usar en las prácticas?

  • ¿Qué opción del compilador te parece más inútil?

  • ¿Qué versión de la JRE se usará en las prácticas?

  • ¿Cuál es el PATH de la máquina virtual Java?

  • ¿Cuál es la URL oficial para la API de dicha JRE?

  • ¿Sabes lo que es Java EE, Java SE y Java ME?

  • ¿Cuál es la diferencia entre parámetros formales y parámetros actuales?

  • ¿Qué es un programa?

  • ¿Entiendes la diferencia entre tipo y valor?

  • ¿Entiendes la diferencia entre clase y objeto?

  • ¿Hay equivalencia entre clase y tipo?

  • ¿Hay equivalencia entre objeto y valor?

  • ¿Entiendes la diferencia entre referencia a objeto y objeto?

  • ¿Qué hace el "recolector de basura" ("garbage collector")?

  • ¿Qué diferencia hay entre un método de clase y un método de objeto?

  • ¿Qué diferencia hay entre un atributo y una variable?

Exercise Section1.2. Repaso al método main

Time20 min

Objetivo

Repaso del método main y su utilidad.

Ejercicio

A continuación se presentan una serie de preguntas sobre el método main que deberá contestar por escrito y en los casos en los que sea necesario comprobar su funcionamiento.

  • ¿A qué se debe la existencia del método main?

  • ¿Entiende la función de un sistema operativo? ¿Qué relación existe entre el sistema operativo y el método main?

  • Si lanzamos el comando java Clase y Clase no implementa método main ¿qué ocurre? ¿entiende bien el mensaje por pantalla?

  • Si un programa en Java tiene cinco clases y todas ellas implementan un método main, ¿podremos ejecutar cualquiera de las clases? o ¿Java sólo permite un método main por programa?

  • ¿Por qué razón es estático el método main?

  • ¿Puedo llamar desde el método main a otros métodos implementados en la clase?

  • ¿Por qué motivo sólo puedo llamar a métodos estáticos de la propia clase desde el método main?

  • Si el objetivo de método main es arrancar el programa, ¿cree qué es una buena prática de programación implementar más de 20 líneas de código en él?

  • ¿Cuál es la conexión entre el sistema operativo y el parámetro del método main?

  • ¿Por qué tengo un sólo parámetro y sin embargo desde el sistema operativo puedo ofrecerle al método main N valores a ese parámetro?

  • Aunque el método main no retorna valor ¿podría ser interesante devolver un valor al sistema operativo en la ejecución de main?

  • Explique el motivo por el que se define el parámetro de main como String [] args y no como String [255] args

Exercise Section1.3. Pintado de Tablero de Ajedrez en modo consola

Time20 min

Objetivo

Practicar los bucles for.

Ejercicio

Implemente un programa que dibuje un ajedrez en modo consola al estilo:

	   
BWBWBWBW
WBWBWBWB
BWBWBWBW
WBWBWBWB
BWBWBWBW
WBWBWBWB
BWBWBWBW
WBWBWBWB

	 

Exercise Section1.4. Transformación de bucles (for -> while)

Time15 min

Objetivo

Practicar con bucles.

Ejercicio

Transformar el siguiente bucle for en un bucle while:

for (int i=0;i<10;i++)
{
	System.out.print(i);
}
System.out.println("");

Exercise Section1.5. Transformación de bucles (while -> for)

Time15 min

Objetivo

Practicar con bucles.

Ejercicio

Transformar el siguiente bucle while en un bucle for:

int [] items = { 2, 4, 6, 8, 10, 9, 7, 5, 3, 1};
boolean found = false;
int     find  = 10;
		
// loop while
int i = 0;
while ((!found) && (i<MAX_ITEMS))
{
	found = (items[i]==find);		
	i++;
}	
System.out.println(i-1);

Homework Section2. Actividades para casa

Time120 min

Exercise Section2.1. Ejercicios de repaso de arrays

Time30 min

Objetivo

Repaso de arrays con ejercicios muy básicos.

Ejercicio

  • Devolver el mayor de los números enteros de un array.

  • Devolver la media de los elementos de un array.

  • Mostrar los elementos pares de un array.

  • Mostrar el sumatorio de los elementos de un array.

Exercise Section2.2. Indicar si una frase o palabra es palíndroma

Time25 min

Objetivo

Repaso de bucles.

Ejercicio

Una palabra o frase es palíndroma si se lee igual de izquierda a derecha que de derecha a izquierda. Implemente un programa que permita determinar si una cadena dada es palíndroma o no.

Exercise Section2.3. Cálculo del factorial mediante bucles

Time15 min

Objetivo

Prácticar con bucles.

Ejercicio

Implementar el cálculo del factorial de un número dado primero utilizando un bucle for y después utilizando un bucle while.

Exercise Section2.4. Arrays de 2 dimensiones

Time30 min

Objetivo

Practicar ejercicios de arrays (2 dimensiones).

Ejercicio

Implemente un clase Matriz con el comportamiento para la suma de matrices, teniendo en cuenta que el resultado de la suma no podrá modificar la instancia sobre la que se ejecuta el método.

Aclaración

El número de filas y columnas de la matriz deberá indicarse en el momento de creación del objeto.

Exercise Section2.5. Tratamiento de cadenas y clase Vector

Time20 min

Objetivo

Recorrer una cadena para trocearla y guardar cada parte como un elemento de un Vector.

Ejercicio

Implementar un programa que tenga un método que recibe una cadena de caracteres. Esa cadena de caracteres estará formada por subcadenas separadas por un carácter '|'.

Esta cadena de caracteres se debe descomponer para ir almacenando cada subcadena de forma individual en un objeto Vector. El método deberá devolver este objeto Vector.

La cadena puede estar vacía.

En el caso de que no sepa utilizar un Vector hágalo descomponiendo la cadena en un array donde cada posíción del array almacenará una subcadena.

Por ejemplo, la cadena "Si|No|A veces" debe descomponerse en las tres subcadenas: "Si", "No", "A veces", almacenada cada una de ellas por separado en el Vector (o array).

Aclaración

Puede encontrar información de la clase Vector en el siguiente archivo: Vector.pdf