Introducció

En aquest tema, aprendrem sobre la programació orientada a objectes (OOP) en Dart. La OOP és un paradigma de programació que utilitza "objectes" per representar dades i mètodes. Els objectes són instàncies de classes, que defineixen les propietats i comportaments dels objectes.

Conceptes Clau

Classes

Una classe és una plantilla per crear objectes. Defineix les propietats (atributs) i els mètodes (funcions) que els objectes creats a partir de la classe tindran.

Objectes

Un objecte és una instància d'una classe. Conté dades i mètodes definits per la seva classe.

Membres de la Classe

  • Atributs: Variables que emmagatzemen dades de l'objecte.
  • Mètodes: Funcions que defineixen el comportament de l'objecte.

Creació d'una Classe

Definició d'una Classe

class Persona {
  // Atributs
  String nom;
  int edat;

  // Constructor
  Persona(this.nom, this.edat);

  // Mètode
  void saludar() {
    print('Hola, em dic $nom i tinc $edat anys.');
  }
}

Explicació del Codi

  • Atributs: String nom i int edat són atributs de la classe Persona.
  • Constructor: Persona(this.nom, this.edat) és el constructor de la classe, que inicialitza els atributs nom i edat.
  • Mètode: void saludar() és un mètode que imprimeix un missatge de salutació.

Creació d'un Objecte

void main() {
  // Creació d'un objecte de la classe Persona
  Persona persona1 = Persona('Joan', 30);

  // Ús del mètode saludar
  persona1.saludar();
}

Explicació del Codi

  • Creació d'un Objecte: Persona persona1 = Persona('Joan', 30); crea un objecte persona1 de la classe Persona amb el nom 'Joan' i l'edat 30.
  • Ús del Mètode: persona1.saludar(); crida el mètode saludar de l'objecte persona1.

Exercicis Pràctics

Exercici 1: Crear una Classe

Crea una classe Cotxe amb els atributs marca i model, i un mètode detalls que imprimeixi la marca i el model del cotxe.

Solució

class Cotxe {
  // Atributs
  String marca;
  String model;

  // Constructor
  Cotxe(this.marca, this.model);

  // Mètode
  void detalls() {
    print('Marca: $marca, Model: $model');
  }
}

void main() {
  // Creació d'un objecte de la classe Cotxe
  Cotxe cotxe1 = Cotxe('Toyota', 'Corolla');

  // Ús del mètode detalls
  cotxe1.detalls();
}

Exercici 2: Afegir un Mètode

Afegeix un mètode accelerar a la classe Cotxe que imprimeixi un missatge indicant que el cotxe està accelerant.

Solució

class Cotxe {
  // Atributs
  String marca;
  String model;

  // Constructor
  Cotxe(this.marca, this.model);

  // Mètode
  void detalls() {
    print('Marca: $marca, Model: $model');
  }

  // Nou mètode
  void accelerar() {
    print('$marca $model està accelerant.');
  }
}

void main() {
  // Creació d'un objecte de la classe Cotxe
  Cotxe cotxe1 = Cotxe('Toyota', 'Corolla');

  // Ús dels mètodes
  cotxe1.detalls();
  cotxe1.accelerar();
}

Errors Comuns i Consells

Errors Comuns

  • No inicialitzar els atributs: Assegura't que tots els atributs de la classe estiguin inicialitzats, ja sigui directament o a través del constructor.
  • Oblidar el this en el constructor: Quan inicialitzis els atributs dins del constructor, utilitza this per referir-te als atributs de la classe.

Consells

  • Utilitza noms descriptius: Dona noms clars i descriptius als teus atributs i mètodes per millorar la llegibilitat del codi.
  • Encapsulament: Mantingues els atributs privats (utilitzant _ abans del nom) i proporciona mètodes públics per accedir-hi i modificar-los si és necessari.

Conclusió

En aquesta secció, hem après els conceptes bàsics de les classes i objectes en Dart. Hem vist com definir una classe, crear objectes i utilitzar mètodes. Aquests conceptes són fonamentals per a la programació orientada a objectes i seran la base per a temes més avançats com herència, mixins i interfícies.

En el següent tema, explorarem els constructors en més detall, incloent-hi constructors nominals i constructors de fàbrica.

© Copyright 2024. Tots els drets reservats