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
GosiGat:- Hereten de la classe abstracta
Animal. - Implementen el mètode abstracte
FerSoroll().
- Hereten de la classe abstracta
-
Classe
Program:- Crea instàncies de
GosiGati 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ó
