Programación Orientada a Objetos · Orientada a Objetos WTPC 2019. Estructurado Órdenes a la...
Transcript of Programación Orientada a Objetos · Orientada a Objetos WTPC 2019. Estructurado Órdenes a la...
![Page 1: Programación Orientada a Objetos · Orientada a Objetos WTPC 2019. Estructurado Órdenes a la computadora ... La herencia facilita la creación de objetos a partir de otros ya existentes](https://reader035.fdocuments.co/reader035/viewer/2022063006/5fb5efd86de48e6a6e02c974/html5/thumbnails/1.jpg)
Programación Orientada a Objetos
WTPC 2019
![Page 2: Programación Orientada a Objetos · Orientada a Objetos WTPC 2019. Estructurado Órdenes a la computadora ... La herencia facilita la creación de objetos a partir de otros ya existentes](https://reader035.fdocuments.co/reader035/viewer/2022063006/5fb5efd86de48e6a6e02c974/html5/thumbnails/2.jpg)
Estructurado
Órdenes a la computadora
Lectura lineal
Segmentado en “funciones”
![Page 3: Programación Orientada a Objetos · Orientada a Objetos WTPC 2019. Estructurado Órdenes a la computadora ... La herencia facilita la creación de objetos a partir de otros ya existentes](https://reader035.fdocuments.co/reader035/viewer/2022063006/5fb5efd86de48e6a6e02c974/html5/thumbnails/3.jpg)
Estructurado
Edad
<18 >18
![Page 4: Programación Orientada a Objetos · Orientada a Objetos WTPC 2019. Estructurado Órdenes a la computadora ... La herencia facilita la creación de objetos a partir de otros ya existentes](https://reader035.fdocuments.co/reader035/viewer/2022063006/5fb5efd86de48e6a6e02c974/html5/thumbnails/4.jpg)
Edad
<18 >18
Estructurado
![Page 5: Programación Orientada a Objetos · Orientada a Objetos WTPC 2019. Estructurado Órdenes a la computadora ... La herencia facilita la creación de objetos a partir de otros ya existentes](https://reader035.fdocuments.co/reader035/viewer/2022063006/5fb5efd86de48e6a6e02c974/html5/thumbnails/5.jpg)
Orientado a objetos
Objeto 1
Objeto 3Objeto 2
mensajemensaje
mensaje
![Page 6: Programación Orientada a Objetos · Orientada a Objetos WTPC 2019. Estructurado Órdenes a la computadora ... La herencia facilita la creación de objetos a partir de otros ya existentes](https://reader035.fdocuments.co/reader035/viewer/2022063006/5fb5efd86de48e6a6e02c974/html5/thumbnails/6.jpg)
Orientado a objetos
Objeto 1
Objeto 3Objeto 2
mensajemensaje
mensaje
EstadoTodas las propiedades de un objeto
ComportamientoCómo un objeto reacciona frente a una interacción.
IdentidadDistintos objetos pueden tener idénticos estados y el mismo comportamiento, pero cada uno tendrá su identidad.
![Page 7: Programación Orientada a Objetos · Orientada a Objetos WTPC 2019. Estructurado Órdenes a la computadora ... La herencia facilita la creación de objetos a partir de otros ya existentes](https://reader035.fdocuments.co/reader035/viewer/2022063006/5fb5efd86de48e6a6e02c974/html5/thumbnails/7.jpg)
ObjetoAtributos: datos
Métodos: procedimientos
Objeto 1
Objeto 3Objeto 2
mensajemensaje
mensaje
El objeto puede, a través de sus métodos, modificarse a sí mismo
![Page 8: Programación Orientada a Objetos · Orientada a Objetos WTPC 2019. Estructurado Órdenes a la computadora ... La herencia facilita la creación de objetos a partir de otros ya existentes](https://reader035.fdocuments.co/reader035/viewer/2022063006/5fb5efd86de48e6a6e02c974/html5/thumbnails/8.jpg)
Clase: blueprint de los objetosEl concepto abstracto detrás del objeto concreto
![Page 9: Programación Orientada a Objetos · Orientada a Objetos WTPC 2019. Estructurado Órdenes a la computadora ... La herencia facilita la creación de objetos a partir de otros ya existentes](https://reader035.fdocuments.co/reader035/viewer/2022063006/5fb5efd86de48e6a6e02c974/html5/thumbnails/9.jpg)
Clase: blueprint de los objetosEl concepto abstracto detrás del objeto concreto
humano Rodrigo Lugones
![Page 10: Programación Orientada a Objetos · Orientada a Objetos WTPC 2019. Estructurado Órdenes a la computadora ... La herencia facilita la creación de objetos a partir de otros ya existentes](https://reader035.fdocuments.co/reader035/viewer/2022063006/5fb5efd86de48e6a6e02c974/html5/thumbnails/10.jpg)
Clase: blueprint de los objetosEl concepto abstracto detrás del objeto concreto
mamífero
humano
![Page 11: Programación Orientada a Objetos · Orientada a Objetos WTPC 2019. Estructurado Órdenes a la computadora ... La herencia facilita la creación de objetos a partir de otros ya existentes](https://reader035.fdocuments.co/reader035/viewer/2022063006/5fb5efd86de48e6a6e02c974/html5/thumbnails/11.jpg)
CaracterísticasComposición
Encapsulamiento
Herencia
Polimorfismo
![Page 12: Programación Orientada a Objetos · Orientada a Objetos WTPC 2019. Estructurado Órdenes a la computadora ... La herencia facilita la creación de objetos a partir de otros ya existentes](https://reader035.fdocuments.co/reader035/viewer/2022063006/5fb5efd86de48e6a6e02c974/html5/thumbnails/12.jpg)
Composición
La forma natural de crear objetos es construyéndolos a partir de objetos ya existentes.
De esta manera, un sistema complejo se compone de subsistemas más simples.
![Page 13: Programación Orientada a Objetos · Orientada a Objetos WTPC 2019. Estructurado Órdenes a la computadora ... La herencia facilita la creación de objetos a partir de otros ya existentes](https://reader035.fdocuments.co/reader035/viewer/2022063006/5fb5efd86de48e6a6e02c974/html5/thumbnails/13.jpg)
Composición
Director Violín Violín Cello Flauta Fagot
![Page 14: Programación Orientada a Objetos · Orientada a Objetos WTPC 2019. Estructurado Órdenes a la computadora ... La herencia facilita la creación de objetos a partir de otros ya existentes](https://reader035.fdocuments.co/reader035/viewer/2022063006/5fb5efd86de48e6a6e02c974/html5/thumbnails/14.jpg)
Composición
Director Violín Violín Cello Flauta Fagot
Orquesta
![Page 15: Programación Orientada a Objetos · Orientada a Objetos WTPC 2019. Estructurado Órdenes a la computadora ... La herencia facilita la creación de objetos a partir de otros ya existentes](https://reader035.fdocuments.co/reader035/viewer/2022063006/5fb5efd86de48e6a6e02c974/html5/thumbnails/15.jpg)
Composición
Director Violín Violín Cello Flauta Fagot
Orquesta
Un objeto puede tener como atributos otros objetos
![Page 16: Programación Orientada a Objetos · Orientada a Objetos WTPC 2019. Estructurado Órdenes a la computadora ... La herencia facilita la creación de objetos a partir de otros ya existentes](https://reader035.fdocuments.co/reader035/viewer/2022063006/5fb5efd86de48e6a6e02c974/html5/thumbnails/16.jpg)
Encapsulamiento
Uno no siempre quiere que el usuario tenga acceso a todos los métodos o los atributos de una clase.
Se denomina encapsulamiento al ocultamiento del estado, es decir, de los datos miembro de un objeto de manera que sólo se pueda cambiar mediante las operaciones definidas para ese objeto.
![Page 17: Programación Orientada a Objetos · Orientada a Objetos WTPC 2019. Estructurado Órdenes a la computadora ... La herencia facilita la creación de objetos a partir de otros ya existentes](https://reader035.fdocuments.co/reader035/viewer/2022063006/5fb5efd86de48e6a6e02c974/html5/thumbnails/17.jpg)
Encapsulamiento
Prohibir el acceso a algunos métodos de una clase
Permitir que la clase se modifique a sí misma con métodos
Prohibir el acceso (directo) a los atributos de una clase
![Page 18: Programación Orientada a Objetos · Orientada a Objetos WTPC 2019. Estructurado Órdenes a la computadora ... La herencia facilita la creación de objetos a partir de otros ya existentes](https://reader035.fdocuments.co/reader035/viewer/2022063006/5fb5efd86de48e6a6e02c974/html5/thumbnails/18.jpg)
Encapsulamiento
Prohibir el acceso a algunos métodos de una clase
Permitir que la clase se modifique a sí misma con métodos
Prohibir el acceso (directo) a los atributos de una clase
En la práctica: elegir qué métodos y atributos son privados
caja negra
![Page 19: Programación Orientada a Objetos · Orientada a Objetos WTPC 2019. Estructurado Órdenes a la computadora ... La herencia facilita la creación de objetos a partir de otros ya existentes](https://reader035.fdocuments.co/reader035/viewer/2022063006/5fb5efd86de48e6a6e02c974/html5/thumbnails/19.jpg)
Crear nuevas clases partiendo de una clase preexistente, evitando el rediseño, la modificación y la verificación de la parte ya implementada.
La herencia facilita la creación de objetos a partir de otros ya existentes e implica que una subclase obtiene todo el comportamiento (métodos) y eventualmente los atributos (variables) de su superclase
Herencia
![Page 20: Programación Orientada a Objetos · Orientada a Objetos WTPC 2019. Estructurado Órdenes a la computadora ... La herencia facilita la creación de objetos a partir de otros ya existentes](https://reader035.fdocuments.co/reader035/viewer/2022063006/5fb5efd86de48e6a6e02c974/html5/thumbnails/20.jpg)
Herencia
Violín Cello Cello Cello
Instrum
![Page 21: Programación Orientada a Objetos · Orientada a Objetos WTPC 2019. Estructurado Órdenes a la computadora ... La herencia facilita la creación de objetos a partir de otros ya existentes](https://reader035.fdocuments.co/reader035/viewer/2022063006/5fb5efd86de48e6a6e02c974/html5/thumbnails/21.jpg)
Herencia
Cuerdas Vientos
Violín Cello Fagot Flauta
Instrum
El violín es un tipo de cuerdas.Cuerdas es un tipo de instrumento.
![Page 22: Programación Orientada a Objetos · Orientada a Objetos WTPC 2019. Estructurado Órdenes a la computadora ... La herencia facilita la creación de objetos a partir de otros ya existentes](https://reader035.fdocuments.co/reader035/viewer/2022063006/5fb5efd86de48e6a6e02c974/html5/thumbnails/22.jpg)
PolimorfismoCualquier instrumento puede tocar una nota*, pero una flauta y un violín suenan distinto
contrato
implementación
Una única interfaz para entidades de distinto tipo. Es decir, mismo mensaje a objetos de tipos distintos.
![Page 23: Programación Orientada a Objetos · Orientada a Objetos WTPC 2019. Estructurado Órdenes a la computadora ... La herencia facilita la creación de objetos a partir de otros ya existentes](https://reader035.fdocuments.co/reader035/viewer/2022063006/5fb5efd86de48e6a6e02c974/html5/thumbnails/23.jpg)
PolimorfismoCualquier instrumento puede tocar una nota*, pero una flauta y un violín suenan distinto
contrato
implementación
Una única interfaz para entidades de distinto tipo
*¿Siempre puedo reemplazar a un hijo por su padre?
![Page 24: Programación Orientada a Objetos · Orientada a Objetos WTPC 2019. Estructurado Órdenes a la computadora ... La herencia facilita la creación de objetos a partir de otros ya existentes](https://reader035.fdocuments.co/reader035/viewer/2022063006/5fb5efd86de48e6a6e02c974/html5/thumbnails/24.jpg)
Subtipado: Principio de Liskov
Creamos una subclase. La nueva clase derivada debe extender sin reemplazar funcionalidades de la clase padre.
El principio de sustitución de Liskov plantea que si un programa utiliza una clase base, entonces la referencia a la clase base debe poder ser reemplazada por la clase derivada, sin que eso afecte la funcionalidad de un programa.
![Page 25: Programación Orientada a Objetos · Orientada a Objetos WTPC 2019. Estructurado Órdenes a la computadora ... La herencia facilita la creación de objetos a partir de otros ya existentes](https://reader035.fdocuments.co/reader035/viewer/2022063006/5fb5efd86de48e6a6e02c974/html5/thumbnails/25.jpg)
Subtipado
![Page 26: Programación Orientada a Objetos · Orientada a Objetos WTPC 2019. Estructurado Órdenes a la computadora ... La herencia facilita la creación de objetos a partir de otros ya existentes](https://reader035.fdocuments.co/reader035/viewer/2022063006/5fb5efd86de48e6a6e02c974/html5/thumbnails/26.jpg)
OOP en Python
![Page 27: Programación Orientada a Objetos · Orientada a Objetos WTPC 2019. Estructurado Órdenes a la computadora ... La herencia facilita la creación de objetos a partir de otros ya existentes](https://reader035.fdocuments.co/reader035/viewer/2022063006/5fb5efd86de48e6a6e02c974/html5/thumbnails/27.jpg)
OOP en Python
constructor
método
método
![Page 28: Programación Orientada a Objetos · Orientada a Objetos WTPC 2019. Estructurado Órdenes a la computadora ... La herencia facilita la creación de objetos a partir de otros ya existentes](https://reader035.fdocuments.co/reader035/viewer/2022063006/5fb5efd86de48e6a6e02c974/html5/thumbnails/28.jpg)
OOP en Python>>> from orquesta import Flauta >>> primeraFlauta = Flauta("Primera flauta", "plata", 10) >>> primeraFlauta.tocar("la") Flauta toca la>>> primeraFlauta.tocar("sol") Flauta toca sol>>> primeraFlauta.tocar("mi") Flauta toca mi>>> primeraFlauta.estado() La flauta está sana>>> primeraFlauta.notasTocadas 3
![Page 29: Programación Orientada a Objetos · Orientada a Objetos WTPC 2019. Estructurado Órdenes a la computadora ... La herencia facilita la creación de objetos a partir de otros ya existentes](https://reader035.fdocuments.co/reader035/viewer/2022063006/5fb5efd86de48e6a6e02c974/html5/thumbnails/29.jpg)
OOP en Python: Herencia
![Page 30: Programación Orientada a Objetos · Orientada a Objetos WTPC 2019. Estructurado Órdenes a la computadora ... La herencia facilita la creación de objetos a partir de otros ya existentes](https://reader035.fdocuments.co/reader035/viewer/2022063006/5fb5efd86de48e6a6e02c974/html5/thumbnails/30.jpg)
OOP en Python: Herencia
![Page 31: Programación Orientada a Objetos · Orientada a Objetos WTPC 2019. Estructurado Órdenes a la computadora ... La herencia facilita la creación de objetos a partir de otros ya existentes](https://reader035.fdocuments.co/reader035/viewer/2022063006/5fb5efd86de48e6a6e02c974/html5/thumbnails/31.jpg)
OOP en Python: Herencia
>>> from orquesta import Flauta >>> primeraFlauta = Flauta("Primera flauta", "plata", 10) >>> primeraFlauta.tocar("mi") Flauta toca mi>>> primeraFlauta.notasTocadas >>> primeraFlauta.estado() Sano
![Page 32: Programación Orientada a Objetos · Orientada a Objetos WTPC 2019. Estructurado Órdenes a la computadora ... La herencia facilita la creación de objetos a partir de otros ya existentes](https://reader035.fdocuments.co/reader035/viewer/2022063006/5fb5efd86de48e6a6e02c974/html5/thumbnails/32.jpg)
OOP en Python: Encapsulamiento>>> from orquesta import Flauta >>> primeraFlauta = Flauta("Primera flauta", "plata", 10) >>> primeraFlauta.tocar("mi") Flauta toca mi>>> primeraFlauta.estado() Sano>>> primeraFlauta.__notasTocadas
--------------------------------------------AttributeError Traceback (most recent call last)<ipython-input-10-d2d7ea4a537a> in <module>()----> 1 primeraFlauta.__notasTocadas
AttributeError: 'Flauta' object has no attribute '__notasTocadas'
![Page 33: Programación Orientada a Objetos · Orientada a Objetos WTPC 2019. Estructurado Órdenes a la computadora ... La herencia facilita la creación de objetos a partir de otros ya existentes](https://reader035.fdocuments.co/reader035/viewer/2022063006/5fb5efd86de48e6a6e02c974/html5/thumbnails/33.jpg)
OOP en Python: Encapsulamiento>>> from orquesta import Flauta >>> primeraFlauta = Flauta("Primera flauta", "plata", 10) >>> primeraFlauta.tocar("mi")Flauta toca mi>>> primeraFlauta.estado()Sano>>> primeraFlauta.getNotasTocadas()1
![Page 34: Programación Orientada a Objetos · Orientada a Objetos WTPC 2019. Estructurado Órdenes a la computadora ... La herencia facilita la creación de objetos a partir de otros ya existentes](https://reader035.fdocuments.co/reader035/viewer/2022063006/5fb5efd86de48e6a6e02c974/html5/thumbnails/34.jpg)
Extra: Built-in methods>>> from orquesta import Flauta >>> primeraFlauta = Flauta("Primera flauta", "plata", 10) >>> print(primeraFlauta)<__main__.Flauta object at 0x7f949603e978>
![Page 35: Programación Orientada a Objetos · Orientada a Objetos WTPC 2019. Estructurado Órdenes a la computadora ... La herencia facilita la creación de objetos a partir de otros ya existentes](https://reader035.fdocuments.co/reader035/viewer/2022063006/5fb5efd86de48e6a6e02c974/html5/thumbnails/35.jpg)
Extra: Built-in methods>>> from orquesta import Flauta >>> primeraFlauta = Flauta("Primera flauta", "plata", 10) >>> print(primeraFlauta)Este instrumento es una flauta
![Page 36: Programación Orientada a Objetos · Orientada a Objetos WTPC 2019. Estructurado Órdenes a la computadora ... La herencia facilita la creación de objetos a partir de otros ya existentes](https://reader035.fdocuments.co/reader035/viewer/2022063006/5fb5efd86de48e6a6e02c974/html5/thumbnails/36.jpg)
Extra: Built-in methods
Son métodos “por defecto”, con un cierto comportamiento “por defecto”. Los dos que vimos hasta ahora fueron __init__ y __str__