Foro de elhacker.net

Programación => Java => Mensaje iniciado por: HARUDAY en 22 Febrero 2022, 01:01 am



Título: Problema al momento de crear metodo static
Publicado por: HARUDAY en 22 Febrero 2022, 01:01 am
Buenas tardes, espero alguien me pueda dar una solución para este problema indicandome que estoy haciendo mal. El problema es que no me permite usar static en un metodo porque sino aparece un programa cuando uso add();

La cuestion es que tengo que usar static para llamar el metodo a la otra clase y usarlo en la interfaz.

Uso programacion en 3 capas y Apache NeatBeans 12.0.

Clase Lista pertenece al paquete Data

Código
  1. package Data;
  2.  
  3. import java.util.List;
  4. import java.util.ArrayList;
  5.  
  6. public class Lista {
  7.  
  8.    List<Integer> listaP = new ArrayList<>();
  9.  
  10.    public static void agregar(int dni) {
  11.        listaP.add(dni);
  12.    }
  13.  
  14.    //sin static si permite pero no puedo llamarlo en Persona
  15.    public void eliminar(int dni) {
  16.        listaP.remove(dni);
  17.  
  18.    }
  19. }
  20.  
  21.  
  22. Clase Persona pertenece al paquete Logica
  23.  
  24. package Logica;
  25. import Data.Lista;
  26.  
  27. public class Persona {
  28.    private int dni;
  29.  
  30.    public Persona(int dni) {
  31.        this.dni = dni;
  32.    }
  33.    public Persona() {
  34.    }
  35.  
  36.    public int getDni() {
  37.        return dni;
  38.    }
  39.  
  40.    public void setDni(int dni) {
  41.        this.dni = dni;
  42.    }
  43.  
  44.    //tiene que ser static para llamarlo
  45.    public void agregar(int dni) {
  46.        Lista.agregar(dni);
  47.    }
  48.  
  49.    //no aparece eliminar de la clase Lista porque no es static
  50.    public void eliminar (int dni) {
  51.        Lista.(dni);
  52.    }
  53. }


y el Formulario Interfaz pertenece a otro paquete


Espero puedan ayudarme lo antes posible, porfavor.

MOD: Etiqueta GeSHi


Título: Re: Problema al momento de crear metodo static
Publicado por: sapito169 en 24 Febrero 2022, 18:54 pm
hola que tal
mira

la regla basica es simple
cuando usas un metodo static solo lo puedes llamar desde otro metodo static

para solucionar la clase lista debe usar el patron singleton
Código
  1. public class Lista {
  2.  
  3.    List<Integer> listaP = new ArrayList<>();
  4. Lista instance;
  5.    private Lista(){}
  6.  
  7.  
  8. public static Lista instance(){
  9. if(instance==null){
  10. instance=new Lista();
  11. }
  12. return instance;
  13. }
  14.  
  15.    public  void agregar(int dni) {
  16.        listaP.add(dni);
  17.    }
  18.  
  19.  
  20.    public void eliminar(int dni) {
  21.        listaP.remove(dni);
  22.  
  23.    }
  24. }
  25.  

y para llamarlo usa

Código
  1. Lista milistita = Lista.instance();
  2.  


no recomiendo para nada que la clase persona use la clase lista XD


Título: Re: Problema al momento de crear metodo static
Publicado por: HARUDAY en 25 Febrero 2022, 01:00 am
Vale! gracias
¿Me podrias decir porque no se recomienda?
Es que a mi me estan enseñando de esa forma


Título: Re: Problema al momento de crear metodo static
Publicado por: sapito169 en 25 Febrero 2022, 15:30 pm
respuesta corta
cada clase debe hacer una sola cosa para lo cual fue designada y la debe hacer bien


es algo de lo que hay escuelas de pensamiento que estan en desacuerdo obiviamente mi escuela  esta en lo correcto y la otra los llamamos los equivocados

es solo seguir un orden si no sigues un orden es dificil programar cuando tengas un sistema muy complejo

la clase persona Persona solo debe ser responsable de manejar la logica de una sola persona
puede tener metodos como getNombreCompleto o getEdadEnAños

y la clase Lista solo puede tener metodos para manejar a un grupo de personas puede tener metodos como

ejecutaAumentoSalarioMasivo(CodigoSeccionAdministrativa codigoSeccion)
agrega(Persona persona)
modifica(Persona persona)
despidePersona(int codigoPersona)


Título: Re: Problema al momento de crear metodo static
Publicado por: sapito169 en 25 Febrero 2022, 15:37 pm
Vale! gracias
¿Me podrias decir porque no se recomienda?
Es que a mi me estan enseñando de esa forma

tu profesor es noob y no sabe programar no le creeas nada pero no le digas lo que te dije que el cojudo crea lo que quiere

yo soy bien chingon y he hecho varios programas complejos todos funcionando (que es lo unico que cuenta) y he estado participando y explicando a gente grande (no como tu profe) la mejor manera de diseñar software