Lenguaje C# Parte 4 Objetos y Clases
Objetos
Los objetos son construcciones de programación que se componen de datos, comportamiento e identidad.Los datos del objeto se encuentran en los campos, propiedades y eventos del objeto; los métodos e
interfaces del objeto definen los comportamientos del objeto, pero estos residen en la definición del tipo al
que pertenece el objeto.
Los objetos tienen identidad, es decir, dos objetos con el mismo conjunto de datos no son necesariamente
el mismo objeto.
En C#, los objetos se definen mediante classes y structs, que conforman el plano único a partir del cual
operan todos los objetos de ese tipo.
Los objetos tienen las propiedades siguientes:
- Todo lo que se utiliza en C# es un objeto, incluidos los formularios Windows Forms y los controles.
- Se crean instancias de objetos; es decir, éstos se crean a partir de plantillas definidas por clases y estructuras.
- Los objetos utilizan Propiedades (Guía de programación de C#) para obtener y cambiar la información que contienen.
- A menudo, los objetos tienen métodos y eventos que les permiten realizar acciones.
- Visual Studio proporciona herramientas para manipular objetos: la Propiedades (Ventana) permite cambiar los atributos de los objetos, como formularios Windows Forms. El Examinador de objetos permite examinar el contenido de un objeto.
- Todos los objetos de C# heredan de Object.
Clases
En C#, una clase es un tipo de datos muy eficaz. Como las estructuras, las clases definen los datos y el
comportamiento del tipo de datos. Los programadores pueden crear objetos que son instancias de una
clase. A diferencia de las estructuras, las clases admiten herencia, que es una parte fundamental de la
programación orientada a objetos.
El nivel de acceso precede a la palabra clave class. En este caso, se utiliza public, que significa que cualquiera puede crear objetos a partir de esta clase. El nombre de la clase sigue a la palabra clave class.
Tipos
Todos los tipos y miembros de tipo tienen un nivel de accesibilidad, que controla si pueden utilizarse por
otro código de su ensamblado u otros ensamblados.
- public: Puede obtener acceso al tipo o miembro cualquier otro código del mismo ensamblado o de otro ensamblado que haga referencia a éste.
- prívate: Solamente puede obtener acceso al tipo o miembro código de la misma clase o estructura.
- protected: Solamente puede obtener acceso al tipo o miembro código de la misma clase o estructura o de una clase derivada.
- internal: Puede obtener acceso al tipo o miembro cualquier código del mismo ensamblado, pero no de un ensamblado distinto.
- protected internal: Puede obtener acceso al tipo o miembro cualquier código del mismo ensamblado o cualquier clase derivada de otro ensamblado.
Crear objetos
Aunque se utilizan a veces de forma intercambiable, una clase y un objeto son cosas diferentes. Una clasedefine un tipo de objeto, pero no es propiamente un objeto. Un objeto es una entidad concreta basada en
una clase y, a veces, se denomina instancia de una clase.
Los objetos se pueden crear con la palabra clave new seguida del nombre de la clase en la que se basará el objeto.
Este código crea dos referencias a objeto que se refieren al mismo objeto. Por consiguiente, los cambios
realizados en el objeto a través de object3 se reflejarán en los usos posteriores de object4. El hecho de que
las clases se conozcan como tipos de referencia se debe a que se hace referencia a los objetos basados en clases por referencia.
Las clases tienen las propiedades siguientes:
- A diferencia de C++, sólo se admite una herencia única: una clase puede heredar la implementación solamente de una clase base.
- Una clase puede implementar más de una interfaz.
- Las definiciones de clase se pueden dividir entre archivos de código fuente diferentes. Para ello C# permite la definición de clases parciales.
- Las clases estáticas son clases selladas que contienen sólo métodos estáticos.
Enumeraciones
Las enumeraciones son un tipo de dato distinto que corresponde a un conjunto de constantes con nombre
denominado lista de enumeradores. La palabra clave enum se utiliza para declarar una enumeración. Cada
tipo de enumeración tiene un tipo subyacente, que puede ser cualquier tipo integral excepto char. El tipo
predeterminado subyacente de los elementos de la enumeración es int. De forma predeterminada, el
primer enumerador tiene el valor 0 y el valor de cada enumerador sucesivo se incrementa en 1.
A una variable de tipo Dias se le puede asignar cualquier valor en el intervalo del tipo subyacente; los
valores no se limitan a las constantes con nombre
El tipo subyacente especifica el almacenamiento asignado para cada enumerador. No obstante, se necesita una conversión explícita (casting), para convertir un tipo enum al tipo entero subyacente. Por ejemplo, la siguiente instrucción asigna el enumerador Lunea a una variable de tipo int utilizando una conversión explícita para convertir de enum a int.
En este ejemplo, se declara la enumeración Dias. Dos enumeradores se convierten explícitamente en un
número entero y se asignan a variables de número entero.