Está en la página 1de 4

UNIVERSIDAD NACIONAL DE INGENIERIA

Facultad de Ingeniería Industrial y de Sistemas


PRACTICA CALIFICADA I
Curso : Programación orientada a objetos
Código : SI302V
Alumno :
CICLO: 2022-II

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.

Tenemos dos tipos de empleados: repartidor y comercial.

• 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

Cree una clase llamada Serie con las siguientes características:


• Sus atributos son numero de temporadas, creador.
• Por defecto, el número de temporadas es de 3 temporadas.
• Los constructores que se implementarán serán:
o Un constructor por defecto.
o Un constructor con todos los atributos, excepto entregado y id.
• Los métodos que se implementara serán:
o Se encapsularán todos los atributos excepto entregado.
o Sobrescribe el método toString con el siguiente formato:
[nroTemporadas#creador #entregado#titulo #genero#isbn]
Un ejemplo sería:
[6#George R. R. Martin #false#Juego de tronos#Accion#1245306406151245306406159]
o 2 Series son iguales si tienen el mismo isbn y son del mismo genero.

Crearemos una clase Videojuego con las siguientes características:


• Sus atributos son horas estimadas y compania.
• Por defecto, las horas estimadas serán de 10 horas.
• Los constructores que se implementarán serán:
o Un constructor por defecto.
o Un constructor con todos los atributos, excepto entregado y id.
• Los métodos que se implementara serán:
o Se encapsularán todos los atributos excepto entregado.
o Sobrescribe los métodos toString con el siguiente formato:
[horasEstimadas-compania|entregado-titulo-genero-isbn]
Un ejemplo sería:
[15-'Santa Monica|false-'God of war 3-'Accion-'9780306406539780306406539]

Ahora crea una aplicación ejecutable “Ejecuta” y realiza lo siguiente:


• Crea dos arrays, uno de Series y otro de Videojuegos, de 4 posiciones cada uno.
• Entrega algunos Videojuegos y Series con el método entregar().
• Cuenta cuantos Series y Videojuegos hay entregados. Al contarlos, devuélvelos (llamar al
método devolver) e imprime en consola los valores de sus atributos.
• Valide que no se encuentren series repetidas.
• Imprima el último id generado.

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ó:

Escriba un programa que reciba por teclado un String que indique:


• El orden en que se mostrará la figura (el número de caso): ord
• El número de casillas “n” del n-goro: ncasilla
Todo esto con el siguiente formato:
ord1 – nCasilla1 > ord2 – nCasiilal2 > ord3– nCasilla3 …

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:

Nota: System.out.print sive para escribir un carácter sin saltar de línea

Suba el código fuente a Github (1 punto)


Suba la carpeta con el código fuente y el enunciado de esta práctica en un directorio
privado en github llamado Practica-1-2022II y brinde acceso al profesor del curso.

También podría gustarte