Académique Documents
Professionnel Documents
Culture Documents
Clase 5:
Mecanismos de la
Programacin Orientada
a Objetos
www.unaj.edu.ar
Algoritmos y Programacin
Temario
Miembros de clases.
Composicin.
Herencia y Jerarquia de clases.
Sobreescritura.
Polimorfismo.
Diagrama de clases UML.
www.unaj.edu.ar
Algoritmos y Programacin
Variables de clase
www.unaj.edu.ar
Algoritmos y Programacin
Mtodos de clase
www.unaj.edu.ar
Algoritmos y Programacin
Metodo de Clase
www.unaj.edu.ar
Algoritmos y Programacin
Objetos compuestos
www.unaj.edu.ar
Algoritmos y Programacin
www.unaj.edu.ar
Algoritmos y Programacin
Herencia
La herencia nos permite concebir una nueva clase de objetos como un refinamiento
de otra clase de objetos ya existente, conservando las similitudes entre las clases
de objetos y especificando solamente las diferencias de la nueva clase de objetos.
Animal
Mamfero
Gato
www.unaj.edu.ar
Algoritmos y Programacin
Herencia en Python
En Python cuando una clase A especifica luego de su nombre otro nombre
de clase, llammosla B, entre parntesis, se est indicando que A hereda de B.
ES UNA
ES
A
N
U
Heredan de FiguraGeometrica
Algoritmos y Programacin
Herencia Multiple
Python provee la posibilidad de definir relaciones de
herencia mltiple o sea heredar de mas de una clase.
class Terrestre:
def desplazar(self):
print "El animal anda
class Acuatico:
def desplazar(self):
print "El animal nada"
class Cocodrilo(Terrestre,
Acuatico):
pass
Qu mtodo se ejecuta?
c = Cocodrilo() Accin: Toma el mtodo de la clase ms a la izquierda
de la lista, por lo que mostrara: El animal anda
c.desplazar()
www.unaj.edu.ar
Algoritmos y Programacin
Jerarqua de clases
Las clases pueden ser organizadas en jerarquas de
herencia donde, las clases hijas o subclases, heredarn
estado y comportamiento de las clases que se encuentran
ms arriba en la jerarqua, llamadas superclases.
La clase Object es la raz de la jerarqua de clases en
Python. Cualquier clase que no especifique un padre directo,
ser subclase directa de Object.
Las subclases pueden agregar nuevas variables y mtodos,
cambiando en algunos casos el comportamiento de los
mtodos heredados.
www.unaj.edu.ar
Algoritmos y Programacin
Sobreescritura
Qu pasa si en una subclase se define un mtodo que
tenga exactamente la misma firma (nombre, tipo de retorno,
y lista de argumentos (orden, cantidad y tipo) ) que un
mtodo de la superclase?
La subclase esta sobre-escribiendo el metodo de la
superclase.
La sobreescritura permite definir un mtodo en una
subclase, que tenga exactamente la misma firma que un
mtodo de la superclase.
www.unaj.edu.ar
Algoritmos y Programacin
Ejemplo de Sobreescritura
Las tres superclases de FiguraGeometrica: Linea, Circulo y Rectangulo
sobreescriben el mtodo dibujar() definido en la superclase.
Sobreescriben
www.unaj.edu.ar
Algoritmos y Programacin
Reutilizando cdigo
class Terrestre:
def desplazar(self):
print "camina
Invocacin
class Mamifero(Terrestre):
def desplazar(self):
Terrestre.desplazar(self)
print "el mamifero"
m = Mamifero()
m.desplazar()
Cul es el resultado?
Algoritmos y Programacin
Algoritmos y Programacin
Binding en Python
Conectar la invocacin de un mtodo con el cuerpo del
mismo, se llama binding.
Si el binding, se hace en compilacin, se llama binding
temprano o esttico.
Si se hace en ejecucin binding tardo o dinmico.
Python usa binding dinmico, la resolucin de las
invocaciones a mtodos, se hace en ejecucin (run-time),
basndose en el tipo del objeto receptor.
www.unaj.edu.ar
Algoritmos y Programacin
Polimorfismo
Polimorfismo es la capacidad de que varias subclases
utilicen un mismo mtodo de forma diferente.
Para utilizar la tecnica del polimorfismo generalmente se
realiza lo siguiente:
Se define una jerarquia de herencia.
Se implementa una interface comn en la clase que se
encuentra en el tope de la jerarquia.
Se codifica diferentes versiones de los mtodos
especificados en la interface comn.
.
www.unaj.edu.ar
Algoritmos y Programacin
Polimorfismo
El polimorfismo se vale de la
sobreescritura de metodos y
binding dinmico para poder
funcionar.
?
?
?
Algoritmos y Programacin
www.unaj.edu.ar
Algoritmos y Programacin
Estado
mensajes()
Comportamiento
www.unaj.edu.ar
Algoritmos y Programacin
www.unaj.edu.ar
Algoritmos y Programacin
Clase
atributos
visiblidad operacin()
visiblidad operacin (argumentos):resultado()
www.unaj.edu.ar
Algoritmos y Programacin
crear objetos de
una clase existente dentro de una
nueva clase.
Vehiculo
atributos
mensajes()
Motor
atributos
mensajes()
crear una
clase nueva como de un
tipo de una clase existente.
Automvil
Vehiculo
atributos
mensajes()
Moto
atributos
atributos
mensajes()
mensajes()
www.unaj.edu.ar