PROG01 Tarea3

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 11

zubrienko_tatiana_PROG01_Tarea

Creamos un
proyecto nuevo
según indica el
enunciado, que
incluye 2 paquetes y
3 clases

CLASE FECHA
Creamos 3 atributos privados de tipo entero para seguir el principio de encapsulación

package datos;

public class Fecha {


private int dia;
private int mes;
private int anio;

Creamos un metodo constructor que por defecto pasa datos especificos a cada nueva
instancia de la clase

public void fecha() {


dia=1;
mes=1;
anio=2020;
}

Creamos un metodo que puede cambiar atributos de la clase, que recibe como parametros
3 valores de tipo entero, que a su ves se almacenan en variabkes DIA, MES y ANIO

public void dar_fecha(int dia, int mes, int anio) {


this.dia=dia;
this.mes=mes;
this.anio=anio;

zubrienko_tatiana_PROG01_Tarea 1
El metodo devuelve un dato tipo string, imprimiendo los atributos de la clase de forma
predeterminada

public String consultar_fecha() {


return "El día: " + dia + ", el mes: " + mes + ", el año: " + anio;
}

El metodo tipo boolean que recibe como paramentro variable mes de tipo entero y la
compruebe segun el criterio establecido: si es mayor o igual que 1 y a la vez menor o igual
que 12, el metodo devuelve TRUE, de lo contrario devuelve FALSE

public boolean mesCorrecto(int mes) {


if(1<=mes & mes<=12) {
return true;
}
else {
return false;
}
}

Un metodo que nos devuelve un String según el valor de la variable mes. Lo conseguimos
a través de un switch, que tiene 12 casos posibles. Si el usuario introduce valor mayor que
12, el metodo devuelve string "error"

public String nombreMes() {


switch(mes) {
case 1:
return "Enero";
case 2:
return "Febrero";
case 3:
return "Marzo";
case 4:
return "Abril";
case 5:
return "Mayo";
case 6:
return "Junio";
case 7:
return "Julio";
case 8:
return "Agosto";
case 9:
return "Septiembre";
case 10:
return "Octubre";
case 11:
return "Noviembre";
case 12:
return "Diciembre";
default:
return "Error";

zubrienko_tatiana_PROG01_Tarea 2
}
}

Y por ultimo, creamos un metodo que nos devuelve un string compuesto por valor de la
variable dia + el valor que nos devuelve metodo anterior nombreMes() y el valor de la
variable anio

public String lasFechas() {


return dia + " de " + nombreMes() + " de " + anio;
}
}

CLASE TRABAJADOR
Igual que en el ejemplo anterior creamos una nueva clase que riene varios atributos
encapsulados de tipo String, entero y tipo Fecha.

Hay 2 atributos (Nombre y Edad) que nos interesa “proteger” de posibles cambios en el
futuro debe a que no tiene ningun sentido que una instancia de presenta clase pueda
cambiar valor de estos variables. Lo conseguimos declarando una variable con metodo de
acceso private e indicando final

package datos;

public class Trabajador {


private final String nombre;
private final int edad;
private int categoria;
private int antiguedad;
private Fecha fecha_alta;

Creamos un metodo constructor que no pasa ninfunos parametros a nuevas instancias

public void trabajador() {


}

Un metodo que recibe como parametro un objeto tipo fecha y lo pasa a variable fecha_alta

public void dar_alta(Fecha fecha) {


fecha_alta = fecha;
}

Un metodo que nos permite instanciar un nuevo objeto de la clase pasandole como
parametros nombre (tipo str), edad, categoria y antiguedad (de tipo entero) y fecha de alta
(tipo Fecha)

zubrienko_tatiana_PROG01_Tarea 3
public void crear_trabajador(String nombre, int edad, int categoria, int antiguedad,
Fecha fecha_alta) {
this.nombre=nombre;
this.edad=edad;
this.categoria=categoria;
this.antiguedad=antiguedad;
this.fecha_alta=fecha_alta;
}

Un metodo que nos permite comprobar si la informacion introducida respecto a categoria


es valida o no. Si el numero introducido es menor que 0 o mayor que 3, el metodo
devuelve FALSE*

public boolean categoriaCorrecta(int categoria) {


if(categoria<=3 & categoria>=0) {
return true;
}
else {
return false;
}
}

Un metodo igual al anterior que comprueba si el numero que pasamos a variable categoria
cumple los criterios establecidos

public boolean antiguedadCorrecta(int antiguedad) {


if(antiguedad<=2 & antiguedad>=0) {
return true;
}
else {
return false;
}

Un metodo que nos devuelve un String "convertiendo" valor numerico que hemos
almacenado en variable CATEGORIA segun condiciones determinadas
Otro modo de hacer la mismoa operacion es mediante un SWITCH como en ejemplo de los
meses de Feccha

public String nombreCategoria(int categoria) {


if(categoria==0) {
return "EMPLEADO";
}
else if(categoria==1) {
return "ENCARGADO";
}
else if(categoria==2) {
return "DIRECTIVO";
}
else if(categoria==3) {
return "TÉCNICO";

zubrienko_tatiana_PROG01_Tarea 4
}
else {
return "CATEGORÍA ERRÓNEA";
}

Un metodo que convierte valor numerico que hemos pasado a variable ANTIGÜEDAD en
un String según las condiciones de casos establecidas (alternativa SWITCH)

public String nombreAntiguedad(int antiguedad) {


if(antiguedad==0) {
return "NOVATO";
}
else if(antiguedad==1) {
return "MADURO";
}
else if(antiguedad==2) {
return "EXPERTO";
}
else {
return "ANTIGÜEDAD ERRÓNEA";
}

El siguiente metodo (como su propio nombre indica) realiza el calculo de salario, recibiendo
como parametros los valores de las variables categoria y antiguedad de la clase.
Aqui hay 2 pasos:
1) operación de multiplicación por un coeciente determinado en función de
variable categoria
2) suma de una cantidad establecida en función de valor de variable antigüedad

public double sueldoTrabajador(int categoria, int antiguedad) {


double base = 607;
if(categoria==0) {
base *= 1.15;
}
else if(categoria==1) {
base *=1.35;
}
else if(categoria==2) {
base *=1.6;
}
else if(categoria==3) {
base *=1.4;
}
else {
base = base;
}

if(antiguedad==0) {
base += 150;
}
else if(antiguedad==1) {
base += 300;
}
else if(antiguedad==2) {

zubrienko_tatiana_PROG01_Tarea 5
base +=600;
}
else {
base = base;
}

return base;
}

El metodo que nos devuelve un String compuesto por valores introducidas o generadas por
metodos anteriormente

public String datosDeTrabajador() {


return nombre + " , edad: " + edad
+ "\nCategoria: " + nombreCategoria(this.categoria)
+ "\nAntigüedad: " + nombreAntiguedad(this.antiguedad)
+ "\nFecha de alta: " + fecha_alta.lasFechas()
+ "\nSueldo: " + sueldoTrabajador(categoria, antiguedad);

CLASE OPERACIONES
Este clase es la clase principal, a partir de la que empiece la ejecucion del programa
debido al metodo main

Primer paso que debemos hacer es importar un Scanner para poder introducir datos por
consola.
Despues creamos 2 objetos de tipo Fecha y Trabajador

package operaciones;
import java.util.Scanner;

public class MainTrabajador {

public static void main(String[] args) {


// TODO Auto-generated method stub
Fecha fecha_1 = new Fecha();
Trabajador tr_1 = new Trabajador();

Una por una creamos “entradas” para que el usuario pueda introducir datos necesarios por
consola. Datos introducidos se almacenan en las variables correspondientes

Scanner entr0 = new Scanner(System.in);


System.out.print("Introduce el nombre: ");
String name = entr0.next();

Scanner entr1 = new Scanner(System.in);


System.out.print("Introduce la categoria (0 a 3): ");
int categoria = entr1.nextInt();

zubrienko_tatiana_PROG01_Tarea 6
Scanner entr2 = new Scanner(System.in);
System.out.print("Introduce la antigüedad (0 a 2): ");
int antiguedad = entr2.nextInt();

Scanner entr3 = new Scanner(System.in);


System.out.print("Introduce edad: ");
int edad = entr3.nextInt();

System.out.println("\\nFECHA DE ALTA\\n");

Scanner entr5 = new Scanner(System.in);


System.out.print("Introduce el dia: ");
int dia = entr5.nextInt();

Scanner entr6 = new Scanner(System.in);


System.out.print("Introduce el mes: ");
int mes = entr6.nextInt();

Scanner entr7 = new Scanner(System.in);


System.out.print("Introduce el año: ");
int anio = entr7.nextInt();

Pasamos al metodo darFecha() de objeto fecha_1 que es una instancia de clase Fecha los
parametros dia , mes y anio de tipo entero
Y a su vez al metodo crear_trabajador() del objeto tr_1 , perteneciente a la clase
Trabajador los parametros, que se almacenan en las variables correspondientes

fecha_1.dar_fecha(dia, mes, anio);


tr_1.crear_trabajador(name, edad, categoria, antiguedad, fecha_1);

Imprimimos en pantalla los resultados en el formato que nos interesa, añadiendo algunos
comentarios necesarios para dar una forma a nuestro resultado

System.out.print("\\nCONTROL DE DATOS DE ENTRADA:");

System.out.println("\\n¿Es correcto el mes:? " + fecha_1.mesCorrecto(mes));


System.out.println("Nombre del mes: " + fecha_1.nombreMes());
System.out.println("¿Es correcta la categoría:? " + tr_1.categoriaCorrecta(categoria));
System.out.println("Nombre de la categoría: " + tr_1.nombreCategoria(categoria));
System.out.println("¿Es correcta la antigüedad:? " + tr_1.antiguedadCorrecta(antiguedad));
System.out.println("Nombre la antigüedad: " + tr_1.nombreAntiguedad(antiguedad));

System.out.println("\\nDATOS DE TRABAJADOR\\n ");


System.out.println(tr_1.datosDeTrabajador());

Como resultado
vemos en consola,
por lo que podemos
decir, que el

zubrienko_tatiana_PROG01_Tarea 7
programa se ha
ejecutado de forma
correcta

Para asegurarse que el


programa funciona de
modo correcto probabos
introducir varios datos
incorrectos y analizamos
el comportamiento.
Y efectivamete vemos
que categor’ia 5 no
existe, lo que nos indica
el mensaje

Por lo cual el sueldo no


tiene coeciente por
categoria

zubrienko_tatiana_PROG01_Tarea 8
Antigüedad
incorrect

zubrienko_tatiana_PROG01_Tarea 9
El mes incorrecto

zubrienko_tatiana_PROG01_Tarea 10
zubrienko_tatiana_PROG01_Tarea 11

También podría gustarte