📌 Programación Orientada a Objetos (POO) más profunda

C# está diseñado para trabajar con POO.


🔹 Encapsulamiento

Usamos propiedades para proteger datos:

class Persona
{
    private int edad;

    public int Edad
    {
        get { return edad; }
        set { edad = value; }
    }
}

Versión moderna simplificada:


public int Edad { get; set; }

🔹 Constructores

Se ejecutan cuando se crea un objeto:


class Persona
{
    public string Nombre;

    public Persona(string nombre)
    {
        Nombre = nombre;
    }
}

🔹 Herencia

Permite reutilizar código:


class Animal
{
    public void Comer()
    {
        Console.WriteLine("Estoy comiendo");
    }
}

class Perro : Animal
{
    public void Ladrar()
    {
        Console.WriteLine("Guau");
    }
}

🔹 Polimorfismo

Permite comportamientos distintos usando virtual y override:


class Animal
{
    public virtual void Sonido()
    {
        Console.WriteLine("Sonido genérico");
    }
}

class Perro : Animal
{
    public override void Sonido()
    {
        Console.WriteLine("Guau");
    }
}

📌 Interfaces

Definen contratos que las clases deben cumplir.



interface IAnimal
{
    void Sonido();
}

class Gato : IAnimal
{
    public void Sonido()
    {
        Console.WriteLine("Miau");
    }
}

📌 Manejo de Excepciones

Permite capturar errores sin que el programa se rompa.


try
{
    int x = int.Parse("abc");
}
catch (FormatException)
{
    Console.WriteLine("Formato inválido");
}
finally
{
    Console.WriteLine("Fin del proceso");
}

📌 Colecciones Genéricas

Más potentes que los arreglos.


using System.Collections.Generic;

List<string> nombres = new List<string>();
nombres.Add("Juan");
nombres.Add("Ana");

Otras importantes:


Dictionary<TKey, TValue>

Queue<T>

Stack<T>

Ejemplo:


Dictionary<int, string> usuarios = new Dictionary<int, string>();
usuarios.Add(1, "Carlos");

📌 LINQ (Consultas tipo SQL dentro de C#)

Muy usado en backend.


using System.Linq;

List<int> numeros = new List<int> {1,2,3,4,5};

var pares = numeros.Where(n => n % 2 == 0).ToList();


Permite:


* Filtrar
* Ordenar
* Agrupar
* Seleccionar datos

📌 Delegados y Eventos

Permiten programación más dinámica.


🔹 Delegado
delegate void Mensaje();

void Saludar()
{
    Console.WriteLine("Hola");
}

Mensaje m = Saludar;
m();

🔹 Evento
public event EventHandler MiEvento;


Muy usado en interfaces gráficas.

📌 Programación Asíncrona (async / await)

Permite ejecutar tareas sin bloquear el programa.


using System.Threading.Tasks;

public async Task<string> DescargarAsync()
{
    await Task.Delay(2000);
    return "Descarga completa";
}


Muy usado en:


* APIs
* Aplicaciones web
* Peticiones HTTP

📌 Archivos y Streams

Leer y escribir archivos:


File.WriteAllText("archivo.txt", "Hola mundo");

string contenido = File.ReadAllText("archivo.txt");

📌 Modificadores importantes

* public
* private
* protected
* internal
* static
* abstract
* sealed

📌 Namespaces

Organizan el código:


namespace MiProyecto.Utilidades
{
    class Calculadora
    {
    }
}

📌 Resumen Intermedio

En este nivel debes dominar:


* POO completa
* Interfaces
* Excepciones
* Colecciones
* LINQ
* Delegados y eventos
* Async/Await
* Archivos
← REGRESAR