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.