Sobes.tech
Junior

¿Qué aspectos de la programación orientada a objetos están presentes en el lenguaje Dart?

sobes.tech AI

Respuesta de la IA

En Dart, existen los siguientes aspectos de la POO:

  • Clases y objetos: La capacidad de definir clases con campos y métodos, crear instancias de clases (objetos).
  • Encapsulación: Ocultar detalles de implementación mediante modificadores de acceso (_ para miembros privados) y métodos getters/setters.
  • Herencia: Ampliar la funcionalidad de clases existentes usando la palabra clave extends.
  • Polimorfismo: La capacidad de tratar objetos de diferentes clases de manera uniforme a través de una interfaz común o clase base.
  • Abstracción: Crear clases abstractas e interfaces para definir contratos.

Ejemplo de una clase en Dart:

class Animal {
  String _name; // Campo privado

  Animal(this._name); // Constructor

  String get name => _name; // Getter

  void makeSound() {
    print('Algún sonido genérico de animal'); // Método
  }
}

Ejemplo de herencia:

class Dog extends Animal {
  Dog(String name) : super(name); // Llamada al constructor de la clase base

  @override // Sobrescribir método de la clase base
  void makeSound() {
    print('¡Guau!');
  }
}

Ejemplo de polimorfismo:

void makeAnimalSound(Animal animal) {
  animal.makeSound(); // Llamada al método makeSound(), que puede ser diferente para distintos tipos de Animal
}

// Uso:
// makeAnimalSound(Dog('Buddy')); // Mostrará "¡Guau!"

Dart también soporta mixins usando la palabra clave with, lo que permite reutilizar código de clases sin herencia directa.