c) Explicar qué es un BreakPoint en Netbeans y para qué sirve. 0,5 punto

Documentos relacionados
Arrays. Programación. Licenciatura de Lingüística y Nuevas Tecnologías

public static void main(string[ ] args) { Numero f1 = new Numero(3); Numero f2 = new Numero(4); Numero f3 = f1; f1.value = f2.value; Numero f4 = null;

Flujos (streams) Programación. Licenciatura Lingüística y Nuevas Tecnologias Nadjet Bouayad-Agha

Unidad II. Fundamentos de programación en Java. Ing. José Luis Llamas Cárdenas

Por el contrario System.in es un byte Stream sin caracteristicas de character Stream.

HOJA DE EJERCICIOS 5 PROGRAMACIÓN CON EXCEPCIONES EN JAVA

Prueba N o 1. Programación II

PROGRAMACIÓN ORIENTADA A OBJETOS 10/02/2009. Examen de Java. Nombre: DNI: Titulación:

Conceptos más avanzados de Programación Orientada a Objetos

INTRODUCCION A LA PROGRAMACION EN JAVA

Test : Conteste exclusivamente en una HOJA DE LECTURA ÓPTICA, no olvidando marcar que su tipo de examen es A.

Docente: Juan Carlos Pérez P. Alumno : Fecha : Nota:

Programación con Java Básico

1. Cuántas sentencias hay en la secuencia principal del siguiente programa?

Conceptos a tratar. Fundamentos de la Programación Orientada a Objetos Ampliación sobre clases y objetos

HOJA DE EJERCICIOS 3 HERENCIA ENTRE CLASES Y POLIMORFISMO DE MÉTODOS

Unidad Didáctica 3. Tipos genéricos. Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos

Programación orientada a objetos

Java en 2 horas. Rodrigo Santamaría

Introducción al lenguaje Java

Java en 3 horas. Ampliación de Sistemas Operativos. Rodrigo Santamaría

Programación Orientada a Objetos con Java. Elementos Básicos del Lenguaje Java. Creación de un objeto. Creación de un objeto. Creación de un objeto

Tema 4. Excepciones en Java

Guía - Taller # 2 (JAVA)

! Qué es la POO?! Un paradigma de programación. ! No hay paradigmas mejores ni peores! Todos tienen sus ventajas e inconvenientes

Introducción a Java. Introducción a Java. Programación I

Arquitecturas cliente/servidor

CURSO : ESTRUCTURA DE DATOS DOCENTE : ING. JUAN ZEVALLOS VALLE

Clases Abstractas e Interfaces

Curso de Java Introducción a la Programación I

String s = t.readline() 4. Si el valor leído desde teclado, se requiere almacenar en una variable de un tipo diferente a

PROGRAMACIÓN ORIENTADA A OBJETOS (L40629) Sabino Miranda-Jiménez

Colecciones. Nadjet Bouayad-Agha Programación 2007

FACULTAD DE ECONOMIA Y ADMINISTRACION DEPARTAMENTO DE CIENCIAS DE LA COMPUTACION CÁTEDRA PROGRAMACION GENERAL. Trabajo Práctico Nº 4

REPASO ARRAYS O ARREGLOS UNIDIMENSIONALES EN JAVA. EJEMPLOS DE CÓDIGO. (CU00903C)

FACULTAD DE INGENIERÍA

EXAMEN PROGRAMACIÓN 21 de Septiembre de 2007 INGENIERÍA INFORMÁTICA Primera parte: Cuestiones 1,5 horas

Práctica #5: Uso de control de flujo, Excepciones y Lectura Estándar

Definición. Mónica E. García García Feb 07

Programación orientada a objetos. Resumen de Temas Unidad 5: Herencia

Tema 6: Memoria dinámica

5. Sentencias selectivas o condicionales

Clases y herencia. FJP Unidad 8. Diseño de clases

Agradecimientos. Nota de los autores. 1 Problemas, algoritmos y programas 1

Tema 7: Polimorfismo. Índice

USO DE LOS OBJETOS JLABEL, JTEXTFIELD Y JBUTTON

En Java, un arreglo es un grupo de variables (llamados elementos o componentes) que contienen valores, todos del mismo tipo.

INDICE DEL CURSO APRENDER PROGRAMACIÓN JAVA DESDE CERO. PROGRAMACIÓN ORIENTADA A OBJETOS (CU00601B)

Carlos Montenegro. Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas

FACULTAD DE INGENIERÍA

CAPITULO 4. AGRUPAR OBJETOS

Principios de Computadoras II

Programación Orientada a Objetos. Tema 7: Persistencia

Introduciendo datos desde el

Para leer la entrada de consola, lo primero que se hace es construir un Scanner que este asociado al flujo de entrada estándar System.

Ficheros y streams. Desde el punto de vista de Java, cada fichero no es más que una secuencia o flujo de bytes [stream].

Curso Informática Lección 2. Introducción a la programación en Java

Concurso: Cuánto sabes de JAVA?

Seminario 1 Introducción a Java PROGRAMACIÓN 3

Arrays unidimensionales. Dim.Option Base. Erase. Ejemplos en Visual Basic (CU00311A)

Diseño y Programación Orientados a Objetos 29 de Abril de Primer Certamen

Clases en Java. Declaración

Guia#9: Punteros en C#.

Universidad Nacional del Santa FACULTAD DE INGENIERIA E.A.P de Ingeniería de Sistemas e Informática NETBEANS 7.0

PROGRAMACIÓN ORIENTADA A OBJETOS (L40629) Sabino Miranda-Jiménez

ÍNDICE DEL LIBRO Y DEL EBOOK APRENDER A PROGRAMAR EN JAVA DESDE CERO. CURSO PASO A PASO.

Apunte Laboratorio ALPI - El lenguaje de programación Pascal

Java Avanzado Facultad de Ingeniería. Escuela de computación.

Partes de un programa en Java. A. Ejemplo de un Programa en Java /* Programa Ejemplo de Java: Muestra una Ventana Archivo: Ejemplo1.

Universidad de Cantabria

Herencia en Java. Agustín J. González Diseño y Programación Orientados a Objetos

Objetivos de la sesión. Aplicación de consola 7/30/11. Código con que se inicia un programa en Visual C# (aplicación de consola)

Práctica III: Streams, Readers y Writers

Clases. Java: Clases y Objetos. Clases. Clases. Modificadores de clase. Definición de una clase. Cada objeto es un ejemplar de una clase

Herencia Java y Servicios Web I Master en Ingeniería Matemática

PROGRAMACIÓN ORIENTADA A OBJETOS

CÁTEDRA DE LENGUAJE DE PROGRAMACIÓN JAVA 2014

PARA QUÉ SIRVEN LAS INTERFACES JAVA. IMPLEMENTAR UNA INTERFAZ DEL API. VENTAJAS. EJEMPLOS BÁSICOS. (CU00697B)

Arrays. Los arreglos son una colección de objetos del mismo tipo los cuales tienen un nombre en común y su acceso es mediante un índice.

Programación. Arrays. Dr. (c) Noé Alejandro Castro Sánchez

I. Introducción a la programación orientada a objetos y al lenguaje JAVA Colegio Reuven Feuerstein --Javier Navarro

Ejercicio 1 (proyecto prlistas, paquete listas)

Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones

CONCEPTOS BÁSICOS PROGRAMACIÓN ORIENTADA A OBJETOS. Ing. Martha Tello

Derechos de Acceso: COMPOSICION

Reconociendo tipos de excepciones comunes

Metodología y Tecnología de la Programación

Diferentes Perspectivas de un Ordenador

int A[][]=new int[3][4]

Práctica 3. Paso de parámetros entre subrutinas. 3. Consideraciones sobre el paso de parámetros

Agenda. Guía en 5 pasos para el diseño orientado a objetos

Depto. Ingeniería de Sistemas Telemáticos Universidad Politécnica de Madrid ETSI Telecomunicación Fundamentos de Programación 15 de diciembre de 2011

Es ambigua, ya que la división y la multiplicación tienen el mismo grado de precedencia, qué parte de la expresión se realiza primero?

INTERFACE LIST DEL API JAVA. CLASES ARRAYLIST, LINKEDLIST, STACK, VECTOR. EJEMPLO CON ARRAYLIST. (CU00920C)

Tutorial básico del entorno de desarrollo Eclipse.

16. Herencia Definición de herencia. 168 A. García-Beltrán y J.M. Arranz

Programación Orientada a Objetos. Resumen de Temas Unidad 3: Constructores y destructores

TECNICAS DE PROGRAMACION Universidad Católica Los Angeles de Chimbote METODOS CONSTRUCTORES Y LA REFERENCIA THIS

Curso de Java POO: Programación orientada a objetos

11. Algunas clases estándar de Java (II)

Transcripción:

Examen de Programación (13294) Convocatoria de Junio 2008 Licenciatura de Lingüística y Nuevas Tecnologías Pregunta 1 a) Explicar qué es un NullPointerException ( por qué ocurre? cuando se produce?). Dar un ejemplo de código donde se puede producir este tipo de problema. Un NullPointerException es un error que ocurre a la ejecución. Se produce cuando intentamos acceder a las variables o métodos de un objeto con una variable de objeto que no apunta a ningun objeto (referencia nula). Por ejemplo: String cadena=null; if (cadena.length()>0) System.out.println( YES! ); La variable de objeto cadena no apunta a ningun objeto, y al llamar al método length() del objeto de tipo String se produce una excepción de tipo NullPointerException. b) Explicar qué es un ArrayIndexOutOfBoundException ( por qué ocurre? cuando se produce?). Dar un ejemplo de código donde se puede producir este tipo de problema. Un ArrayIndexOutOfBoundException es un error que ocurre a la ejecución. Se produce cuando intentamos acceder a un elemento dentro de un array usando un índice que está fuera del rango de índices de este array. Por ejemplo: String[ ] cadenas = { A, B, C ; cadenas[3] = D ; Con la segunda instrucción intentamos acceder al cuarto elemento del array (índice 3), y este array solo contiene 3 elementos. c) Explicar qué es un BreakPoint en Netbeans y para qué sirve. Un BreakPoint sirve a la hora de depurar un programa (hacer debugging). Se pone en cualquiera línea de código de un programa y al ejecutar el programa en modo debugging, se puede acceder directamente a esta línea de código, sea donde sea, saltandose todas las instrucciones anteriores. Sirve por si nos interesa mirar la ejecución del código a partir de algun punto en particular.

Pregunta 2 a) Para cada uno de estos trozos de código, decir si es correcto () o incorrecto (). Un código incorrecto no compila mientras que un código correcto puede compilar (dado una compleción correcta de la clase), independientemente de si hace algo relevante o no. String st = new StringTokenizer( hello, how are you? ); Word word = new Word( el ); System.out.println(word); int i = new Integer(3); String cadena = hola ; cadena = replaceirst( h, H ); Morpho morpho = new Morpho( el, Det ); Word word = morpho; b) Explicar por qué, para comparar dos objetos, no sirve el operador de igualdad ==. El operador de igualdad sirve para comparar variables de tipo básico como int o char. Si lo usamos para intentar comparar dos objetos, entonces lo que se comparará serán las referencias (contenidas en las variables de objetos) y no los objetos (a los que apuntan las variables de objetos). Para comparar dos objetos tenemos que usar métodos especificos, como equal() en el caso de String. c) Explicar como funciona el sistema de referencias por atrás (back references = $1,$2, etc.) en el método replaceirst de String. Dar un ejemplo de uso, sabiendo que la firma de este método es: String replaceirst(string expresionregular,string cadenadesustitucion). Las subcadenas que queremos sacar de nuestra cadena las ponemos entre parentesis dentro de la expresión regular (primer argumento de replaceirst). Cada par de parentesis corresponde a una referencia por atrás: el primer par corresponde a $1, el segundo par a $2, etc. Por ejemplo: String cadena = 10:30 ; cadena = cadena.replaceirst( (.+):(.+), $1$2 ); El $1 corresponde al primer par de parentesis (.+) es decir 10, y el $2 al segundo par (.+) es decir 30. Con este replaceirst, sustituimos 10:30 por 1030.

Pregunta 3 Decir para cada una de estas afirmaciones si es erdadera () o alsa (). 1,5 punto 1. Los métodos del paquete TextIO son métodos de instancia. 2. Un método definido como static es un método que solo se puede llamar dentro de la misma clase en la que está definido. 3. Un paquete (package) define un conjunto de métodos. 4. Una variable de instancia no puede ser de tipo básico. 5. Una clase puede tener más de un constructor. 6. Solo se puede crear un objeto por clase 7. Un constructor siempre devuelve la referencia de un objeto 8. Una API es un entorno para desarollar programas escritos en Java mucho más potente que un editor como Scintilla Scite. 9. Una clase siempre tiene que contener el método: public static void main(string[ ] args) 10. Un método que devuelve un valor tiene que contener una(s) instrucción(es) return. Pregunta 4 a) Explicar qué es un BufferedReader. Un BufferedReader es un flujo de caracteres caracterizado por el hecho que permite leer líneas enteras con su método readline(). b) Explicar de manera general qué hace este trozo de programa. InputStreamReader isr = new InputStreamReader(System.in); BufferedReader br = new BufferedReader(isr); String line = br.readline(); br.close(); isr.close(); Este programa lee una línea entrada por el usuario desde el flujo de entrada estándar (es decir desde el teclado). c) Escribir el código que coge dos palabras como argumento de la línea de comandos y los imprime a la pantalla. El código tiene que averiguar antes de usarlos que el usuario ha entrado los dos argumentos. 0,25 punto public static void main(string[] args) { if (args.length < 2) { System.out.println( The program needs two arguments! ); System.exit(0); System.out.println( Has entrado: + args[0] + y + args[1]);

d) Mostrar como se ejecuta este código (la clase se llama P4) desde la ventana cmd, entrando los dos argumentos. Redirigir el flujo de salida estándar a un fichero. 0,25 punto java P4 hello hola > C:\P4.txt Pregunta 5 a) Para cada uno de estos trozos de código, decir si es correcto () o incorrecto (). Un código incorrecto no compila mientras que un código correcto puede compilar (dado una compleción correcta de la clase), independientemente de si hace algo relevante o no. String[ ] array = new String[2]; array[2] = hola ; int i = array[0].length() + 1; array[0] = new Integer(2); array[1] = array[0]; array[0] = hello ; array[1] = 2; String[ ] array = { hello ; b) Qué imprime el siguiente código? int[ ] notas = new int[4]; notas[0] = 0; notas[1] = 10; for (int i=0;i< notas.length;i++) { System.out.println(notas[i]); Imprime: 0 10 0 0 c) Explicar (de forma general, sin reescribir el código) como se tendria que reescribir el código para que se impriman solo las notas asignadas. El problema es que se imprimen elementos del array al que no le han sido asignados ningun valor. Pero el valor por defecto de una variable de tipo int es 0, o sea que no se distingue entre un 0 que es el valor asignado y un 0 que es el valor por defecto. Para que se impriman solo los valores asignados, tendriamos que usar un array de objetos, por ejemplo de Integer, y averiguar que cada elemento no es null antes de imprimirlo.

Pregunta 6 a) Reescribir el código de la pregunta 5b anterior con un ArrayList. Los métodos/constructores relevantes de ArrayList son: ArrayList() add(object obj) int size( ) Object get(int index) Constructor de arraylist Método de ArrayList. Añade un objeto al final del arraylist. Método de ArrayList. Devuelve el tamaño actual del ArrayList Método de ArrayList. Devuelve el objeto dentro del ArrayList a la posición index. ArrayList notas = new ArrayList(); notas.add(new Integer(0)); notas.add(new integer(10)); for (int i=0;i< notas.size();i++) { System.out.println(notas.get(i).intalue()); b) Explicar las tres diferencias principales entre un array estático y un array dinámico en Java. 1) Un array estático tiene un tamaño fijo a su creación que es su tamaño máximo que no puede cambiar. Un array dinámico, a su creación, tiene un tamaño cero, que se va incrementando (o decrementando) cada vez que añadimos (o eliminamos) un elemento. 2) Un array estático puede contener elementos de tipo básico o de tipo objeto mientras que un array dinámico solo puede contener elementos de tipo objeto. 3) Un array estático solo puede contener elementos de un mismo tipo, declarado a la declaración de la variable de tipo array, mientras que un array dinámico puede contener objetos de cualquier tipo, mientras sean objetos. c) Para cada una de estas afirmaciones sobre HashMap decir si es erdadera () o alsa (). Las claves son únicas. Una misma clave puede tener más de un valor. Se recorre el HashMap recorriendo la lista de claves con un Iterator. La clave tiene que ser de tipo objeto pero el valor puede ser de tipo básico u objeto. A la creación del objeto de tipo HashMap, su tamaño es uno.

Pregunta 7 a) Para cada una de estas afirmaciones sobre conceptos de programación orientada a objetos decir si es erdadera () o alsa (). Si tenemos dos métodos en una clase con el mismo nombre pero el tipo del argumento de entrada es diferente, entonces esto se llama overriding (redefinición de métodos) Se pueden instanciar objetos de una clase abstracta Un método abstracto no se puede llamar desde fuera de la clase donde esta definido Cualquiera clase de Java menos la clase Object hereda de alguna otra clase La palabra reservada extends se usa para decir que una clase hereda de otra. b) En la última práctica de la asignatura, llamamos al método imprimir() de manera polimórfica. Explicar qué quiere decir esto y como se realizan estas llamadas. En la última práctica todas las subclases de Morpho, es decir Det, erb, Nom, Adj, etc, definen un método imprimir() que imprime el lema, la categoría y los rasgos morfológicos relevantes para cada categoria. Dentro del método main, llamamos a un método que coge como argumento una línea del corpus que analizamos y devuelve un objeto de tipo Morpho, que puede ser de una de las subclases de Morpho (pues Morpho no se instancia, es una clase abstracta). Luego llamamos al método imprimir() de este objeto. Lo que pasa es que según que tipo de objeto es, se llama al método imprimir() adecuado, es decir al método imprimir() de Det si el objeto es de tipo Det, al método imprimir() de Nom si el objeto es de tipo Nom, etc. Esta habilidad de un mismo mensaje (el método imprimir()) de comportarse de una forma distinta según el objeto al que esta asociado es polimorfismo. Nos permite recorrer el corpus línea por línea e ir imprimiendo los análisis morfológicos con una sola llamada, sin preocuparnos por el tipo de objeto e el método llamado en concreto.