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.
- Classes contenidor amb arrays estàtics i composició · 7 problemas · 50 % de que salga
- Disseny de classes: declaració, const i sobrecàrrega d'operadors · 6 problemas · 50 % de que salga
- Constructors, destructors i fitxers · 4 problemas · 50 % de que salga
- Apuntadors, arrays dinàmics i cost dels mètodes · 4 problemas · 50 % de que salga
- Llistes enllaçades amb nodes · 3 problemas · 50 % de que salga
- Ús de les estructures de dades de la STL · 2 problemas · 50 % de que salga