Exercici 2 · Metodologia de la Programació UAB 2024
Tema: Disseny de classes: declaració, const i sobrecàrrega d'operadors · Del examen Examen Primer Parcial Curs 2024-2025 (2024)
Enunciado
Exercici 2 (1 punt). Const-correctness en classes Notes, Estudiant i Assignatura
Considereu el següent conjunt de declaracions i mètodes de tres classes relacionades:
class Notes {
public:
float getNotaMitjana();
};
class Estudiant {
public:
float consultaNota() const;
string getNom() const;
private:
string m_nom;
Notes m_notes;
};
class Assignatura {
public:
float recuperaEstudiant(const string& nom, Estudiant& e) const;
void afegeixEstudiant(Estudiant& e) const;
private:
Estudiant m_estudiants[MAX_ESTUDIANTS];
int m_nEstudiants;
int cercaEstudiant(const string& nom);
};
float Assignatura::recuperaEstudiant(const string& nom, Estudiant& e) const {
float nota = -1;
int pos = cercaEstudiant(e.getNom());
if (pos != -1) {
e = m_estudiants[pos];
nota = e.consultaNota();
}
return nota;
}
void Assignatura::afegeixEstudiant(Estudiant& e) const {
int pos = cercaEstudiant(e.getNom());
if (pos == -1)
m_estudiants[m_nEstudiants++] = e;
}
float Estudiant::consultaNota() const {
return m_notes.getNotaMitjana();
}
Apliqueu totes les modificacions necessàries a les definicions de les classes Notes, Estudiant i Assignatura perquè l'ús de referències constants i mètodes const sigui consistent i no provoqui errors de compilació. Només cal reescriure la declaració de cadascuna de les classes amb les capçaleres corregides, sense refer el codi de la implementació.

Solución
Según los criterios oficiales de corrección
Declaració corregida de la classe Notes
Solución: ```cpp class Notes { public: float getNotaMitjana() const; }; ```
Declaració corregida de la classe Estudiant
Solución: ```cpp class Estudiant { public: float consultaNota() const; string getNom() const; private: string m_nom; Notes m_notes; }; ```
Declaració corregida de la classe Assignatura
Solución: ```cpp class Assignatura { public: float recuperaEstudiant(const string& nom, Estudiant& e) const; void afegeixEstudiant(const Estudiant& e); private: Estudiant m_estudiants[MAX_ESTUDIANTS]; int m_nEstudiants; int cercaEstudiant(const string& nom) const; }; ```
La explicación paso a paso, hecha con IA, es Premium. Premium
Resuélvelo aquí mismo: corrección automática, pistas y solución paso a paso.
‹ Exercici 1 · 2024 · Pregunta 1 · 2018 ›