You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

55 lines
1.7 KiB

#ifndef GESTION_H
#define GESTION_H
#include <string>
#include <iostream>
#include <map>
#include "Base.h"
#include "Groupe.h"
#include "Photo.h"
#include "Video.h"
#include "Film.h"
/**
* @brief Gestion est la classe dont une instance est une base de donnée
* d'une box média
*
* Cette classe comprend deux attributs permettant de manipuler les données
* Ces deux attributs sont des @e map, un pour les fichier médias, et
* un pour les groupes (cf la documentation de Groupe)
*
* Cette classe possède 4 méthodes de création d'objet :
* - trois permettant de créer les trois types de média
* - une permettant de créer un groupe
*
* Par création on entend : création de l'objet proprement dit ET ajout de cet
* objet au @e map correspondant
*
* Enfin, quatres méthodes permettent au client d'intéragir avec ces données :
* - afficher : trouve et affiche un media ou groupe selon sa méthode d'affichage
* - jouer : trouve et joue un media selon sa méthode de lecture
* - supprimer : trouve et supprime un media ou un groupe
* - lister : liste le contenu du @e map @b groupes
*/
typedef std::shared_ptr<Photo> PhotoPtr;
typedef std::shared_ptr<Video> VideoPtr;
typedef std::shared_ptr<Film> FilmPtr;
typedef std::shared_ptr<Groupe> GroupePtr;
class Gestion {
private:
std::map<std::string, BasePtr> objets;
std::map<std::string, GroupePtr> groupes;
public:
PhotoPtr creerPhoto(std::string, std::string, unsigned int = 0, unsigned int = 0);
VideoPtr creerVideo(std::string, std::string, unsigned int = 0);
FilmPtr creerFilm(std::string, std::string, unsigned int = 0);
GroupePtr creerGroupe(std::string);
void afficher(std::string,std::ostream&);
void jouer(std::string);
void supprimer(std::string);
void lister(std::ostream&);
};
#endif