Está en la página 1de 6

Prueba1-1.

pdf

bilbostiff

Programación

3º Grado en Ingeniería Telemática

Escuela Técnica Superior de Ingeniería


Universitat de València

Reservados todos los derechos.


No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
Programación (GIT) Prueba 1, Página: 1

Nombre:

Ejercicio 1

Dada la clase:

java

class Rectangulo{
private int x;
private int y;
private int ancho;
private int alto ;
}

1. Proporciona un constructor para esta clase que permita crear instancias a partir de los valores
proporcionados.

2. Sobreescribe el método public String toString() de la clase Object

3. Sobreescribe el método public boolean equals(Object o) de la clase Object teniendo en cuenta


que dos rectángulos son iguales si tienen el mismo ancho y alto.

Ejercicio 2

Dada la siguiente jerarquía:

java

public interface VideoEncoder{


public void encode(String codec);
}

public abstract class AbstractVideoEncoder implements VideoEncoder{


public void preprocesa(){
// ...
}
public void postprocesa(){
// ...

Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-5257901
Programación (GIT) Prueba 1, Página: 2

}
public void doWork(){
preprocesa();
encode();
postprocesa();
}
}

public class VideoEncoderImpl extends AbstractVideoEncoder{


public void encode(String codec){
// ...
}
}

1. Explica por qué se ha tenido que declarar la clase AbstractVideoAction como abstracta.

2. Enumera todas los mensajes que se pueden enviar a un objeto del tipo VideoEncoder a través de
una referencia del tipo VideoAction.

3. Explica si las siguientes sentencias son válidas: java

VideoAction va = new VideoEncoder();


((AbstractVideoAction)va).doWork();

4. Explica si la siguiente sentencias es o no válida: java

AbstractVideoAction[] actions = new AbstractVideoAction[100];

Ejercicio 3

Dadas las interfaces funcionales:

java

Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-5257901
Programación (GIT) Prueba 1, Página: 3

Nombre:

interface Predicate<T>{
public boolean test(T t);
}
interface UnaryOperator<T,T>{
public T apply(T t);
}
interface Consumer<T>{
public void accept() ;
}

y la clase:

java

class Contenedor<T>{
private T[] datos;

// ...
public int cumplenPredicado(Predicate<T> p){
// ...
}

public List<T> operator(UnaryOperator<T,T> op){


// ...
}

public void consume(Consumer<T> c){


// ...
}
}

si tenemos una instancia de este tipo: java

Contenedor<String> cadenas = new Contenedor<String>();


// Almacenar cadenas en c

y sabiendo que la clase String declara e implementa los métodos:

java

public boolean contains(String s)


public String substring( int ini , int cuantos)
public int length()

proporciona las sentencias, usando expresiones lambda, que permitan conseguir la funcionalidad indicada:

1. Obtención del número de cadenas que contienen la cadena "Computer"

2. Obtención de una lista con las cadenas truncadas tomando los caracteres que van desde el 10 hasta
el 20.

3. Mostrar el número de caracteres de cada una de las cadenas.

Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-5257901
Programación (GIT) Prueba 1, Página: 4

Ejercicio 4

La siguiente clase representa un error que se puede producir al intentar usar un codificador de vídeo no
soportado por la aplicación: java

public class EncoderNotSupportedException extends Exception{


public EncoderNotSupportedException(String s){
super(s) ;
}
}

Supongamos que modificamos la declaración de la interfaz VideoEncoder para usar la excepción:

java

public interface VideoEncoder{


public void encode(String codec) throws EncoderNotSupportedException;
}

Argumenta si hay que modificar el código de la clase AbstractVideoEncoder y ofrece una posible imple-
mentación.

Ejercicio 5

Ofrece una implementación del método public int cumplenPredicado(Predicate<T>p) de la clase


Contenedor<T> que use dos hilos. Una posible estrategia sería que cada hilo recorra una mitad del vector.
Se puede asumir que el vector tiene un número par de elementos. Es posible que se tenga que definir una
clase adicional.

Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-5257901
Programación (GIT) Prueba 1, Página: 5

Nombre:

Ejercicio 6

Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-5257901

También podría gustarte