Examen de Metodologia de la Programació UAB 2017 · parcial curs 2017-2018 (Versió 1)

Examen de Metodologia de la Programació de la UAB (Grado en Ingeniería Informática) 2017, parcial curs 2017-2018 (Versió 1): 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 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.

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

Exercici 2 (4 punts). Disseny i implementació de la classe Client

Definiu i implementeu una classe anomenada Client per gestionar les dades bàsiques d'un client (únicament el seu nom) i el conjunt de les seves factures mitjançant instàncies de la classe Factura de l'exercici anterior. Es garanteix que un client no tindrà mai més de 100 factures.

Observacions:

Definiu com a inline els mètodes que consideri oportú.

Marqueu degudament amb const mètodes i paràmetres segons correspongui.

a)

Declareu la classe indicant els atributs privats necessaris i les capçaleres de tots els mètodes públics. Incloeu també els consultors i modificadors addicionals que es requereixin per a l'exercici 3.

b)

Implementeu el constructor per defecte de forma que inicialitzi el client i l'estat del seu registre de factures (si no s'ha definit inline a la declaració).

c)

Declareu i implementeu el mètode afegeixFactura, el qual rep com a paràmetre un objecte Factura i l'afegeix a la col·lecció interna mantenint l'ordre creixent determinat per l'operador <.

d)

Declareu i implementeu el mètode importTotal, encarregat de calcular i retornar la suma acumulada de l'import de totes les factures associades al client.

Exercici 3.a - Fitxers · Constructors, destructors i fitxers

Exercici 3 (3 punts). Funcions de gestió de fitxers i sortida per pantalla

a.

Implementeu una funció amb la signatura següent:

void llegeixFacturesClient(Client &c, const string &nomFitxer);

Aquesta funció ha d'obrir el fitxer anomenat nomFitxer, processar totes les factures que conté i incorporar-les al client c passat per referència. El fitxer presenta l'estructura següent (on cada dada ocupa una línia i les dates estan emmagatzemades com a text):

DATA_FACTURA_1

IMPORT_FACTURA_1

DESCRIPCIO_FACTURA_1

DATA_FACTURA_2

IMPORT_FACTURA_2

DESCRIPCIO_FACTURA_2

...

DATA_FACTURA_N

IMPORT_FACTURA_N

DESCRIPCIO_FACTURA_N

Exercici 3.b - Classes contenidor amb arrays està… · Classes contenidor amb arrays estàtics i composició

Exercici 3 (3 punts). Funcions de gestió de fitxers i sortida per pantalla

b. Desenvolupeu una funció amb la capçalera següent:

void escriuDadesClients(Client dadesClients[], int nClients);

La funció ha de mostrar per pantalla, per a cadascun dels clients presents al vector, el seu nom, el nombre total de factures associades i la suma dels seus imports.

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 Primer Parcial (Curs 2017-2018) (2017)