Presentación
Nombre:
Carlos Alfredo Morel De León
Matricula:
2023-1869
Profesor:
Luis soto Mirambeaux
Materia:
Programación I
Tema:
Asignacion 3
Fecha:
23/03/2025
Encapsulación en C#
La encapsulación es el principio de ocultar los detalles internos de un objeto y permitir el
acceso solo a través de métodos públicos (getters y setters). Esto ayuda a proteger los
datos y mantener el código modular.
Ejemplo de encapsulación en C#
csharp
CopyEdit
using System;
class Persona
{
// Atributos privados
private string nombre;
private int edad;
// Constructor
public Persona(string nombre, int edad)
{
this.nombre = nombre;
this.edad = edad;
}
// Métodos Get y Set
public string GetNombre() => nombre;
public void SetNombre(string nuevoNombre) => nombre = nuevoNombre;
public int GetEdad() => edad;
public void SetEdad(int nuevaEdad)
{
if (nuevaEdad > 0)
edad = nuevaEdad;
}
public void MostrarInformacion()
{
Console.WriteLine($"Nombre: {nombre}, Edad: {edad}");
}
}
// Programa principal
class Program
{
static void Main()
{
Persona persona1 = new Persona("Carlos", 30);
persona1.MostrarInformacion();
// Cambiando valores con los setters
persona1.SetNombre("Ana");
persona1.SetEdad(25);
persona1.MostrarInformacion();
}
}
📌 Explicación
Los atributos nombre y edad son privados (private).
Se accede a los datos mediante métodos get y set.
Se usa this para referenciar los atributos de la clase.
El método SetEdad verifica que la edad sea mayor a 0 antes de asignarla.
🔹 Herencia en C#
La herencia permite que una clase herede propiedades y métodos de otra. Esto fomenta
la reutilización del código y la organización jerárquica de las clases.
✅ Ejemplo de herencia en C#
csharp
CopyEdit
using System;
class Animal
{
public string Nombre { get; set; }
public void HacerSonido()
{
Console.WriteLine("El animal hace un sonido.");
}
}
// Clase derivada que hereda de Animal
class Perro : Animal
{
public void Ladrar()
{
Console.WriteLine($"{Nombre} está ladrando: ¡Guau guau!");
}
}
// Programa principal
class Program
{
static void Main()
{
Perro miPerro = new Perro();
miPerro.Nombre = "Rocky";
miPerro.HacerSonido(); // Heredado de Animal
miPerro.Ladrar(); // Método propio de Perro
}
}
📌 Explicación
Perro hereda de Animal usando class Perro : Animal.
La clase Perro obtiene el atributo Nombre y el método HacerSonido() de Animal.
Perro también tiene su propio método Ladrar().
🛑 Nota: C# no soporta herencia múltiple (una clase no puede heredar de más de una
clase).
🔹 Sobreescritura de Métodos en C#
La sobreescritura (override) permite a una clase derivada modificar el comportamiento de
un método definido en la clase base.
✅ Ejemplo de sobreescritura en C#
csharp
CopyEdit
using System;
class Animal
{
public virtual void HacerSonido()
{
Console.WriteLine("El animal hace un sonido genérico.");
}
}
class Perro : Animal
{
public override void HacerSonido()
{
Console.WriteLine("El perro ladra: ¡Guau guau!");
}
}
// Programa principal
class Program
{
static void Main()
{
Animal miAnimal = new Animal();
miAnimal.HacerSonido();
Perro miPerro = new Perro();
miPerro.HacerSonido(); // Se ejecuta el método sobrescrito
}
}
📌 Explicación
En la clase Animal, HacerSonido() se marca con virtual, lo que significa que puede ser
sobrescrito.
En Perro, se usa override para modificar HacerSonido().
Al llamar miPerro.HacerSonido(), se ejecuta la versión modificada en lugar de la de
Animal.