Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Optativa 1 TUP: Desarrollo en Python POO 1era parte Dr. Cristian Martínez Departamento de Informática Universidad Nacional de Salta Agosto, 2019 C. Martínez (DI-UNSa) Optativa 1 TUP: Desarrollo en Python Agosto, 2019 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Agenda 1 POO Introducción Conceptos Iniciales Código en Python C. Martínez (DI-UNSa) Optativa 1 TUP: Desarrollo en Python Agosto, 2019 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . POO Introducción Como mencionamos anteriormente, a medida que el programa crece, debemos organizar/estructurar el código para que: Sea entendible Sea mantenible Sea extensible Sea una herramienta de documentación C. Martínez (DI-UNSa) Optativa 1 TUP: Desarrollo en Python Agosto, 2019 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . POO Introducción En ese sentido hemos indicado que la Programación Procedural es una altenativa. No obstante, y en estos tiempos, debemos pensar en otro paradigma: POO. C. Martínez (DI-UNSa) Optativa 1 TUP: Desarrollo en Python Agosto, 2019 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . POO Conceptos Iniciales Entre tantas definiciones que podemos encontrar, una de ellas es la siguiente: ”POO propone resolver un problema computacional a partir de la colaboración entre objetos”. C. Martínez (DI-UNSa) Optativa 1 TUP: Desarrollo en Python Agosto, 2019 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . POO Conceptos Iniciales Para poder usar los objetos, éstos deben definirse. Pero antes que eso, deberíamos tener en cuenta que: Los objetos realizan tareas Para realizar estas tareas, necesitan información Y pueden necesitarse más de un objeto Los objetos para realizar estas tareas, deben ser distinguibles Dos detalles más: Los objetos pueden realizar tareas diferentes Una máxima: para resolver un problema, los objetos deben colaborar C. Martínez (DI-UNSa) Optativa 1 TUP: Desarrollo en Python Agosto, 2019 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . POO Conceptos Iniciales Ejemplo de ”objetos” C. Martínez (DI-UNSa) Optativa 1 TUP: Desarrollo en Python Agosto, 2019 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . POO Conceptos Iniciales Cada vez que resolvemos un problema computacional, debemos tener presente que hacemos una abstracción de la realidad. Esa abstracción es un modelo. Si quisiéramos desarrollar un videjuego de fútbol y a partir de la foto anterior, comencemos a pensar en objetos!: Problema computacional: Desarrollar un videjuego de fútbol. Para simplificar, pensemos en un equipo de fútbol. Son 11 jugadores que deben jugar en equipo con el objetivo de ganar. Hasta acá tenemos: 11 objetos que deben colaborar para ganar un partido. Para ello, los jugadores saben (tareas) dar pase, cabecear, patear, correr, …. Muy importante: deben comunicarse y deben distinguirse. C. Martínez (DI-UNSa) Optativa 1 TUP: Desarrollo en Python Agosto, 2019 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . POO Conceptos Iniciales Ya tenemos una idea de objetos, colaboración, distinción, tareas. Pasemos al modelo! En este punto, necesitamos lograr un modelo que logre cierta abstracción de la realidad. En UML sería un diagrama de clases. Nosotros nos quedaremos con clase. C. Martínez (DI-UNSa) Optativa 1 TUP: Desarrollo en Python Agosto, 2019 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . POO Conceptos Iniciales Qué es una clase? Las clases son plantillas para la creación de objetos. Las clases deben especificar atributos (datos) y meétodos (tareas/acciones) de los objetos. Un diagrama de clases es un modelo gráfico que permite visualizar las clases a utilizar para resolver un problema computacional. Más allá de la importancia del diagrama de clases, debemos especificar las clases en un fichero .py C. Martínez (DI-UNSa) Optativa 1 TUP: Desarrollo en Python Agosto, 2019 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . POO Conceptos Iniciales Ya lo decía Dón Ramón: Sin piñata no hay posada. Para nosotros: Sin clases, no hay programa orientado a objetos! C. Martínez (DI-UNSa) Optativa 1 TUP: Desarrollo en Python Agosto, 2019 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . POO Conceptos Iniciales Qué es un objeto? Un objeto es la instancia de una clase. Son entidades provistas de datos y funcionalidad necesaria para resolver un problema computacional. La instanciación es la lectura de las especificaciones de una clase y la creación de un objeto a partir de la misma. C. Martínez (DI-UNSa) Optativa 1 TUP: Desarrollo en Python Agosto, 2019 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . POO Conceptos Iniciales Atributo y método Método: algoritmo asociado a un objeto cuya ejecución se desencadena tras la recepción de un ”mensaje”. Desde el punto de vista del comportamiento, es lo que el objeto puede hacer. Atributo: contenedor de un tipo de dato asociado a un objeto, cuyo valor puede ser alterado por la ejecución de algún método. C. Martínez (DI-UNSa) Optativa 1 TUP: Desarrollo en Python Agosto, 2019 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . POO Conceptos Iniciales La selección, clases y objetos! C. Martínez (DI-UNSa) Optativa 1 TUP: Desarrollo en Python Agosto, 2019 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . POO Código en Python Especificación de clase Jugador class Jugador: def __init__(self, ID, Apenom, posicion): self.ID = ID self.Apenom = Apenom self.posicion = posicion def cabecear(self): # aca va codigo def patear(self): # aca va codigo def sacarLateral(self): # aca va codigo def correr(self): # aca va codigo def darPase(self): # aca va codigo C. Martínez (DI-UNSa) Optativa 1 TUP: Desarrollo en Python Agosto, 2019 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . POO Código en Python Instanciación diego = Jugador(2245, ’Diego Maradona’, 10) batista = Jugador(2246, ’Jorge Batista’, 5) ruggeri= Jugador(2247, ’Oscar Ruggeri’, 6) Sin embargo, falta un método que haga jugar un equipo contra otro! C. Martínez (DI-UNSa) Optativa 1 TUP: Desarrollo en Python Agosto, 2019 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . The End C. Martínez (DI-UNSa) Optativa 1 TUP: Desarrollo en Python Agosto, 2019 POO Introducción Conceptos Iniciales Código en Python
Compartir