C# día 05: clases!
Veamos como se definen las clases. La cosa no cambia salvo alguna cosa curiosa; si no se especifica otra cosa, los atributos y métodos NO son accesibles, vamos que NO son public por defecto.
Veamos la clase Punto, y luego una clase que le crea un instancia y lo usa.
using System;
// Definimos la clase punto,
// que se refiere a un punto en una coordenadas
public class Punto {
// ATENCION: SI NO SE ESPECIFICA NADA,
// los atributos y metodos NO SON accesibles
public int x;
public int y;
// Constructora: siempre con el mismo nombre que la clase
public Punto ()
{
// Aprovechamos para inicializar atributos
this.x = 0;
this.y = 0;
}
// Una funcion llamada posicion
// Devuelve por consola la posicion actual de X
public int posicionX ()
{
return x;
}
// Una funcion llamada posicion
// Devuelve por consola la posicion actual de Y
public int posicionY ()
{
return y;
}
// Una funcion llamada mueveX
// Cambia la posicion de X
public void mueveX (int cuanto)
{
this.x += cuanto;
}
// Una funcion llamada mueveY
// Cambia la posicion de Y
public void mueveY (int cuanto)
{
this.y += cuanto;
}
}
Y esta es la clase que lo usa
/**
UsaPunto.cs
Una muestra de los UsaPunto de c#
Para compilar con MS: csc UsaPunto.cs Punto.cs, ejecucion: UsaPunto.exe
Para compilar con Mono: mcs UsaPunto.cs , ejecucion: mono UsaPunto.exe
*/
// Definicion de la clase UsaPunto
// donde creamos una instancia de la clase punto y la usamos
public class UsaPunto
{
// Directamente metemos la funcion principal
// para probar el objeto punto
public static void Main ()
{
// Aqui creamos la instancia de Punto.
Punto miPunto = new Punto();
System.Console.WriteLine("Ok, punto creado");
// Probamos algunas funciones...
miPunto.mueveX(6);
miPunto.mueveY(45);
System.Console.Write("Posicion de X: {0}, ", miPunto.posicionX());
System.Console.WriteLine("posicion de Y: {0}", miPunto.posicionY());
}
}
También podemos definir una clase dentro de otra. Por ejemplo, la clase Circulo y su Color.
/**
Circulo.cs
Una muestra de los Circulo de c#
Para compilar con MS: csc Circulo.cs, ejecucion: Circulo.exe
Para compilar con Mono: mcs Circulo.cs , ejecucion: mono Circulo.exe
*/
// Una clase definida dentro de otra
// El circulo y su clase color
public class Circulo
{
int diametro;
public Color miColor;
// Clase Color
public class Color
{
string color;
public Color(string inicial)
{
this.color = inicial;
}
// Un método para cambiar el atributo color
public void cambiaColor(string otro)
{
this.color = otro;
}
// Un método para que devuelva el color
public string dameColor()
{
return this.color;
}
}// fin de clase color
// Constructor de Circulo
public Circulo (int diametroInicial, string colorInicial)
{
this.diametro = diametroInicial;
this.miColor = new Color(colorInicial);
}
// Método que devuelve el diametro
public int dameDiametro ()
{
return this.diametro;
}
// Funcion o método principal para las pruebas
public static void Main ()
{
// Creamos una instancia
Circulo circulo = new Circulo(66, "verde");
System.Console.WriteLine("Hemos creado un circulo");
System.Console.WriteLine("Su diametro es: {0}", circulo.dameDiametro());
// Vamos a cambiarle el color
circulo.miColor.cambiaColor("negro");
System.Console.WriteLine("OK, color cambiado: {0}", circulo.miColor.dameColor());
}
}
pello.io