Clases y objetos en C#: Fundamentos para POO robusta
Clases y objetos en C#: Fundamentos para POO robusta
En este tutorial, aprenderás sobre el concepto de clases y objetos en C# con la ayuda de ejemplos.
C# es un lenguaje orientado a objetos que estructura aplicaciones alrededor de objetos. En POO, resolvemos problemas complejos dividiéndolos en objetos reutilizables y autocontenidos.
Para trabajar con objetos, necesitamos realizar las siguientes actividades:
- Crear una clase
- Instanciar objetos a partir de esa clase
Clase en C#
Una clase es el plano para un objeto. Piensa en ella como el plano de una casa: define habitaciones, puertas, ventanas y reglas estructurales. Una casa real construida a partir de ese plano es un objeto.
Múltiples casas pueden compartir el mismo plano, al igual que muchos objetos pueden crearse a partir de la misma clase.
Crear una clase en C#
class ClassName { }
Aquí hemos definido una clase llamada ClassName. Una clase puede contener
- Campos – variables que almacenan datos
- Métodos – funciones que realizan acciones
Ejemplo:
class Dog {
// Campo
string breed;
// Método
public void Bark() {
// Implementación
}
}
En el ejemplo anterior:
- Dog – nombre de la clase
- breed – campo
- Bark() – método
Nota: En C#, los miembros de una clase incluyen tanto campos como métodos.
Objetos en C#
Un objeto es una instancia de una clase. Por ejemplo, la clase Dog puede producir objetos como Bulldog, Pastor Alemán o Pug.
Creando un objeto de una clase
ClassName obj = new ClassName();
Aquí new crea un objeto; obj es su nombre. Por ejemplo:
Dog bullDog = new Dog();
El objeto bullDog ahora puede acceder a los campos y métodos definidos en Dog.
Accediendo a miembros de clase usando un objeto
Accede a los miembros con el operador punto (.) :
using System;
namespace ClassObject {
class Dog {
string breed;
public void Bark() {
Console.WriteLine("Bark Bark !!");
}
static void Main(string[] args) {
// crea objeto Dog
Dog bullDog = new Dog();
// establece raza
bullDog.breed = "Bull Dog";
Console.WriteLine(bullDog.breed);
// invoca método
bullDog.Bark();
Console.ReadLine();
}
}
}
Salida
Bull Dog Bark Bark !!
Observa el uso de bullDog y el operador punto para acceder a breed y Bark().
Creando múltiples objetos de una clase
Instancia varios objetos de la misma clase, cada uno con sus propios datos:
using System;
namespace ClassObject {
class Employee {
string department;
static void Main(string[] args) {
// primer empleado
Employee sheeran = new Employee();
sheeran.department = "Development";
Console.WriteLine("Sheeran: " + sheeran.department);
// segundo empleado
Employee taylor = new Employee();
taylor.department = "Content Writing";
Console.WriteLine("Taylor: " + taylor.department);
Console.ReadLine();
}
}
}
Salida
Sheeran: Development Taylor: Content Writing
Cada objeto mantiene su propio valor department.
Creando objetos en una clase diferente
Los objetos pueden crearse en otras clases. Por ejemplo:
using System;
namespace ClassObject {
class Employee {
public string name;
public void Work(string work) {
Console.WriteLine("Work: " + work);
}
}
class EmployeeDrive {
static void Main(string[] args) {
// crea objeto Employee
Employee e1 = new Employee();
Console.WriteLine("Employee 1");
// establece nombre
e1.name = "Gloria";
Console.WriteLine("Name: " + e1.name);
// llama método
e1.Work("Coding");
Console.ReadLine();
}
}
}
Salida
Employee 1 Name: Gloria Work: Coding
Aquí EmployeeDrive crea un objeto Employee. Los miembros públicos permiten acceso entre clases. Aprende más sobre modificadores de acceso en la documentación oficial.
¿Por qué objetos y clases?
Las clases y objetos permiten diseño modular. Para un juego con muchos enemigos, una sola clase Enemy puede definir health, ammo, Shoot() y Run(). Cada instancia de enemigo mantiene su propio estado mientras comparte comportamiento.
Al modelar código alrededor de objetos, reducimos complejidad, mejoramos mantenibilidad y promovemos reutilización.
Lenguaje C
- Dominando clases y métodos abstractos en C#: Guía práctica
- Entendiendo clases y métodos parciales en C#
- Dominando clases y métodos sealed en C#: Cuándo usarlos, ejemplos claros y mejora de seguridad y rendimiento
- Clases y Objetos en C++: Guía Práctica de Programación Orientada a Objetos
- Funciones y clases amigas en C++: dominando el control de acceso
- Dominando la Programación Orientada a Objetos en Python: Clases, Herencia, Encapsulación y Polimorfismo
- Clases y Objetos en Java: Guía Práctica
- Clases y métodos abstractos en Java: Guía completa
- Dominando clases anidadas e internas en Java: Tipos, ejemplos y mejores prácticas
- Patrón Singleton en Java explicado: Cómo implementarlo y usarlo de forma segura
- Dominando la Reflexión en Java: Inspeccionando clases, métodos y campos en tiempo de ejecución