diegoRodicio

Está documentación está a túa disposición sin ningún custo económico. Sen embargo, para a súa elaboración dedico moito tempo e recursos, polo que agradecería unha colaboración co que consideres oportuno. Gracias.

View Categories

🎯 Introdución á orientación a obxectos en Dart

Dart é unha linguaxe de programación orientada a obxectos, o que significa que a maior parte do código estrutúrase en torno a clases e obxectos.

Cada obxecto é unha instancia dunha clase, e todas as clases (agás Null) herdan da clase base Object. Esta orientación permite organizar o código de maneira clara, reutilizable e modular, facilitando o desenvolvemento de aplicacións complexas.

🧱 Que é unha clase? #

Unha clase é un modelo que describe como serán os obxectos: que datos conterán (variables ou atributos) e que poden facer (métodos ou funcións).

Unha clase é o plano ou modelo a partir do cal se crean os obxectos. Define a estrutura – que datos conterán- (atributos) e o comportamento (métodos) comúns que terán todos os obxectos dese tipo.

📌 Nota:

  • Unha clase é como o plano dun edificio: define cantas habitacións ten, como se distribúen, cantas ventás, etc.
  • Cada casa construída con ese plano é un obxecto, pero cada unha pode ter propietarios distintos, pintura diferente, ou mobles únicos.

En Dart, as clases defínense usando a palabra clave class. Por exemplo:

// 📦 Definimos unha clase chamada Persoa.
// Unha clase é un modelo ou plantilla para crear obxectos.
class Persoa {
  // 🧩 Atributo 'nome': gardará o nome da persoa como un texto
  String nome = '';
  // 🧩 Atributo 'idade': gardará a idade da persoa como un número enteiro
  int idade = 0;

  // 🛠️ Método 'saudar': unha función que pertence á clase.
  // Cando se chama, imprime unha mensaxe usando os atributos da instancia.
  void saudar() {
    print('Ola! Son $nome e teño $idade anos.');
  }
}

✅ Outro Exemplo:

// Definición da clase 'Coche'
class Coche {
  // Atributos (estado)
  String cor;
  String marca;
  int velocidadeActual; // En km/h

  // Construtor: un método especial para crear obxectos da clase
  Coche(this.cor, this.marca, this.velocidadeActual);

  // Métodos (comportamento)
  void acelerar(int incremento) {
    velocidadeActual += incremento;
    print('O coche ${marca} acelera a ${velocidadeActual} km/h.');
  }

  void frear() {
    velocidadeActual = 0;
    print('O coche ${marca} detívose.');
  }
}

🧪 Que é un obxecto? #

Un obxecto é unha instancia dunha clase, e representa unha entidade do mundo real (ou conceptual) con dúas características principais:

  • Estado (Atributos/Propiedades): Son as características ou datos que describen o obxecto.
  • Comportamento (Métodos/Funcións): Son as accións que o obxecto pode realizar.

Por exemplo, un “Coche” en concreto podería ser un obxecto. O seu estado incluiría a cor, a marca, a velocidade actual, e o seu comportamento serían as accións como acelerar, frear ou cambiar de marcha.

void main() {
  // Creamos unha instancia da clase Persoa
  var p = Persoa();

  // Asignamos valores aos atributos
  p.nome = 'Diego';
  p.idade = 22;

  // Chamamos a un método da clase
  p.saudar(); // Output: Ola! Son Diego e teño 22 anos.
}

🛠️ Creación de Obxectos #

Unha vez que temos unha clase, podemos crear tantos obxectos como queiramos a partir dela. Este proceso chámase instanciación.

Para crear unha instancia dunha clase, usamos o construtor da clase, que adoita ter o mesmo nome que a clase.

// Definición da clase 'Coche'
class Coche {
  // Atributos (estado)
  String cor;
  String marca;
  int velocidadeActual; // En km/h

  // Construtor: un método especial para crear obxectos da clase
  Coche(this.cor, this.marca, this.velocidadeActual);

  // Métodos (comportamento)
  void acelerar(int incremento) {
    velocidadeActual += incremento;
    print('O coche ${marca} acelera a ${velocidadeActual} km/h.');
  }

  void frear() {
    velocidadeActual = 0;
    print('O coche ${marca} detívose.');
  }
}

void main() {
  // Creación de obxectos (instancias da clase Coche)
  var meuCoche = Coche('Negro', 'BMW', 0);
  var outroCoche = Coche('Azul', 'Ford', 20);

  // Acceso aos atributos dos obxectos
  print('O meu coche é un ${meuCoche.marca} de cor ${meuCoche.cor}.');
  print('O outro coche é un ${outroCoche.marca} de cor ${outroCoche.cor}.');

  // Chamada aos métodos dos obxectos
  meuCoche.acelerar(50); // O meu coche BMW acelera a 50 km/h.
  outroCoche.acelerar(80); // O outro coche Ford acelera a 100 km/h. (velocidade inicial 20 + 80)
  meuCoche.frear(); // O meu coche BMW detívose.
}

🧰 Por que usar orientación a obxectos? #

A programación orientada a obxectos axúdanos a:

  • Organizar o código en unidades reutilizables (clases).
  • Representar entidades do mundo real (persoas, produtos, vehículos…).
  • Facilitar a colaboración entre diferentes partes dun proxecto.
  • Manter e escalar aplicacións máis facilmente.

Nos seguintes apartados veremos con detalle como declarar atributos e métodos, crear construtores, empregar herdanza, interfaces, clases abstractas e moito máis.

🧭 Obxectivo: dominar os conceptos fundamentais da programación orientada a obxectos usando Dart como linguaxe de traballo.

Exemplos #

🔗 Ver o código en DartPad