POO en C#

Hola a todos, hoy os voy a explicar como funciona la programación orientada a objetos o POO en C#.

La programación orientada a objetos es un paradigma de la programación que descompone el código de una clase en unidades llamados objetos.

Un objeto en C# es una entidad existente en la memoria del ordenador que tiene unas propiedades, llamados atributos, y unas operaciones disponibles específicas, llamados métodos.

Estos objetos vienen de clases, en realidad hasta ahora hemos usado una clase, solo que esta clase tenia un método ejecutable.

Vamos a hacer un ejemplo creando una clase Coche.

Para crear clases en C# lo tenemos que hacer es pulsar con el botón secundario en el nombre de la solución:

 

Esto es lo que nos crea:


ng System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace POO1
{
    class Coche
    {
    }
}

Hemos dicho que una clase tiene atributos, normalmente los atributos suelen ser privados y para indicarlo le vamos a poner un _ delante del nombre. Al final, crear atributos es como crear variables. Vemos el resultado:


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace POO1
{
    class Coche
    {
        // Atributos
        private int _id;
        private String _marca;
        private String _modelo;
        private int _km;
        private double _precio;

    }
}


Ahora tenemos que crear un método especial llamado constructor, esto nos permitirá crearnos objetos mas adelante. Le pasaremos los datos necesarios y se lo asignaremos.


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace POO1
{
    class Coche
    {
        // Atributos
        private int _id;
        private String _marca;
        private String _modelo;
        private int _km;
        private double _precio;

        public Coche(int id, string marca, string modelo, int km, double precio)
        {
            this._id = id;
            this._marca = marca;
            this._modelo = modelo;
            this._km = km;
            this._precio = precio;
        }

    }
}


Ahora vamos a crear los métodos get y set. El método get devuelve el valor de un atributo concreto y el set modifica el valor de un atributo.

En C#, estos get y set se comportan como si fueran propiedades.


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace POO1
{
    class Coche
    {

        private int _id;
        private String _marca;
        private String _modelo;
        private int _km;
        private double _precio;

        public Coche(int id, string marca, string modelo, int km, double precio)
        {
            this._id = id;
            this._marca = marca;
            this._modelo = modelo;
            this._km = km;
            this._precio = precio;
        }

        public int id { get => _id; set => _id = value; }
        public string marca { get => _marca; set => _marca = value; }
        public string modelo { get => _modelo; set => _modelo = value; }
        public int km { get => _km; set => _km = value; }
        public double precio { get => _precio; set => _precio = value; }

    }
}

Esta es la forma más básica de hacer get y set.

Por último, os recomiendo poner un método especial, que nos servirá para mostrar el estado del objeto.


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace POO1
{
    class Coche
    {

        private int _id;
        private String _marca;
        private String _modelo;
        private int _km;
        private double _precio;

        public Coche(int id, string marca, string modelo, int km, double precio)
        {
            this._id = id;
            this._marca = marca;
            this._modelo = modelo;
            this._km = km;
            this._precio = precio;
        }

        public int id { get => _id; set => _id = value; }
        public string marca { get => _marca; set => _marca = value; }
        public string modelo { get => _modelo; set => _modelo = value; }
        public int km { get => _km; set => _km = value; }
        public double precio { get => _precio; set => _precio = value; }

        public override string ToString()
        {
            return "Marca: " + marca + ", modelo: " + modelo + " con un precio de " + precio;
        }

    }
}

Vemos un ejemplo de como usar nuestra clase:


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace POO1
{
    class Program
    {
        static void Main(string[] args)
        {

            // Creamos un objeto coche
            Coche c = new Coche(1, "BMW", "4", 100, 12000);

            // get de precio de coche
            Console.WriteLine(c.precio);

            // get de marca de coche
            Console.WriteLine(c.marca);

            // Modifico el precio del coche con el set
            c.precio = 15000;

            // Vuelvo a mostrar para ver si se ha modificado
            Console.WriteLine(c.precio);

            // Muestro el estado completo
            Console.WriteLine(c.ToString());

            Console.ReadLine();
        }
    }
}


Espero que os sea de ayuda. Si tenéis dudas, preguntad. Estamos para ayudarte.

Compartir

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *