P. 1
Atributos

Atributos

|Views: 4|Likes:
Publicado pormain00demon

More info:

Published by: main00demon on Nov 19, 2013
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See more
See less

01/27/2015

pdf

text

original

Programación con Atributos

¿Que son los atributos?
El término atributo puede resultar un tanto confuso para quienes no están habituados a la terminología .NET, si se tiene en cuenta que este se utiliza en teoría de Programación Orientada a Objetos para referirse a las variables principales de una clase que sirven para almacenar los datos básicos de los objetos que posteriormente se definirán con ella, o lo que también suele identificarse como campos. Sin embargo en la programación orientada a objetos moderna el término atributo se maneja en otro contexto y hace referencia a información extra que se adhiere a una clase o a los elementos que la componen. Los atributos son elementos que permiten incluir directivas en las clases y sus elementos para suministrar información extra que pueda ser utilizada por el compilador o por otras clases en tiempo de ejecución. Esta información puede exigir que un programa se compile de una u otra forma, dependiendo de las condiciones que se presenten en el momento mismo del proceso, y de hecho determinará la forma como se vaya a ejecutar el código de programación. En general un atributo es una clase que se deriva de la clase System.Attribute, definida en la biblioteca de clases del Framework .NET. Así, por ejemplo, la clase CampoTablaAttribute, definida como se muestra en seguida, es un atributo:
public class CampoTablaAttribute : Attribute { string nombreCampo; public CampoTablaAttribute(string nombreCampo) { this.nombreCampo = nombreCampo; } }

La función principal de los atributos consiste en asociar metadatos personalizados a los elementos de un programa. Para esto es importante tener en cuenta que, desde la perspectiva informática, un metadato cumple la función de suministrar información relacionada con uno o varios datos específicos, y por esto se dice que un metadato es un dato de un dato. En la programación con .NET estos metadatos son embebidos dentro del ensamblado durante el proceso de compilación del mismo.

1

Console. Este atributo tiene la función de condicionar la compilación de los métodos de una clase dependiendo de si este proceso se hizo en modo DEBUG o en modo RELEASE.Diagnostics. Estos últimos tienen la función básica de suministrar información de un elemento de programa para que pueda ser utilizada por otras partes del mismo. this. como el que pusimos de ejemplo anterior. es importante tener bien clara la funcionalidad de los mismos y una buena forma de lograrlo puede ser analizando como funcionan los atributos ya definidos en el Framework . } [ConditionalAttribute("DEBUG")] public void Division() { int resultado = numero1 / numero2.NET. int numero2) { this. public OperacionMatematica(int numero1. int numero2 = 0. El siguiente proyecto desarrollado en SharpDevelop. namespace CondicionCompilacion { public class OperacionMatematica { int numero1 = 0.NET incluye en su biblioteca de clases muchos atributos que en su gran mayoría cumplen con la función principal de suministrar información al compilador para determinar la forma como este debe realizar el proceso de compilación y en consecuencia manipular el comportamiento mismo de un programa dependiendo de las condiciones que puedan darse en tiempo de ejecución.numero2 = numero2.NET. Pero. using System. 2 . El atributo ConditionalAttribute Para entender mejor el concepto de atributo vamos a iniciar con un sencillo ejemplo que hace uso del atributo ConditionalAttribute incluido en la biblioteca de clases del Framework . El otro grupo de atributos correspondería a aquellos que puede definir el programador.WriteLine("Suma = {0}". resultado). using System. al que se ha denominado CondicionCompilacion condiciona la compilación del método Division de la clase OperaciónMatematica al modo DEBUG.WriteLine("Cociente = {0}".numero1 = numero1. } public void Adicion() { int resultado = numero1 + numero2. Console. antes de entrar a construir nuestros propios atributos. resultado).El Framework .

si la compilación se hace en modo RELEASE la salida será similar a la siguiente: Suma = 35 Lo anterior nos muestra que en la primera compilación se incluyen todos los métodos de la clase OperacionMatematica. lo cual garantiza que no se generará ningún error de compilación por la exclusión del mismo. Podemos observar claramente que este atributo le informa al compilador cuando debe compilar el método al cual se ha asignado.Adicion().Diagnostics. Si el lector compila y ejecuta el programa en modo DEBUG observará que en la ventana de comandos aparece una salida similar a la siguiente: Suma = 35 Cociente = 6 En cambio. } } } Lo primero que se debe hacer para utilizar el atributo ConditionalAttribute es incluir el espacio de nombres System. Pero en el llamado que se hace de estas clases. El atributo ObsoleteAttribute Antes de continuar con el uso de atributos es necesario aclarar que por cuestiones de nomenclatura y manejo apropiado de las directrices de codificación se acostumbra a identificar todas las clases que representan atributos con el sufijo Attribute.Division(). operacion = new OperacionMatematica(30. La segunda clase tan solo implementa el método Main. 5).NET obvian el uso de este sufijo sin que esto implique 3 . Además.ReadKey(true). operacion. operacion. En seguida se han definido dos clases que conforman el programa de prueba: OperacionMatematica y Programa. mientras que en la segunda compilación no se incluye el método Division al cual se le ha asignado la directiva [ConditionalAttribute("DEBUG")].} } class Programa { public static void Main(string[] args) { OperacionMatematica operacion. en la compilación en modo RELEASE se ignorará cualquier llamado que se haga al método Division. en el cual se construye un objeto con la clase anterior y se hace un llamado a los métodos que lo conforman. Console. la mayoría de lenguajes . La clase OperacionMatematica hace uso del atributo ConditionalAttribute para informarle al compilador que debe compilar el método Division únicamente cuando se haga en modo DEBUG.

} 4 .Write("_"). por ejemplo.ReadKey(true).Dibujar(). i++) { Console. excepto a parámetros y valores devueltos. el atributo ObsoleteAttribute puede codificarse simplemente como Obsolete. El siguiente ejemplo muestra el uso del atributo Obsolete aplicado a la clase LineaRecta: using System. Esto es muy frecuente en la implementación de nuevas versiones de componentes cuando se ha decidido eliminar una parte del código que se incluía en la antigua versión.problema alguno de compilación. pero se desea mantener la compatibilidad con las nuevas implementaciones. linea. Su función es informar al programador que algunos fragmentos de código se han declarado obsoletos y que se han reemplazado por otros o ya no son válidos de usar. public int Largo { get { return largo. La clase ObsoleteAttribute define las propiedades Message e IsError que se encargan de suministrar la información necesaria que necesita el compilador para decidir que hacer con los tipos que han sido marcados como obsoletos. El valor por defecto de la propiedad IsError es false lo cual hace que se produzca siempre una aviso cuando se compila el código. Al asignar el valor true a la propiedad IsError el compilador produce un error y genera una cadena de texto sobre dichom. namespace ClaseObsoleta { class Programa { public static void Main(string[] args) { LineaRecta linea = new LineaRecta(). i < largo. Console. } } [Obsolete("Ya existe una clase gráfica para esta tarea")] public class LineaRecta { int largo.NET. } set { largo = value. } } public void Dibujar() { for (int i = 0. El atributo Obsolete puede aplicarse a cualquier tipo de C#. Así. Esta es un simplificación resultado de una pequeña ayuda que nos da . la cual se puede leer a través de la propiedad Message. linea.Largo = 10.

A su vez el IDE lee el mensaje incluido en los metadatos del ensamblado y lo muestra por medio de la consola de salida.WriteLine(). como los que se agregan a la ventana de Herramientas de los IDEs. lee el mensaje que se ha asignado a dicho atributo y finalmente genera el metadato necesario que se escribe sobre el ensamblado de este programa. aunque el proceso se ejecuta completamente.Tangua.Console. } } } Al compilar el programa. 2012 . se genera una mensaje de advertencia que corresponde al mensaje asignado al atributo. En estos casos el compilador genera los metadatos necesarios que le permitirán al IDE cargar y mostrar dicha información en el lugar y la forma apropiados. En este caso el compilador identifica que a la clase LineaRecta se le ha fijado el atributo Obsolete. Los más utilizados son aquellos que le permiten al desarrollador de componentes para interfaces gráficas. Colombia 5 . Igual que los anteriores existe una infinidad de atributos integrados en el Framework de .NET. suministrar de una forma muy sencilla la información necesaria que se debe mostrar en la ventana Propiedades cuando uno de ellos es seleccionado.

You're Reading a Free Preview

Descarga
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->