CSharp: Programación Orientada a Objetos

Aprende los conceptos avanzados de Programación Orientada a Objetos en C# con ejemplos prácticos y actualizados para el año 2024.

La programación orientada a objetos (POO) es un paradigma fundamental en el desarrollo de software moderno. En C#, este enfoque permite la creación de aplicaciones robustas y modulares. A continuación, exploraremos los conceptos clave de la POO en C# con ejemplos actualizados para 2024.

Clases y objetos

Las clases son la base de la POO. Una clase define un tipo de objeto, incluyendo sus propiedades y métodos. Los objetos son instancias de clases.

public class Persona
{
    public string Nombre { get; set; }
    public int Edad { get; set; }

    public void Saludar()
    {
        Console.WriteLine($"Hola, mi nombre es {Nombre} y tengo {Edad} años.");
    }
}

// Uso de la clase Persona
Persona persona = new Persona { Nombre = "Juan", Edad = 30 };
persona.Saludar();

Encapsulamiento

El encapsulamiento permite ocultar los detalles internos de una clase y exponer solo lo necesario. Esto se logra mediante modificadores de acceso como private y public.

public class CuentaBancaria
{
    private decimal saldo;

    public void Depositar(decimal monto)
    {
        if (monto > 0)
        {
            saldo += monto;
        }
    }

    public decimal ObtenerSaldo()
    {
        return saldo;
    }
}

// Uso de la clase CuentaBancaria
CuentaBancaria cuenta = new CuentaBancaria();
cuenta.Depositar(100.50m);
Console.WriteLine($"Saldo: {cuenta.ObtenerSaldo()}");

Herencia

La herencia permite crear una nueva clase a partir de una existente. La clase derivada hereda los miembros de la clase base.

public class Animal
{
    public string Nombre { get; set; }

    public void Comer()
    {
        Console.WriteLine($"{Nombre} está comiendo.");
    }
}

public class Perro : Animal
{
    public void Ladrar()
    {
        Console.WriteLine($"{Nombre} está ladrando.");
    }
}

// Uso de la clase Perro
Perro perro = new Perro { Nombre = "Rex" };
perro.Comer();
perro.Ladrar();

Polimorfismo

El polimorfismo permite utilizar una misma interfaz para diferentes tipos de objetos. En C#, se puede implementar mediante la herencia y las interfaces.

public abstract class Figura
{
    public abstract double CalcularArea();
}

public class Circulo : Figura
{
    public double Radio { get; set; }

    public override double CalcularArea()
    {
        return Math.PI * Radio * Radio;
    }
}

public class Rectangulo : Figura
{
    public double Ancho { get; set; }
    public double Alto { get; set; }

    public override double CalcularArea()
    {
        return Ancho * Alto;
    }
}

// Uso del polimorfismo
Figura circulo = new Circulo { Radio = 5 };
Figura rectangulo = new Rectangulo { Ancho = 4, Alto = 6 };

Console.WriteLine($"Área del círculo: {circulo.CalcularArea()}");
Console.WriteLine($"Área del rectángulo: {rectangulo.CalcularArea()}");

Interfaces

Las interfaces definen un contrato que las clases pueden implementar. A diferencia de las clases, las interfaces no contienen implementación, solo las firmas de los métodos.

public interface IOperaciones
{
    void Sumar(int a, int b);
    void Restar(int a, int b);
}

public class Calculadora : IOperaciones
{
    public void Sumar(int a, int b)
    {
        Console.WriteLine($"Suma: {a + b}");
    }

    public void Restar(int a, int b)
    {
        Console.WriteLine($"Resta: {a - b}");
    }
}

// Uso de la interfaz IOperaciones
IOperaciones calculadora = new Calculadora();
calculadora.Sumar(10, 5);
calculadora.Restar(10, 5);
Certifícate en CSharp con CertiDevs PLUS

Lecciones de este módulo de CSharp

Lecciones de programación del módulo Programación Orientada a Objetos del curso de CSharp.

Ejercicios de programación en este módulo de CSharp

Evalúa tus conocimientos en Programación Orientada a Objetos con ejercicios de programación Programación Orientada a Objetos de tipo Test, Puzzle, Código y Proyecto con VSCode.