FACULTAD DE ECONOMIA Y ADMINISTRACION DEPARTAMENTO DE CIENCIAS DE LA COMPUTACION CÁTEDRA PROGRAMACION GENERAL Trabajo Práctico Nº 4 Ejercicios Teóricos 1. Indique si las siguientes afirmaciones son verdaderas o falsas a. La programación orientada a objetos hace uso de clases y envío de mensajes entre objetos. ……………………………. V– F b. Las clases están compuestas por métodos y atributos ........................V – F c. El constructor predefinido retorna un tipo void……………….. V – F d. El constructor predefinido toma como parámetro un valor tipo void.….V – F e. El constructor predefinido toma parámetros. .………. .………. .……….V – F 2. ¿Cuál de las siguientes características no pertenece a un objeto? a. b. c. d. e. Un objeto es identificable por un único nombre Un objeto tiene estados. Un objeto puede formar parte de una clase. Un objeto puede pertenecer a distintas clases. Todas las anteriores 3. Los atributos de un objeto forman: a. Los valores posibles del objeto. b. Su estado. c. Su comportamiento. d. Su conjunto de métodos. 4. Indique cuáles de las siguientes sentencias suponen por sí solas la creación de un objeto de tipo Persona. a. b. c. d. e. Persona persona; Persona = new Persona; persona = new Persona(); Persona p= new Persona; Ninguna de las anteriores. 5. Los parámetros o argumentos de un método permiten: f. g. h. i. Saber en qué objeto está el método. Pasar información al método para que pueda ejecutar su función. Adaptar el método a los atributos del objeto. Cambiar la forma de funcionar del método. 6. En Java, los parámetros de tipos primitivos de cualquier método: 2° Cuatrimestre 2007 – Tecnicatura FACULTAD DE ECONOMIA Y ADMINISTRACION DEPARTAMENTO DE CIENCIAS DE LA COMPUTACION CÁTEDRA PROGRAMACION GENERAL j. Se pueden pasar por valor o por referencia, basta con indicarlo en la cabecera. k. No se pueden pasar parámetros de tipos primitivos. l. Se pasan por valor siempre. m. Se pasan por referencia siempre. 6. ¿Qué es la sobrecarga? a. Tener dos o más métodos con igual nombre pero con diferente resultado en la misma clase b. Tener dos o mas métodos afectando a los mismos atributos en la misma clase c. Tener dos o más métodos con igual nombre pero con diferente signatura de tipo en la misma clase. d. Tener dos o más métodos con distinto nombre y distintos parámetros 7. El puntero this e. Apunta a la clase en que se encuentra definida la función miembro. f. Apunta a una variable miembro especial de un objeto. g. Apunta a una variable miembro de la clase derivada que invoca el método. h. Es la referencia al objeto que recibe el mensaje. 8. ¿Cuándo es válido llamar al método System.out.println pasando como parámetro una referencia (como en el siguiente ejemplo)? C objeto = new C (); System.out.println (objeto); i. Cuando se refiere a un objeto con algún método que devuelva un objeto de tipo String. j. Siempre. k. Nunca. l. Sólo para los objetos de una clase que define un método toString. 9. Dados los siguientes fragmentos de código: class Numero { public Numero (int i) { valor = i; } public int valor () { return valor; } private int valor; } Numero a = new Numero (2); Numero b = new Numero (4); b = null; a = b; Indique cuántos objetos de la clase número se pueden utilizar después de la última sentencia m. 0 2° Cuatrimestre 2007 – Tecnicatura FACULTAD DE ECONOMIA Y ADMINISTRACION DEPARTAMENTO DE CIENCIAS DE LA COMPUTACION CÁTEDRA PROGRAMACION GENERAL n. 1 o. 2 p. 3 10. Indique cual de las siguientes son signaturas validas en el método main q. public static void main (String [] argu) r. public static main (String [] args ) s. public static void main (String args) t. private static void main (String args []) 11. ¿Cuál es la visibilidad que debemos poner a un atributo para que sea accesible desde cualquier método de cualquier objeto de cualquier clase? a. b. c. d. public. private. Nada, de paquete. protected. 12. ¿Dónde comienza la ejecución de un programa desde el intérprete? e. f. g. h. En algún método estático que hay que indicar. Creando un objeto inicial. En el método estático main. No se puede. 13. Dada la siguiente clase class Base{ int Edad=33; } ¿Cómo mejorarías la clase con respecto al acceso al campo Edad? a. Definir la variable Edad como privada b. Definir la variable Edad como protegida c. Definir la variable Edad como privada y crear un método ‘get’ que la devuelva y un método ‘set’ que la actualice d. Definir la variable Edad como protegida y crear un método ‘set’ que la devuelva y un método ‘get’ que la actualice 2° Cuatrimestre 2007 – Tecnicatura FACULTAD DE ECONOMIA Y ADMINISTRACION DEPARTAMENTO DE CIENCIAS DE LA COMPUTACION CÁTEDRA PROGRAMACION GENERAL Ejercicio 1 a. Detallar mínimo 5 atributos para las siguientes clases: i. Persona ii. Animal iii. Vehículo iv. Inmueble v. Estudiante vi. Reserva de vuelo vii. Entrada cine b. Detallar mínimo 5 métodos para cada una de las clases, especificando que haría cada método Ejercicio 2 Crear en eclipse un nuevo paquete llamado practico4.a Crear una clase Ejercicio1 dentro del nuevo paquete. Escriba el código dentro del método main que partiendo de la cadena "Esta es una cadena de prueba" muestre por consola lo siguiente: 1. 2. 3. 4. 5. 6. Su longitud El carácter asociado al índice 7 La subcadena ubicada entre el carácter 11 y el carácter 17 El índice que ocupa el carácter 'p' La cadena transformada en mayúsculas Comprobar si el primer carácter de la cadena es 'E' y mostrar por consola un mensaje que lo indique. 7. Por último, comprobar si el primer carácter de la cadena es 's' y mostrar por consola un mensaje que lo indique. 8. Reemplazar el carácter “a” de la cadena por el carácter “b” Por consola se visualizara: Longitud de la cadena: 46 Índice 7 asociado al carácter r La subcadena generada desde 20 incluido hasta 26 excluido es creere El índice del carácter x es 9 La cadena en mayúsculas es: EN MI PROXIMA VIDA, CREERE EN LA REENCARNACION La String comienza con E es: trae La String comienza con s es: false 2° Cuatrimestre 2007 – Tecnicatura FACULTAD DE ECONOMIA Y ADMINISTRACION DEPARTAMENTO DE CIENCIAS DE LA COMPUTACION CÁTEDRA PROGRAMACION GENERAL Ejercicio 3 Crear una clase Volumenes dentro del paquete practico3. Crear dentro de la clase Volumenes 2 métodos uno calculaVolumenCilindro y otro calculaVolumenEsfera que devuelvan el volumen de un cilindro y el volumen de una esfera respectivamente. El método calculaVolumenCilindro tiene dos parámetros (altura radio) y el método calculaVolumenEsfera tiene un solo parámetros (radio). Dentro del método main calcular y mostrar por pantalla: 1 - El volumen de un cilindro con altura = 2.5 y radio=3 2 - El volumen de una esfera con radio = 5 Esqueleto del código: Ejercicio 4 Crear en eclipse un nuevo paquete llamado practico4.b 1. Implementar la clase “pública” Disquera, que contenga un método “público”, horarioAtencion. Este método mostrará por pantalla las horas en las que la tienda de música está abierta. 2. Crea un método main (public static void main) que realice las siguientes tareas: a. Crear una instancia de Disquera b. Invocar el método horarioAtencion. c. Ejecutar el programa y comprobar que la salida es la esperada. Salida esperada: Horario: 9:00 AM – 21:00 PM 2° Cuatrimestre 2007 – Tecnicatura FACULTAD DE ECONOMIA Y ADMINISTRACION DEPARTAMENTO DE CIENCIAS DE LA COMPUTACION CÁTEDRA PROGRAMACION GENERAL 3. Añadir una variable “privada” de instancia “dueño” a la clase Disquera. El tipo de esta variable debe ser String, y los objetos de la clase se deben inicializar con el valor “Sin dueño”. a. Añadir el método setDueño a la clase Disquera. Este método debe establecer el valor de la variable “dueño” de la clase al valor recibido como parámetro, en un String. b. Modifica el método main de la clase de prueba utilizada en el punto 2 para que se establezca el nombre del dueño de la tienda creada y se muestre por pantalla a la vez que el horario de la misma. c. Ejecuta el programa y compara el resultado con la salida esperada. Salida esperada: Horario: 9:00 AM – 21:00 PM Miguel Angel Corella, Propietario 4. Añade las variables “horaApertura” y “horaCierre” a la clase como enteros (tomarán valores entre 0 y 23). Sus valores iniciales deberán ser 9 y 21 respectivamente. Las variables deben inicializarse dentro del constructor de la clase. a. Añade los métodos necesarios (de acceso y modificación) para las variables creadas (gethoraApertura, sethoraApertura, gethoraCierre, sethoraCierre). b. Añade un método “tiendaAbierta” que devuelva un valor bolean en función de si, a la hora recibida como parámetro entero (entre 0 y 23) la tienda está abierta o no. c. Modifica la función “horarioAtencion” para que muestre las horas de apertura y cierre que estén almacenadas en la clase. d. Añade funcionalidad al main de prueba para que incluya los mensajes “Estamos abiertos/cerrados” en función de una hora que se le pase como argumento de entrada. e. Ejecutar el código y compara el resultado con la salida esperada del programa. Salida esperada: Estamos abiertos. Horario: 9:00 AM – 21:00 PM Miguel Angel Corella, Propietario Ejercicio 5 Crear dentro del practico4.b creado en el ejercicio anterior la clase “Persona” 1. Implementar la clase “pública” Persona, con las variables: nombre, apellido, dirección, tipo, numeroDocumento. 2. Añade los métodos necesarios (de acceso y modificación) para las variables creadas (getNombre, setNombre, getApellido, setApellido, getDirección, setDirección, setTipo, getTipo, setNumeroDocumento, getNumeroDocumento). 2. Crear un constructor para la clase que inicialice las variables con valores nulos. 3. Crea un método main (public static void main) que realice las siguientes tareas: 2° Cuatrimestre 2007 – Tecnicatura FACULTAD DE ECONOMIA Y ADMINISTRACION DEPARTAMENTO DE CIENCIAS DE LA COMPUTACION CÁTEDRA PROGRAMACION GENERAL a. Crear una instancia de Persona b. Llamar a cada uno de los métodos para setear el valor de de cada variable de la clase c. Ejecutar el programa y comprobar que la salida es la esperada. Ejercicio 6 Modificar la clase Disquera del ejercicio 3 de modo tal que la variable instancia dueño referencie a un objeto tipo persona del ejercicio 4. Ejercicio 7 a - Crear una clase Dueño que almacene nombre, apellido, dirección, tipo, numeroDocumento, CUIL, CUIT, y si es responsable inscripto o no. Vea como implementar la clase Dueño para que herede de la clase Persona y además contenga los datos propios de Dueño. b - Modifique la Clase Disquera del ejercicio 5 de modo tal que la variable instancia dueño que referencie a un objeto tipo Dueño del ejercicio 4. 2° Cuatrimestre 2007 – Tecnicatura