Logo Studenta

Clase 2 parte 2

¡Este material tiene más páginas!

Vista previa del material en texto

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Optativa 1 TUP: Desarrollo en Python
POO 2da parte
Dr. Cristian Martínez
Departamento de Informática
Universidad Nacional de Salta
Setiembre, 2019
C. Martínez (DI-UNSa) Optativa 1 TUP: Desarrollo en Python Setiembre, 2019
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Agenda
1 POO
Introducción
Herencia
Polimorfismo y Sobrecarga
C. Martínez (DI-UNSa) Optativa 1 TUP: Desarrollo en Python Setiembre, 2019
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
POO Introducción
En la primera clase de POO vimos los siguientes conceptos:
Clase
Objeto
Instanciación
Atributo
Método
C. Martínez (DI-UNSa) Optativa 1 TUP: Desarrollo en Python Setiembre, 2019
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
POO Introducción
También en la parte práctica comenzamos a pensar en POO y a ver
diferencias con la Programación Estructurada.
Algo muy importante a remarcar: los objetos deben
cooperar para resolver un problema computacional.
Tenemos que lograr que los objetos cooperen. No sirve
que se ”manden” escalares. Los objetos deben verse como
cajas negras.
C. Martínez (DI-UNSa) Optativa 1 TUP: Desarrollo en Python Setiembre, 2019
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
POO Introducción
También vimos:
Los atributos son públicos por defecto.
Los métodos también.
Los métodos (al igual que pasaba con las funciones) soportan valores
por defecto.
Algo que omitimos: para que los atributos y métodos sean privados
debe estar precedidos de 2 guiones bajos. Ejemplo self.__atributo,
def __metodo().
C. Martínez (DI-UNSa) Optativa 1 TUP: Desarrollo en Python Setiembre, 2019
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
POO Introducción
Como recordatorio definamos encapsulamiento: Es el ocultamiento del
estado de un objeto.
Para lograr el encapsulamiento de los objetos, los datos de los mismos
deben ser únicamente modificados mediante operaciones.
C. Martínez (DI-UNSa) Optativa 1 TUP: Desarrollo en Python Setiembre, 2019
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
POO Introducción
Pero también y por ser primera clase, quedaron temas a ver después:
Herencia
Polimorfismo
Sobrecarga
Composición
C. Martínez (DI-UNSa) Optativa 1 TUP: Desarrollo en Python Setiembre, 2019
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
POO Herencia
Una forma natural de organizar nuestro información es de manera
jerárquica.
C. Martínez (DI-UNSa) Optativa 1 TUP: Desarrollo en Python Setiembre, 2019
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
POO Herencia
La correspondencia entre niveles (como los de la figura) a menudo se
refieren a una relación de tipo ”es un”. Por ejemplo, una casa ”es una”
construcción, y un rancho ”es una” casa.
En POO, el mecanismo para una organización jerárquica y modular es una
técnica conocida como herencia [Goodrich et al., 2013].
Esto permite que una nueva clase sea definida a partir de una clase
existente como punto de partida.
C. Martínez (DI-UNSa) Optativa 1 TUP: Desarrollo en Python Setiembre, 2019
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
POO Herencia
En lo que refiere a la Programación Orientada a Objetos, la clase existente
se conoce como clase base, clase padre o superclase, mientras que la
nueva clase definida se conoce como subclase o clase hija.
De la gráfica anterior, Ranch(rancho) es una subclase de House (casa).
House es clase padre de Ranch y Ranch es clase hija de House.
C. Martínez (DI-UNSa) Optativa 1 TUP: Desarrollo en Python Setiembre, 2019
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
POO Herencia
Para qué crear una subclase?
Para especializar un comportamiento actual (proveniente de la
superclase) proporcionando una nueva implementación.
Para extender (a la superclase) proporcionando nuevos métodos.
C. Martínez (DI-UNSa) Optativa 1 TUP: Desarrollo en Python Setiembre, 2019
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
POO Herencia
Ejemplo
C. Martínez (DI-UNSa) Optativa 1 TUP: Desarrollo en Python Setiembre, 2019
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
POO Herencia
Ejemplo
Veamos código!
C. Martínez (DI-UNSa) Optativa 1 TUP: Desarrollo en Python Setiembre, 2019
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
POO Polimorfismo y Sobrecarga
En el ámbito de POO el polimorfismo hace referencia la habilidad que
tienen los objetos de diferentes clases a responder a métodos con el mismo
nombre pero con implementaciones diferentes[Fernández Montoro, 2012].
C. Martínez (DI-UNSa) Optativa 1 TUP: Desarrollo en Python Setiembre, 2019
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
POO Polimorfismo y Sobrecarga
Ejemplo
Veamos código!
C. Martínez (DI-UNSa) Optativa 1 TUP: Desarrollo en Python Setiembre, 2019
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
POO Polimorfismo y Sobrecarga
En POO, la sobrecarga se refiere a la posibilidad de tener dos o más
métodos (en una misma clase) con el mismo nombre pero funcionalidad
diferente.
El compilador usará una u otra dependiendo de los parámetros usados. No
obstante esta es una característica de los lenguajes estáticos.
C. Martínez (DI-UNSa) Optativa 1 TUP: Desarrollo en Python Setiembre, 2019
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
POO Polimorfismo y Sobrecarga
Qué ocurre en Python? Se puede definir 2 métodos con mismo nombre y
firmas diferentes. Sin embargo, el compilador buscará ejecutar el último
método.
Una solución adhoc es la siguiente: Usar métodos con parámetros por
defecto y en el cuerpo, preguntar por los parámetros actuales. Según eso,
hace una cosa u otra. ;)
C. Martínez (DI-UNSa) Optativa 1 TUP: Desarrollo en Python Setiembre, 2019
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
The End
C. Martínez (DI-UNSa) Optativa 1 TUP: Desarrollo en Python Setiembre, 2019
	POO
	Introducción
	Herencia
	Polimorfismo y Sobrecarga

Continuar navegando