Git Product home page Git Product logo

examenfp's Introduction

PROGRAMACIÓN JAVA 11/12/2023

Se está desarrollando en Java una aplicación de gestión para una empresa. El código está

organizado en tres paquetes distintos:

company: En este paquete irán las clases comunes a toda la aplicación.

utils: En este paquete irán las clases de utilidad general para varias aplicaciones.

main: En este paquete se realizará una pequeña aplicación de prueba.

Ya se encuentra realizada una parte casi funcional para la aplicación de prueba en el paquete main.

Muchas de las clases elaboradas disponen de un método main propio para probar su funcionalidad.

Debemos completar la aplicación de modo que podamos probar llevando a cabo los siguientes

puntos:

NOTA: No os obsesionéis con que funcione. Si no hacéis bien algún punto es posible que no podáis probar. Podéis hacer main

propios en vuestros desarrollos para probar lo que necesitéis.

EXERCICIO 1.- (1 punto)

Queremos representar los días de la semana en el paquete utils mediante un elemento llamado DiaSemana

accesible desde cualquier sitio y del que únicamente pueden existir los siguientes objetos: LUNES, MARTES,

MIÉRCOLES, JUEVES, VIERNES, SÁBADO, DOMINGO.

EXERCICIO 2.- (1 punto)

Queremos representar los meses del año en el paquete utils mediante un elemento llamado Mes accesible desde

cualquier sitio y del que únicamente pueden existir los siguientes objetos: ENERO, FEBRERO, MARZO, ABRIL,

MAYO, JUNIO, JULIO, AGOSTO, SEPTIEMBRE, OCTUBRE, NOVIEMBRE, DICIEMBRE.

Estos objetos tendrán el método public int dias(int año); que retornará el número de días que tiene el mes,

teniendo en cuenta el año pasado como argumento que puede ser bisiesto.

Un año bisiesto es aquel que es divisible entre 400 o que es divisible entre 4 y no entre 100.

EXERCICIO 3.- (2 puntos)

En el paquete utils tenemos los enum Provincia, Country y Bank. Queremos completar los siguientes aspectos:

  1. Añadir un método ESTÁTICO a estos enum sobrecargado si es necesario llamado get que permita:
  • Obtener un objeto Country a partir de su código ISO de dos letras lanzando una

IllegalArgumentException en caso de que no exista.

  • Obtener un objeto Country a partir de su código numérico de país lanzando una

IllegalArgumentException en caso de que no exista.

  • Obtener un objeto Bank a partir de su código bancario, en caso de no encontrarse un banco con ese

código debe retornar el elemento UNKNOWN_BANK.

  • Obtener un objeto Provincia a partir de su código alfabético o numérico, lanzando una

IllegalArgumentException si el código no corresponde con ninguna provincia.

b) Sobrescribir el método necesario para que la representación como String de un Country sea "nombre del país" y

el de un Bank "[código] nombre del banco".

EXERCICIO 4.- (2 puntos)

El número de la Seguridad Social en España consiste en un número de 12 dígitos en los que los 2 primeros

números representan la provincia, los 8 siguientes son el número de la seguridad social y los últimos 2 son los

dígitos de control.

Para calcular los dígitos de control, se calcula el resto de la división de los 10 primeros dígitos entre 97. Un NSS

es correcto si el número de control así calculado coincide con el número de control especificado en el número

completo de la seguridad social.

Se pide desarrollar en el paquete utils la clase NSS que representa un número de la seguridad social y que tiene los

siguientes métodos:

public NSS(String numss): Constructor. Lanza una IllegalArgumentException si el NSS no es correcto

(verificando los dígitos de control).

public String control(): Retorna los dígitos de control del NSS.

public int numero(): Retorna el número de la SS del objeto (sin tener en cuenta la provincia y el número de

control).

public Provincia provincia(): Retorna el objeto Provincia que corresponde con el NSS. Se debe usar el método

estático de Provincia Provincia get(String code) para obtener la provincia (aunque no hagáis el método en el

ejercicio 3).

NOTA: Debéis hacer uso de Long y el tipo primitivo long para gestionar números de 64 bits que necesitaréis para operar con el

número de 10 dígitos. Otra alternativa es el uso de BigInteger.

EXERCICIO 5.- (3 puntos)

Queremos hacer una gestión de personal basada en Trabajadores y Candidatos.

Un Candidato es una persona que tiene posibilidad de trabajar en la empresa, y se quiere registrar sobre él la

siguiente información únicamente accesible desde la propia clase o clases heredadas:

Nif dni: Es un objeto de tipo Nif definido en el paquete utils que indica el DNI del candidato.

String apellidosNombre: Almacena los apellidos y nombre del candidato.

String dirección: Almacena la dirección donde vive el candidato.

String teléfono: Almacena el teléfono donde vive el candidato.

String email: Almacena el correo electrónico del candidato.

El DNI no es modificable.

Un Trabajador es un Candidato que firma un contrato laboral con la empresa. Sus atributos solo son accesibles

desde la propia clase, y son:

NSS nss: Es un objeto de tipo NSS definido en el paquete utils que indica el Número de la Seguridad Social del

trabajador.

LocalDate fechaAlta: Es la fecha de alta en la empresa.

Iban iban: Es un objeto de tipo Iban definido en el paquete utils, que indica la cuenta bancaria para el ingreso del

salario.

double salario: Salario mensual del trabajador.

Ni el número de seguridad social ni la fecha de alta son modificables.

La representación como String tanto de los trabajadores como de los candidatos es el [DNI] apellidos y nombre.

Estas dos clases deben tener un constructor que reciba toda la información de los atributos y un

constructor de copia encargado de crear una copia del trabajador/candidato recibido en el constructor.

Para que el constructor de copia funcione correctamente debe implantarse también en las clases que lo precisen.

Por ejemplo, dos objetos distintos (que no son el mismo objeto) no pueden compartir un mismo objeto Iban.

Se pide desarrollar completamente estas dos clases incluyendo los métodos getter y setter necesarios para

gestionar los distintos atributos.

EXERCICIO 6.- (1 punto)

En el paquete utils tenemos desarrollada la clase Storage. Esta clase gestiona el almacenamiento y consulta de

objetos en un Object[]. A partir de esta clase, tenemos desarrollada en el paquete company la clase Curriculos,

que gestiona el almacenamiento de los objetos Candidato.

Teniendo en cuenta que los Trabajadores son Candidato, se pide desarrollar completamente la clase Plantilla

que permite gestionar el almacenamiento de los trabajadores de la empresa a través de la funcionalidad ofrecida

por Storage.

examenfp's People

Contributors

sofi131 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.