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

Problema con creacion de objetos

Estas en el tema de Problema con creacion de objetos en el foro de Java en Foros del Web. Bueno llevo horas por no decir dias con este problema os cuento estoy haciendo una clase para crear objetos y poder trabajar mejor con los ...
  #1 (permalink)  
Antiguo 27/12/2011, 13:44
 
Fecha de Ingreso: diciembre-2011
Mensajes: 30
Antigüedad: 12 años, 4 meses
Puntos: 0
Problema con creacion de objetos

Bueno llevo horas por no decir dias con este problema os cuento estoy haciendo una clase para crear objetos y poder trabajar mejor con los file .txt.

Aquí están los atributos de clase y lo constructores.

Código Javascript:
Ver original
  1. public class FicheroPalabra {
  2.  
  3.  
  4.     private static int x;
  5.     private static FileReader fin = null;
  6.     private static FileWriter fin1=null;
  7.     private static int x1;
  8.     char c;
  9.  
  10.     public FicheroPalabra(String nom) throws Exception {
  11.         fin = new FileReader(nom);
  12.         x=fin.read();
  13.        
  14.     }
  15.  
  16.     public FicheroPalabra (String nom, int numero)throws Exception{
  17.         fin1=new FileWriter(nom);
  18.  
  19.     }

El programa principal es este:

Código Javascript:
Ver original
  1. FicheroPalabra SALIDA=new FicheroPalabra("C:/Pruevas/SORTIDA.TXT",1);              
  2.         FicheroPalabra TEXTO=new FicheroPalabra("C:/Pruevas/TEXT.txt");  //Primero fichero
  3.         FicheroPalabra DICCIONARIO=new FicheroPalabra("C:/Pruevas/DICCIONARI.TXT");  //Segunfo fichero
  4.  
  5.  
  6.         Palabra f=new Palabra();
  7.         Palabra d=new Palabra();
  8.  
  9.  
  10.             TEXTO.LeerYGuardar(f);
  11.             System.out.print(f.toString());
  12.             SALIDA.Escritura(f);
  13.             System.out.print (" ");
  14.  
  15.         DICCIONARIO.LeerYGuardar(d);
  16.        System.out.print(d.toString());
  17.        SALIDA.Escritura(d);
  18.        System.out.print ("bos");
  19.        
  20.         SALIDA.CerrarFichero1();
  21.         DICCIONARIO.CerrarFichero();
  22.         TEXTO.CerrarFichero();
  23.  
  24.     }

Mi problema es simple si pongo el objeto TEXTO primero y despues el DICCIONARIO solo puedo usar el DICCIONARIO es como si ese objeto machacará al otro. ¿Un objeto no es independiente de otro?

Por ejmplo si hago TEXTO.LeerYGuaradar(f); Me guarda la palabra que hay en DICCIONARIO y no en TEXTO.

No se si me explico muy bien no quiero colgar todo la clase ni todo el programa porque sería demasiado largo. He intentado explicarme lo mejor posible.

Ojala podáis ayudarme :D.
  #2 (permalink)  
Antiguo 27/12/2011, 14:40
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 6 meses
Puntos: 454
Respuesta: Problema con creacion de objetos

Sí, los objetos son independientes unos de otros.... excepto sus atributos static, que son compartidos. Tu FicheroPalabra tiene demasiados static....

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #3 (permalink)  
Antiguo 27/12/2011, 15:52
 
Fecha de Ingreso: enero-2008
Mensajes: 614
Antigüedad: 16 años, 3 meses
Puntos: 57
Respuesta: Problema con creacion de objetos

El problema esta en la clase FicheroPalabra, estas declarando estaticos los atributos FileReader fin y FileWriter fin1

Al declarar un atributo estatico, no importa cuantas veces crees un objeto de la clase, ese atributo siempre va a tener el ultimo valor que le asignes y ese valor se va a compartir con todos los objetos creados de la misma clase. Ese es el proposito de static

Si primero creas TEXTO y despues DICCIONARIO, el atributo fin va a tener el valor del archivo DICCIONARI.TXT
  #4 (permalink)  
Antiguo 28/12/2011, 04:44
 
Fecha de Ingreso: diciembre-2011
Mensajes: 30
Antigüedad: 12 años, 4 meses
Puntos: 0
Respuesta: Problema con creacion de objetos

Muchisimas gracias a los dos ahora mismo me pongo a programar :D. Y más tarde os cuento :D.

Por cierto una cosa como veis tengo dos constructores uno para File Reader y otro para FileWriter. Pero el FileWriter tiene un argumento int que no es necesario que he puesto para que se diferencie del otro constructor. ¿Hay alguna otra manera de hacerlo?

Gracias de verdad¡¡¡
  #5 (permalink)  
Antiguo 29/12/2011, 16:28
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 6 meses
Puntos: 454
Respuesta: Problema con creacion de objetos

Pues hay varias posibilidades.

Una es poner un único constructor con un segundo parámetro que indique si quieres leer o escribir (un boolean por ejemplo).

Otra opción es hacer un único constructor y guardar el nombre que te pasan, sin crear todavía el FileWriter ni el FileReader. Espera a crear uno u otro a la primera vez que te llamen al método Escritura() o LeeYGuarda().

Finalmente, la opción más mejor de todas es hacer un poco de caso a la filosofía de orientación a objetos. Si esa clase lee y escribe, pero la parte de leer y la de escribir no comparten nada de nada, mejor hacer dos clases, una para leer y otra para escribir.

Se bueno.
__________________
Apuntes Java
Wiki de Programación

Etiquetas: clase, jar, objetos, string
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 05:41.