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

  1. Membres Privats: nom i edat són membres privats de la classe Persona. No es poden accedir directament des de fora de la classe.
  2. Propietats: Nom i Edat són propietats que permeten accedir i modificar els membres privats de manera controlada. La propietat Edat inclou una validació per assegurar-se que l'edat no sigui negativa.
  3. 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.

© Copyright 2024. Tots els drets reservats