Exercici 2 · Metodologia de la Programació UAB 2017

Tema: Classes contenidor amb arrays estàtics i composició · Del examen Examen Primer Parcial (Curs 2017-2018) (2017)

Enunciado

Exercici 2 (4 punts). Classe Empleat i gestió ordenada de vendes

Dissenyeu i programeu la classe Empleat per registrar el nom del treballador i el conjunt de vendes que ha formalitzat mitjançant la classe Venda de l'exercici anterior. Es pren com a hipòtesi que cap empleat no gestionarà més de 100 vendes.

a)

Especifiqueu la declaració de la classe incorporant els atributs privats pertinents i la signatura de les funcions membres públiques. Afegiu també els consultors o modificadors requerits per a les tasques de l'Exercici 3.

b)

Desenvolupeu el constructor per defecte que inicialitzi adequadament tant les dades personals de l'empleat com l'estructura de vendes.

c)

Declareu i implementeu el mètode afegeixVenda, el qual rebrà per referència constant un objecte Venda i el col·locarà a la col·lecció interna mantenint l'ordre creixent determinat pel criteri establert a l'Exercici 1.

d)

Declareu i programeu el mètode importComissio, encarregat de calcular i retornar la comissió atorgada a l'empleat per les operacions realitzades entre dues dates rebudes per paràmetre en format cadena ( string). La quantia correspon al 10% del total facturat en vendes compreses dins d'aquest interval temporal.

Notes: Declareu els mètodes elegibles com a inline i utilitzeu correctament el modificador const.

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

Solución

Según los criterios oficiales de corrección

a. Especifiqueu la declaració de la classe incorporant els atributs privats pertinents i la signatura de les funcions membres públiques. Afegiu també els consultors o modificadors requerits per a les tasques de l'Exercici 3.

Solución: ```cpp class Empleat { public: Empleat() { m_nVendes = 0; m_nom = ""; } string getNom() const { return m_nom; } int getNVendes() const { return m_nVendes; } void afegeixVenda(const Venda &f); float importComissio(const string &dataIni, const string &dataFi); private: static const int MAX_VENDES = 100; string m_nom; Venda m_vendes[MAX_VENDES]; int m_nVendes; }; ```

b. Desenvolupeu el constructor per defecte que inicialitzi adequadament tant les dades personals de l'empleat com l'estructura de vendes.

Solución: ```cpp Empleat::Empleat() { m_nVendes = 0; m_nom = ""; } ```

c. Declareu i implementeu el mètode afegeixVenda, el qual rebrà per referència constant un objecte Venda i el col·locarà a la col·lecció interna mantenint l'ordre creixent determinat pel criteri establert a l'Exercici 1.

Solución: ```cpp void Empleat::afegeixVenda(const Venda &f) { if (m_nVendes < MAX_VENDES) { bool trobat = false; int i = 0; while ((i < m_nVendes) && (!trobat)) { if (f < m_vendes[i]) trobat = true; else i++; } for (int j = (m_nVendes - 1); j >= i; j--) m_vendes[j + 1] = m_vendes[j]; m_vendes[i] = f; m_nVendes++; } } ```

d. Declareu i programeu el mètode importComissio, encarregat de calcular i retornar la comissió atorgada a l'empleat per les operacions realitzades entre dues dates rebudes per paràmetre en format cadena (string).

Solución: ```cpp float Empleat::importComissio(const string &dataIni, const string &dataFi) { Data data1, data2; data1.setData(dataIni); data2.setData(dataFi); float import = 0; int i = 0; while ((i < m_nVendes) && (m_vendes[i].getData() < data1)) i++; while ((i < m_nVendes) && (m_vendes[i].getData() < data2)) { import += m_vendes[i].getImport(); i++; } return 0.1 * import; } ```

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 3.b - Classes contenidor amb arrays està… · 2017 · Exercici 3.b - Arrays estàtics d'objectes · 2017 ›

Más ejercicios de Classes contenidor amb arrays estàtics i composició