Exercici 1 · Metodologia de la Programació UAB 2017

Tema: Disseny de classes: declaració, const i sobrecàrrega d'operadors · Del examen Examen parcial curs 2017-2018 (Versió 1) (2017)

Enunciado

Exercici 1 [3 punts]. Disseny i implementació de la classe Factura

Es demana declarar i implementar íntegrament una classe anomenada Factura per emmagatzemar la informació associada a cada factura: data, import monetari i una descripció del concepte.

La interfície pública de la classe ha d'incorporar:

Un constructor que rebi per paràmetre la data, l'import i el concepte, inicialitzant els membres corresponents.

Els mètodes d'accés (consultors) i modificació necessaris per a la correcta resolució dels exercicis posteriors.

L'operador de comparació < per ordenar factures de forma que una factura és estrictament menor que una altra si la seva data és anterior. En cas d'empat en la data, es considerarà menor aquella que tingui un import inferior.

Observacions

Cal incloure tant la declaració de la classe com la implementació de tots els seus mètodes.

Implementeu directament en línia ( inline) tots aquells mètodes que sigui procedent.

Declareu amb el qualificador const els mètodes consultors i els paràmetres passats per referència que no s'hagin de modificar.

Podeu assumir que ja es troba definida la classe Data amb la següent especificació:

class Data

{

public:

string getData();

void setData(const string &data);

bool operator<(const Data &d);

bool operator==(const Data &d);

};

Els mètodes getData i setData manegen la data com a cadena de text en format "DD/MM/AAAA". Els operadors < i == comparen cronològicament dues dates.

Enunciado: Exercici 1 · Metodologia de la Programació UAB 2017

Solución

Según los criterios oficiales de corrección

Declaració i implementació de la classe Factura

Solución: ```cpp class Factura { public: Factura() {} Factura(const string &data, float import, const string &concepte) { m_data.setData(data); m_import = import; m_descripcio = concepte; } float getImport() const { return m_import; } void setData(const string &data) { m_data.setData(data); } void setImport(float import) { m_import = import; } void setDescripcio(const string &concepte) { m_descripcio = concepte; } bool operator<(const Factura &f) const; private: string m_descripcio; Data m_data; float m_import; }; bool Factura::operator<(const Factura &f) const { bool menor = false; if (m_data < f.m_data) { menor = true; } else if (m_data == f.m_data) { if (m_import < f.m_import) { menor = true; } } return menor; } ```

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.

‹ Pregunta 2 · 2018 · Exercici 1 · 2017 ›

Más ejercicios de Disseny de classes: declaració, const i sobrecàrrega d'operadors