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

metodo ToString, esta bien esto??

Estas en el tema de metodo ToString, esta bien esto?? en el foro de Java en Foros del Web. hola una pregunta, tengo una clase, que , bueno tengo un par de lineas, y creo entender como funciona...ustedes me dicen ..... la clase se ...
  #1 (permalink)  
Antiguo 10/12/2013, 09:26
 
Fecha de Ingreso: febrero-2013
Ubicación: en mi casa
Mensajes: 541
Antigüedad: 11 años, 1 mes
Puntos: 3
metodo ToString, esta bien esto??

hola una pregunta, tengo una clase, que , bueno tengo un par de lineas, y creo entender como funciona...ustedes me dicen .....

la clase se llama hola

tiene una sola propiedad lllamada param1
Código PHP:

 
private String param1 = new String(); 
dentro de la clase tiene un metodo MAIN, que se instancia asi misma,. (hace una instancia de la propia clase HOLA)


como dijimos la clase se llama hola, en el MAIN , hago esto, creo una instancia, esta se llamara pass..

Código PHP:
 hola pass = new hola("texto simple largo"); 
el constructor le asigna el String reciibido a la propiedad param1

Código PHP:
 public hola(String param1) {
 
this.setParam1(param1);
 } 
LA DUDA PRINCIPAL OCURRE ACA:...

cuando hago esto...

Código PHP:

 System
.out.println("Antes de modificar pass es: " pass); 
pass. es la instancia, y no deberia devolver nada.. a lo sumo, pass.param1...

pero como para acceder a una propiedad de la clase, aunque es privada no podria accederse..

------------

SEGURAMENTE ESTE METODO TIENE ALGO QUE VER....


Código PHP:
 public String toString() {
 return 
"[param1 = " this.getParam1() + "]";
 } 

CLARAMENTE EN LUGAR DE PASS IMPRIME ESTO...

Código PHP:

[param1 texto simple largo
creo recordar que cuando quiero imprimir una instancia,se llama al toString...
  #2 (permalink)  
Antiguo 10/12/2013, 09:31
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 6 meses
Puntos: 454
Respuesta: metodo ToString, esta bien esto??

Si, cuando java necesita convertir una clase a String, llama a su método toString(). En tu caso, al hacer

System.out.println("Antes de modificar pass es: " + pass)

estás concatenando (operador +) la cadena "Antes de modificar pass es: " con pass y java necesita convertir pass a String para hacer esa concatenación.

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #3 (permalink)  
Antiguo 13/03/2014, 14:57
 
Fecha de Ingreso: febrero-2013
Ubicación: en mi casa
Mensajes: 541
Antigüedad: 11 años, 1 mes
Puntos: 3
Respuesta: metodo ToString, esta bien esto??

y esta que tiene que mal no me anda....

Código PHP:
public class marzo{

    private 
int numero;
    
    public 
marzo(){
        
        
numero=12;
    }
    
  public 
void imprimir(){
      
System.out.println("hola mundo nuevamente.");
     
System.out.println("El numero impreso es: "+numero);
    }
    
  
  
  
  public 
String toString() {
      return 
"......  " this.getnumero() + " ....  ";
      }  
  
  
 
 public static 
void main(String[] args){
     
     
 
     
marzo nuevo=new marzo();
        
nuevo.imprimir();
        
// System.out.println(nuevo.numero);
        
System.out.println("la clase se llama"+nuevo);
 }
    


este error tira

Cita:
hola mundo nuevamente.
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
The method getnumero() is undefined for the type marzo

El numero impreso es: 12
at marzo.toString(marzo.java:19)
at java.lang.String.valueOf(Unknown Source)
at java.lang.StringBuilder.append(Unknown Source)
at marzo.main(marzo.java:31)
  #4 (permalink)  
Antiguo 13/03/2014, 14:59
 
Fecha de Ingreso: febrero-2013
Ubicación: en mi casa
Mensajes: 541
Antigüedad: 11 años, 1 mes
Puntos: 3
Respuesta: metodo ToString, esta bien esto??

cuando defino la funcion ToString... esta mal esto...
Código PHP:
 this.getnumero() 
ya que lo saque y funciona ..
  #5 (permalink)  
Antiguo 14/03/2014, 06:09
Avatar de rgf1987  
Fecha de Ingreso: diciembre-2012
Ubicación: Asturias
Mensajes: 269
Antigüedad: 11 años, 3 meses
Puntos: 22
Respuesta: metodo ToString, esta bien esto??

Cita:
Iniciado por aldo_rengo Ver Mensaje
cuando defino la funcion ToString... esta mal esto...
Código PHP:
 this.getnumero() 
ya que lo saque y funciona ..
estas llamando a un método getnumero() que no existe.....

normalmente cuando creas una clase, tienes unos atributos (como la variable "numero" en este caso) y cada atributo tiene los métodos get y set correspondientes, estos métodos tienes que implementarlos tu mismo.

es decir, para el caso de la variable "numero" seria:

Código Java:
Ver original
  1. //metodo get
  2. public int getnumero(){
  3.          return numero;
  4. }
  5. //metodo set
  6. public void setNumero(int numero){
  7.          this.numero = numero;
  8. }

los métodos deben de ser public, para que puedan ser accesibles de otras clases, mientras que la variable debe estar declarada como private, para que se este implementando el termino de encapsulación que es una de las características de java.

si estás empezando sería bueno que leyeses un libro de java sencillito donde se te fuesen explicando las cosas poco a poco.

Última edición por rgf1987; 14/03/2014 a las 06:22
  #6 (permalink)  
Antiguo 17/03/2014, 07:47
 
Fecha de Ingreso: febrero-2013
Ubicación: en mi casa
Mensajes: 541
Antigüedad: 11 años, 1 mes
Puntos: 3
Respuesta: metodo ToString, esta bien esto??

osea, los metodos get o set. NO EXISTEN DE MANERA PREDETERMINADA??

esos metodos magicos que dicen... GET / SET

no son metodos magicos NI NADA, son como una regla. para hacer "mas" estandar el acceso a los datos.-mas entendible el codigo- colocar SET o GET antes del nombre de una variable, creando un metodo y listo..
  #7 (permalink)  
Antiguo 17/03/2014, 09:10
Avatar de rgf1987  
Fecha de Ingreso: diciembre-2012
Ubicación: Asturias
Mensajes: 269
Antigüedad: 11 años, 3 meses
Puntos: 22
Respuesta: metodo ToString, esta bien esto??

Cita:
Iniciado por aldo_rengo Ver Mensaje
son como una regla. para hacer "mas" estandar el acceso a los datos.-mas entendible el codigo- colocar SET o GET antes del nombre de una variable, creando un metodo y listo..
Correcto.

No es obligatorio... pero es una buena práctica. Y al mismo tiempo, cumples con el término de encapsulación.
  #8 (permalink)  
Antiguo 17/03/2014, 11:37
Avatar de nup_  
Fecha de Ingreso: noviembre-2010
Mensajes: 265
Antigüedad: 13 años, 5 meses
Puntos: 32
Respuesta: metodo ToString, esta bien esto??

Si todos los get y set de tu clase van a ser de la forma:
Código Java:
Ver original
  1. public tipo getX() {  return X;  }
  2. public void setX( tipo x ) { X = x; }
  3. //ejemplo:
  4. public int getnumero(){    return numero;  }
  5. public void setNumero(int numero){  this.numero = numero;  }

puedes perfectamente eliminar los gets y sets y poner atributos públicos.

slds;

nup_
  #9 (permalink)  
Antiguo 17/03/2014, 13:43
 
Fecha de Ingreso: febrero-2013
Ubicación: en mi casa
Mensajes: 541
Antigüedad: 11 años, 1 mes
Puntos: 3
Respuesta: metodo ToString, esta bien esto??

esto de get y set, es solo para propiedades privadas...
si fueran para publico, estarian de mas... no=?
  #10 (permalink)  
Antiguo 17/03/2014, 14:29
Avatar de nup_  
Fecha de Ingreso: noviembre-2010
Mensajes: 265
Antigüedad: 13 años, 5 meses
Puntos: 32
Respuesta: metodo ToString, esta bien esto??

Precisamente, si todas tus propiedades privadas tienen sets y gets q son triviales:
¿Por qué no ponerlas públicas?
Ese es el caso de la clase marzo con la propiedad numero. Simplemente ponla pública.
Es más sencillo, aparte de un poquitín más rápido.

slds;

nup_
  #11 (permalink)  
Antiguo 18/03/2014, 01:46
Avatar de rgf1987  
Fecha de Ingreso: diciembre-2012
Ubicación: Asturias
Mensajes: 269
Antigüedad: 11 años, 3 meses
Puntos: 22
Respuesta: metodo ToString, esta bien esto??

Cita:
Iniciado por nup_ Ver Mensaje
Precisamente, si todas tus propiedades privadas tienen sets y gets q son triviales:
¿Por qué no ponerlas públicas?
Ese es el caso de la clase marzo con la propiedad numero. Simplemente ponla pública.
Es más sencillo, aparte de un poquitín más rápido.

slds;

nup_
Esto claro que se puede hacer y puede que sea más fácil sobretodo para entenderlo... pero de cara a desarrollar un programa de manera adecuada, no es lo correcto, en cualquier sitio en el que vayas a trabajar no te vas a encontrar en ninguna clase atributos públicos, siempre se tiene en cuenta la encapsulación.

http://ticodificando.com/2013/08/03/...capsulamiento/
  #12 (permalink)  
Antiguo 18/03/2014, 01:47
Avatar de rgf1987  
Fecha de Ingreso: diciembre-2012
Ubicación: Asturias
Mensajes: 269
Antigüedad: 11 años, 3 meses
Puntos: 22
Respuesta: metodo ToString, esta bien esto??

Cita:
Iniciado por rgf1987 Ver Mensaje
Esto claro que se puede hacer y puede que sea más fácil sobretodo para entenderlo... pero de cara a desarrollar un programa de manera adecuada, no es lo correcto, en cualquier sitio en el que vayas a trabajar no te vas a encontrar en ninguna clase atributos públicos, siempre se tiene en cuenta la encapsulación.

http://ticodificando.com/2013/08/03/...capsulamiento/
En los libros utilizados para preparar las certificaciones de Java, este es uno de los primeros temas en los que hacen hincapié.

Etiquetas: clase, metodo, 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 12:13.