miércoles, 19 de febrero de 2014

Receta No. 1-17 en C#: Creación de una Clase Estática

Tabla de Contenido

0. Introducción
1. Problema
2. Solución
3. Discusión de la Solución
4. Práctica
5. Conclusiones
6. Glosario
7. Enlaces & Literatura

0. Introducción

En un artículo previo hablé y describí las características de las Clases Estáticas en C#, e inclusive presenté algunos ejemplos acerca de uso; en cuanto a esta receta va a resultar interesante porque se convierte en complementaria (en el sentido práctico, por supuesto). Construiremos una clase estática con miembros de la misma naturaleza que nos sirva de utilitario para determinar si un URL y una dirección de correo electrónico son válidos.

1. Problema

Se ha presentado una propuesta de rediseño del módulo de utilitarios. Actualmente las clases utilitarias deben ser instanciadas, pero se detectó que esto representa uso de recursos extra por parte de la aplicación. Entonces el equipo de programación tiene ahora la tarea de crear una clase estática con el conjunto de métodos relacionados para la validación de direcciones (URL, email).

2. Solución

La estructura de datos que vamos a crear consiste en una clase estática que posee miembros del mismo calificativo, es decir, estáticos. Estos miembros son accedidos especificando el nombre del tipo, el operador punto, y enseguida el nombre del miembro (dígase una propiedad, método, indezador, &c.). En la próximo sección entraré en mayores detalles de esta solución al requerimiento planteado en la sección 1.

3. Discusión de la Solución

Hablemos de las clases y miembros estáticos. Esto es necesario para entender su utilidad en la creación de estructuras de datos que ayuden a concebir un mejor diseño de solución.

3.1 Clases Estáticas

[Nota: Antes de empezar quiero apuntar que esta sección será muy breve; sólo resaltará aquellos puntos sobresalientes de las clases estáticas. Para mayor información diríjase al artículo Clases Estáticas en C#.]

La declaración de una clase estática debe seguir la siguiente sintaxis de ejemplo:

static class NombreClase

Obsérvese el uso del modificador static [2] previo al nombre del a clase. Esto es suficiente y necesario para calificar a una clase como estática.

Algunos puntos a tener en cuenta:
  • Una clase estática no admite el uso del operador new [3]. El intentar esa operación no permitida, el compilador arrojará el error:

    error CS0723: `ced': cannot declare variables of static type

    error CS0712: Cannot create an instance of the static class

     Prueba de ejecución.
  • Los miembros de la clase deben ser declarados con el modificador static. Si omitimos el modificador, el compilador le advertirá sobre esto:

    error CS0708: 'Metodo': cannot declare instance members in a static class

    Prueba de ejecución.
  • No es posible crear jerarquía de herencia a partir de una clase estática. El compilador arrojará el mensaje de error.

    error CS0709: `ClasePrueba': Cannot derive from static class `ClaseEstaticaDemo'

    Prueba de ejecución.

3.2 Métodos Estáticos

La declaración de métodos estáticos en el lenguaje de programación C# sigue la siguiente sintaxis:

public static void NombreMetodo() { /*...*/ }

Consideraciones acerca de métodos estáticos:
  • La declaración de un método estático exige la especificación del modificador static dentro una clase estática.
  • Para acceder un método estático se debe seguir la siguiente sintaxis:

    NombreTipo.NombreMetodo()

3.3 Más Acerca de Clases y Miembros Estáticos

El Framework .NET posee un conjunto inmenso de tipos estáticos. Por mencionar un par de las más utilizadas:
  • Math (System)
  • Console (System)

4. Práctica

Incluiré el ejemplo prometido: validador de URL y direcciones de email como métodos estáticos en una clase estática utilitaria.


Este ejemplo hace uso de expresiones regulares (RegEx) [4]. Por el momento hagamos caso omiso de la implementación de los métodos ValidarEmail y ValidarUrl. En próximas entregas (ya sea artículos, recetas, ejercicio) veremos cómo utilizarlas en la extracción, búsqueda, y reemplazo de texto de manera más inteligente y eficaz.

Los métodos ValidarEmail (líneas 18-22) y ValidarUrl (líneas 31-36) tienen especificado el modificador static para explicitar que se tratan de métodos estáticos.

Compilamos la clase utilitaria como un assembly:


  1. csc /t:library /out:UtilitarioWeb.dll UtilitarioWeb.cs

Ahora creamos una clase de prueba.

Archivo PruebaUtilitarioWeb.cs:



Compilamos:


  1. csc /target:exe /reference:UtilitarioWeb.dll /out:PruebaUtilitarioWeb.exe PruebaUtilitarioWeb.cs

Las líneas 9 y 10 hacen la prueba directa de los métodos ValidarEmail y ValidarUrl.

Prueba de ejecución.

Conclusiones

Ahora poseemos conocimientos prácticos acerca de la creación de clases estáticas, al igual que miembros estáticos. Vimos que la construcción del lenguaje C# para declarar una clase o miembro estático es static. Para aterrizar este concepto creamos un ejemplo en donde creamos una clase y un par de métodos estáticos. Generalmente los métodos utilitarios en un diseño de una solución software se agrupan lógicamente y encajan en tipos estáticos.

Glosario

- .NET
- Compilador
- Email
- Estructura de datos
- Expresión regular
- Framework
- Miembro estático
- RegEx
- URL

Enlaces & Literatura

1]: Visual C# 2010 Recipes by Allen Jones and Adam Freeman. Copyright 2010 Allen Jones and Adam Freeman, 978-1-4302-2525-6.
[2]: static (C# Reference) - http://msdn.microsoft.com/en-us/library/98f28cdx.aspx
[3]: new Operator (C# Reference) - http://msdn.microsoft.com/en-us/library/fa0ab757.aspx
[4]: Regular expression, the free encyclopedia - https://en.wikipedia.org/wiki/Regular_expression


M

No hay comentarios:

Publicar un comentario

Envíe sus comentarios, dudas, sugerencias, críticas. Gracias.