Foros del Web » Programación para mayores de 30 ;) » Java »

POO + sentencia + algoritmo Duda

Estas en el tema de POO + sentencia + algoritmo Duda en el foro de Java en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 11/03/2015, 08:23
 
Fecha de Ingreso: noviembre-2014
Mensajes: 34
Antigüedad: 9 años, 5 meses
Puntos: 1
POO + sentencia + algoritmo Duda

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 Java:
Ver original
  1. package poo;
  2.  
  3. public class Fecha_Años {
  4.    
  5. int dia_Nacimiento;
  6. int mes_Nacimiento;
  7. int año_Nacimiento;
  8.  
  9. int dia_Actual;
  10. int mes_Actual;
  11. int año_Actual;
  12.  
  13. public Fecha_Años(int dia_Nacimiento,int mes_Nacimiento,int año_Nacimiento,int dia_Actual,int mes_Actual,int año_Actual){
  14. this.dia_Nacimiento = dia_Nacimiento;
  15. this.mes_Nacimiento = mes_Nacimiento;
  16. this.año_Nacimiento = año_Nacimiento;
  17.  
  18. this.dia_Actual = dia_Actual;
  19. this.mes_Actual = mes_Actual;
  20. this.año_Actual = año_Actual;
  21.        
  22.    
  23. }  
  24.  
  25. public int Calcular_Años(){
  26.    
  27.     int Edad_Años = 0;
  28.    
  29.     if(dia_Actual < dia_Nacimiento && mes_Actual <= mes_Nacimiento){
  30.         Edad_Años = (año_Actual - año_Nacimiento)-1;
  31.     }
  32.     if(dia_Actual < dia_Nacimiento && mes_Actual > mes_Nacimiento){
  33.         Edad_Años = (año_Actual - año_Nacimiento);
  34.     }
  35.     if(dia_Actual >= dia_Nacimiento && mes_Actual >= mes_Nacimiento ){
  36.         Edad_Años = (año_Actual - año_Nacimiento);
  37.     }
  38.     if(dia_Actual >= dia_Nacimiento && mes_Actual < mes_Nacimiento ){
  39.         Edad_Años = (año_Actual - año_Nacimiento)-1;
  40.     }
  41.    
  42.    
  43.    
  44.     return Edad_Años;
  45. }
  46.    
  47.    
  48.  
  49. }

Clase padre Configurar_FechaAño:

Código Java:
Ver original
  1. package poo;
  2.  
  3. public class Configurar_FechaAño {
  4.  
  5.     public static void main(String[] args) {
  6.         // TODO Auto-generated method stub
  7.        
  8. Fecha_Años ConfigurarFecha = new Fecha_Años(2,3,1995,2,3,2015);
  9.  
  10. System.out.println("La edad en años es: "+ConfigurarFecha.Calcular_Años());
  11.     }
  12.  
  13. }

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
  #2 (permalink)  
Antiguo 11/03/2015, 08:33
Avatar de Profesor_Falken  
Fecha de Ingreso: agosto-2014
Ubicación: Mountain View
Mensajes: 1.323
Antigüedad: 9 años, 8 meses
Puntos: 182
Respuesta: POO + sentencia + algoritmo Duda

Buenas,

Los nombres de clases y variables no siguen el standard.

Antes de nada estudiate bien esto:
http://www.oracle.com/technetwork/ja...ons-150003.pdf


Sobre todo, no uses la ñ ni los acentos para los nombres de variables/metodos/clases.


Un saludo
__________________
If to err is human, then programmers are the most human of us
  #3 (permalink)  
Antiguo 11/03/2015, 11:04
 
Fecha de Ingreso: noviembre-2014
Mensajes: 34
Antigüedad: 9 años, 5 meses
Puntos: 1
Respuesta: POO + sentencia + algoritmo Duda

Cita:
Iniciado por Profesor_Falken Ver Mensaje
Buenas,

Los nombres de clases y variables no siguen el standard.

Antes de nada estudiate bien esto:
[url]http://www.oracle.com/technetwork/java/codeconventions-150003.pdf[/url]


Sobre todo, no uses la ñ ni los acentos para los nombres de variables/metodos/clases.


Un saludo
y el constructor y el método? eso si esta bien estructurado?
  #4 (permalink)  
Antiguo 11/03/2015, 14:00
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 15 años
Puntos: 306
Respuesta: POO + sentencia + algoritmo Duda

Cita:
Iniciado por sixtoex Ver Mensaje
y el constructor y el método? eso si esta bien estructurado?
Tú decides qué parámetros necesitas y el formato en que lo pasas, un constructor que sólo asigna valores difícilmente puede estar mal.

Como pega, es un poco absurdo tener unas variable llamadas x_actual, si implica que es el día de hoy no te haría falta pedirla, y si puede ser cualquier fecha, el nombre que le has puesto produce confusión.

Aparte de eso podías haber hecho una única clase, Configurar_FechaAño sólo aporta que tiene el main, y eso podías haberlo hecho en Fecha_Años.

Deberías buscarte ejemplos donde se vea más claro qué es un objeto/clase y què es una acción/método.

Tu método, pues código innecesario y repetitivo. Y debes tener cuidado con los if, si son condiciones excluyentes usa else if.

i
Código Java:
Ver original
  1. nt Edad_Años  = (año_Actual - año_Nacimiento);
  2.        
  3.         if(mes_Actual < mes_Nacimiento){
  4.             Edad_Años = Edad_Años -1
  5.         }
  6.         else if(mes_Actual == mes_Nacimiento && dia_Actual < dia_Nacimiento){
  7.             Edad_Años = Edad_Años -1
  8.         }

Hace exactamente lo mismo (he simplificado el tuyo pero no lo he probado).
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.

Última edición por Xerelo; 11/03/2015 a las 14:06
  #5 (permalink)  
Antiguo 11/03/2015, 14:51
 
Fecha de Ingreso: noviembre-2014
Mensajes: 34
Antigüedad: 9 años, 5 meses
Puntos: 1
Respuesta: POO + sentencia + algoritmo Duda

Cita:
Iniciado por Xerelo Ver Mensaje
Tú decides qué parámetros necesitas y el formato en que lo pasas, un constructor que sólo asigna valores difícilmente puede estar mal.

Como pega, es un poco absurdo tener unas variable llamadas x_actual, si implica que es el día de hoy no te haría falta pedirla, y si puede ser cualquier fecha, el nombre que le has puesto produce confusión.

Aparte de eso podías haber hecho una única clase, Configurar_FechaAño sólo aporta que tiene el main, y eso podías haberlo hecho en Fecha_Años.

Deberías buscarte ejemplos donde se vea más claro qué es un objeto/clase y què es una acción/método.

Tu método, pues código innecesario y repetitivo. Y debes tener cuidado con los if, si son condiciones excluyentes usa else if.

i
Código Java:
Ver original
  1. nt Edad_Años  = (año_Actual - año_Nacimiento);
  2.        
  3.         if(mes_Actual < mes_Nacimiento){
  4.             Edad_Años = Edad_Años -1
  5.         }
  6.         else if(mes_Actual == mes_Nacimiento && dia_Actual < dia_Nacimiento){
  7.             Edad_Años = Edad_Años -1
  8.         }

Hace exactamente lo mismo (he simplificado el tuyo pero no lo he probado).
Lo de la unica clase no lo hice por que me dijeron que no es etico hacerlo así, que no se suele hacer y es mala practica y en cuanto a no pedir fecha actual

¿entonces como saco la fecha? con clases predefinidas no? no hay otra (creo)
  #6 (permalink)  
Antiguo 11/03/2015, 17:12
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 15 años
Puntos: 306
Respuesta: POO + sentencia + algoritmo Duda

Cita:
Lo de la unica clase no lo hice por que me dijeron que no es etico hacerlo así, que no se suele hacer y es mala practica
No sé de dónde has sacado eso, pero seguramente no lo has entendido bien. Una cosa es que las partes de un proyecto se dividan en clases y que haya una que se encargue de empezar la ejecución y de ir llamando al resto, y otra cosa es que para hacer un ejercicio donde no hay nada más que un método hagas otra clase sólo para llamarla.

Tu ejemplo no es que no necesite usar dos clases, es que hasta sobra el constructor. El hecho de que hagas un new no significa que estés programando con orientación a objetos, igual que calentar leche en el microondas no es cocinar.

Lo de que no es ético...

Cita:
¿entonces como saco la fecha? con clases predefinidas no?
Evidentemente, pero también puedes cambiar de nombre a las variables para que tenga más coherencia.
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.

Etiquetas: clase, poo, sentencia
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:20.