Clases
En C# un programa se crea
mediante la definición de nuevos tipos. De hecho, en C# todos los tipos son
clases. Cada nuevo tipo estará formado por un conjunto de datos y funciones.
Veamos un ejemplo:
// clase.cs
using System;
// declaración de la clase
class Persona
{
// una variable que contendrá el
nombre
string nombre;
// constructor: como inicializar
un objeto de clase Persona
public Persona(string nombre)
{
this.nombre = nombre; // this:
una forma de acceder a este objeto
}
// propiedad: una forma de
acceder al nombre de una persona
public string
Nombre
{
get {
return nombre; }
set {
nombre = value; } // variable especial value
}
public
static void Main()
{
Persona p = new
Persona("Adán");
Console.WriteLine("p.Nombre = {0}", p.Nombre);
p.Nombre = "Eva";
Console.WriteLine("p.Nombre = {0}", p.Nombre);
}
}
La palabra clave this
Esta palabra
clave, this, nos permite referirnos a cualquier variable o método de la
instancia de una clase en la que nos encontremos. También nos permite llamar a
un construtor sobrecargado, y declarar o acceder a un indexador. Un uso muy
común de la misma es distinguir entre un campo de una instancia de un objeto y
un parámetro.
public Persona(string nombre)
{
this.nombre = nombre;
}
Campos
Los campos de una clase son
los datos que esta contiene. En su forma más sencilla pueden ser una simple
declaración de variable como:
string nombre;
que cada instancia de una clase contendrá.
Podemos utilizar los
modificadores static y readonly para alterar el
comportamiento de un campo.
A los campos no estáticos (por defecto) se les denomina variables de
instancia y los campos estáticos variables de clase. Mediante el uso explícito
de la palabra static hacemos que de una variable pase a haber una
única copia compartida por todas las instancias de una clase.
// static.cs
using System;
class Persona
{
static int
contador;
int id;
public Persona() {
id = contador++; }
~Persona() { contador--; }
public int
Contador
{
get {
return contador; }
}
public int
Id
{
get {
return id; }
}
static void
Main()
{
Persona p1 = new
Persona();
Persona p2 = new Persona();
Console.WriteLine("Hay
{0} personas", p1.Contador);
Console.WriteLine("p2.Id()
= {0}", p2.Id);
}
}
El modificador readonly nos permite evitar que una variable sea
modificada una vez que sea asignada. Al igual que una constante posee un valor
invariable, pero este se calcula en tiempo de ejecución en vez de en tiempo de
compilación. Las constantes tienen la ventaja de permitir realizar un mayor
número de optimizaciones sobre ellas. En cambio las variables readonly, nos
aportan un mayor grado de flexibilidad, pues pueden retrasar el calcular su
valor hasta la ejecución del programa. Esto puede aportar ventajas a la hora de
modificar su valor sin tener que recompilar el código para que el nuevo valor
surta efecto, como a la hora de corregir un valor erróneo o simplemente
actualizarlo.
DEMOSTRACIÓN
En Visual Studio vamos a dar click en menú File à New à Project
En la Ventana emergente le damos click a Window, seleccionamos
la opción “Console Application” y espacio Name colocamos el nombre del proyecto
que para el Ejemplo es “Demo 4 20483” y luego presionamos el botón OK
En nuestro proyecto, arriba del método Main,
empezaremos a escribir una clase llamada ‘Coche’ con sus atributos y
constructor como se muestra a continuación:
Seguimos en la clase ‘Coche’ tipiando sus métodos
correspondientes:
En el método Main() codificaremos las acciones que le
darán funcionalidad a nuestra clase:
Ejecutamos
Y el resultado es el siguiente: