POO
Optativa 1 TUP: Desarrollo en Python
POO 1era parte
Dr. Cristian Martínez | José I. Tuero
Departamento de Informática
Universidad Nacional de Salta
Setiembre, 2022
1 / 17
POO
Agenda
1 POO
Introducción
Conceptos Iniciales
Código en Python
2 / 17
Introducción
POO Conceptos Iniciales
Código en Python
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
3 / 17
Introducción
POO Conceptos Iniciales
Código en Python
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.
4 / 17
Introducción
POO Conceptos Iniciales
Código en Python
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”.
5 / 17
Introducción
POO Conceptos Iniciales
Código en Python
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
6 / 17
Introducción
POO Conceptos Iniciales
Código en Python
Ejemplo de ”objetos”
7 / 17
Introducción
POO Conceptos Iniciales
Código en Python
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.
8 / 17
Introducción
POO Conceptos Iniciales
Código en Python
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.
9 / 17
Introducción
POO Conceptos Iniciales
Código en Python
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
10 / 17
Introducción
POO Conceptos Iniciales
Código en Python
Ya lo decía Dón Ramón: Sin piñata no hay posada.
Para nosotros: Sin clases, no hay programa orientado a
objetos!
11 / 17
Introducción
POO Conceptos Iniciales
Código en Python
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.
12 / 17
Introducción
POO Conceptos Iniciales
Código en Python
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.
13 / 17
Introducción
POO Conceptos Iniciales
Código en Python
La selección, clases y objetos!
14 / 17
Introducción
POO Conceptos Iniciales
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
15 / 17
Introducción
POO Conceptos Iniciales
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!
16 / 17
POO
The End
17 / 17