Tabla de Contenido
0. Introducción1. El Método ToString
1.1 Modificador virtual
1.2 Ejemplos
1.2.1 ToString en la clase object
1.2.2 Omisión del a sobreescritura de ToString en un tipo derivado
1.2.3 Sobreescritura de ToString
1.3 Boxing en ToString
2. Conclusiones
3. Glosario
4. Enlaces & Literatura
0. Introducción
Ya hemos del sistema unificado de tipos del
Framework .NET. Sistema establece características y comportamiento común para
todos los objetos de la jerarquía de herencia de tipos integrados y los propios
escritos por el programador. Uno de esos comportamientos en particular es el
método ToString, el cual es capaz de retornar la representación de
un objeto como una cadena de caracteres sobre cualquier tipo de objeto.
1. El Método ToString
Ya mencioné en la introducción a este artículo acerca del sistema unificado de tipos del Framework .NET. Esto se traduce en el uso/implementación de funcionalidad básico de todos los tipos integrados en el Framework, y los propios definidos por el usuario. Ahora vamos a ver cómo uno de esos elementos de herencia es parte de este sistema y el papel que juega en el Framework:
Empecemos por conocer la firma del método ToString [5]:
Ahora hagamos desollemos este método:
La clase figura tiene definido el método Area de la siguiente manera:
Archivo OmisionSobreescrituraToString.cs:
En esta clase seguimos obteniendo el nombre de clase completamente calificado porque no hemos sobreescrito al método ToString en la clase derivada (NuevaClase).
> Prueba de ejecución.
public virtual string ToString()
Ahora hagamos desollemos este método:
- public: La funcionalidad básica para un sistema unificado de tipos debe poseer especificado este modificador de acceso, pues debe ser utilizado (sobreescrito, precisamente).
- virtual: Corresponde con la característica de mutuación de la definición de una función miembro (método, indizador, propiedades, eventos) en el objeto que hereda de una clase padre. -cfr. Miembros Función Virtuales en C#-
- string: Retorna un objeto de esta naturaleza para representar el objeto como una cadena de caracteres [4].
De acuerdo con [5], el método ToString es la función miembro para formatear la representación de objetos más usada y extendida del Framework .NET. Esto se debe a la naturaleza virtual. Véamoslo con más detalle.
1.1 Modificador virtual
Este modificador para funciones miembro de un tipo de objeto permite la modificación -sobreescritura- en cualquier subtipo derivado de la clase que desee redefinir la implementación por su propio. Por ejemplo, en la jerarquía de herencia de Figura:Figura 1. Jerarquía de herencia de Figura. |
La clase figura tiene definido el método Area de la siguiente manera:
public virtual double Area ()
{
return x * y;
}
Las clases Circulo, Esfera, y Cilindro. Sobreescribirán este método para especificar el método de cálculo de área según su forma o dimensión. Asumamos por caso la sobreescritura del método Area en la clase Circulo:
public virtual double Area ()
{
return Math.PI * Math.Pow( r, 2.0);
}1.2 Ejemplos
1.2.1 ToString en la clase object
Con este ejemplo quiero demostrar que la implementación genérica de ToString retorna el nombre de clase completamente calificado (FQCN, por sus siglas en inglés):
Archivo RepresentacionGenerica.cs:
Cuando se invoque el método ToString sobre la instancia obj (tipo object) se generará la representación genérica de cadena de caracteres de este tipo de objeto.
> Prueba de ejecución.
> Prueba de ejecución.
1.2.2 Omisión de la sobreescritura de ToString en un tipo derivado
Estudiemos este otro ejemplo, en donde la clase NuevaClase hereda implícitamente de object, pero no se realiza ninguna sobreescritura del método ToString de su clase padre (superclase):Archivo OmisionSobreescrituraToString.cs:
En esta clase seguimos obteniendo el nombre de clase completamente calificado porque no hemos sobreescrito al método ToString en la clase derivada (NuevaClase).
> Prueba de ejecución.
1.2.3 Sobreescritura de ToString
Vamos a crear una clase que sobreescriba el método ToString, en la nueva implementación vamos a mostrar el tipo de objeto, incluído un valor numérico (tipos por valor). Así:
Archivo NuevaImplementacionToString.cs:
En la línea 30 se invoca a través de base -cfr. Construcción Sintáctica base en C#- la implementación genérica de ToString (es decir, muestra la cadena con el nombre de clase completamente calificado). Enseguida, la representación en cadena de caracteres de la variable de tipo por valor. Recordemos esto:
int x = 1;
string s = x.ToString(); // valor de s "1"
> Prueba de ejecución.
int x = 1;
string s = x.ToString(); // valor de s "1"
> Prueba de ejecución.
1.3 Boxing en ToString
En [1] nos advierten:Figura 2. Boxing en ToString. |
Conclusiones
Hemos aprendido que el método ToString pertenece al sistema unificado de tipos. La implementación por defecto genera el nombre de clase completamente calificado. Nosotros como programadores podemos cambiar este comportamiento en nuestros tipos derivados, sobreescribiendo el método el método. Por otro lado, presenté varios ejemplos en donde queda claro, a través de casos especiales, el comportamiento de este método. Al final incluí una advertencia sobre el efecto boxing sobre ToString.
Glosario
- FQCN
- Nombre de clase completamente calificado
- Sobreescritura
- Tipo
- virtual
Enlaces & Literatura
[1]: C# 5.0 in a Nutshell by Joseph Albahari and Ben Albahari. Copyright 2012 Joseph Albahari and Ben Albahari, 978-1-449-32010-2.[2]: Orientación a Objetos en C# - http://ortizol.blogspot.com/2013/06/orientacion-objetos-en-c.html
[3]: Miembros Función Virtuales en C# - http://ortizol.blogspot.com/2013/12/miembros-funcion-virtuales-en-c.html
[4]: String Class (System) - http://msdn.microsoft.com/en-us/library/system.string.aspx
[5]: Object.ToString Method (System) - http://msdn.microsoft.com/en-us/library/system.object.tostring%28v=vs.110%29.aspx
J
No hay comentarios:
Publicar un comentario
Envíe sus comentarios, dudas, sugerencias, críticas. Gracias.