Professional Documents
Culture Documents
Avanzada en C++
L. Hernndez
Programacin
Orientada a Objetos
Memoria dinmica:
new tipo[tamao];
delete [] puntero;
Algoritmos
Datos
Abstraccin de operaciones.
Extensin del lenguaje.
Re-utilizacin del cdigo.
Inconvenientes:
la estructura de datos
las funciones que la manejan
10
Un mdulo se compone de
dos partes:
definicin Interfaz
implementacin Cdigo
de la interfaz y de la parte
oculta.
11
Programacin modular
Aportaciones de la modularidad
Limitaciones de la modularidad
12
modulo fichero
objeto variable
Estado
Operaciones
Identidad dentro del programa (=instanciacin)
13
Clases y objetos
Clase:
Objeto:
14
Objetos
15
El concepto de objeto
Objeto: Entidad de programacin con componentes de
dos tipos:
Estado: Datos
Comportamiento: Procedimientos que manipulan los
datos con exclusividad.
16
17
Globalidad vs Localidad
Programacin modular
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
19
Declaracin de clases
Declaracin de la clase
Definicin de las
funciones de la clase
Instanciacin de la clase
20
21
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.
Destructor
Funcin miembro de la
clase que se ejecuta al
final de la vida de cada
objeto.
23
Utilizacin de constructores
Utilizacin de constructores:
Constructor copia:
24
Utilizacin de constructores
Desaparicin de constructores por defecto:
Constructor copia:
25
Constructor copia
Definicin
Utilizacin
26
Clases compuestas
27
Expansin inline
Evitar llamadas a
funciones.
El compilador simula el
pase de parmetros.
28
Clases friend:
29
30
31
Variables de instancia:
32
33
Funciones de clase
Funciones de clase:
34
Punteros a objetos
Declaracin de punteros a objetos de una clase.
Utilizacin del operador new y delete:
35
Ejemplo de vectores
y punteros a objetos
36
Herencia
37
Herencia
Definir una nueva clase:
las variables.
las operaciones .
Principal objetivo/ventaja:
Ahorro de esfuerzo.
Mayor confianza en el cdigo.
38
Organizacin jerrquica
39
Herencia en POO
Una funcin recibe un objeto de
la clase base.
voidDespedir(empleado);
40
41
Composicin y herencia
Composicin:
Relacin tener-un
Herencia:
Contener un objeto.
Relacin ser-un
Un coche es un vehculo
42
43
Ejemplo de herencia
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
45
Modos de acceso
private
public
protected
46
public
Tipos de herencia
protected
private
47
Redefinicin de miembros
48
49
Herencia mltiple
Una clase derivada hereda
las caractersticas de ms
de una clase base.
50
Constructores y destructores
Construccin objeto clase derivada:
51
52
53
54
55
56
57
Herencia virtual
Si una clase base virtual define constructores, debe
proporcionar uno de estos dos constructores:
58
Ejemplo de
Herencia virtual
59
60
Polimorfismo
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:
a=Sumar(c,d);
a=Sumar(c);
Sobrecarga de operadores:
62
Sobrecarga de constructores
Solo en caso de que no
definamos ningn
constructor, tenemos el
constructor por defecto.
63
Sobrecarga de funciones
3 en la clase.
1 en la librera string.h de 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
65
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:
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:
68
Sobrecarga de operadores
69
Sobrecarga de operadores
Para cualquier clase que se
defina, el compilador define
el operador asignacin =.
Cuando no me sirve, debo
re-definirlo.
70
prefija: ++a
postfija: a++
71
Operador subndice
Devolucin de una referencia:
72
Operador subndice
Ejemplo de utilizacin de
ndices dobles.
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.
74
Operadores de conversin
Los constructores de una clase X:
75
Operadores de conversin
76
Ligadura dinmica
Funciones virtuales:
77
Ligadura dinmica
78
Funciones virtuales
Cuando se define una funcin virtual:
79
Clases abstractas
No tiene mucho sentido:
80
Clases abstractas
Funciones virtuales puras:
81
Destructor virtual
82