Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Persona
Cuenta
Fecha Hora
FACULTAD DE INFORMÁTICA
0..15
Lista
Movimiento FechaHora
FdI FdI
Ejercicio nº 1 Ejercicio nº 1
UCM UCM
Desarrolla un programa completo que haga lo siguiente (en el orden #include <iostream> banco.cpp
que se indica): crear un objeto dinámico ahorros de clase Cuenta, using namespace std;
leer los datos de ese objeto, pedir al usuario los datos de los cuatro
#include <iomanip.h> // Manipuladores
primeros movimientos de la cuenta y añadirlos a su lista de #include "fechahora.h"
movimientos. Finalmente, mostrar en la pantalla toda la información #include "transferencia.h"
de la cuenta con un formato como el siguiente: #include "nomina.h"
Cliente: Alba Santos Torres #include "cajero.h"
NIF: 33445577G #include "cuenta.h"
Cuenta abierta el viernes 1 de febrero de 2002
Ultimos movimientos: int main() {
El sabado 2 de febrero de 2002: cout << fixed << setprecision(2);
Abono de nomina 32672.15 Eur (11:07:36) // Manipuladores que establecen la visualización de números
Cajero automatico 250.00 Eur (13:27:00) // en punto fijo (no notación científica) y con 2 decimales
El martes 5 de febrero de 2002:
Cajero automatico 300.00 Eur (18:12:16) Cuenta* ahorros = new Cuenta();
El miercoles 6 de febrero de 2002:
Transferencia a su favor 1200.25 Eur (09:27:12) ahorros->leer();
Saldo actual: 241764.46 Eur
Movimiento* mov;
Se valorará el menor uso de variables puntero (el mínimo es dos). (continúa)
Programación orientada a objetos Ejercicios de refuerzo – Soluciones – Página 2 Programación orientada a objetos Ejercicios de refuerzo – Soluciones – Página 3
FdI FdI
Ejercicio nº 1 Ejercicio nº 1
UCM UCM
Programación orientada a objetos Ejercicios de refuerzo – Soluciones – Página 4 Programación orientada a objetos Ejercicios de refuerzo – Soluciones – Página 5
FdI FdI
Ejercicio nº 2 Ejercicio nº 2
UCM UCM
Programación orientada a objetos Ejercicios de refuerzo – Soluciones – Página 6 Programación orientada a objetos Ejercicios de refuerzo – Soluciones – Página 7
FdI FdI
Ejercicio nº 2 - La clase Recibo ampliada Ejercicio nº 2 - La clase Recibo ampliada
UCM UCM
FdI FdI
Ejercicio nº 2 - La clase Luz Ejercicio nº 2 - La clase Luz
UCM UCM
Programación orientada a objetos Ejercicios de refuerzo – Soluciones – Página 10 Programación orientada a objetos Ejercicios de refuerzo – Soluciones – Página 11
FdI FdI
Ejercicio nº 2 - La clase Luz Ejercicio nº 2 - La clase Suscripcion
UCM UCM
Programación orientada a objetos Ejercicios de refuerzo – Soluciones – Página 12 Programación orientada a objetos Ejercicios de refuerzo – Soluciones – Página 13
FdI FdI
Ejercicio nº 2 - La clase Suscripcion Ejercicio nº 2 - La clase Suscripcion
UCM UCM
Suscripcion::~Suscripcion() { }
Programación orientada a objetos Ejercicios de refuerzo – Soluciones – Página 14 Programación orientada a objetos Ejercicios de refuerzo – Soluciones – Página 15
FdI FdI
Ejercicio nº 2 - Prueba de las clases Ejercicio nº 2 - Prueba de las clases
UCM UCM
Programación orientada a objetos Ejercicios de refuerzo – Soluciones – Página 16 Programación orientada a objetos Ejercicios de refuerzo – Soluciones – Página 17
FdI FdI
Ejercicio nº 3 Ejercicio nº 3
UCM UCM
Para desarrollar un árbol genealógico, se necesita disponer de una Dª Rosa Gómez Pérez (3456789K)
clase MiembroFamilia con las siguientes características: 30 años
Nacida el 12 de abril de 1973 a las 17:07:47
9 Datos sobre cada ejemplar: nombre, apellidos, edad, NIF, fecha de Padre: D. Javier Gómez Ruiz
nacimiento, hora de nacimiento, sexo, padre y madre. Madre: Dª Rosa Pérez Galván
9 Los atributos de fecha de nacimiento y hora de nacimiento serán
9 La clase debe disponer de un método antepasados() que muestre
atributos dinámicos.
todos los antepasados del miembro de la familia. Para cada
9 Los atributos de padre y madre serán relaciones con otros objetos antepasado se indicará, después del nombre (con el tratamiento
de la clase (puede no tenerse información sobre quién es el padre oportuno — ver Nota), su fecha y hora de nacimiento:
o la madre del miembro de la familia). D. Javier Gómez Ruiz, 25-6-1946 09:23:32
9 La clase debe ajustarse a la Forma canónica ortodoxa y disponer Dª Rosa Pérez Galván, 4-4-1947 22:08:12
de accedentes y mutadores para todos los atributos. ...
9 La clase debe disponer de un método leer() que pida los datos y Se pide desarrollar por completo la clase MiembroFamilia.
de un método mostrar() que muestre la información de la forma
Nota: siempre que se muestre el nombre de un miembro de la familia
que indica el ejemplo del principio de la siguiente página.
se colocará delante el tratamiento que corresponda (D. para los
varones y Dª para las mujeres).
Programación orientada a objetos Ejercicios de refuerzo – Soluciones – Página 18 Programación orientada a objetos Ejercicios de refuerzo – Soluciones – Página 19
FdI FdI
Ejercicio nº 3 - La clase Miembro Ejercicio nº 3 - La clase Miembro
UCM UCM
Programación orientada a objetos Ejercicios de refuerzo – Soluciones – Página 20 Programación orientada a objetos Ejercicios de refuerzo – Soluciones – Página 21
FdI FdI
Ejercicio nº 3 - La clase Miembro Ejercicio nº 3 - La clase Miembro
UCM UCM
Programación orientada a objetos Ejercicios de refuerzo – Soluciones – Página 22 Programación orientada a objetos Ejercicios de refuerzo – Soluciones – Página 23
FdI FdI
Ejercicio nº 3 - La clase Miembro Ejercicio nº 3 - La clase Miembro
UCM UCM
Programación orientada a objetos Ejercicios de refuerzo – Soluciones – Página 24 Programación orientada a objetos Ejercicios de refuerzo – Soluciones – Página 25
FdI FdI
Ejercicio nº 3 - Una lista de Personas (y Miembros) Ejercicio nº 3 - Una lista de Personas (y Miembros)
UCM UCM
// Clase Lista (de personas) - Archivo de cabecera "lista.h" // Clase Lista (de personas) - Implementación "lista.cpp"
#ifndef lista_h #include <iostream>
#define lista_h using namespace std;
#include "persona.h" #include "lista.h"
class Lista {
public: Lista::Lista() : _cont(0) {}
Lista();
Lista(const Lista&); Lista::Lista(const Lista& otra) {
Lista& operator=(const Lista&);
_cont = otra._cont;
~Lista();
for(int i = 0; i < _cont; i++)
bool llena() const;
bool vacia() const; _array[i] = otra._array[i]->clon();
int cont() const; }
void insertar(Persona*);
bool recuperar(int, Persona*&) const; Lista& Lista::operator=(const Lista& otra) {
void mostrar() const; for(int i = 0; i < _cont; i++) delete _array[i];
private: _cont = otra._cont;
enum { MAX = 100 }; for(int i = 0; i < _cont; i++)
Persona* _array[MAX]; _array[i] = otra._array[i]->clon();
int _cont; return *this;
}; }
#endif (continúa)
Programación orientada a objetos Ejercicios de refuerzo – Soluciones – Página 26 Programación orientada a objetos Ejercicios de refuerzo – Soluciones – Página 27
FdI FdI
Ejercicio nº 3 - Una lista de Personas (y Miembros) Ejercicio nº 3 - Una lista de Personas (y Miembros)
UCM UCM
bool Lista::insertar(Persona* p) {
if(_cont == MAX) return false;
_array[_cont] = p;
_cont++;
return true;
}
Programación orientada a objetos Ejercicios de refuerzo – Soluciones – Página 28 Programación orientada a objetos Ejercicios de refuerzo – Soluciones – Página 29
FdI FdI
Ejercicio nº 3 - Una prueba Ejercicio nº 3 - Una prueba
UCM UCM