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:
nom
iedat
són membres privats de la classePersona
. No es poden accedir directament des de fora de la classe. - Propietats:
Nom
iEdat
són propietats que permeten accedir i modificar els membres privats de manera controlada. La propietatEdat
inclou 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ó