Descarga la aplicación para disfrutar aún más
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
Compartir