Introduccion A Clases C
Enviado por zambayon • 23 de Mayo de 2015 • 5.420 Palabras (22 Páginas) • 159 Visitas
Introducción a las clases en C#
Como hemos dicho, C# es un lenguaje orientado a objetos. A diferencia de lenguajes como C++ o Python en los que la orientación a objetos es opcional, en C# y al igual que en Java, la orientación a objetos es ineludible, de hecho cualquier método o variable está contenida dentro de un objeto. Y el concepto fundamental en torno a la orientación a objetos es la clase.
Una clase es como una plantilla que describe cómo deben ser las instancias de dicha clase, de forma que cuando creamos una instancia, ésta tendrá exactamente los mismos métodos y variables que los que tiene la clase. Los datos y métodos contenidos en una clase se llaman miembros de la clase y se accede a ellos siempre mediante el operador "." . En el siguiente ejemplo, se definirá una clase, Clase1 y en el método Main se creará una instancia de Clase1 llamada MiClase. Una buena idea es jugar un poco con el código para ver que la instancia de la clase efectivamente tiene los mismos miembros que la clase Clase1 (que sería la plantilla de la que hablábamos antes)
using System;
//definimos nuestra clase
class Clase1{
public int a = 1;
private double b = 3;
public char c = 'a';
}
//usamos la clase que hemos creado
class UsoClase{
public static void Main()
{
Clase1 MiClase = new Clase1(); // asi creamos una instancia de Clase1
Console.WriteLine( MiClase.c ); //podemos llamar a los tipos que hay dentro de Clase1
}
}
los identificadores public delante de los tipos que hay dentro de Clase1 son necesarios para luego poder ser llamados desde otra clase, como en este caso, que estamos llamando a los miembros de una instancia de Clase1 desde UsoClase. Pero en las clases no solo hay variables, también podemos incluir métodos.
using System;
//definimos nuestra clase
class Clase1{
public int a = 1;
public double b = 3;
public char c = 'a';
public void Descripcion()
{
Console.WriteLine("Hola, soy una clase");
}
}
//usamos la clase que hemos creado
class UsoClase{
public static void Main()
{
Clase1 MiClase = new Clase1(); // asi creamos una instancia de Clase1
Console.WriteLine( MiClase.c ); //podemos usar todos los tipos que hay dentro de Clase1
MiClase.Descripcion();
}
}
Podemos hacer más cosas con las clases, como heredar otras clases o implementar interfaces, pero en este capítulo nos centraremos en el uso de métodos y variables.
Métodos
Los métodos, también llamados funciones, son trozos de código que reciben unos datos, hacen algo con esos datos, y a veces devuelven algún valor. En C#, todos los métodos se encuentran contenidos dentro de un objeto.
La estructura mínima de un método tiene las siguientes partes:
* Tipo devuelto
* Nombre del método
* Parámetros (puede ser vacío)
* Cuerpo del método
de forma que el siguiente método:
double Divide( double a, double b )
{
return a/b;
}
devuelve un tipo double, tiene por nombre Divide, los parámetos son a y b, ambos del tipo double, y el cuerpo del método es simplemente "return a/b;".
Cuando queramos llamar a un método, debemos simplemente poner el nombre del método y sus argumentos dentro de un paréntesis separados por comas. Para llamar al método Divide declarado antes, simplemente debemos escribir Divide(8, 2);
Según lo que hemos visto, el ejemplo del método Divide() completo necesita tener una clase donde definirse y un método Main() donde ejecutarse.
using System;
class Metodo{
public double Divide( double a, double b )
{
return a/b;
}
}
class Principal{
public static void Main()
{
Metodo m = new Metodo();
Console.WriteLine( m.Divide(8, 2) );
}
}
Pasando valores a los métodos
Parámetros
La declaración formal de parámetros también define variables. Hay cuatro tipos de parámetros: parámetros por valor, por referencia, parámetros de salida, y arreglos de parámetros.
Paso por valor
El paso de parámetros por valor es usado por defecto para pasar parámetros a métodos. Cuando se pasa un parámetro por valor a una función realmente se está pasando una copia de dicho parámetro, por lo que las modificaciones que le hagamos al parámetro dentro del método no afectarán al parámetro original. El ejemplo
using System;
class Test {
static void F(int p) {
p++;
Console.WriteLine("p = {0}", p);
}
static void Main() {
int a = 1;
Console.WriteLine("pre: a = {0}", a);
F(a);
Console.WriteLine("post: a = {0}", a);
}
}
muestra un método F que tiene un parámetro por valor llamado p. El ejemplo produce la salida:
pre: a = 1
p = 2
post: a = 1
aunque el valor del parámetro p haya sido modificado dentro del método, éste parámetro solamente tenía una copia del valor del parámetro a que pasamos al método; por lo que cuando imprimimos el parámetro a vemos que éste parámetro ha mantenido su valor original.
Paso por referencia
El paso de parámetros por referencia es la contraposición lógica al paso por valor. En el paso por referencia no se realiza ninguna copia del objeto, sino que lo que se le pasa a la función es una referencia del objeto, de forma que el parámetro pasa directamente a la función y cualquier modificación sobre el parámetro dentro de la función afectará al parámetro original
using System;
class Test {
static void Swap(ref int a, ref int b) {
// intercambia los dos valores
int t = a;
a = b;
b = t;
...