Introducció a l'Encapsulació
L'encapsulació és un dels quatre pilars de la programació orientada a objectes (POO), juntament amb l'herència, el polimorfisme i l'abstracció. L'encapsulació es refereix a la pràctica de restringir l'accés a certs components d'un objecte i només exposar-ne aquells que són necessaris per a la interacció externa. Això ajuda a protegir la integritat de l'objecte i a mantenir el codi més modular i fàcil de mantenir.
Conceptes Clau
- Membres Privats: Atributs i mètodes que no són accessibles des de fora de la classe.
- Membres Públics: Atributs i mètodes que són accessibles des de fora de la classe.
- Propietats: Mètodes especials que permeten accedir i modificar els membres privats de manera controlada.
Exemple Pràctic
Definició d'una Classe amb Encapsulació
using System;
public class Persona
{
// Membres privats
private string nom;
private int edat;
// Propietat per accedir al nom
public string Nom
{
get { return nom; }
set { nom = value; }
}
// Propietat per accedir a l'edat
public int Edat
{
get { return edat; }
set
{
if (value >= 0)
{
edat = value;
}
else
{
throw new ArgumentException("L'edat no pot ser negativa");
}
}
}
// Mètode públic
public void MostrarInformacio()
{
Console.WriteLine($"Nom: {Nom}, Edat: {Edat}");
}
}
class Program
{
static void Main()
{
Persona persona = new Persona();
persona.Nom = "Joan";
persona.Edat = 30;
persona.MostrarInformacio();
}
}Explicació del Codi
- Membres Privats:
nomiedatsón membres privats de la classePersona. No es poden accedir directament des de fora de la classe. - Propietats:
NomiEdatsón propietats que permeten accedir i modificar els membres privats de manera controlada. La propietatEdatinclou una validació per assegurar-se que l'edat no sigui negativa. - Mètode Públic:
MostrarInformacioés un mètode públic que imprimeix la informació de la persona.
Exercicis Pràctics
Exercici 1: Crear una Classe amb Encapsulació
Descripció: Crea una classe Cotxe amb els membres privats marca, model i any. Proporciona propietats per accedir i modificar aquests membres. Afegeix un mètode públic MostrarDetalls que imprimeixi la informació del cotxe.
Solució:
using System;
public class Cotxe
{
private string marca;
private string model;
private int any;
public string Marca
{
get { return marca; }
set { marca = value; }
}
public string Model
{
get { return model; }
set { model = value; }
}
public int Any
{
get { return any; }
set
{
if (value > 1885) // El primer cotxe es va inventar el 1886
{
any = value;
}
else
{
throw new ArgumentException("L'any no és vàlid");
}
}
}
public void MostrarDetalls()
{
Console.WriteLine($"Marca: {Marca}, Model: {Model}, Any: {Any}");
}
}
class Program
{
static void Main()
{
Cotxe cotxe = new Cotxe();
cotxe.Marca = "Toyota";
cotxe.Model = "Corolla";
cotxe.Any = 2020;
cotxe.MostrarDetalls();
}
}Exercici 2: Validació de Propietats
Descripció: Modifica la classe Cotxe per afegir validació a la propietat Marca de manera que no pugui ser una cadena buida o nul·la.
Solució:
public string Marca
{
get { return marca; }
set
{
if (!string.IsNullOrEmpty(value))
{
marca = value;
}
else
{
throw new ArgumentException("La marca no pot ser buida o nul·la");
}
}
}Errors Comuns i Consells
- No Exposar Membres Privats Directament: Sempre utilitza propietats per accedir i modificar membres privats. Això permet afegir validació i altres lògiques si és necessari.
- Validació de Dades: Assegura't de validar les dades dins de les propietats per mantenir la integritat de l'objecte.
- Només Exposar el Necessari: Mantingues els membres privats a menys que sigui absolutament necessari exposar-los com a públics.
Conclusió
L'encapsulació és una tècnica fonamental en la programació orientada a objectes que ajuda a protegir la integritat dels objectes i a mantenir el codi més modular i fàcil de mantenir. Mitjançant l'ús de membres privats i propietats, pots controlar com es modifiquen i accedeixen les dades dins dels teus objectes. Practica l'encapsulació en els teus projectes per millorar la qualitat del teu codi.
Curs de Programació en C#
Mòdul 1: Introducció al C#
- Introducció al C#
- Configuració de l'Entorn de Desenvolupament
- Programa Hello World
- Sintaxi i Estructura Bàsica
- Variables i Tipus de Dades
Mòdul 2: Estructures de Control
Mòdul 3: Programació Orientada a Objectes
Mòdul 4: Conceptes Avançats de C#
- Interfícies
- Delegats i Esdeveniments
- Genèrics
- Col·leccions
- LINQ (Consulta Integrada al Llenguatge)
- Programació Asíncrona
Mòdul 5: Treballant amb Dades
Mòdul 6: Temes Avançats
- Reflexió
- Atributs
- Programació Dinàmica
- Gestió de Memòria i Recollida d'Escombraries
- Multifil i Programació Paral·lela
Mòdul 7: Construcció d'Aplicacions
Mòdul 8: Millors Pràctiques i Patrons de Disseny
- Estàndards de Codificació i Millors Pràctiques
- Patrons de Disseny
- Proves Unitàries
- Revisió de Codi i Refactorització
