SAÉ 2.02
Test doc
Contact.cpp
Go to the documentation of this file.
1 
9 #include <iostream>
10 #include "Contact.hpp"
11 #include <list>
12 #include <algorithm>
13 
14 using namespace std;
15 using namespace reseau;
16 
17 Contact::Contact(const Personne& Proprietaire): Proprietaire{Proprietaire} {
18  cout << "Contact créé " << Proprietaire << "\n";
19 }
20 
21 const Personne& Contact::getProprio() const {
22  return this->Proprietaire;
23 }
24 
25 bool Contact::ajouterContact(const Personne& unContact){
26  if(lesContacts.empty()){
27  cout << "Contact ajouté " << unContact <<"\n";
28  lesContacts.push_back(&unContact);
29  return true;
30  }
31  if(unContact==Proprietaire)
32  {
33  cout << "Erreur : Contact déjà existant (Proprietaire)\n";
34  return false;
35  }
36  list<const Personne*>::iterator it = find(lesContacts.begin(), lesContacts.end(), &unContact);
37  if(it!=lesContacts.end()){
38  cout << "Erreur : Personne déjà dans vos contacts : " << unContact << "\n";
39  return false;
40  }
41  else {
42  cout << "Contact ajouté " << unContact <<"\n";
43  lesContacts.push_back(&unContact);
44  return true;
45  }
46  return true;
47 }
48 
49 bool Contact::rechercher(const Personne& unContact){
50  list<const Personne*>::iterator it = find(lesContacts.begin(), lesContacts.end(),&unContact);
51  if(it != lesContacts.end())
52  {
53  cout << "trouvé : " << unContact << "\n";
54  return true;
55  }
56  else
57  {
58  cout << "pas trouvé\n";
59  return false;
60  }
61  lesContacts.sort();
62 }
63 
64 bool Contact::supprimerContact(const Personne& unContact){
65  list<const Personne*>::iterator it = find(lesContacts.begin(), lesContacts.end(), &unContact);
66  if(it!=lesContacts.end()){
67  lesContacts.erase(it);
68  cout << "Contact " << unContact << " supprimé\n";
69  return true;
70  }
71  else {
72  cout << "Erreur : le contact n'existe pas\n";
73  return false;
74  }
75 }
76 
77 void Contact::afficherContactDirect() {
78  cout << " Les contacts directs de " << this->Proprietaire << " sont : ";
79  for(list<const Personne*>::const_iterator it = lesContacts.cbegin(); it != lesContacts.cend(); ++it){
80  if(it==lesContacts.cbegin())
81  cout << **it;
82  else
83  cout << ", " << **it;
84  }
85  cout << "\n";
86 }
87 
88 void Contact::Recursive(list<Contact*> Contacts, set<const Personne*>* set) {
89  for(auto Personne : lesContacts) {
90  if(set->find(Personne)!=set->end())
91  continue;
92  set->insert(Personne);
93  for(Contact* contact : Contacts) {
94  if(*Personne == contact->getProprio()) {
95  contact->Recursive(Contacts,set);
96  }
97  }
98  }
99 }
100 
101 void Contact::afficherContactIndirect(list<Contact*> Contacts) {
102  cout << " Les contacts directs et indirects de " << this->Proprietaire << " sont : ";
103  set<const Personne*> lesPersonnes{};
104  Recursive(Contacts,&lesPersonnes);
105  for(auto& Personne : lesPersonnes)
106  cout << *Personne << ", ";
107  cout << "\n";
108 }
109 
110 ostream& reseau::operator<<(ostream& os, Personne p){
111  return os << p.getPrenom();
112 }
113 
114 bool reseau::operator==(reseau::Personne p1, reseau::Personne p2){
115  if(p1.getPrenom()==p2.getPrenom())
116  return true;
117  return false;
118 }
Contient des variables, des constantes et divers types de données relatifs à notre classe Contact...