M2103-TP9-EXO-5

Dans l’espace de noms anonyme du fichier main.cpp déclarer la classe User, comme elle est décrite sur le schéma UML. Le constructeur initialise les attribut, si nécessaire, aux valeurs des paramètres correspondants. Il ne faut surtout pas que les adresses des messages que génère l’User puissent changer. Il est donc absolument nécessaire de réserver assez de place pour ranger tous les messages (reserve (1000) devrait suffire.
Un utilisateur ne doit pas pouvoir modifier les messages qu’il a reçus, ils sont la propriété de leur émetteur.
La fonction sendMessage() est proposée aux amis de l’User, elle ajoute donc un message à la liste des messages reçus.
La fonction addMessage() sert à ajouter un message dans la liste des messages envoyés, de façon à pouvoir l’envoyer à un ami, par la suite, mais pas forcément maintenant.
Ajouter l’accesseur à l’attribut myName
Ajouter la méthodesgetSentMessage(), pour accéder au ième message envoyé. Attention ! On doit renvoyer le ième message, pas une copie de celui-ci. Attention encore, il est hors de question de pouvoir modifier ce message. C’est une référence sur un objet constant qu’il faut donc retourner.
Ajouter la méthodesgetRecievedMessage(), pour accéder au ième message reçu. Attention à nouveau ! Il est hors de question de pouvoir modifier ce message.

Ajouter les méthodes GetNbSentMessages(), GetNbFriends() et GetNbRecievedMessages().

Tester avec la fonction testUser() suivante :

    void testUser (void)
    {
        System oneSystem;
        User alfred    ("Alfred", NULL);
        User alain     ("Alain", NULL);
        User sophie    ("Sophie", NULL);
        User emmanuel  ("Emmanuel", NULL);
        User christian ("Christian", NULL);
        User petru     ("Petru", NULL);
        User marc      ("Marc", NULL);
        PrivateMessage message ("salut", & alfred);
        message.displayContent ();
        cout << endl;

        alain.addFriend (&sophie);
        alain.addFriend (&emmanuel);
        alain.addFriend (&christian);
        alain.addFriend (&petru);
        alain.addFriend (&marc);

        cout << "Alain a " << alain.getNbFriends () << " amis" << endl;
        cout << "Le troisième ami d'Alain est : " << (alain.getFriend (2))->getName () << endl;

        alfred.addMessage (message);
        alain.sendMessage (&message);
        cout << "Nombre de message envoyés par Alfred : " << alfred.getNbSentMessages ()   << endl;
        cout << "Nombre de message reçus par Alfred : " << alfred.getNbRecievedMessages () << endl;
        cout << "Nombre de message envoyés par Alain : " << alain.getNbSentMessages ()   << endl;
        cout << "Nombre de message reçus par Alain : " << alain.getNbRecievedMessages () << endl;
        alain.getRecievedMessage (0)->displayContent ();
        cout << endl;
        alfred.getSentMessage (0).displayContent ();
        cout << endl;

    } // testUser()