none
Llamar objetos en java (Sistema de seguridad) RRS feed

  • Pregunta

  • Buen día querida comunidad.

    Estoy intentando realizar un sistema de seguridad sencillo que me pida el nombre de usuario y la contraseña, para esto estoy utilizando 1na clase Usuarios, 1na clase Sistema de seguridad y el main.

    Esta es mi clase Usuarios.

    package javaapplication29;
    
    
    public class Usuarios {
        private String nombreUsuario;
        private String contrasenaUsuario;
    
        public Usuarios() {
        }
    
        public Usuarios(String nombreUsuario, String contrasenaUsuario) {
            this.nombreUsuario = nombreUsuario;
            this.contrasenaUsuario = contrasenaUsuario;
        }
    
        public String getNombreUsuario() {
            return nombreUsuario;
        }
    
        public void setNombreUsuario(String nombreUsuario) {
            this.nombreUsuario = nombreUsuario;
        }
    
        public String getContrasenaUsuario() {
            return contrasenaUsuario;
        }
    
        public void setContrasenaUsuario(String contrasenaUsuario) {
            this.contrasenaUsuario = contrasenaUsuario;
        }
        
        public void mostrarInformaacion(){
            System.out.println("El nombre de usuario es: " + this.getNombreUsuario() + "\n" + "La contraseña es: " + this.getContrasenaUsuario());
            
        }
    }


    Creo un objeto en el main.

    package javaapplication29;
    
    
    public class main {
    
       
        public static void main(String[] args) {
            Usuarios usuarios = new Usuarios("Andres", "andressContrassena");
            usuarios.mostrarInformaacion();
            
            SistemaSeguridad sistemaSeguridad1 = new SistemaSeguridad();
            sistemaSeguridad1.validarDatos();
        }
        
    }

    y esta es mi clase SistemaSeguridad.

    package javaapplication29;
    import java.util.Scanner;
    
    public class SistemaSeguridad {
        private String validarNombreUser;
        private String validarContrasena;
        Scanner scanner = new Scanner(System.in);
        public void validarDatos(){
            
            System.out.println("Ingrese el nombre de usuario");
            validarNombreUser = scanner.nextLine();
            System.out.println("Ingrese la contraseña");
            validarContrasena = scanner.nextLine();
            System.out.println(validarNombreUser+"*");
            System.out.println(validarContrasena+"*");
            
            Usuarios usuarios = new Usuarios();
            System.out.println(usuarios.getNombreUsuario()+"**");
        }
    }
    

    Ejecutandolo:

    El nombre de usuario es: Andres
    La contraseña es: andressContrassena
    Ingrese el nombre de usuario
    juan
    Ingrese la contraseña
    juans
    juan*
    juans*
    null**
    BUILD SUCCESSFUL (total time: 6 seconds)
    
    


    Lo que ocurre es lo siguiente: es que me trae un campo nulo. y necesito que me traiga los datos de mi clase Usuario.

    Quiero traerme los atributos de mi clase usuarios a la clase  SistemaSeguridad para validar las dos variable pero me trae un campo vació, como puedo solucionar esto?

    Mil gracias por sus posibles ayudas.

    miércoles, 4 de julio de 2018 18:21

Respuestas

  • Hola.

    No manejo tanto java pero el motivo por el cual te devuelve Null es porque estas realizando una nueva instancia de la clase Usuarios en la clase SistemaSeguridad en total tienes ejecutadas 2 Instancias distintas te paso un ejemplo en c# que podría servirte para tener una idea de como solucionarlo.

    Primero crea una clase publica puedes llamarlo Global en donde realizas una instancia de la clase Usuarios y asi obtienes todos los métodos de la clase.

    public static class Global
    {
        public static Usuario Usuario = new Usuario();
    }

    Esta parte no estoy seguro si funciona de igual forma en java pero solo es para darte una idea; en el main llama a la Clase Global y le pasas los datos;

    public static void main(String[] args) { Global.Usuario.nombreUsuario="Andres"; Global.Usuario.contrasenaUsuario="andressContrassena";

    Global.Usuario.mostrarInformaacion(); SistemaSeguridad sistemaSeguridad1 = new SistemaSeguridad(); sistemaSeguridad1.validarDatos(); }

    En la clase SistemaSeguridad realizas lo mismo sin realizar una nueva instancia.

    System.out.println(Global.Usuario.getNombreUsuario()+"**");

    Espero te sirva de ayuda.

    Saludos.


    viernes, 6 de julio de 2018 21:09
  • Deleted
    sábado, 7 de julio de 2018 0:08
  • Hola Andrés Felipe;

    package javaapplication29;
    import java.util.Scanner;
    
    public class SistemaSeguridad {
    	 private String validarNombreUser;
    	    private String validarContrasena;
    	    Scanner scanner = new Scanner(System.in);
    	    public void validarDatos(){
    	        
    	        System.out.println("Ingrese el nombre de usuario");
    	        validarNombreUser = scanner.nextLine();
    	        System.out.println("Ingrese la contraseña");
    	        validarContrasena = scanner.nextLine();
    	        System.out.println(validarNombreUser+"*");
    	        System.out.println(validarContrasena+"*");
    	        
    	    
    	    }
    	    
    	    public void validacion(String nombre, String clave) {
    	    	if (this.validarNombreUser.equals(nombre) && this.validarContrasena.equals(clave))
    	    		System.out.println("El usuario introducido es valido");
    	    	else
    	    		System.out.println("Usuairo incorrecto");
    	    		
    	    
    	    }
    	}
    package javaapplication29;
    
    public class Main {
    
    	public static void main (String[] args) {
    		Usuarios u = new Usuarios("Andres", "andressContrassena");
    		u.mostrarInformaacion();
    		
    		SistemaSeguridad sistemaSeguridad1 = new SistemaSeguridad();
    		sistemaSeguridad1.validarDatos();
    		sistemaSeguridad1.validacion(u.getNombreUsuario(),u.getContrasenaUsuario());
    	}
    }
    

    Primero tienes que rrecoger los datos, que depositas en los atributos de sistemaSeguridad1, y posteriormente, tienes que pasarle al método, los atributos de tu instancia de usuarios.

    Puedes hacerlo en el mismo método si quieres.

     public void validarDatos(String nombre, String clave){
    	        
    	        System.out.println("Ingrese el nombre de usuario");
    	        validarNombreUser = scanner.nextLine();
    	        System.out.println("Ingrese la contraseña");
    	        validarContrasena = scanner.nextLine();
    	        System.out.println(validarNombreUser+"*");
    	        System.out.println(validarContrasena+"*");
    	        
    	    	if (this.validarNombreUser.equals(nombre) && this.validarContrasena.equals(clave))
    	    		System.out.println("El usuario introducido es valido");
    	    	else
    	    		System.out.println("Usuairo incorrecto");
    	        
    	    
    	    }

    Recuerda que la clase main, se debe de nombrar en Mayúsculas

    Un saludo

    sábado, 7 de julio de 2018 5:30

Todas las respuestas

  • Hola.

    No manejo tanto java pero el motivo por el cual te devuelve Null es porque estas realizando una nueva instancia de la clase Usuarios en la clase SistemaSeguridad en total tienes ejecutadas 2 Instancias distintas te paso un ejemplo en c# que podría servirte para tener una idea de como solucionarlo.

    Primero crea una clase publica puedes llamarlo Global en donde realizas una instancia de la clase Usuarios y asi obtienes todos los métodos de la clase.

    public static class Global
    {
        public static Usuario Usuario = new Usuario();
    }

    Esta parte no estoy seguro si funciona de igual forma en java pero solo es para darte una idea; en el main llama a la Clase Global y le pasas los datos;

    public static void main(String[] args) { Global.Usuario.nombreUsuario="Andres"; Global.Usuario.contrasenaUsuario="andressContrassena";

    Global.Usuario.mostrarInformaacion(); SistemaSeguridad sistemaSeguridad1 = new SistemaSeguridad(); sistemaSeguridad1.validarDatos(); }

    En la clase SistemaSeguridad realizas lo mismo sin realizar una nueva instancia.

    System.out.println(Global.Usuario.getNombreUsuario()+"**");

    Espero te sirva de ayuda.

    Saludos.


    viernes, 6 de julio de 2018 21:09
  • Deleted
    sábado, 7 de julio de 2018 0:08
  • Hola Andrés Felipe;

    package javaapplication29;
    import java.util.Scanner;
    
    public class SistemaSeguridad {
    	 private String validarNombreUser;
    	    private String validarContrasena;
    	    Scanner scanner = new Scanner(System.in);
    	    public void validarDatos(){
    	        
    	        System.out.println("Ingrese el nombre de usuario");
    	        validarNombreUser = scanner.nextLine();
    	        System.out.println("Ingrese la contraseña");
    	        validarContrasena = scanner.nextLine();
    	        System.out.println(validarNombreUser+"*");
    	        System.out.println(validarContrasena+"*");
    	        
    	    
    	    }
    	    
    	    public void validacion(String nombre, String clave) {
    	    	if (this.validarNombreUser.equals(nombre) && this.validarContrasena.equals(clave))
    	    		System.out.println("El usuario introducido es valido");
    	    	else
    	    		System.out.println("Usuairo incorrecto");
    	    		
    	    
    	    }
    	}
    package javaapplication29;
    
    public class Main {
    
    	public static void main (String[] args) {
    		Usuarios u = new Usuarios("Andres", "andressContrassena");
    		u.mostrarInformaacion();
    		
    		SistemaSeguridad sistemaSeguridad1 = new SistemaSeguridad();
    		sistemaSeguridad1.validarDatos();
    		sistemaSeguridad1.validacion(u.getNombreUsuario(),u.getContrasenaUsuario());
    	}
    }
    

    Primero tienes que rrecoger los datos, que depositas en los atributos de sistemaSeguridad1, y posteriormente, tienes que pasarle al método, los atributos de tu instancia de usuarios.

    Puedes hacerlo en el mismo método si quieres.

     public void validarDatos(String nombre, String clave){
    	        
    	        System.out.println("Ingrese el nombre de usuario");
    	        validarNombreUser = scanner.nextLine();
    	        System.out.println("Ingrese la contraseña");
    	        validarContrasena = scanner.nextLine();
    	        System.out.println(validarNombreUser+"*");
    	        System.out.println(validarContrasena+"*");
    	        
    	    	if (this.validarNombreUser.equals(nombre) && this.validarContrasena.equals(clave))
    	    		System.out.println("El usuario introducido es valido");
    	    	else
    	    		System.out.println("Usuairo incorrecto");
    	        
    	    
    	    }

    Recuerda que la clase main, se debe de nombrar en Mayúsculas

    Un saludo

    sábado, 7 de julio de 2018 5:30
  • Gracias por tu ayuda, Gracias a ella logramos, crear un objeto tipo usuarios en la clase MAIN para luego pasarlos a dos atributos similares a la clase Sistema-seguridad y validarlos en esta misma clase.

    Saludos. 

    sábado, 7 de julio de 2018 14:38
  • Gracias por tu ayuda, Gracias a ella logramos, crear un objeto tipo usuarios en la clase MAIN para luego pasarlos a dos atributos similares a la clase Sistema-seguridad y validarlos en esta misma clase.

    Saludos. 

    sábado, 7 de julio de 2018 14:39
  • Gracias por tu ayuda, Gracias a ella logramos, crear un objeto tipo usuarios en la clase MAIN para luego pasarlos a dos atributos similares a la clase Sistema-seguridad y validarlos en esta misma clase.

    Saludos. 

    sábado, 7 de julio de 2018 14:39