Tabla de Contenido
0. Introducción1. Clases Estáticas en C#
2. Clases Estáticas en .NET Framework
3. Consideraciones Finales
4. Conclusiones
5. Glosario
6. Enlaces & Literatura
0. Introducción
En el artículo anterior hablamos acerca de los constructores estáticos, éstos son parte inherente de las clases estáticas. Entonces resulta necesario e importante hablar también de este tipo de dato que reúne funcionalidad y datos comunes y útiles para otras aplicaciones cliente. Veremos que a diferencia de las clases común y corrientes, las clases estáticas no requieren instanciación de objetos; se nombraran algunos ejemplos de estos tipos que residen el librería de clases de .NET Framework. Además, mostraré cómo crear una clase estática y miembros de la misma naturaleza; inclusive presentaré otros ejemplos que hacen uso de las clases estáticas System.Console y System.Math.
1. Clases Estáticas en C#
Podemos pensar en una clase estática como cualquier otra clase, pero con miembros (métodos, campos, constructores, etc.) de naturaleza estática, y por supuesto, con el modificador static [2] en su declaración. Véamoslo con un ejemplo:
En la línea 1 se declara la clase Utilidades con los modificadores de acceso y comportamiento public y static, respectivamente. Adicionalmente, el campo Errores, y los métodos EmailValido, y CalcularHash, que deben ser declarados como estáticos a través del mismo modificador. En caso de no ser así el compilador generará el error:
error CS0708: `Utilidades.CalcularHash(string)': cannot declare instance members in a static class
Este error se generaría si el método CalcularHash no tuviera especificado el modificador static; tal como se muestra en este fragmento:
public string CalcularHash (string file) { ... }
Es importante agregar que las regiones de código cliente no pueden instanciar tipos de clases estáticas. Si se va en contra de esta regla del compilador se experimentará el error a partir de la sentencia siguiente:
Utilidades u = new Utilidades ();
error CS0723: `u': cannot declare variables of static types
error CS0712: Cannot create an instance of the static class `Utilidades'La invocación de los miembros estáticos de una clase se realiza de la siguiente manera:
Utilidades.CalcularHash ("X:\autorun.inf");
Utilidades.EmailValido ("valentina@outlook.com");
En general:
NombreclaseEstatica.CampoEstatico ();
NombreClaseEstatica.MetodoEstatico ();
2. Clases Estáticas en .NET Framework
A continuación hablaré de dos de las clases estáticas de .NET Framework: Console (namespace System) y Math (namespace System) más comunes.
2.1 Console
La clase Console (q-name System.Console) [3] contiene, en esencia, miembros estáticos para capturar (input) y presentar (output) texto desde la entradada estándar (teclado), y en la salida estándar (pantalla). (Éstos dos últimos componentes conforman lo que se conoce como consola, de ahí que la clase sea llamada así en inglés).
La sintaxis de claración en C# de esta clase es:
public static class Console
Veamos un ejemplo donde se utilizan varios de los miembros estáticos de esta clase:
- Write [4]
- ReadLine [5]
- WriteLine [6]
2.2 Math
La clase Math (q-name System.Math) [7] es interesante por poseer un ingente cantidad de métodos y constantes útiles para operaciones aritméticas, algebraicas, trigonométricas, entre muchas más.
La sintaxis de declaración de esta clase en C#:
public static class Math
Veamos un ejemplo que demuestra su uso:
Archivo C# PruebaMath.cs:
La demostración consiste en el uso de dos miembros estáticos que obtienen el menor (Math.Min [8]) y el mayor (Math.Max [9]) de tres números enteros.
► Prueba de ejecución.
[Nota: Obsérvese que en ambos ejemplos no se utilizó el nombre completamente calificado de las clases debido a que en la líneas 1 se hizo la importación del namespace System.]
Archivo C# PruebaMath.cs:
La demostración consiste en el uso de dos miembros estáticos que obtienen el menor (Math.Min [8]) y el mayor (Math.Max [9]) de tres números enteros.
► Prueba de ejecución.
[Nota: Obsérvese que en ambos ejemplos no se utilizó el nombre completamente calificado de las clases debido a que en la líneas 1 se hizo la importación del namespace System.]
3. Consideraciones Finales
Algunos puntos a tener en cuenta (extraídos desde [10]):
- Una clase estática sólo puede contener miembros estáticos.
- No se puede crear instancias.
- Una clase estática puede contener el modificador de herencia sealed [11] (la clase no se puede heredar).
- No puede contener constructores de instancia (ni predeterminado ni especializado(s)).
- Sólo puede contener constructores estáticos y privados (ver artículo Constructores Estáticos en C# [12]).
4. Conclusiones
Este artículo ha sido interesante porque hemos aprendido acerca del concepto de clases estáticas: cómo declararlas, uso de miembros estáticos. Se introdujo ejemplos de uso de clases estáticas (Console y Math) .NET Framework que contienen métodos de igual naturaleza, y que no requieren crear referencias a objetos para ser usadas. Al final se presentaron unas consideraciones importantes a tener en cuenta a la hora de crear o usar clases estáticas y sus respectivos miembros.
5. Glosario
- Clase estática
- Miembros de clase estáticos
6. 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]: static (C# Reference) - http://msdn.microsoft.com/en-us/library/98f28cdx(v=vs.90).aspx
[3]: Console Class (System) - http://msdn.microsoft.com/en-us/library/system.console.aspx
[4]: Console.Write Method (System) - http://msdn.microsoft.com/en-us/library/system.console.write.aspx
[5]: Console.ReadLine Method (System) - http://msdn.microsoft.com/en-us/library/system.console.readline.aspx
[6]: Console.WriteLine Method (System) - http://msdn.microsoft.com/en-us/library/system.console.writeline.aspx
[7]: Math Class (System) - http://msdn.microsoft.com/en-us/library/system.math.aspx
[8]: Math.Min Method (System) - http://msdn.microsoft.com/en-us/library/system.math.min.aspx
[9]: Math.Max Method (System) - http://msdn.microsoft.com/en-us/library/system.math.max.aspx
[10]: Static Classes and Static Class Members (C# Programming Guide) - http://msdn.microsoft.com/en-us/library/79b3xss3(v=vs.90).aspx
[11]: sealed (C# Reference) - http://msdn.microsoft.com/en-us/library/88c54tsw.aspx
[12]: Constructores Estáticos en C# | Experiencias Construcción Software - http://ortizol.blogspot.com/2013/10/constructores-estaticos-en-c.html
O
No hay comentarios:
Publicar un comentario
Envíe sus comentarios, dudas, sugerencias, críticas. Gracias.