Les interfícies són un concepte fonamental en la programació orientada a objectes (OOP) que permeten definir contractes que les classes poden implementar. En Dart, les interfícies no es declaren explícitament com en alguns altres llenguatges de programació (com Java). En canvi, qualsevol classe pot actuar com una interfície, i altres classes poden implementar aquesta interfície.
Conceptes Clau
- Definició d'Interfície: En Dart, qualsevol classe pot ser utilitzada com una interfície.
- Implementació d'Interfície: Les classes poden implementar múltiples interfícies.
- Contracte: Una interfície defineix un contracte que les classes que la implementen han de seguir.
Definició d'Interfície
En Dart, una interfície es defineix simplement creant una classe amb mètodes i propietats sense implementació. Aquí teniu un exemple:
En aquest exemple, Animal
actua com una interfície amb un mètode ferSoroll
que no té implementació.
Implementació d'Interfície
Una classe que implementa una interfície ha de proporcionar una implementació per a tots els mètodes i propietats definits en la interfície. Aquí teniu un exemple:
class Gos implements Animal { @override void ferSoroll() { print('Guau!'); } } class Gat implements Animal { @override void ferSoroll() { print('Miau!'); } }
En aquest exemple, les classes Gos
i Gat
implementen la interfície Animal
i proporcionen les seves pròpies versions del mètode ferSoroll
.
Exemple Pràctic
Vegem un exemple més complet que inclou diverses interfícies i classes que les implementen:
class Volador { void volar(); } class Caminador { void caminar(); } class Ocell implements Volador, Caminador { @override void volar() { print('L\'ocell està volant.'); } @override void caminar() { print('L\'ocell està caminant.'); } } class Avio implements Volador { @override void volar() { print('L\'avió està volant.'); } } void main() { Ocell ocell = Ocell(); ocell.volar(); ocell.caminar(); Avio avio = Avio(); avio.volar(); }
Exercicis Pràctics
Exercici 1
Descripció: Crea una interfície Nadador
amb un mètode nadar
. Implementa aquesta interfície en dues classes: Peix
i Humà
.
Solució:
class Nadador { void nadar(); } class Peix implements Nadador { @override void nadar() { print('El peix està nedant.'); } } class Huma implements Nadador { @override void nadar() { print('L\'humà està nedant.'); } } void main() { Peix peix = Peix(); peix.nadar(); Huma huma = Huma(); huma.nadar(); }
Exercici 2
Descripció: Crea una interfície Conductor
amb un mètode conduir
. Implementa aquesta interfície en dues classes: Cotxe
i Bicicleta
.
Solució:
class Conductor { void conduir(); } class Cotxe implements Conductor { @override void conduir() { print('El cotxe està conduint.'); } } class Bicicleta implements Conductor { @override void conduir() { print('La bicicleta està conduint.'); } } void main() { Cotxe cotxe = Cotxe(); cotxe.conduir(); Bicicleta bicicleta = Bicicleta(); bicicleta.conduir(); }
Errors Comuns i Consells
- No Implementar Tots els Mètodes: Si una classe implementa una interfície, ha de proporcionar implementacions per a tots els mètodes de la interfície. Si no ho fa, es produirà un error de compilació.
- Confusió amb Herència: Recorda que implementar una interfície no és el mateix que heretar d'una classe. Una classe pot implementar múltiples interfícies, però només pot heretar d'una sola classe.
Conclusió
Les interfícies són una eina poderosa per definir contractes en la programació orientada a objectes. En Dart, qualsevol classe pot actuar com una interfície, i altres classes poden implementar aquestes interfícies per proporcionar funcionalitats específiques. Amb la pràctica, l'ús d'interfícies esdevindrà una part natural del teu flux de treball de programació.
Curs de Programació en Dart
Mòdul 1: Introducció a Dart
- Introducció a Dart
- Configuració de l'Entorn de Desenvolupament
- El Teu Primer Programa en Dart
- Sintaxi i Estructura Bàsica
Mòdul 2: Conceptes Bàsics de Dart
Mòdul 3: Col·leccions
Mòdul 4: Programació Orientada a Objectes en Dart
Mòdul 5: Funcionalitats Avançades de Dart
Mòdul 6: Gestió d'Errors i Depuració
Mòdul 7: Paquets i Biblioteques de Dart
Mòdul 8: Dart per a Web i Mòbil
- Introducció a Flutter
- Construcció d'una Aplicació Simple amb Flutter
- Dart per al Desenvolupament Web