📌 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
* 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