Segundo Tip para programar Orientado a Objetos con C#, espero que a mas de uno le sirva 🙂
Contexto:
En el ejemplo del tip # 1, hemos creado una clase Cliente, el cual tiene 3 propiedades (Nombre, Edad y Cuenta). Cuando hemos hecho uso de esta clase, ha sido de la siguiente forma:
1: static void Main(string[] args)
2: {
3: Cliente cliente = new Cliente();
4: cliente.Nombre = "Héctor";
5: cliente.Edad = 23;
6: cliente.Cuenta = 22312;
7: System.Console.WriteLine(cliente);
8: }
Como podemos ver, tenemos que inicializar explícitamente cada una de las propiedades (cliente.Nombre=”Héctor; ….).
Imagina que tienes que crear una lista de Clientes, e inicializarla desde el inicio, una posible solución sería esta:
1: public List<Cliente> RellenarLista()
2: {
3: List<Cliente> lista = new List<Cliente>();
4:
5: Cliente cliente1 = new Cliente();
6: cliente1.Nombre = "Héctor";
7: cliente1.Edad = 23;
8: cliente1.Cuenta = 1111;
9: lista.Add(cliente1);
10:
11: Cliente cliente2 = new Cliente();
12: cliente2.Nombre = "Vianey";
13: cliente2.Edad = 23;
14: cliente2.Cuenta = 1111;
15: lista.Add(cliente2);
16:
17: Cliente cliente3 = new Cliente();
18: cliente3.Nombre = "Anahí";
19: cliente3.Edad = 23;
20: cliente3.Cuenta = 1111;
21: lista.Add(cliente3);
22:
23: return lista;
24: }
Ahora imagina, si fueran decenas de clientes los que tuvieras que inicializar, esto se vuelve cada vez mas complicado, con la sintaxis que hemos estado utilizando.
Solución:
El tip de este día es, crear constructores para inicializar los valores de las propiedades una vez creada la clase. ¿Cómo se hace esto?
A través de un constructor. Un constructor es un método que se ejecutará cuando la clase sea instanciada. Si no está declarado uno por nosotros, el .NET Framework creará uno por nosotros.
Primero debemos modificar nuestra clase Clientes, creando un constructor. Un constructor tiene la forma:
1: Class Cliente
2: {
3: public Cliente()
4: {
5: }
6: }
Como puedes ver, es parecido a un método, toma el mismo nombre que la clase, y no tiene ningún tipo de retorno. Este constructor será llamado cuando se utilice la palabra new.
Para nuestro ejemplo, debemos modificar nuestro constructor, de tal forma que podamos inicializar nuestras propiedades (Nombre, Edad y Cuenta), una vez que sea creada la instancia de la clase. Esto lo logramos de la siguiente manera:
1: class Cliente
2: {
3: public string Nombre { get; set; }
4: public int Edad { get; set; }
5: public int Cuenta { get; set; }
6:
7: public Cliente(string _nombre, int _edad, int _cuenta)
8: {
9: this.Nombre = _nombre;
10: this.Edad = _edad;
11: this.Cuenta = _cuenta;
12: }
13: }
Ahora bien, cuando queramos crear una nueva instancia de Cliente, se nos pedirá que le pasemos los parámetros solicitados por el constructor que hemos creado, si no, este marcará error:
Lo que el error nos dice, es que el constructor de Cliente, tiene 3 parámetros, y que está tratando de ser invocado, sin ninguno, por lo que nuestra inicialización quedaría:
1: class ListaClientes
2: {
3: public List<Cliente> RellenarLista()
4: {
5: List<Cliente> lista = new List<Cliente>();
6:
7: Cliente cliente1 = new Cliente("Héctor", 23, 1111);
8: lista.Add(cliente1);
9:
10: Cliente cliente2 = new Cliente("Vianey", 21, 2342);
11: lista.Add(cliente2);
12:
13: Cliente cliente3 = new Cliente("Anahí", 22, 8232);
14: lista.Add(cliente3);
15:
16: return lista;
17: }
18: }
Como vemos, se ha simplificado muchísimo el código, haciéndolo mas fácil de leer, y de escribir. Cualquier duda o comentario, no duden en escribirlo 🙂
Link del ejemplo: Tip2.zip
Salu2
Héctor Uriel Pérez Rojas