Examen de Metodologia de la Programació UAB 2017 · Primer Parcial (Curs 2017-2018)

Examen de Metodologia de la Programació de la UAB (Grado en Ingeniería Informática) 2017, Primer Parcial (Curs 2017-2018): 4 problemas con solución. Gratis.

Temas del examen: Disseny de classes: declaració, const i sobrecàrrega d'operadors · Constructors, destructors i fitxers · Classes contenidor amb arrays estàtics i composició

Exercici 1 · Disseny de classes: declaració, const i sobrecàrrega d'operadors

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

Dissenyeu i implementeu una classe anomenada Venda per emmagatzemar la informació referent a una venda gestionada per un treballador. Les dades que cal registrar per cada operació són: la data en què s'ha produït, l'import econòmic i el concepte o descripció de l'article venut.

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

Un constructor capaç d'inicialitzar els atributs de la venda mitjançant la data, l'import monetari i la descripció subministrats per paràmetre.

Els mètodes d'accés (consultors) i modificació dels membres de dades necessaris per al desenvolupament dels exercicis posteriors.

L'operador < sobrecarregat per comparar dues vendes: s'estableix que una venda és inferior a una altra si la seva data és anterior. En cas que ambdues dates coincideixin, es considerarà menor aquella venda l'import de la qual sigui inferior.

Criteris addicionals:

Cal incloure tant la declaració de la classe com la implementació de tots els seus mètodes (definint com a inline aquells que siguin adients).

Cal especificar el qualificador const en tots aquells paràmetres i mètodes que correspongui.

Podeu assumir que ja es disposa de la classe Data implementada amb la següent interfície:

class Data

{

public:

string getData() const;

void setData(const string &data);

bool operator<(const Data &d) const;

bool operator==(const Data &d) const;

bool operator>(const Data &d) const;

};

on getData i setData utilitzen el format de text "DD/MM/AAAA" i els operadors relacionals comparen cronològicament.

Exercici 2 · Classes contenidor amb arrays estàtics i composició

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.

Exercici 3.a - Tractament de fitxers · Constructors, destructors i fitxers

Exercici 3 (3 punts). Tractament de fitxers i càlcul col·lectiu de comissions

Implementeu les dues funcions independents següents:

a.

Una funció per carregar des d'un fitxer de text les vendes d'un empleat amb la capçalera:

void llegeixVendesEmpleat(Empleat &e, const string &nomFitxer); La funció ha d'obrir el fitxer anomenat nomFitxer, extreure tots els registres de vendes continguts i afegir-los a l'objecte e passat per referència.

El fitxer presenta l'estructura següent (on cada data s'expressa en format string):

DATA_VENDA_1

IMPORT_VENDA_1

DESCRIPCIO_VENDA_1

DATA_VENDA_2

IMPORT_VENDA_2

DESCRIPCIO_VENDA_2

...

DATA_VENDA_N

IMPORT_VENDA_N

DESCRIPCIO_VENDA_N

Exercici 3.b - Arrays estàtics d'objectes · Classes contenidor amb arrays estàtics i composició

Exercici 3 (3 punts). Tractament de fitxers i càlcul col·lectiu de comissions

Implementeu les dues funcions independents següents:

b.

Una funció encarregada de mostrar per sortida estàndard la comissió que percep cada treballador contingut en una llista per a un període donat. La capçalera ha de ser:

void escriuComissioEmpleats(Empleat dadesEmpleats[], int nEmpleats,

const string &dataInici, const string &dataFinal); Per a cadascun dels empleats de la taula, caldrà imprimir el seu nom acompanyat de la comissió econòmica a rebre.

También puedes estudiar por temas

Practica un tema con ejercicios de los exámenes de todos los años, mezclados.

Ver los 6 temas

Otras convocatorias de 2017

Examen parcial curs 2017-2018 (Versió 1) (2017)