elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Curso de javascript por TickTack


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Encapsulamiento
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Encapsulamiento  (Leído 1,206 veces)
m@o_614


Desconectado Desconectado

Mensajes: 389


Ver Perfil
Encapsulamiento
« en: 4 Diciembre 2014, 16:08 pm »

Saludos

Tengo el siguiente código que es una práctica que trata de la implementación de una clase MiFecha, la cual siempre mantenga una fecha válida en sus atributos. El código que tengo es el siguiente:

Código
  1. class MiFecha{
  2. final int CERO = 0;
  3. final int ENERO = 1;
  4. final int FEBRERO = 2;
  5. final int MARZO = 3;
  6. final int ABRIL = 4;
  7. final int MAYO = 5;
  8. final int JUNIO = 6;
  9. final int JULIO = 7;
  10. final int AGOSTO = 8;
  11. final int SEPTIEMBRE = 9;
  12. final int OCTUBRE = 10;
  13. final int NOVIEMBRE = 11;
  14. final int DICIEMBRE = 12;
  15.  
  16. private int dia;
  17. private int mes;
  18. private int año;
  19.  
  20. MiFecha()
  21. {
  22. dia =;
  23. mes =;
  24. año =;
  25. }
  26.  
  27. private boolean esBisiesto(int año)
  28. {
  29. boolean bisiesto = false;
  30. if(((año % 4) == CERO &&((año % 100) != CERO)) && ((año % 400) == CERO))
  31.       bisiesto = true;
  32. return bisiesto;
  33. }
  34.  
  35. private boolean verificaDia(int dia)
  36. {
  37. boolean fechaValida = false;
  38. switch(mes)
  39. {
  40.    case ENERO:
  41.    case MARZO:
  42.    case MAYO:
  43.    case JULIO:
  44.    case AGOSTO:
  45.    case OCTUBRE:
  46.    case DICIEMBRE:
  47.       if(dia >= 1 && dia <= 31)
  48.          fechaValida = true;
  49.       break;
  50.    case ABRIL:
  51.    case JUNIO:
  52.    case SEPTIEMBRE:
  53.    case NOVIEMBRE:
  54.       if(dia >= 1 && dia <= 30)
  55.          fechaValida = true;
  56.       break;
  57.    case FEBRERO:
  58.       if(esBisiesto(año))
  59.       {
  60.       if(dia >= 1 && dia <= 29)
  61.          fechaValida = true;
  62.       }
  63.       else
  64.       {
  65.       if(dia >= 1 && dia <= 28)
  66.          fechaValida = true;
  67.       }
  68.       break;
  69. }
  70. return fechaValida;
  71. }
  72.  
  73. public int dameDia()
  74. {
  75. return dia;
  76. }
  77.  
  78. public int dameMes()
  79. {
  80. return mes;
  81. }
  82.  
  83. public int dameAnio()
  84. {
  85. return año;
  86. }
  87.  
  88. public boolean fijaDia(int diax)
  89. {
  90. dia = diax;
  91. return true;
  92. }
  93.  
  94. public boolean fijaMes(int mesx)
  95. {
  96. mes = mesx;
  97. return true;
  98. }
  99.  
  100. public boolean fijaAnio(int aniox)
  101. {
  102. año = aniox;
  103. return true;
  104. }
  105. }
  106.  
  107. public class Encapsulamiento {
  108.  
  109. public static void main(String[] args) {
  110. MiFecha fecha = new MiFecha();
  111. fecha.fijaDia(31);
  112. fecha.fijaMes(11);
  113. fecha.fijaAnio(2014);
  114. System.out.println("DIA: "+fecha.dameDia());
  115. System.out.println("MES: "+fecha.dameMes());
  116. System.out.println("año: "+fecha.dameAnio());
  117. }
  118. }
  119.  

en el código utilizo los métodos fijaDia, fijaMes y fijaAnio para asignar el número de día, de mes y de año. El problema es que el código tiene algunos requerimientos un poco extraños y que no comprendo como por ejemplo me dice:

Inicializar todos los atributos(dia,mes,año) con datos válidos por medio de un constructor sin parámetros. Y después me dice:

Codificar en el ámbito del método main lo siguiente:

a) Declaración de la variable de instancia de tipo MiFecha e instanciación.
b) Definición de todos los atributos del objeto instanciado mediante sus tres métodos de interfaz.

Entonces no se cómo declarar el constructor, si en los métodos fija ya estoy inicializando los atributos

de antemano gracias


En línea

Chuidiang

Desconectado Desconectado

Mensajes: 161



Ver Perfil WWW
Re: Encapsulamiento
« Respuesta #1 en: 4 Diciembre 2014, 20:13 pm »

Imagínate que en el main() no llamas a los métodos fija y quieres que los campos de MiFecha tengan un valor válido.

Se bueno.


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines