Autor Tema: POO+sentencia+algoritmo ¿cómo saber si se hace buen diseño orientado a objetos?  (Leído 3115 veces)

Xerelo

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 9
    • Ver Perfil
Bueno, antes que nada, gracias por la ayuda que me ofrece este sitio, estoy agradecido.

Ahora vamos al lío:

Ejercicio:

El problema planteado consiste en hallar la edad en años a partir de la fecha de nacimiento y la fecha actual.


Aquí mi código:

Subclase Fecha_Años:

Código: [Seleccionar]
package poo;

public class Fecha_Años {

int dia_Nacimiento;
int mes_Nacimiento;
int año_Nacimiento;

int dia_Actual;
int mes_Actual;
int año_Actual;

public Fecha_Años(int dia_Nacimiento,int mes_Nacimiento,int año_Nacimiento,int dia_Actual,int mes_Actual,int año_Actual){
this.dia_Nacimiento = dia_Nacimiento;
this.mes_Nacimiento = mes_Nacimiento;
this.año_Nacimiento = año_Nacimiento;

this.dia_Actual = dia_Actual;
this.mes_Actual = mes_Actual;
this.año_Actual = año_Actual;


}

public int Calcular_Años(){

int Edad_Años = 0;

if(dia_Actual < dia_Nacimiento && mes_Actual <= mes_Nacimiento){
Edad_Años = (año_Actual - año_Nacimiento)-1;
}
if(dia_Actual < dia_Nacimiento && mes_Actual > mes_Nacimiento){
Edad_Años = (año_Actual - año_Nacimiento);
}
if(dia_Actual >= dia_Nacimiento && mes_Actual >= mes_Nacimiento ){
Edad_Años = (año_Actual - año_Nacimiento);
}
if(dia_Actual >= dia_Nacimiento && mes_Actual < mes_Nacimiento ){
Edad_Años = (año_Actual - año_Nacimiento)-1;
}
   


return Edad_Años;
}



}

Clase padre Configurar_FechaAño:

Código: [Seleccionar]
package poo;

public class Configurar_FechaAño {

public static void main(String[] args) {
// TODO Auto-generated method stub

Fecha_Años ConfigurarFecha = new Fecha_Años(2,3,1995,2,3,2015);

System.out.println("La edad en años es: "+ConfigurarFecha.Calcular_Años());
}

}

Aquí va la pregunta:

¿Como ves el algoritmo que uso? es decir, están bien definido los nombres de las clases? uso bien el constructor? ¿tu lo harías de otra forma? ¿Si no uso getter y setters esta mal la clase? etc etc...

En definitiva si esta bien o mal y lo que este mal decirmelo

Gracias a todos los que contesten:corazon:
« Última modificación: 13 de Marzo 2015, 08:18 por Alex Rodríguez »

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Hola respecto a los nombres de las clases si ves otros hilos del foro se insiste en que los nombres de las clases deben describir lo que son o lo que hacen las clases.

El nombre Fecha_Años no describe lo que es o lo que hace esta clase. Esta clase debería llamarse CalculadoraEdad o CalculadorAños o algo así.

La clase Configurar_FechaAño tampoco tiene un nombre adecuado. Esta clase sirve para hacer una prueba, entonces debería llamarse TestCalculoEdades o algo similar.

Usar getters y setters no es obligatorio, pero es lo habitual. Para un pequeño programa como este donde tienes 50 líneas de código a lo mejor no te hacen falta, pero si haces programas grandes sí te van a hacer falta, por tanto mejor acostumbrarse a ponerlos.

En la clase Fecha_Años hay algo que no parece tener mucha lógica:

   if(dia_Actual < dia_Nacimiento && mes_Actual <= mes_Nacimiento){
      Edad_Años = (año_Actual - año_Nacimiento)-1;
   }

Aquí hace un cálculo para el caso de que la fecha actual sea anterior a la fecha de nacimiento. Por ejemplo la fecha actual es 11-03-2060 y la fecha de nacimiento es 14-02-2065, es decir, que la persona no ha nacido, sino que va a nacer en el futuro. ¿Cuál es la edad? Pues debería devolverse 0 (indicaría que no ha nacido), ó -1 (para indicar que existe un error).

Para mejorar en el diseño de algoritmos y el diseño orientado a objetos te recomiendo seguir e ir realizando todos los ejercicios del curso http://aprenderaprogramar.com/index.php?option=com_content&view=category&id=68&Itemid=188

Saludos

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".