You are on page 1of 82

Programacin

Avanzada en C++
L. Hernndez

2008 Luis Hernndez

Programacin en Ingeniera Electrnica | Programacion Avanzada en C++

Programacin
Orientada a Objetos

2008 Luis Hernndez

Programacin en Ingeniera Electrnica | Programacion Avanzada en C++

Nuevas incorporaciones desde C


Espacio de utilizacin de una
variable:

se puede declarar variables en


cualquier parte del programa.
variables globales

Acceso a variables ocultas.

2008 Luis Hernndez

Programacin en Ingeniera Electrnica | Programacion Avanzada en C++

Nuevas incorporaciones desde C


Referencias

Nombre alternativo para una variable u objeto


inti=1;
int&x=i;

Las variables x e i se refieren al mismo espacio de


memoria.
Se tienen que inicializar siempre.
Se utilizan en pase de parmetros a funciones donde se
quiera modificar su contenido.

Memoria dinmica:

new tipo[tamao];
delete [] puntero;

2008 Luis Hernndez

Programacin en Ingeniera Electrnica | Programacion Avanzada en C++

Nuevas incorporaciones desde C


Declaraciones de funciones

Parmetros con valor por defecto.


En funciones con varios parmetros:

si el parmetro k-1 est definido por defecto, el parmetro


k tambin tiene que estarlo.

Pase de parmetros por referencia.

2008 Luis Hernndez

Programacin en Ingeniera Electrnica | Programacion Avanzada en C++

Nuevas incorporaciones desde C


Operadores E/S:

operador extraccin: >>


operador insercin: <<
Stream de entrada estndar: cin
Stream de salida estndar: cout

2008 Luis Hernndez

Programacin en Ingeniera Electrnica | Programacion Avanzada en C++

Evolucin hacia la POO


Objetivos de la evolucin:

Menor interconexin entre las partes de un programa.


Ocultacin de la informacin.
Abstraccin:
que los componentes del S.W. sean lo ms cercano
posible a las ideas que componen el problema.

Re-utilizacin del cdigo.

Todos estos objetivos estn relacionados, pero la


piedra angular es la ocultacin de la informacin.

2008 Luis Hernndez

Programacin en Ingeniera Electrnica | Programacion Avanzada en C++

Programacin con procedimientos


El programa se divide en dos partes:

Algoritmos
Datos

La parte algortmica se estructura en procedimientos.


Beneficios:

Abstraccin de operaciones.
Extensin del lenguaje.
Re-utilizacin del cdigo.

Inconvenientes:

No existe una clara estructuracin de los datos que los


relacione con los procedimientos que los manejan.
Indefensin ante varios problemas:
No se garantiza el correcto estado de las estructuras de
informacin.
No hay independencia de representacin.

2008 Luis Hernndez

Programacin en Ingeniera Electrnica | Programacion Avanzada en C++

FIFO: Programacin con procedimientos


No hay nada que impida que un programador haga un mal
uso de los datos.

Ejemplo: confundir el uso de cola y cabeza.

No es posible garantizar que la cola se encuentra en un


estado correcto.
Que sucede si un da queremos cambiar la estructura de
los datos?

Ejemplo: cambiar el vector de la cola por una lista enlazada.


Tendra que re-escribir el programa.

Realmente,qu parte del cdigo es re-utilizable?.

2008 Luis Hernndez

Programacin en Ingeniera Electrnica | Programacion Avanzada en C++

FIFO: Ocultacin de la informacin


Cierta parte de los datos y funciones slo ser accesible desde
ciertas funciones.
Si el interfaz est bien definido, el estado de la cola siempre es
correcto.
Si se cambia la estructura interna de los datos slo hay que
cambiar las funciones del interfaz.
Re-utilizacin del cdigo. Se aprovecha:

la estructura de datos
las funciones que la manejan

Ocultacin de la informacin = Encapsulamiento de los datos

2008 Luis Hernndez

Programacin en Ingeniera Electrnica | Programacion Avanzada en C++

10

Formas de ocultacin de la informacin


Mdulos (Programacin modular)

Las funciones (procedimientos) y datos se agrupan en


diferentes ficheros (mdulos).
Para cada mdulo se definen los procedimientos y datos
que se exportan.
Slo se puede acceder desde fuera del mdulo a aquella
parte que ha sido exportada.

Objetos (Programacin orientada a objetos)

Un mdulo se compone de
dos partes:

2008 Luis Hernndez

definicin Interfaz
implementacin Cdigo
de la interfaz y de la parte
oculta.

Programacin en Ingeniera Electrnica | Programacion Avanzada en C++

11

Programacin modular
Aportaciones de la modularidad

Descomposicin de un problema complejo en mdulos


ms simples.
Re-utilizacin de los mdulos existentes para desarrollar
nuevo software.
Independencia de la implementacin.
Ocultacin de la informacin.

Limitaciones de la modularidad

Ejemplo: Slo puedo tener una cola en mi programa.

2008 Luis Hernndez

Programacin en Ingeniera Electrnica | Programacion Avanzada en C++

12

Programacin orientada a objetos


Los objetos son entidades que agrupan datos y
procedimientos que operan sobre esos datos.

modulo fichero
objeto variable

Los objetos se caracterizan por tres propiedades:

Estado
Operaciones
Identidad dentro del programa (=instanciacin)

Una clase es la descripcin de un conjunto de objetos


similares.
Los objetos son instancias de una clase.

Ejemplo: podemos definir la clase matriz y a partir de


ella los objetos matriz1 y matriz2.

2008 Luis Hernndez

Programacin en Ingeniera Electrnica | Programacion Avanzada en C++

13

Clases y objetos
Clase:

Abstraccin de un conjunto de objetos


caracterizados por las mismas propiedades y los
mismos comportamientos.

Objeto:

Abstraccin capaz de responder a una peticin


del servicio de mensaje.

Un objeto es una instancia de una clase.


La clase contiene su comportamiento y sus
propiedades.
El objeto puede crearse dinmicamente en el
transcurso de la ejecucin de un programa.
2008 Luis Hernndez

Programacin en Ingeniera Electrnica | Programacion Avanzada en C++

14

Objetos

El mensaje es el nico medio de comunicacin entre


los objetos.

Consiste en una peticin explcita de una operacin que


debe realizar el objeto
Puede ser asociado a una llamada de procedimiento

2008 Luis Hernndez

Programacin en Ingeniera Electrnica | Programacion Avanzada en C++

15

El concepto de objeto
Objeto: Entidad de programacin con componentes de
dos tipos:

Estado: Datos
Comportamiento: Procedimientos que manipulan los
datos con exclusividad.

Cada objeto posee un interfaz que contiene los


servicios que oferta al exterior.

2008 Luis Hernndez

Programacin en Ingeniera Electrnica | Programacion Avanzada en C++

16

Programacin orientada a objetos


Acceso convencional vs OO
Comunicacin entre objetos:

Un objeto pide un servicio a otro por medio de un


mensaje: destinatario + operacin + argumentos

2008 Luis Hernndez

Programacin en Ingeniera Electrnica | Programacion Avanzada en C++

17

Globalidad vs Localidad
Programacin modular

Aqu los datos son globales, son accesibles desde todos


los procedimientos.

Programacin por objetos:

Aqu los datos son locales a cada objeto.


Slo son accesibles para los procedimientos
(operaciones) definidos en el objeto.

2008 Luis Hernndez

Programacin en Ingeniera Electrnica | Programacion Avanzada en C++

18

Clases y objetos
Clase

vehiculo

Campos

velocidad
nombre
precio
cantidad

Mtodos

precioConIVA:
devolver(1,16*precio)
darVelocidad:
devolver(velocidad)
retirar(c):
cantidadcantidadc
aadir(c):
cantidadcantidad+c

2008 Luis Hernndez

Programacin en Ingeniera Electrnica | Programacion Avanzada en C++

19

Declaracin de clases
Declaracin de la clase
Definicin de las
funciones de la clase
Instanciacin de la clase

2008 Luis Hernndez

Programacin en Ingeniera Electrnica | Programacion Avanzada en C++

20

Programa ejemplo: Pila

2008 Luis Hernndez

Programacin en Ingeniera Electrnica | Programacion Avanzada en C++

21

Programa ejemplo: Pila

2008 Luis Hernndez

Programacin en Ingeniera Electrnica | Programacion Avanzada en C++

22

Constructores y destructores
Constructor

Funcin miembro de la
clase que se ejecuta
cuando se crea un objeto.
Podemos tener varios
constructores en una
clase, pero han de diferir
en los parmetros.

2008 Luis Hernndez

Destructor

Funcin miembro de la
clase que se ejecuta al
final de la vida de cada
objeto.

Programacin en Ingeniera Electrnica | Programacion Avanzada en C++

23

Utilizacin de constructores

Utilizacin de constructores:

Sin parmetros: Aa;


Con un parmetro: Aa(5);Aa=5;
Con varios parmetros: Aa(5,3);

Constructores por defecto:

Constructor copia:

Crea un objeto b2 donde los datos de b2 sern iguales a


los de b1.
Aunque no se defina el constructor copia, ste existe para
que se puedan pasar objetos como parmetros por valor.

Constructor sin parmetros:

Aunque no se defina, ste existe para que se puedan


definir objetos de la clase (no ejecuta nada).

2008 Luis Hernndez

Programacin en Ingeniera Electrnica | Programacion Avanzada en C++

24

Utilizacin de constructores
Desaparicin de constructores por defecto:

Constructor sin parmetros:

Desaparece cuando definimos cualquier otro constructor.

Constructor copia:

Desaparece cuando definimos un nuevo constructor copia.


Siempre hay un constructor copia, y solo uno, en cada
clase.

2008 Luis Hernndez

Programacin en Ingeniera Electrnica | Programacion Avanzada en C++

25

Constructor copia
Definicin
Utilizacin

2008 Luis Hernndez

Programacin en Ingeniera Electrnica | Programacion Avanzada en C++

26

Clases compuestas

Una clase donde algn dato miembro es un objeto de


otra clase.
Cul es el orden de construccin?
2008 Luis Hernndez

Programacin en Ingeniera Electrnica | Programacion Avanzada en C++

27

Expansin inline
Evitar llamadas a
funciones.
El compilador simula el
pase de parmetros.

2008 Luis Hernndez

Programacin en Ingeniera Electrnica | Programacion Avanzada en C++

28

Clases y funciones friend


Funciones friend:

Una funcin ajena a la clase pueda acceder a la parte


privada de la clase.

Clases friend:

Todos los mtodos de una clase puedan acceder a la


parte privada de otra clase.

2008 Luis Hernndez

Programacin en Ingeniera Electrnica | Programacion Avanzada en C++

29

Calificacin de variables miembro


Distinguir entre:

variables miembro de una clase


otro tipo de variables.

Operador resolucin de mbito ::

2008 Luis Hernndez

Programacin en Ingeniera Electrnica | Programacion Avanzada en C++

30

Palabra reservada this

Representa un puntero al objeto que recibe la llamada.


Todos los objetos de todas las clases tienen this
como dato miembro.
2008 Luis Hernndez

Programacin en Ingeniera Electrnica | Programacion Avanzada en C++

31

Variables de clase e instancia


Variables de clase:

comn a todos los objetos (instancias) de una clase.

Variables de instancia:

propio de cada objeto (instancia) de la clase.

2008 Luis Hernndez

Programacin en Ingeniera Electrnica | Programacion Avanzada en C++

32

Variables de clase e instancia

2008 Luis Hernndez

Programacin en Ingeniera Electrnica | Programacion Avanzada en C++

33

Funciones de clase
Funciones de clase:

Actan sobre variables de clase.


Slo pueden actuar sobre las variables de instancia de la
propia clase cuando pertenecen a un objeto:
pasado como parmetro.
declarado dentro de la propia funcin.

2008 Luis Hernndez

Programacin en Ingeniera Electrnica | Programacion Avanzada en C++

34

Punteros a objetos
Declaracin de punteros a objetos de una clase.
Utilizacin del operador new y delete:

Al ejecutarse el operador new, se llama al constructor de


la clase automticamente (malloc no lo hace).
delete llama al destructor (free no).

2008 Luis Hernndez

Programacin en Ingeniera Electrnica | Programacion Avanzada en C++

35

Ejemplo de vectores
y punteros a objetos

2008 Luis Hernndez

Programacin en Ingeniera Electrnica | Programacion Avanzada en C++

36

Herencia

2008 Luis Hernndez

Programacin en Ingeniera Electrnica | Programacion Avanzada en C++

37

Herencia
Definir una nueva clase:

como extensin de otra previamente definida.


sin modificar la ya existente.

La nueva clase hereda de la clase anterior:

las variables.
las operaciones .

Principal objetivo/ventaja:

Reutilizacin del cdigo.

Ahorro de esfuerzo.
Mayor confianza en el cdigo.

2008 Luis Hernndez

Programacin en Ingeniera Electrnica | Programacion Avanzada en C++

38

Organizacin jerrquica

2008 Luis Hernndez

Programacin en Ingeniera Electrnica | Programacion Avanzada en C++

39

Herencia en POO
Una funcin recibe un objeto de
la clase base.
voidDespedir(empleado);

Una funcin puede recibir


objetos de la clase base y
tambin de sus derivadas.
empleadoe;
empleado_produccinep;
empleado_comercialesec;
Despedir(e);
Despedir(ep);
Despedir(ec);

2008 Luis Hernndez

Programacin en Ingeniera Electrnica | Programacion Avanzada en C++

40

Herencia de mtodos y variables


Las clases derivadas reciben (=heredan) las variables
y mtodos de la clase base.
Empleado_comercialec;
Empleado_produccionep;
ec.Cambiar_Sueldo();
ep.Cambiar_Sueldo();

2008 Luis Hernndez

Programacin en Ingeniera Electrnica | Programacion Avanzada en C++

41

Composicin y herencia
Composicin:

Relacin tener-un

Herencia:

Un coche tiene un motor

Contener un objeto.

2008 Luis Hernndez

Relacin ser-un
Un coche es un vehculo

Contener una clase.

Programacin en Ingeniera Electrnica | Programacion Avanzada en C++

42

Ejemplos de composicin y herencia


Clase persona y clase empleado.

Herencia: un empleado es una persona.

Clase persona y clase domicilio.

Composicin: una persona tiene un domicilio.

Clase lista y clase nodo de la lista:

Composicin: una lista tiene un puntero de tipo nodo al


nodo que est en cabeza de la lista (tener-un).

Clase empresa, clase empleado y clase jefe de grupo


de empleados.

Herencia entre empleado y jefe.


Un jefe es un empleado.

Composicin entre empresa y empleado o jefe.

Una empresa puede tener una lista de empleados y otra


de jefes.
Por el principio de los subtipos, una empresa puede tener
una nica lista donde aparezcan tanto jefes como
empleados.

2008 Luis Hernndez

Programacin en Ingeniera Electrnica | Programacion Avanzada en C++

43

Ejemplo de herencia

2008 Luis Hernndez

Programacin en Ingeniera Electrnica | Programacion Avanzada en C++

44

Ejemplo de herencia
Los miembros de la clase empleado se pueden utilizar
en las clases derivadas tal y como si hubiesen sido
definidos en stas

2008 Luis Hernndez

Programacin en Ingeniera Electrnica | Programacion Avanzada en C++

45

Modos de acceso
private

Lo que es private en la clase base no es accesible en


la clase derivada.

public

Lo que definimos como public es accesible desde


cualquier parte.

protected

Lo que definimos como protected en la clase base:


es accesible en la clases derivadas
no es accesible fuera de las clases derivadas o base.

2008 Luis Hernndez

Programacin en Ingeniera Electrnica | Programacion Avanzada en C++

46

public

Tipos de herencia

los modos de acceso a los miembros de la clase base se


quedan igual en la clase derivada.

protected

los miembros public de la clase base pasan a ser


protected, el resto se queda igual.

private

todos los miembros de la clase base pasan a ser


private en la derivada.

2008 Luis Hernndez

Programacin en Ingeniera Electrnica | Programacion Avanzada en C++

47

Redefinicin de miembros

A veces, interesa cambiar en la


subclase la definicin de algo que est
en la clase base.
Lo redefinido no desaparece.
2008 Luis Hernndez

Programacin en Ingeniera Electrnica | Programacion Avanzada en C++

48

Ejemplo de redefinicin de miembros

2008 Luis Hernndez

Programacin en Ingeniera Electrnica | Programacion Avanzada en C++

49

Herencia mltiple
Una clase derivada hereda
las caractersticas de ms
de una clase base.

2008 Luis Hernndez

Programacin en Ingeniera Electrnica | Programacion Avanzada en C++

50

Constructores y destructores
Construccin objeto clase derivada:

Primero se construye la parte heredada de la clase(s)


base.
Se ejecutan los constructores de las clases base.

Por ltimo se ejecuta el cdigo del constructor de la


clase derivada.

Destruccin objeto clase derivada:

El proceso es a la inversa que en la construccin.

Se ejecuta primero el destructor de la clase derivada y a


continuacin los de las clases base.

2008 Luis Hernndez

Programacin en Ingeniera Electrnica | Programacion Avanzada en C++

51

Ejemplo de constructores y destructores


Constructores y
destructores en la
herencia

2008 Luis Hernndez

Programacin en Ingeniera Electrnica | Programacion Avanzada en C++

52

Ejemplo de constructores y destructores


Constructores y
destructores en clases
compuestas y derivadas.

2008 Luis Hernndez

Programacin en Ingeniera Electrnica | Programacion Avanzada en C++

53

Ejemplo de constructores y destructores


Llamadas a los
constructores de las
clases base.

2008 Luis Hernndez

Programacin en Ingeniera Electrnica | Programacion Avanzada en C++

54

Ejemplo de constructores y destructores

2008 Luis Hernndez

Programacin en Ingeniera Electrnica | Programacion Avanzada en C++

55

Ejemplo de constructores y destructores

2008 Luis Hernndez

Programacin en Ingeniera Electrnica | Programacion Avanzada en C++

56

Clase base virtual

2008 Luis Hernndez

Programacin en Ingeniera Electrnica | Programacion Avanzada en C++

57

Herencia virtual
Si una clase base virtual define constructores, debe
proporcionar uno de estos dos constructores:

un constructor sin parmetros


un constructor que admita valores por defecto para todos
los parmetros.

Las clases derivadas de una clase base virtual tienen


que ser definidas como herencia virtual.

2008 Luis Hernndez

Programacin en Ingeniera Electrnica | Programacion Avanzada en C++

58

Ejemplo de
Herencia virtual

2008 Luis Hernndez

Programacin en Ingeniera Electrnica | Programacion Avanzada en C++

59

Punteros a clases derivadas

2008 Luis Hernndez

Programacin en Ingeniera Electrnica | Programacion Avanzada en C++

60

Polimorfismo

2008 Luis Hernndez

Programacin en Ingeniera Electrnica | Programacion Avanzada en C++

61

Polimorfismo
El polimorfismo se refiere al hecho de que una misma
funcin adopte mltiples formas.
Esto se consigue por medio de la sobrecarga:

Sobrecarga de funciones:

un mismo nombre de funcin para distintas funciones.

a=Sumar(c,d);
a=Sumar(c);

Sobrecarga de operadores:

un mismo operador con distintas funcionalidades.


Ejemplo: Sobrecargar el operador + sobre la clase cadena
para que permita concatenar dos de estos objetos:
entero1=entero2+5;
cadena1=cadena2+cadena3;

2008 Luis Hernndez

Programacin en Ingeniera Electrnica | Programacion Avanzada en C++

62

Sobrecarga de constructores
Solo en caso de que no
definamos ningn
constructor, tenemos el
constructor por defecto.

2008 Luis Hernndez

Programacin en Ingeniera Electrnica | Programacion Avanzada en C++

63

Sobrecarga de funciones

Tenemos 2 funciones costructor


string().
Tenemos 4 posibles llamadas a 4
funciones diferentes strcmp():

3 en la clase.
1 en la librera string.h de C.

Tenemos 2 funciones strcpy()


en la clase.

2008 Luis Hernndez

Programacin en Ingeniera Electrnica | Programacion Avanzada en C++

64

Sobrecarga de funciones
En la sobrecarga de funciones se desarrollan distintas
funciones con un mismo nombre pero distinto cdigo.
Las funciones que comparten un mismo nombre deben
tener una relacin en cuanto a su funcionalidad.
Aunque comparten el mismo nombre, deben tener
distintos parmetros de manera que el compilador
pueda distinguir entre las distintas funciones cuando
encuentra una llamada. stos pueden diferir en :

nmero
tipo
orden

El tipo del valor de retorno de una funcin no es vlido


como distincin.

Esto es debido a que ese valor en C++ no es necesario


que sea recogido por otro objeto.

2008 Luis Hernndez

Programacin en Ingeniera Electrnica | Programacion Avanzada en C++

65

Ejemplo de sobrecarga de funciones

2008 Luis Hernndez

Programacin en Ingeniera Electrnica | Programacion Avanzada en C++

66

Sobrecarga de operadores
Consiste en definir nuevas funcionalidades para los
operadores definidos en el lenguaje.
Se pueden sobrecargar prcticamente todos los
operadores del lenguaje:

No podemos inventar nuevos operadores.


No podemos re-definir funcionalidades de los
operadores que ya estn definidas

2008 Luis Hernndez

Programacin en Ingeniera Electrnica | Programacion Avanzada en C++

67

Sobrecarga de operadores
Al menos uno de los operandos del operador
sobrecargado debe ser una clase definida por nosotros
La sobrecarga de operadores es un caso particular de
la sobrecarga de funciones:

el operando de la izquierda puede pasar a ser el


propietario de la funcin, o bien
el primer argumento de la funcin.

2008 Luis Hernndez

Programacin en Ingeniera Electrnica | Programacion Avanzada en C++

68

Sobrecarga de operadores

2008 Luis Hernndez

Programacin en Ingeniera Electrnica | Programacion Avanzada en C++

69

Sobrecarga de operadores
Para cualquier clase que se
defina, el compilador define
el operador asignacin =.
Cuando no me sirve, debo
re-definirlo.

2008 Luis Hernndez

Programacin en Ingeniera Electrnica | Programacion Avanzada en C++

70

Operador incremento y decremento


Tiene dos posibles notaciones:

prefija: ++a
postfija: a++

2008 Luis Hernndez

Programacin en Ingeniera Electrnica | Programacion Avanzada en C++

71

Operador subndice
Devolucin de una referencia:

Se debe devolver una referencia cuando queremos que


se pueda modificar el propio objeto que se devuelve.

2008 Luis Hernndez

Programacin en Ingeniera Electrnica | Programacion Avanzada en C++

72

Operador subndice
Ejemplo de utilizacin de
ndices dobles.

2008 Luis Hernndez

Programacin en Ingeniera Electrnica | Programacion Avanzada en C++

73

Conversin de clases
Un constructor de Y que
reciba X permite al
compilador convertir
objetos de la clase X en
objetos de la clase Y.

2008 Luis Hernndez

Programacin en Ingeniera Electrnica | Programacion Avanzada en C++

74

Operadores de conversin
Los constructores de una clase X:

permiten definir qu otras clases pueden ser convertidas


en la clase X.

Los operadores de conversin que se definen en una


clase X:

permiten definir en qu otras clases se pueden convertir


la clase x.

2008 Luis Hernndez

Programacin en Ingeniera Electrnica | Programacion Avanzada en C++

75

Operadores de conversin

2008 Luis Hernndez

Programacin en Ingeniera Electrnica | Programacion Avanzada en C++

76

Ligadura dinmica
Funciones virtuales:

Son una clase de sobrecarga de funciones, pero con la


diferencia de:
Sobrecarga de funciones: se decide que funcin se va a
ejecutar en tiempo de compilacin.
Funciones virtuales: se decide en tiempo de ejecucin
(poliformismo en tiempo de ejecucin).

2008 Luis Hernndez

Programacin en Ingeniera Electrnica | Programacion Avanzada en C++

77

Ligadura dinmica

Se ejecutar la funcin muestra() de alumno o de


profesor dependiendo de la clase de objeto a la que
apunte p (ligadura dinmica, en tiempo de ejecucin).
La funcin persona::muestra() no se ejecuta porque es
virtual y ha sido substituida en cada clase derivada.
Si no se hubiera definido como virtual la funcin
muestra() en la clase persona se ejecutara siempre
persona::muestra()
2008 Luis Hernndez

Programacin en Ingeniera Electrnica | Programacion Avanzada en C++

78

Funciones virtuales
Cuando se define una funcin virtual:

El prototipo debe ser el mismo en las clases base y derivadas.

Una funcin definida como virtual en una clase base:

es virtual en todas sus clases derivadas, sea cual sea el nivel de


derivacin.
Puede ser re-definida o no en las clases derivada.

2008 Luis Hernndez

Programacin en Ingeniera Electrnica | Programacion Avanzada en C++

79

Clases abstractas
No tiene mucho sentido:

definir cdigo a la funcin figura:area()


existan objetos de la clase figura

Solucin: Podemos definir la clase figura como una


clase abstracta.

2008 Luis Hernndez

Programacin en Ingeniera Electrnica | Programacion Avanzada en C++

80

Clases abstractas
Funciones virtuales puras:

Las clases derivadas estn obligadas a re-definirla.

2008 Luis Hernndez

Programacin en Ingeniera Electrnica | Programacion Avanzada en C++

81

Destructor virtual

2008 Luis Hernndez

Programacin en Ingeniera Electrnica | Programacion Avanzada en C++

82

You might also like