Java - Ayuda resolucion de ejercicio JAVA

 
Vista:
sin imagen de perfil

Ayuda resolucion de ejercicio JAVA

Publicado por mcgregor (1 intervención) el 20/01/2022 18:18:59
Buenas, tengo un ejercicio que realizar el cual no entiendo muy bien.
Principalmente tengo que crear tres paquetes.
1.Paquete Modelo que contenga la clase equipo y dicha clase debe contener los atributos como nombre del equipo, cif, nombre del presidente del equipo, etc.

2. Paquete Recursos que contenga la clase utlidades y dicha clase contiene los métodos dameEntero, dameShort,dameFloat,esValidoCif,limpiarPantalla. En esta clase en concreto nos indican que en estos métodos será donde debemos de controlar los errores de teclado habituales.

3. Paquete Controlador que contenga la clase Test Equipo que se encargará de hacer el control de la aplicacion, esta clase contendrá un array de los equipos y el numero de equipos creados. Como métodos tendra, agregarEquipo, eliminarEquipo, mostrarEquipo.

Mi pregunta es, ¿Cómo relaciono los 3 paquetes? Esta claro que para agregar un equipo tendré que introducir los datos del equipo que aparecen en el paquete "Modelo", pero entonces, ¿Para que se usa la clase Utilidades del paquete Recursos?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Kabuto
Val: 3.428
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Ayuda resolucion de ejercicio JAVA

Publicado por Kabuto (1381 intervenciones) el 20/01/2022 19:53:09
Voy a hacer una versión simplificada del ejercicio que te piden, para que veas como relacionar paquetes.

Creamos el paquete "modelo", con esta clase:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
package modelo;
 
public class Equipo {
 
	private String nombreEquipo;
	private String cif;
	private String nombrePresidente;
 
	public Equipo(String nombreEquipo, String cif, String nombrePresidente) {
		this.nombreEquipo = nombreEquipo;
		this.cif = cif;
		this.nombrePresidente = nombrePresidente;
	}
 
	public String getNombreEquipo() {
		return nombreEquipo;
	}
 
	public void setNombreEquipo(String nombreEquipo) {
		this.nombreEquipo = nombreEquipo;
	}
 
	public String getCif() {
		return cif;
	}
 
	public void setCif(String cif) {
		this.cif = cif;
	}
 
	public String getNombrePresidente() {
		return nombrePresidente;
	}
 
	public void setNombrePresidente(String nombrePresidente) {
		this.nombrePresidente = nombrePresidente;
	}
 
	@Override
	public String toString() {
		return String.format("Equipo: %s\nCIF: %s\nPresidente: %s",
				nombreEquipo, cif, nombrePresidente);
	}
 
}

Ahora paquete "recursos" con la clase Utilidades.
La idea es llamar a los métodos de esta clase desde otro paquete para que cumplan sus funciones.
Una forma de hacerlo, a mi parecer la más lógica en este caso, es declarar su métodos como static
Así para llamarlos, como veremos luego, solo habrá que poner el nombre de la clase, un punto, y llamar al método deseado.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
package recursos;
 
import java.util.Scanner;
 
public class Utilidades {
 
	private static Scanner teclado = new Scanner(System.in);
 
	/**
	 * Limpia la consola de texto.Solo válido para entorno Windows.
	 */
	public static void limpiarPantalla() {
		try {
            new ProcessBuilder("cmd", "/c", "cls").inheritIO().start().waitFor();
        } catch (Exception e) {
            //Nada que hacer
        }
	}
 
	/**
	 * Versión simplificada de la comprobación de un CIF.<br>
	 * Solo se comprueba la longitud correcta y que comience
	 * por una de las letras apropiadas para un CIF.
	 * @param cif Cadena String con el CIF a validar.
	 * @return True si el CIF es válido, False en caso contrario.
	 */
	public static boolean esValidoCif(String cif) {
 
		if (cif.length() != 9)
			return false; //No tiene 9 caracteres
		else {
			//Primer caracter ha de ser letra de una lista concreta
			final String letrasValidas = "ABCDEFGHPQSKLMX";
			String letra = cif.toUpperCase().substring(0,1);
			return letrasValidas.contains(letra);
		}
	}
 
	public static String dameCadena() {
		return teclado.nextLine();
	}
 
	public static int dameEntero() {
		Integer entero = null;
		while (entero == null) {
			try {
				entero = Integer.parseInt(teclado.nextLine());
			}
			catch(NumberFormatException ex) {
				System.out.println("\n\t--Formato inválido para un valor entero--\n");
			}
		}
		return entero;
	}
 
}

Último paquete, el "controlador", donde usaremos las clases creadas en los otros paquetes.
Fíjate que para eso, lo primero es hacer un import de las clases Equipo y Utilidades

Y aquí es donde puedes ver cómo llamamos a los métodos de la clase Utilidades. Los resalto en negrita.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
package controlador;
 
import modelo.Equipo;
import recursos.Utilidades;
 
public class TestEquipo {
 
	private static Equipo[] equipos;
	private static int numEquipos;
 
	public static void main(String[] args) {
 
		System.out.print("¿Cuántos equipos va a crear?: ");
		numEquipos = Utilidades.dameEntero();
 
		equipos = new Equipo[numEquipos];
 
		for (int i = 0; i < numEquipos; i++) {
			Utilidades.limpiarPantalla();
			System.out.print("Nombre Equipo: ");
			String nomEquip = Utilidades.dameCadena();
			String cif = "";
			do {
				System.out.print("CIF: ");
				cif = Utilidades.dameCadena();
				if (!Utilidades.esValidoCif(cif))
					System.out.println("\n--CIF Incorrecto--\n");
			} while(!Utilidades.esValidoCif(cif));
			System.out.print("Nombre Presidente: ");
			String presi = Utilidades.dameCadena();
 
			equipos[i] = new Equipo(nomEquip, cif, presi);
		}
 
		Utilidades.limpiarPantalla();
 
		System.out.println("Lista de equipos regitrados");
 
		for (Equipo equi: equipos) {
			System.out.println("\n\t***********");
			System.out.println(equi);
			System.out.println("\t***********\n");
		}
 
	}
 
}

Y ya está, es así de simple.
Insisto en que esta es una versión simplificada del ejercicio que te piden. No es la solución, solo es un ejemplo para entender mejor como relacionar paquetes y usar las clases de unos paquetes en otros.

Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar