Introducción

En este ejercicio, vamos a poner en práctica nuestros conocimientos de programación orientada a objetos en Dart creando un sistema simplificado de una tienda de música en línea. Este proyecto les ayudará a comprender mejor los conceptos de clases, objetos, métodos y atributos en Dart.

Objetivo

Desarrollar un sistema básico para una tienda de música en línea utilizando programación orientada a objetos en Dart.

Requisitos: Implementar las siguientes clases:

a) Song (Canción):

  • Atributos: id, title (título), artist (artista), price (precio)
  • Métodos: toString()

b) User (Usuario):

  • Atributos: id, name (nombre), balance (saldo)
  • Métodos: buySong(Song), addBalance(double)

c) MusicStore (Tienda de Música):

  • Atributos: songs (lista de canciones), users (lista de usuarios)
  • Métodos: addSong(Song), registerUser(User), findSong(String title)

Implementar la lógica necesaria en cada clase:

  • En User: Verificar saldo suficiente antes de comprar una canción.
  • En MusicStore: Permitir buscar canciones por título.

Crear un programa principal que demuestre el funcionamiento del sistema:

  • Crear algunas canciones y usuarios.
  • Registrar los usuarios en la tienda.
  • Realizar algunas compras de canciones.
  • Mostrar el estado de los usuarios después de las operaciones.

Puntos a tener en cuenta:

  • Implementar un manejo básico de errores (por ejemplo, cuando un usuario intenta comprar una canción sin saldo suficiente).
  • Utilizar listas de Dart para almacenar colecciones de objetos.

Pasos sugeridos:

  1. Comienza creando la clase Song con sus atributos y el método toString().
  2. Luego, implementa la clase User con sus métodos para comprar canciones y añadir saldo.
  3. Crea la clase MusicStore con los métodos para gestionar canciones y usuarios.
  4. Finalmente, escribe la función main() para probar tu implementación.

Ejemplo de implementación:

void main() {
  var store = MusicStore();

  var song1 = Song('1', 'Shape of You', 'Ed Sheeran', 1.29);
  var song2 = Song('2', 'Blinding Lights', 'The Weeknd', 0.99);
  var song3 = Song('3', 'Dance Monkey', 'Tones and I', 1.49);

  store.addSong(song1);
  store.addSong(song2);
  store.addSong(song3);

  var user1 = User('1', 'Alice', 5.0);
  var user2 = User('2', 'Bob', 3.0);

  store.registerUser(user1);
  store.registerUser(user2);

  user1.buySong(song1);
  user2.buySong(song2);
  user2.buySong(song3);

  user2.addBalance(2.0);
  user2.buySong(song1);

  store.displayStatus();
}

Criterios de evaluación:

  • Correcta implementación de las clases y métodos requeridos.
  • Uso apropiado de conceptos de programación orientada a objetos.
  • Manejo adecuado de errores y casos extremos.
  • Claridad y organización del código.
  • Funcionalidad correcta del programa principal.

Recursos adicionales:

¡Mucho éxito y disfruten programando!