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 nomiint edatsón atributs de la classePersona. - Constructor: 
Persona(this.nom, this.edat)és el constructor de la classe, que inicialitza els atributsnomiedat. - 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 objectepersona1de la classePersonaamb el nom 'Joan' i l'edat 30. - Ús del Mètode: 
persona1.saludar();crida el mètodesaludarde l'objectepersona1. 
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 
thisen el constructor: Quan inicialitzis els atributs dins del constructor, utilitzathisper 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.
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
 
