Introducció a l'Abstracció
L'abstracció és un dels quatre pilars de la programació orientada a objectes (POO), juntament amb l'encapsulació, l'herència i el polimorfisme. L'abstracció permet als programadors crear models simplificats de sistemes complexos, enfocant-se només en els detalls rellevants i amagant els detalls innecessaris.
Conceptes Clau
- Abstracció: El procés de reduir la complexitat ocultant els detalls innecessaris i mostrant només les característiques essencials d'un objecte.
- Classe Abstracta: Una classe que no es pot instanciar directament i que pot contenir mètodes abstractes (sense implementació) i mètodes concrets (amb implementació).
- Mètode Abstracte: Un mètode declarat en una classe abstracta que no té implementació i que ha de ser implementat per les subclasses.
Creació de Classes Abstractes
En C#, una classe abstracta es defineix utilitzant la paraula clau abstract
. Els mètodes abstractes dins d'una classe abstracta també es defineixen amb la paraula clau abstract
.
Exemple de Classe Abstracta
using System; abstract class Animal { // Mètode abstracte (sense implementació) public abstract void FerSoroll(); // Mètode concret (amb implementació) public void Dormir() { Console.WriteLine("L'animal està dormint."); } } class Gos : Animal { // Implementació del mètode abstracte public override void FerSoroll() { Console.WriteLine("El gos fa: Guau Guau!"); } } class Gat : Animal { // Implementació del mètode abstracte public override void FerSoroll() { Console.WriteLine("El gat fa: Miau Miau!"); } } class Program { static void Main() { Animal gos = new Gos(); gos.FerSoroll(); // Sortida: El gos fa: Guau Guau! gos.Dormir(); // Sortida: L'animal està dormint. Animal gat = new Gat(); gat.FerSoroll(); // Sortida: El gat fa: Miau Miau! gat.Dormir(); // Sortida: L'animal està dormint. } }
Explicació del Codi
-
Classe Abstracta
Animal
:- Conté un mètode abstracte
FerSoroll()
que no té implementació. - Conté un mètode concret
Dormir()
que té una implementació.
- Conté un mètode abstracte
-
Classes
Gos
iGat
:- Hereten de la classe abstracta
Animal
. - Implementen el mètode abstracte
FerSoroll()
.
- Hereten de la classe abstracta
-
Classe
Program
:- Crea instàncies de
Gos
iGat
i crida els mètodesFerSoroll()
iDormir()
.
- Crea instàncies de
Exercicis Pràctics
Exercici 1: Crear una Classe Abstracta
Crea una classe abstracta Vehicle
amb un mètode abstracte Moure()
i un mètode concret Parar()
. Després, crea dues subclasses Cotxe
i Bicicleta
que implementin el mètode Moure()
.
Solució
using System; abstract class Vehicle { public abstract void Moure(); public void Parar() { Console.WriteLine("El vehicle s'ha aturat."); } } class Cotxe : Vehicle { public override void Moure() { Console.WriteLine("El cotxe està conduint."); } } class Bicicleta : Vehicle { public override void Moure() { Console.WriteLine("La bicicleta està pedalant."); } } class Program { static void Main() { Vehicle cotxe = new Cotxe(); cotxe.Moure(); // Sortida: El cotxe està conduint. cotxe.Parar(); // Sortida: El vehicle s'ha aturat. Vehicle bicicleta = new Bicicleta(); bicicleta.Moure(); // Sortida: La bicicleta està pedalant. bicicleta.Parar(); // Sortida: El vehicle s'ha aturat. } }
Exercici 2: Implementar una Jerarquia de Classes
Crea una classe abstracta Electrodomèstic
amb un mètode abstracte Encendre()
. Després, crea dues subclasses Televisió
i Nevera
que implementin el mètode Encendre()
.
Solució
using System; abstract class Electrodomèstic { public abstract void Encendre(); } class Televisió : Electrodomèstic { public override void Encendre() { Console.WriteLine("La televisió s'ha encès."); } } class Nevera : Electrodomèstic { public override void Encendre() { Console.WriteLine("La nevera s'ha encès."); } } class Program { static void Main() { Electrodomèstic televisió = new Televisió(); televisió.Encendre(); // Sortida: La televisió s'ha encès. Electrodomèstic nevera = new Nevera(); nevera.Encendre(); // Sortida: La nevera s'ha encès. } }
Resum
En aquesta secció, hem après sobre l'abstracció en la programació orientada a objectes i com utilitzar classes i mètodes abstractes en C#. Hem vist exemples pràctics de com crear i implementar classes abstractes i hem practicat amb exercicis per reforçar els conceptes apresos. L'abstracció ens permet simplificar la complexitat del nostre codi, enfocant-nos només en els detalls essencials i amagant els detalls innecessaris.
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ó