Excepciones
Enviado por KILLERMSTR • 25 de Julio de 2013 • 4.056 Palabras (17 Páginas) • 434 Visitas
Ejercicios propuestos de Programación orientada a objetos con C++
Cristina Cachero Pedro J. Ponce de León
Departamento de Lenguajes y Sistemas Informáticos
Universidad de Alicante
Esta obra está bajo licencia Creative Commons
Programación orientada a objetos Ejercicios propuestos
D.L.S.I. 2 Universidad de Alicante
En cada ejercicio se indica la convocatoria de examen en la que apareció (por ejemplo, DIC05: Convocatoria extraordinaria de Diciembre de 2005).
1. DIC05
(2 puntos) Implementad tanto el .h como el .cpp de la clase taller La función meter (coche o moto) implica introducir el coche en el taller y la función arreglarCoches o arreglarMotos implica recorrer todos los coches y motos que haya y arrancarlos.
1
Coche Int motor;
Coche();
Taller -int max_vehiculos; -int num_vehiculos;
Taller(int); Void meter(vehiculo); Void arreglarVehiculos();
Vehículo String color; String marca;
Vehiculo(); Void arrancar()=0; Void parar()=0; Void repostar()=0;
Moto Int cilindrada;
Moto();
1..*
Programación orientada a objetos Ejercicios propuestos
D.L.S.I. 3 Universidad de Alicante
2. SEP05 (1,5 puntos) Declarad (sólo cabecera), para cada una de las siguientes sentencias A, B y C, qué haría falta añadir a una clase Matriz (implementada mediante undoble puntero a enteros) para que funcionasen correctamente.
int main(){ Matriz c; /*A*/ c[3,5]; //devuelve el elto. En la pos. 3,5 /*B*/ c[3][5]; // idem /*C*/ c(3,5); // idem return (0); };
3. SEP05 (2,5 puntos) Dadas las siguientes definiciones de clase
//------------------------------------------------------------------ // CLASE BASE //------------------------------------------------------------------ class cBase { private: int objeto_base_1; int objeto_base_2; public: cBase(); virtual ~cBase();
void funcion_A(); void funcion_B(); virtual void funcion_C(); virtual void funcion_D() = 0; };
cBase :: cBase() : objeto_base_1(1 ), objeto_base_2(2 ) { cout << "Constructor de BASE" << endl; }
cBase :: ~cBase() { cout << "Destructor de BASE" << endl;}
void cBase :: funcion_A() { cout << "Funcion A de BASE" << endl;}
void cBase :: funcion_B() { cout << "Funcion B de BASE" << endl;}
void cBase :: funcion_C() { cout << "Funcion C de BASE" << endl;}
//------------------------------------------------------------------ // CLASE DERIVADA //------------------------------------------------------------------ class cDerivada : public cBase { private:
Programación orientada a objetos Ejercicios propuestos
D.L.S.I. 4 Universidad de Alicante
int objeto_deriv_1; int objeto_deriv_2; public: cDerivada(); ~cDerivada();
void funcion_A(); void funcion_D(); };
cDerivada :: cDerivada() : cBase(), objeto_deriv_1(3), objeto_deriv_2(4) { cout << "Constructor de DERIVADA" << endl; }
cDerivada :: ~cDerivada() { cout << "Destructor de DERIVADA" << endl;}
void cDerivada :: funcion_A() { cout << "Funcion A de DERIVADA" << endl;}
void cDerivada :: funcion_D() { cout << "Funcion D de DERIVADA" << endl;}
se pide:
a. Especificad qué métodos invoca el siguiente programa.
int main( void ) { cDerivada derivada; cBase *base_ptr = &derivada;
// funcion de base, redefinida en derivada derivada.funcion_A(); base_ptr->funcion_A(); // funcion de base, no redefinida en derivada derivada.funcion_B(); base_ptr->funcion_B(); // funcion virtual de base, no redefinida en derivada derivada.funcion_C(); base_ptr->funcion_C(); // funcion virtual pura de base, redefinida en derivada derivada.funcion_D(); base_ptr->funcion_D();}
Programación orientada a objetos Ejercicios propuestos
D.L.S.I. 5 Universidad de Alicante
4. SEP04
Fig. 2. Diagrama de clases Sistema de Gestión de Bibliotecas
a. Define la función mo s t ra r( ) de la clase Volumen, así como la de la clase Revista (signatura y cuerpo de la función), teniendo en cuenta que dicha función debe comportarse de manera polimórfica. ¿Qué otra circunstancia tiene que darse para que el tipo de la variable que invoca al método no determine el método a utilizar? (2 puntos)
b. Implementa (signatura y código) una función in cluir( . . . ) en la clase Biblioteca que permita añadir con el mismo código tanto una revista como un libro que se le pase como parámetro. (1,5 puntos)
5. DIC03 Supongamos que los diseñadores de nuestra empresa nos entregan el diagrama de clases de la figura:.
+mostrar() : void
#nombre #numVol Volumen
+mostrarBiblioteca() : void +incluir(entrada v : Volumen&) : bool
-maxLibros -maxRevistas Biblioteca
+mostrar() : void --numLibros Libro
+mostrar() : void -numRevistas Revista
1..1 0..*
+C3(entrada p1 : String, entrada p2 : String) +C3(entrada p : C3&) +~C3() +o1() : int
#a1 : String #a2 : String
C3
+C4(entrada p1 : String, entrada p2 : String, entrada p3 : String) +C4(entrada p : C4&) +~C4() +o1() : int -a1 : String C4
+C5(entrada p1 : String, entrada p2 : String, entrada p3 : String) +C5(entrada p : C5&) +~C5() +o1() : int -a1 : String C5
+C2(entrada p : String) +~C2() -a1 : String C2
+C1(entrada p1 : String, entrada p2 : String) +C1(entrada p : C1&) +~C1() +operator=(entrada p : C1&) : C1&
-a1 : String -a2 : String
C1
-c1
1
-c2
0..20
-c30..1
-c20..*
-c3
0..30
-c1*
Programación orientada a objetos Ejercicios propuestos
D.L.S.I. 6 Universidad de Alicante
Barco
virtual void propio() void ver()
Submarino Destructor
Se pide:
a) Implementa la declaración (el .h) y el destructor de C1 (2 puntos)
b) Implementa la declaración y el constructor de copia de la clase C4 (1,5 puntos)
6. DIC04
1.- Supongamos que tenemos definida la jerarquía de herencia de la Fig.1.:
Fig.1:
...