Llegados a este punto, podríamos hablar tan profundamente y durante tanto tiempo sobre clases, objetos, métodos, atributos… que desvirtuaría el sentido de este curso. Supongo que tenéis nociones básicas de todo este paradigma de la orientación a objetos y veremos cómo implementar clases en C# con Mono.
Podríamos decir a muy grosso modo que:
En C#, las estructuras pueden tener métodos básicos para la lectura o modificación de las variables.
¿Cómo crear una clase?
Digo cómo crear y no cómo declarar una clase, porque el curso está basado en MonoDevelop y tras crear una clase con el interfaz, veremos cómo se declara en el código.
Dentro del espacio de nombres, a la izquierda de la interfaz, hacemos: clic derecho, “Añadir”, “Nuevo archivo”, “Clase vacía” e indicamos el nombre. Se nos creará un esqueleto básico de clase como el que sigue:
using System; namespace holaMundo { public class persona { public persona () { } } }
Veamos ahora la clase un poco más rellena. Como veréis, estoy dentro del mismo espacio de nombres en el que hemos hecho los ejemplos anteriores, “holaMundo”. Incluimos: atributos, métodos para manejar los atributos, el constructor y un método de ejemplo.
using System; namespace holaMundo { public class persona { // atributos string nombre; int edad; // propiedades: métodos para manejar los atributos public string Nombre { get { return nombre; } set { nombre = value; } } public int Edad { get { return edad; } set { edad = value; } } // constructor public persona (string _nombre, int _edad) { // usamos los métodos para manejar atributos en lugar de this.nombre Nombre = _nombre; Edad = _edad; } // método para imprimir datos de la instancia public void print() { System.Console.WriteLine("Nombre: " + nombre + " - Edad: " + edad.ToString()); } } }
Aunque la sintaxis os resultará bastante familiar si habéis trabajado con lenguajes como Java o C++, hay alguna curiosidad que querría comentar:
Los getter y setter, también llamadas propiedades, son unos métodos que se encargan de interactuar con los atributos, sin necesidad de usar los típicos y molestos: getVariable() y setVariable(valor). Se integran muy bien en el código y al hacer llamadas del estilo Edad = algo o algo = Edad, se llamarán de forma automática.
MonoDevelop crea las cases automáticamente como public, de esta forma puede tenerse acceso desde fuera de su ensamblado.
Los atributos de las clases también pueden tener diferentes niveles de acceso. Por defecto, si no se indica es private. Veamos las diferencias entre ellos:
Como he dicho, hay muchas más opciones y mucho más que comentar en este apartado, pero si conocéis orientación a objetos, con esto tendréis suficiente.
De todas formas, vía comentarios, responderé posibles dudas que puedan surgir :).
Estructuras
Antes de terminar, haremos una breve introducción a este tipo de mecanismo, que usamos para agrupar distintas variables en torno a una unión común, sin aportar ningún tipo de método para su manejo (esto las distingue directamente de las clases), pero a diferencia de lenguajes más antiguos, permitiendo que tengan variables privadas y propiedades para su manejo.
Veamos cómo se declaran y cómo se hacen llamadas a sus miembros:
public struct direccion{ string calle; int numero; char letra; public string Calle{ get { return calle; } set { calle = value; } } public int Numero{ get { return numero; } set { numero = value; } } public char Letra{ get { return letra; } set { letra = value; } } }
Las llamadas las haremos a las propiedad, que podemos cambiarlas si nos interesan en el código anterior con funciones más complejas, llamadas a BB.DD., etc.; en definitiva, con lo que necesitemos.
direccion personal; personal.Calle = "Avenida sin nombre"; personal.Numero = 6; personal.Letra = 'C'
Entregas anteriores
https://www.youtube.com/embed/z-xGk9c_eOw Guionista y locutor: Manuel Ignacio López Quintero.Fecha de publicación: 31 de diciembre de 2024.
Ver comentarios
Hola,
No sé si le pasa a alguién más, pero desde hace algo menos de una semana, la web me sale totalmente descuadrada. Me sale la cabecera donde siempre, pero luego los artículos me salen todos desplazados hacia la derecha dejando un margen de un tercio de pantalla en blanco a la izquierda.
Por si os vale de algo estoy con iceweasel 3.0.6
@PasabaPorAqui: Desde Chrome/Chromium no hay problema, pero acabo de ver que en Firefox 3.5.x sí que se descuadra, voy a revisar el CSS ahora mismo.
Mil gracias por el aviso.
Ok, ahora se muestra perfecto.
Gracias a vosotros por la página y los artículos que nos dais.
@PasabaPorAqui: Gracias a ti por seguirnos y por avisarnos, estamos todos tan metidos en navegadores WebKit que a veces descuidamos a Gecko (y qué decir de Internet Explorer...).
Antes que nada Saludos, Escribo para pregutar como se crean las clases, tengo duda, es decir, quiero aprender a programar tengo nociones simplemente pero no tengo idea de como hacerlo, por que segun entiendo hay que tener algo en la main para poder crear la clase pero no comprendo bien esa parte, osea que hay que tener en la main para poder crear la clase