Projet tutoré 3 - Graphes
CSommet.h
Aller à la documentation de ce fichier.
1 /*!
2  * \file CSommet.h
3  * \brief Fichier contenant la déclaration de la classe CSommet
4  * \author Guillaume ELAMBERT
5  * \author Clément NONCHER-GILLET
6  * \date 2021
7  */
8 
9 
10 #ifndef CSOMMET_H
11 #define CSOMMET_H
12 
13 #include <iostream>
14 #include <string.h>
15 #include "CException.h"
16 #include "CArc.h"
17 
18 #define CSOMMET_Lecture_Impossible 20
19 #define CSOMMET_Alloc_Echouee 21
20 
21 
22 /*!
23  * \brief Classe des sommets d'un graphe.
24  * \author Guillaume ELAMBERT
25  * \author Clément NONCHER-GILLET
26  * \date 2021
27  */
28 class CSommet
29 {
30 private:
31  unsigned int uSOMId; /*!< Le numéroe du sommet. */
32  CArc ** pARCSOMListeArcsArrivants; /*!< La liste des arcs arrivants au sommet. */
33  unsigned int uSOMTailleListeA; /*!< Le nombre d'arcs arrivants au sommet. */
34  CArc ** pARCSOMListeArcsSortants; /*!< La liste des arcs partants du sommet. */
35  unsigned int uSOMTailleListeS; /*!< Le nombre d'arcs partants du sommet. */
36 
37 public:
38 
39  /*!
40  * Constructeur par défaut
41  *
42  */
43  CSommet(void);
44 
45 
46  /*!
47  * Constructeur de confort
48  *
49  * \param uNid Le numéro du sommet
50  */
51  CSommet(unsigned int uNid);
52 
53 
54  /*!
55  * Constructeur de recopie.
56  * Créé un objet CSommet copie de SOMParam.
57  *
58  * \param SOMParam L'objet CSommet à copier
59  */
60  CSommet(CSommet & SOMParam);
61 
62 
63  /*!
64  * Destructeur par défaut
65  *
66  */
67  ~CSommet(void);
68 
69 
70 
71  /*!
72  * Accesseur en lecture de uSOMId.
73  *
74  * \return Le numéro du sommet
75  */
76  unsigned int SOMGetId();
77 
78 
79  /*!
80  * Accesseur en lecture de uSOMTailleListeArrivants.
81  *
82  * \return Le nombre d'arcs arrivants au sommet
83  */
84  unsigned int SOMGetTailleA();
85 
86 
87  /*!
88  * Accesseur en lecture de uSOMTailleListeS.
89  *
90  * \return Le nombre d'arcs partants du sommet
91  */
92  unsigned int SOMGetTailleS();
93 
94 
95  /*!
96  * Ajoute un arc arrivant au sommet.
97  *
98  * \param uDestination La destination de l'objet CArc à ajouter à la liste des arcs arrivants
99  * \pre Il n'existe pas d'objet CArc dans la liste des arcs arrivants ayant pour destination uDestination.
100  */
101  void SOMAjouterArcArrivant(unsigned int uDestination);
102 
103 
104  /*!
105  * Retire un arc arrivant au sommet.
106  *
107  * \param uDestination La destination de l'objet CArc à supprimer de la liste des arcs arrivants
108  * \pre Il existe un objet CArc dans la liste des arcs arrivants ayant pour destination uDestination.
109  */
110  void SOMRetirerArcArrivant(unsigned int uDestination);
111 
112 
113 
114  /*!
115  * Recherche l'arc arrivant ayant pour point de départ le sommet numéro uSOMIdDestination.
116  *
117  * \param uSOMIdDestination Le numéro du sommet de départ de l'arc
118  * \return La position de l'arc cherché dans la liste des arcs arrivants si il y est, -1 sinon.
119  */
120  int SOMChercherArcArrivant(unsigned int uSOMIdDestination);
121 
122 
123 
124  /*!
125  * Lis l'arc arrivant en position uPos de la liste pARCSOMListeArcsArrivants.
126  *
127  * \param uPos La position de l'arc dans la liste pARCSOMListeArcsArrivants
128  * \pre 0 <= uPos <= uSOMTailleListeA - 1
129  * \return Objet CArc à la position uPos dans la liste des arcs entrants
130  */
131  CArc* SOMLireListeA(unsigned int uPos);
132 
133 
134 
135  /*!
136  * Ajoute un arc sortant au sommet.
137  *
138  * \param uDestination La destination de l'objet CArc à ajouter à la liste des arcs sortants
139  * \pre Il n'existe pas d'objet CArc dans la liste des arcs sortants ayant pour destination uDestination.
140  */
141  void SOMAjouterArcSortant(unsigned int uDestination);
142 
143 
144  /*!
145  * Retire un arc sortant au sommet.
146  *
147  * \param uDestination La destination de l'objet CArc à supprimer de la liste des arcs sortants
148  * \pre Il existe un objet CArc dans la liste des arcs sortants ayant pour destination uDestination.
149  */
150  void SOMRetirerArcSortant(unsigned int uDestination);
151 
152 
153  /*!
154  * Recherche l'arc partant ayant pour point d'arrivé le sommet numéro uSOMIdDestination.
155  *
156  * \param uSOMIdDestination Le numéro du sommet d'arrivé de l'arc
157  * \return La position de l'arc cherché dans la liste des arcs sortants si il y est, -1 sinon.
158  */
159  int SOMChercherArcSortant(unsigned int uSOMIdDestination);
160 
161 
162  /*!
163  * Lis l'arc en position uPos de la liste pARCSOMListeArcsSortants.
164  *
165  * \param uPos La position de l'arc dans la liste pARCSOMListeArcsSortants
166  * \pre 0 <= uPos <= uSOMTailleListeS - 1
167  * \return Objet CArc à la position uPos dans la liste des arcs sortants
168  */
169  CArc* SOMLireListeS(unsigned int uPos);
170 
171 
172  /*!
173  * Teste si deux sommets sont liés dans le sens *this -> SOMParam
174  *
175  * \param SOMParam L'objet CSommet dont il faut vérifier la connexion avec this
176  * \return true s'il existe un arc allant de cet objet vers SOMParam, false sinon.
177  */
178  bool SOMLies(CSommet & SOMParam);
179 
180 
181  /*!
182  * Inverse les arcs entrants et sortants.
183  * Les CArcs arrivants deviennent les CArcs sortants et vice-versa
184  *
185  */
186  void SOMInverser();
187 
188 
189  /*!
190  * Affiche le graphe sur la sortie standard.
191  *
192  */
193  void SOMAfficherSommet();
194 
195 
196  /*!
197  * Surcharge de l'operateur =
198  * Copie le contenu de SOMParam dans l'objet appelant
199  *
200  * \param SOMParam L'objet CSommet à copier
201  * \return Un pointeur sur l'objet appelant, copie de SOMParam
202  */
203  CSommet & operator=(const CSommet & SOMParam);
204 };
205 
206 #endif
CSommet::SOMChercherArcArrivant
int SOMChercherArcArrivant(unsigned int uSOMIdDestination)
Definition: CSommet.cpp:189
CSommet::SOMGetId
unsigned int SOMGetId()
Definition: CSommet.cpp:89
CSommet::operator=
CSommet & operator=(const CSommet &SOMParam)
Definition: CSommet.cpp:444
CSommet::SOMLies
bool SOMLies(CSommet &SOMParam)
Definition: CSommet.cpp:345
CSommet::SOMAjouterArcArrivant
void SOMAjouterArcArrivant(unsigned int uDestination)
Definition: CSommet.cpp:122
CSommet::SOMChercherArcSortant
int SOMChercherArcSortant(unsigned int uSOMIdDestination)
Definition: CSommet.cpp:303
CArc.h
Fichier contenant la déclaration de la classe CArc.
CSommet::SOMRetirerArcArrivant
void SOMRetirerArcArrivant(unsigned int uDestination)
Definition: CSommet.cpp:147
CException.h
Fichier contenant la déclaration de la classe CException.
CSommet::SOMAjouterArcSortant
void SOMAjouterArcSortant(unsigned int uDestination)
Definition: CSommet.cpp:234
CSommet::SOMInverser
void SOMInverser()
Definition: CSommet.cpp:383
CArc
Classe des arcs d'un sommet.
Definition: CArc.h:20
CSommet::SOMGetTailleA
unsigned int SOMGetTailleA()
Definition: CSommet.cpp:99
CSommet::SOMLireListeA
CArc * SOMLireListeA(unsigned int uPos)
Definition: CSommet.cpp:213
CSommet::uSOMTailleListeA
unsigned int uSOMTailleListeA
Definition: CSommet.h:33
CSommet::uSOMId
unsigned int uSOMId
Definition: CSommet.h:31
CSommet::SOMGetTailleS
unsigned int SOMGetTailleS()
Definition: CSommet.cpp:110
CSommet::pARCSOMListeArcsArrivants
CArc ** pARCSOMListeArcsArrivants
Definition: CSommet.h:32
CSommet::uSOMTailleListeS
unsigned int uSOMTailleListeS
Definition: CSommet.h:35
CSommet::pARCSOMListeArcsSortants
CArc ** pARCSOMListeArcsSortants
Definition: CSommet.h:34
CSommet
Classe des sommets d'un graphe.
Definition: CSommet.h:29
CSommet::SOMAfficherSommet
void SOMAfficherSommet()
Definition: CSommet.cpp:405
CSommet::~CSommet
~CSommet(void)
Definition: CSommet.cpp:59
CSommet::CSommet
CSommet(void)
Definition: CSommet.cpp:17
CSommet::SOMRetirerArcSortant
void SOMRetirerArcSortant(unsigned int uDestination)
Definition: CSommet.cpp:261
CSommet::SOMLireListeS
CArc * SOMLireListeS(unsigned int uPos)
Definition: CSommet.cpp:325