PrimeraPractica2022IIv1 1
PrimeraPractica2022IIv1 1
PrimeraPractica2022IIv1 1
Pregunta 1 (7 puntos)
Cree una clase llamada Empleado que siga las siguientes condiciones:
• Sus atributos son: nombre, edad, DNI, sexo (H hombre, M mujer), peso y altura y salario
base y el salario total. Se deberán encapsular los atributos, excepto el salario total el cual
solo tendrá un getter.
• Por defecto, todos los atributos menos el DNI serán valores por defecto según su tipo.
Sexo será hombre por defecto, usa una constante para ello.
• Se implantarán varios constructores:
o Un constructor por defecto.
o Un constructor con todos los atributos como parámetro, excepto el salario total.
• Los métodos que se implementarán son:
o calcularIMC(): calculara si el empleado está en su peso ideal (peso en
kg/(altura^2 en m)), si esta fórmula devuelve un valor menor que 20, la función
devuelve un -1 (está por debajo de su peso), si devuelve un número entre 20 y 25
(incluidos), significa que está en su peso ideal la función devuelve un 0 y si
devuelve un valor mayor que 25 significa que tiene sobrepeso, la función devuelve
un 1. Te recomiendo que uses constantes para devolver estos valores.
o esMayorDeEdad(): indica si es mayor de edad, devuelve un booleano. No será
visible al exterior.
o toString(): devuelve toda la información del objeto.
o obtenerDni(String dni): Este método será invocado cuando se construya el
objeto. Valida si el formato del dni ingresado es correcto ( es decir valida que esté
formado por 8 números y 1 caracter, un ejemplo: 44563413J). Si el formato del
dni no es válido se genera un nuevo dni usando el método generaDni.
o generaDni(): genera un número aleatorio de 8 cifras y una letra aleatoria. Este
método no será visible al exterior.
o Tener en cuenta que 2 empleados son iguales sin tienen el mismo dni;
• También tendremos una constante llamada PLUS, que tendrá un valor de 250 soles.
• El comercial, aparte de los atributos anteriores, tiene uno más: comision (double).
• El repartidor, aparte de los atributos de empleado, tiene otro llamado zona (String).
• Encapsula los atributos de las clases. Genera el constructor sin parámetros y otro que
reciba todos los parámetros.
• Sobreescribir el método toString() pára devuelve toda la información de los objetos.
• No se podrán crear objetos del tipo Empleado (la clase padre) pero si de sus hijos.
• Las clases tendrán un método llamado calcularPlus que según en cada clase tendrá una
implementación distinta. Este plus básicamente aumenta el salario del empleado.
1
o En comercial, si tiene más de 35 años y cobra una comisión de más de 150 soles, se le
aplicara el PLUS.
o La empresa entiende que para un repartidor es fundamental estar en buenas formas,
pues sus entregas se hacen generalmente a pie o en bicicleta por eso el cálculo de
plus:
o Si tiene menos de 25 y tiene un IMC “bueno” recibirá el PLUS
o Si adicionalmente al criterio anterior, reparte en la “zona3” no recibirá solo el
PLUS, sino 1.5 veces el PLUS.
• Las clases tendrán un método llamado calulcaSalarioTotal que nos permite
calcular el valor del atributo salarioTotal, que según en cada clase tendrá una
implementación distinta.
o En comercial, se calcula como salario base + comisión + plus
o En repartidor, se calcula como salario base + comisión.
Ahora, crea una clase ejecutable “Ejecuta” que haga lo siguiente:
• Genere 5 repartidores y 3 comerciales.
• Permita visualizar la información de cada comercial, ordenado en base nombre en al
nombre en orden ascendente, en caso sean iguales los nombres se ordenará en base al
salario en forma descendente.
• Para cada repartidor, deberá comprobar si está en su peso ideal, tiene sobrepeso o por
debajo de su peso ideal con un mensaje. Indicar para cada objeto si es mayor de edad.
Pregunta 2 (6 puntos)
Cree una clase llamada MaterialElectronico con las siguientes características:
• Sus atributos son: entregado, titulo, genero, isbn (vamos a suponer que para un material
electrónico se puede usar el estándar ISBN-13) y un id (entero). El atributo id es un valor
autogenerado estático que comienza en 1000.
o Se encapsularán todos los atributos excepto entregado e isbn. Para isbn sólo se generará
el método getter.
• entregar(): cambia el atributo entregado a true.
• devolver(): cambia el atributo entregado a false.
• isEntregado(): devuelve el estado del atributo prestado.
• Se implantarán varios constructores:
o Un constructor por defecto.
o Un constructor con todos los atributos, excepto entregado y id.
o Tenga en cuenta que cada vez que invoco a alguna de las sobrecargas de los
constructores el id se incrementa en 1.
• 2 materiales electrónicos son iguales si tienen el mismo isbn.
• obtenerIsbnCompleto(String isbn): Este método será invocado cuando se construya el
objeto. Permite calcular el carácter de verificación y agregárselo al isbn ingresado usando
el estándar ISBN-13. El algoritmo permite que cuando se le ingrese una cadena s de
exactamente 12 dígitos numéricos devuelva una cadena t con las siguientes propiedades:
o t consta de exactamente 13 dígitos numéricos
o s es un prefijo de t;
o la suma de todos los dígitos (13 dígitos, incluye el digito de verificación) en posiciones
impares en t (es decir, el primero, tercero, quinto, etc.), más tres veces la suma de
todos los dígitos en posiciones pares en t (es decir, el segundo, cuarto, etc.), es un
múltiplo de 10.
o Por ejemplo, la cadena s: 978030640615 produciría la cadena t: 9780306406157 de
salida, es decir al llamar al método obtenerIsbnCompleto(“978030640615”) la salida
sería 9780306406157.
2
• Esta clase tiene como clases hijas a la clase Serie y la clase Videojuegos
Pregunta 3 (6 puntos)
3.1. n-goros:
Un tablero n-goro es un tablero con n x (n + I) casillas. Nos referiremos a las casillas de
este tablero mediante las coordenadas (i, j), en donde i es la fila (contadas desde 1 y de
arriba a abajo) y j es la columna (contadas desde 1 y de izquierda a derecha). Como
ejemplo:
3
Una propiedad interesante es que se pueden visitar todas sus casillas haciendo el
siguiente recorrido por diagonales. Empezamos por la casilla (1, 1) y recorremos la
diagonal principal hacia la derecha y hacia abajo hasta llegar a la casilla (n, n). La siguiente
casilla a visitar sería la (n + I, n -4- I) que no existe porque nos saldríamos del tablero por
abajo. En estos casos siempre se pasa a la casilla equivalente en la primera fila, es decir,
la (1, n + 1). Ahora seguimos moviéndonos hacia la derecha y hacia abajo. Pero la siguiente
casilla sería la (2, n + 2) que no existe porque nos hemos salido por la derecha. En estos
casos se continúa por la casilla equivalente de la primera columna, es decir, la (2, 1). De
nuevo nos movemos hacia la derecha y hacia abajo, hasta alcanzar la casilla (n, n — I). La
siguiente casilla sería la (n + I, n), pero como nos saldríamos por abajo pasamos a la casilla
equivalente de la primera fila (I, n). Si se continúa con este proceso se termina visitando
todas las casillas del tablero goro. Como ejemplo este tablero de 4 x 5 casillas, rellenas
con el número que indica cuando se visitó:
Por ejemplo, la cadena "2-3>3-5>1-4" indica: que: (1) el caso 1 tiene 4 casillas, (2 el caso
2 tiene 3 casillas y (3) el caso 3 tiene 5 casillas. Debe mostrar los casos ordenados en
orden creciente. Para la cadena indicada en el ejemplo, la salida sería similar a la
siguiente: