Metodo ToString() En Gambas3 [Resuelto]


sulky16v2
Objetivo: Metodo ToString() En Gambas3 [Resuelto]
Hola gente! una consulta, alguien implemento el metodo ToString() como si fuera en Java para imprimir los atributos de un objeto? en Java seria algo así:

@override
public String ToString() {
return "El nombre es: " + getNombre() + "El apellido es; " + getApellido() + "La edad es: " + getEdad();
}


Trate de hacerlo en gambas de esta forma pero al ejecutarlo me tira (Function Persona 4)

Public Function ToString() As String

Return "Nombre: " & Nombre_Read & "Apellido: " & Apellido_Read & "Edad: " & Edad_Read

End


Alguna idea de que puede ser? en POO es normal sobreescribir los metodos ToString y Equals, pero lamentablemente estoy peleado un poco con la sintaxis de Gambas3, lo que si puede hacerlo es desde el codigo Main acceder a las propieades de esta forma

Print "Nombre: " & persona_uno.Nombre & " Apellido: " & persona_uno.Apellido & " Edad: " & persona_uno.Edad


Pero hacerlo así es una chanchada obviamente, siguiendo la teoria de POO es mejor sobreescribir el metodo ToString para ello. Alguna idea de como solucionarlo? saludos a todos.
P/D en vez de usar Nombre_Read probe pasarle la propiedad osea Nombre, pero me tira un error y no me deja compilar, asi que asumo que Gambas3 se comporta como Java y se le debe de pasar el metodo Get.

última edición por Invitado el Jueves, 07 Abril 2016, 19:15; editado 2 veces
Objetivo: Re: Metodo ToString() En Gambas3
sulky16v2:


Desde dentro de la clase lo tendrias que hacer asi:
Public Function ToString() As String

Return "Nombre: " & me.Nombre & "Apellido: " & me.Apellido & "Edad: " & me.Edad

End


Tienes que usar "me" (en otros lenguajes se utiliza la palabra "this","self"...) que indica que es el mismo.
http://gambaswiki.org/wiki/lang/me?l=es

última edición por jsbsan el Jueves, 07 Abril 2016, 06:55; editado 2 veces
sulky16v2
Objetivo: Re: Metodo ToString() En Gambas3
jsbsan escribió: [Ver mensaje]
sulky16v2:


Desde dentro de la clase lo tendrias que hacer asi:
Public Function ToString() As String

Return "Nombre: " & me.Nombre & "Apellido: " & me.Apellido & "Edad: " & me.Edad

End


Tienes que usar "me" (en otros lenguajes se utiliza la palabra "this","self"...) que indica que es el mismo.
http://gambaswiki.org/wiki/lang/me?l=es


Sabes que me sigue tirando el mismo error, te mando una captura
pantallazo

Dejo el codigó: la clase principal es:

' gambas class file

Private $nombre As String
Private $apellido As String
Private $edad As Integer

'Constructor
Public Sub _new(nombre As String, apellido As String, edad As Integer)

$nombre = nombre
$apellido = apellido
$edad = edad

End

'propiedad de Nombre
Property Nombre As String

Private Function Nombre_Read() As String

Return $nombre

End

Private Sub Nombre_Write(Value As String)

$nombre = Value

End

'propiedad de Apellido
Property Apellido As String

Private Function Apellido_Read() As String

Return $apellido

End

Private Sub Apellido_Write(Value As String)

$apellido = Value

End

'propiedad de Edad
Property Edad As Integer

Private Function Edad_Read() As Integer

Return $edad

End

Private Sub Edad_Write(Value As Integer)

$edad = Value

End

'Override
Public Function ToString() As String

Return "Nombre: " & Me.Nombre & "Apellido: " & Me.Apellido & "Edad: " & Me.Edad

End


y la que contiene el Main
' gambas module file

Private persona_uno As Persona

Public Sub Main()

Dim nombre As String
Dim apellido As String
Dim edad As Integer

Print "Creación de un Objeto"
Print "Ingrese su Nombre: "
Input nombre
Print "Ingrese su Apellido: "
Input apellido
Print "Ingrese su Edad: "
Input edad
persona_uno = New Persona(nombre, apellido, edad)
'Print "Nombre: " & persona_uno.Nombre & " Apellido: " & persona_uno.Apellido & " Edad: " & persona_uno.Edad
Print persona_uno.ToString
End

Objetivo: Re: Metodo ToString() En Gambas3
...hace falta los dos paréntesis:

Print persona_uno.ToString()

Perfil MP  
Objetivo: Re: Metodo ToString() En Gambas3
A mí este código me funciona perfecto:
Private $nombre As String
Private $apellido As String
Private $edad As Integer

'Constructor
Public Sub _new(Optional nombre As String, Optional apellido As String, Optional edad As Integer)
'
$nombre = nombre
$apellido = apellido
$edad = edad
'
End

'propiedad de Nombre
Property nombre As String

Private Function nombre_Read() As String

Return $nombre

End

Private Sub nombre_Write(Value As String)

$nombre = Value

End

'propiedad de Apellido
Property Apellido As String
Private Function Apellido_Read() As String

Return $apellido

End

Private Sub Apellido_Write(Value As String)

$apellido = Value

End

'propiedad de Edad
Property Edad As Integer

Private Function Edad_Read() As Integer

Return $edad

End

Private Sub Edad_Write(Value As Integer)

$edad = Value

End

'Override
Public Function ToString() As String

Return "Nombre: " & Me.nombre & " Apellido: " & Me.Apellido & " Edad: " & Me.Edad

End

Le he dado como opcionales los parámetros, pera mayor flexibilidad en creación y supongo que también funcionaría cambiando la función toString así:
Citar:
Public Function ToString() As String

Return "Nombre: " & $nombre & " Apellido: " & $apellido & " Edad: " & $edad

End

Pero esto último no lo he probado

Perfil MP  
sulky16v2
Objetivo: Re: Metodo ToString() En Gambas3
vuott escribió: [Ver mensaje]
...hace falta los dos paréntesis:

Print persona_uno.ToString()


Gracias!!!! era eso, saludos.

sulky16v2
Objetivo: Re: Metodo ToString() En Gambas3
Publico la solución por si a alguna persona en el futuro le llega a pasar, el problema fue el autocompletado del IDE de gambas 3 al escribir nombre_del_objeto.nombre_del_metodo no me completo con los parentesis sino que el metodo ToString() me lo autocompleto ToString. Gracias a todos, voy a seguir porteando ejemplo que tengo de facultad a Gambas3 para luego subirlos.


Página 1 de 1


  
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario

   

Está utilizando la versión (Lo-Fi). Para ver la versión completa del foro, haga clic aquí.

Powered by Icy Phoenix based on phpBB
Design by DiDiDaDo

Página generada en:: 0.1639s (PHP: 8% SQL: 92%)
Consultas SQL: 24 - Debug off - GZIP Activado