ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Excepciones


Enviado por   •  25 de Julio de 2013  •  4.056 Palabras (17 Páginas)  •  423 Visitas

Página 1 de 17

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:

...

Descargar como (para miembros actualizados) txt (22 Kb)
Leer 16 páginas más »
Disponible sólo en Clubensayos.com