2014LabConv1Sol

5
Alumno: Examen de Laboratorio Programacion (17-06-2014) Ejercicio 1 1.5 puntos En la pr´ actica 2 se proporcion´ o el paquete es.uv.animacion en el fichero animacion.jar ya implementado. Una de las tareas de la pr´ actica era implementar una clase Prueba que no estaba en el paquete es.uv.animaci´ on, y deb´ ıa contener el m´ etodo main que llamaba crear un objeto del tipo Ventana. Indica los dos pasos que hiciste en Eclipse para que la clase Prueba pueda usar las clases implementadas en el paquete animacion.jar. SOLUCI ´ ON Si necesitamos importar clases de un paquete que alguien ha desarrollado y que esta en un formato jar (comprimido) hay que indicarle a Eclipse que lo utilice. Eclipse necesitara acceder a este fichero en dos momentos: 1. en el momento de la compilaci´ on para comprobar que se est´ a utilizando de forma adecuada las clases declaradas y, 2. en el momento de la ejecuci´ on. Para indicarle que busque clases en un determinado fichero jar se sigue la siguiente secuencia: bot´ on derecho sobre el proyecto en la vista package explorer, seleccionamos la opci´ on Build path, y en el men´ u que aparece pulsamos sobre Configure build path. En la ventana seleccionamos la pesta˜ na Libraries y pulsamos sobre Add external jar para seleccionar el fichero jar. 1

description

programación

Transcript of 2014LabConv1Sol

  • Alumno: Examen de LaboratorioProgramacion (17-06-2014)

    Ejercicio 1

    1.5 puntos

    En la practica 2 se proporciono el paquete es.uv.animacion en el fichero animacion.jar yaimplementado. Una de las tareas de la practica era implementar una clase Prueba que no estabaen el paquete es.uv.animacion, y deba contener el metodo main que llamaba crear un objeto deltipo Ventana. Indica los dos pasos que hiciste en Eclipse para que la clase Prueba pueda usar lasclases implementadas en el paquete animacion.jar.

    SOLUCIONSi necesitamos importar clases de un paquete que alguien ha desarrollado y que esta en un formatojar (comprimido) hay que indicarle a Eclipse que lo utilice. Eclipse necesitara acceder a este ficheroen dos momentos:

    1. en el momento de la compilacion para comprobar que se esta utilizando de forma adecuada lasclases declaradas y,

    2. en el momento de la ejecucion.

    Para indicarle que busque clases en un determinado fichero jar se sigue la siguiente secuencia: botonderecho sobre el proyecto en la vista package explorer, seleccionamos la opcion Build path, y en elmenu que aparece pulsamos sobre Configure build path. En la ventana seleccionamos la pestanaLibraries y pulsamos sobre Add external jar para seleccionar el fichero jar.

    1

  • Examen de LaboratorioProgramacion (17-06-2014)

    Alumno:

    Ejercicio 2

    2.8 puntos (1+0.8+1)

    En la practica 4 se realizo un programa que gestionaba el personal de una empresa. Se propor-cionaba la clase trabajador

    public abstract class Persona {

    private St r ing nombre ;private St r ing fechaNac ;private St r ing f e cha In iCont ra to ;

    public Persona ( S t r ing nombre , S t r ing fechaNac , S t r ing f e c h a I n i ) {nombre = nombre ;fechaNac = fechaNac ;f e cha In iCont ra to = f e c h a I n i ;

    }}

    La clase Persona tiene cuatro clases hijas: Trabajador , Jefe de departameno, Personal delimpieza y Superjefe . Escribe la clase Trabajador sabiendo que de un trabajador nos interesasaber en que departamento trabaja.

    SOLUCION

    public class Trabajador extends Persona {private St r ing departamento ;

    public Trabajador ( S t r ing nombre , S t r ing fechaNac , S t r ing f e cha In i , S t r ing dep ) {super ( nombre , fechaNac , f e c h a I n i ) ;departamento = dep ;

    }}

    Escribe el metodo que consideres oportuno en la clase Trabajador de tal forma que cuandoqueramos sacar la informacion de un trabajador por pantalla nos saque la siguiente informacion:

    Nombre : Car los Mart nez SanchezFecha de Nacimiento : 01/07/1978Fecha de I n i c i o de contrato : 01/01/2012Departamento : ca l i dad

    sabiendo que la llamada desde el main para sacar la informacion por pantalla sera de este tipo

    persona p1 ;System . out . p r i n t l n ( p1 ) ;

    SOLUCION

    public St r ing toS t r i ng ( ){

    St r ing r e s = super . t oS t r i ng ( ) + Departamento+departamento \n ;

    return r e s ;}

    En la clase padre Persona se habra redefinido el metodo toString ( ) para mostrar los atributosgenericos a todas las personas definidos en la clase Persona.

    Escribe las sentencias necesarias en el main para almacenar las personas en memoria teniendo

    2

  • Alumno: Examen de LaboratorioProgramacion (17-06-2014)

    en cuenta que en la empresa no habra mas de 200 personas en el inventario. SOLUCION

    public stat ic void main ( S t r ing [ ] a rgs ) {Vector per sona l ;pe r sona l = new Vector(200) ;

    . . .}

    o

    public stat ic void main ( S t r ing [ ] a rgs ) {Persona [ ] pe r sona l = new Persona [ 2 0 0 ] ;

    . . .}

    3

  • Examen de LaboratorioProgramacion (17-06-2014)

    Alumno:

    Ejercicio 3

    2.8 puntos (0.4*7 preguntas). Las preguntas incorrectas restan -0.2

    En la practica 4 se realizo una simulacion para mostrar en una interfaz grafica de usuario valoresproducidos por sensores. En dicha simulacion suponemos que tenemos dos sensores: uno de tem-peratura y otro de humedad, y cada uno de ellos es un hilo productor. Los sensores producen datosque se almacenan en un recurso compartido que se encarga de almacenar los valores y de entregarlossi hay datos disponibles. Por otra parte tenemos otros dos hilos (consumidores) que se encargan deextraer y procesar los datos almacenados por los sensores. Si no haba datos disponibles, el recursocompartido pone a la espera al hilo que intenta extraer.

    Esta figura muestra las clases que componen la simulacion y la relacion entre ellas:

    Indica si las siguientes afirmaciones son Verdaderas o Falsas.

    1. La clase GestorSensores extiende la clase Thread. FALSO

    2. La clase SensorTemperatura extiende la clase Thread. VERDADERO

    3. La clase ProcesaTemperatura extiende la clase Thread. VERDADERO

    4. En la clase GestorSensores se definio un metodo getTemperatura como synchronized porquese uso un semaforo. FALSO

    5. La clase GestorSensores implementa la sincronizacion para cooperacion. VERDADERO

    6. En la clase GestorSensores el metodo getTemperatura no necesita la llamada notifyAll( ).VERDADERO

    7. En la clase GestorSensores el metodo setTemperatura no necesita la llamada notifyAll( ).FALSO

    4

  • Alumno: Examen de LaboratorioProgramacion (17-06-2014)

    Ejercicio 4

    2.9 puntos (2 + 0.9)

    En la practica 6 se realizo una aplicacion cliente/servidor usando el protocolo UDP. La claseSensorTemperatura simula el sensor de temperatura: genera un valor y enva el instante en el quese ha producido junto con el valor en un datagrama UDP a una direccion IP y puerto donde seescucha los datagramas siendo en este caso la direccion IP 147.156.28.34 y el puerto 6000. La claseProcesaTemperatura es la que se encarga de recibir los datagramas, extraer la informacion y mostrarlas estadsticas en una pantalla.

    Se muestra una posible implementacion de la clase SensorTemperatura

    public class SensorTemperatura extends Thread{private St r ing host ;private int puerto ;

    SensorTemperatura ( S t r ing h , int p){host = h ;puerto = p ;

    }

    public void run ( ){double minT = 0 . 5 ;double maxT= 1 ;double t = 20 ;try{

    DatagramSocket ds = new DatagramSocket ( ) ;DatagramPacket dp = new DatagramPacket (new byte [ 2 5 6 ] , 2 5 6 , InetAddress . getByName( host ) , puerto ) ;Random r = new Random( ) ;for ( int i= 0 ; i