



Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Prepara tus exámenes
Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Prepara tus exámenes con los documentos que comparten otros estudiantes como tú en Docsity
Encuentra los documentos específicos para los exámenes de tu universidad
Estudia con lecciones y exámenes resueltos basados en los programas académicos de las mejores universidades
Responde a preguntas de exámenes reales y pon a prueba tu preparación
Consigue puntos base para descargar
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Comunidad
Pide ayuda a la comunidad y resuelve tus dudas de estudio
Ebooks gratuitos
Descarga nuestras guías gratuitas sobre técnicas de estudio, métodos para controlar la ansiedad y consejos para la tesis preparadas por los tutores de Docsity
Laboratorio de Programación. Templates, herencia y hash
Tipo: Exámenes
1 / 7
Esta página no es visible en la vista previa
¡No te pierdas las partes importantes!




Exàmen LP 1er parcial 2017- Nom……………………………………………. Cognoms………………………………………………………………………….…
NIU…………………………………………….. Grup (41(11h-13h),43(9h-11h),45,51,52(17h-19h))…………….
A partir d’aquestes classes, escrivim el següent programa principal que primer afegeix 4 enviaments del mateix llibre i després simula que es fa el lliurament d’aquests enviaments.
Ara volem modificar les classes i el programa principal anteriors per fer que els enviaments puguin ser llistes homogènies de qualsevol producte, no necessàriament llibres. Per aquest motiu, volem que l’atribut m_llibre de la classe Enviament es modifiqui per un atribut m_objecte que pugui correspondre a qualsevol tipus d’objecte. a) Fes les modificacions que consideris oportunes a les declaracions de les classes Enviament i Enviaments per tal de poder enviar qualsevol tipus d’objecte que pugui estar definit en una classe qualsevol. No cal que reescriguis tota la declaració de les classes. Indica només el número de línia que cal modificar i posa el codi modificat per aquella línia.
bool Enviaments::afegirEnviament (const string nomDestinatari, const string adrecaDestinatari,const int prioritat, const string data, const Llibre& ll) {//Afegeix enviaments ordenats de major a menor, menor a ultima posició //Menor te prioritat menor i data menor (mes prioritari i demanat abans). bool retorn = false; if (m_envsAct < m_maxEnvs) { Enviament nouEnv(nomDestinatari, adrecaDestinatari,prioritat, data,ll); bool menor = true; int i = 0; while (menor && (i<m_envsAct)) { if (nouEnv < m_envs[i]){i++;} else{menor = false; } } if (i < m_envsAct) { for (int j = m_envsAct; j > i; j--) { m_envs[j] = m_envs[j - 1]; } } m_envs[i].inicialitzaEnviament(nomDestinatari, adrecaDestinatari, prioritat, data, ll); cout << "Afegint Enviament:" << endl; cout << m_envs[i]; m_envsAct++; retorn = true; } return retorn; }
Volem crear una jerarquia de classes on la classe Objecte serà la classe base i d’ella en deriven altres, com per exemple Llibre i Electrodomestic. Tots els objectes han de tenir com a atributs comuns un codi d’objecte i el preu de l’objecte. Pels llibres hem de guardar, a més a més, el pes del llibre , mentre que pels electrodomèstics guardarem el volum que ocupa l’embalatge de l’aparell. A nivell de mètodes, tots els objectes han de tenir un mètode getDespesesEnviament() que permeti calcular les despeses associades a l’enviament de l’objecte. La forma de calcular les despeses serà diferent depenent de l’objecte. També han de tenir un mètode mostra() per mostrar per pantalla les dades de cada objecte que també haurà de ser diferent per cada tipus d’objecte.
a) Declarar la classe base Objecte , segons les especificacions que hem donat abans. Només heu de fer la declaració de la classe. No heu d’implementar cap dels mètodes. Penseu a incloure com a mínim el constructor i destructor per defecte i un constructor per inicialitzar els atributs de la classe. Tingueu present també quins dels mètodes s’han de declarar com a virtuals.
b) Declarar les classes Electrodomestic i Llibre derivades de la classe base Objecte , segons les especificacions que hem donat abans. Només heu de fer la declaració de la classe. No heu d’implementar cap dels mètodes. Hauran de tenir també el constructor i destructor per defecte i un constructor per inicialitzar tots els atributs de la classe, tant els heretats com els específics.
e) Modificar el programa principal de l’exercici 1 per fer que els dos primers enviaments que s’afegeixen siguin de la classe Llibre i els dos últims de la classe Electrodomestic. Segurament haureu de modificar la declaració i implementació del mètode afegirEnviament de l’exercici 2. Indiqueu totes les modificacions necessàries. Feu també que al final de tot del mètode afegirEnviament es mostrin les dades específiques de l’objecte que s’està enviant i també les despeses d’enviament associades a l’objecte que s’envia. Si en algun moment creeu objectes dinàmics, indiqueu una possible forma d’assegurar-nos que s’alliberen tots els objectes dinàmics que s’han creat abans d’acabar el programa (no cal que ho implementeu, només que expliqueu quines modificacions faríeu).