¿Quería saber si mi código es muy redundante o está bien así?

Iniciado por theluigy13etv, 11 Octubre 2012, 04:51 AM

0 Miembros y 1 Visitante están viendo este tema.

theluigy13etv

Bueno, he estado revisando el libro de Deitel y otros manuales y de allí he empezado a tomar un estilo propio de programación; quiero mostrarles la forma como estoy empezando a programar mis clases en Java. El problema que tengo es que a veces me parece que es muy redundante o que estoy llenando mi código de demasiadas llamadas a métodos y constructores lo cual creo que traería como consecuencia que el programa sea un poco más lento, pero por otro lado hace que mi código sea más ordenado y fácil de entender, bueno, quiero sus opiniones y tal vez alguna otra forma más elegante de hacerlo.

Les presento a manera de ejemplo muy sencillo la definición de dos clases: Clase Persona y Clase Alumno.

Código (java) [Seleccionar]

public class Persona {
  // Atributos privados
   private String nombre;
   private int edad;    
   
   public Persona() {        
       this(null, 0);        
   }        
   
   public Persona(String nombre) {        
       this(nombre, 0);
   }
   
   public Persona(String nombre, int edad) {
       super();    // Llamada explícita al constructor de la clase Object
       setNombre(nombre);
       setEdad(edad);
   }
   
   public void setNombre(String nombre) {
       this.nombre = nombre;
   }
   
   public void setEdad(int edad) {
       this.edad = edad;
   }
   
   public String getNombre() {
       return nombre;
   }
   
   public int getEdad() {
       return edad;
   }
       
   public String toString() {
       return String.format("%s: %s\n%s: %d\n",
           "Nombre", getNombre(),
           "Edad", getEdad());
   }  
}


Código (java) [Seleccionar]

public class Alumno extends Persona {    
   private String codigo;
   
   public Alumno() { this(null, 0, null); }
   
   public Alumno(String nombre) {
       this(nombre, 0, null);
   }
   
   public Alumno(String nombre, int edad) {
       this(nombre, edad, null);
   }        
   
   public Alumno(String nombre, int edad, String codigo) {
       super(nombre, edad);      // Llamada al constructor de la superclase directa  
       setCodigo(codigo);
   }
   
   public void setCodigo(String codigo) {
       this.codigo = codigo;
   }
   
   public String getCodigo() {
       return codigo;
   }
   
   public String toString() {
       return String.format("%s%s: %s\n", super.toString(),
           "Código", getCodigo());
   }
}

ed0810

Tu código cumple perfectamente los estándares de programación, sólo documéntalo cuando tengas métodos algo complejos, o aún cuando te parezcan simples, un mes después de programar a ver si nos acordamos de lo que hicimos :D

FrostLeviathan

No veo necesario tener estos constructores:
Código (java) [Seleccionar]

    public Persona() {       
        this(null, 0);       
    }       

    public Persona(String nombre) {       
        this(nombre, 0);
    }

ya que no veo que sea algo util y puede generar errores en el futuro tener Personas sin nombre y/o edad. Lo mismo con la clase Alumno.

theluigy13etv

Cita de: FrostLeviathan en 11 Octubre 2012, 23:40 PM
No veo necesario tener estos constructores:
Código (java) [Seleccionar]

    public Persona() {       
        this(null, 0);       
    }       

    public Persona(String nombre) {       
        this(nombre, 0);
    }

ya que no veo que sea algo util y puede generar errores en el futuro tener Personas sin nombre y/o edad. Lo mismo con la clase Alumno.

Sí, creo que tienes razón, no tendría sentido que exista un alumno sin un código o una persona sin un DNI o nombre.

sapito169

el codigo esta bien

no hay necesidad para crear un constructor de esa manera por que el compilador te lo crea de todas maneras

si tiene sentido Por que la persona pasa de un estado de tener dni a un estado de no tenerlo

es mejor quieres tener validacion pongas un metod que valide

class Alumno ..{
...
     boolean esValido(){
    ..
    }
}