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:
- Comienza creando la clase Song con sus atributos y el método toString().
- Luego, implementa la clase User con sus métodos para comprar canciones y añadir saldo.
- Crea la clase MusicStore con los métodos para gestionar canciones y usuarios.
- 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!