POO en Python
POO en Python
Objetos en Python
IN1010 – Programación I: Introducción
Ingeniería Civil Industrial – Universidad de Aysén
Prof. Enrique Urra – [email protected]
IN1010 – [email protected]
Conceptos básicos
2
IN1010 – [email protected]
Conceptos básicos
Paradigma de programación
❑ Conjunto de conceptos que
permiten resolver problemas
determinados
❑ Estos conceptos se asocian a
funcionalidades o herramientas de
los lenguajes
IN1010 – [email protected] 3
Conceptos básicos
Filas: Lenguajes
Columnas: Paradigmas
IN1010 – [email protected] 4
Conceptos básicos
Orientados
a Objetos
Python
IN1010 – [email protected] 5
Conceptos básicos
IN1010 – [email protected] 6
Conceptos básicos
Clase Objetos
Instanciar
IN1010 – [email protected] 7
Conceptos básicos
• Color
• Naranjo
• Sabor • Lúcuma
• Rosado
• Frutilla
IN1010 – [email protected] 8
Conceptos básicos
IN1010 – [email protected] 9
Conceptos básicos
IN1010 – [email protected] 10
Conceptos básicos
IN1010 – [email protected] 11
Conceptos básicos
IN1010 – [email protected] 12
Conceptos básicos
IN1010 – [email protected] 13
Conceptos básicos
Utilización de objetos
IN1010 – [email protected] 14
Conceptos básicos
Utilización de objetos
Creación de objetos
from bolahelado import BolaHelado ❑ Al utilizar el nombre de la
clase como una función, se
bola1 = BolaHelado('Azul', 'Chirimoya') invoca el constructor de
bola2 = BolaHelado('Naranjo', 'Lúcuma') dicha clase y se crea una
nueva instancia (objeto),
bola3 = BolaHelado('Rosado', 'Frutilla') con los parámetros que
sean necesarios
print(bola1.comer())
❑ Para trabajar con los
print(bola2.comer()) objetos, al crearlos, es
print(bola3.comer()) necesario asignarlos a una
bola1 variable de referencia
bola2
IN1010 – [email protected]
bola3 15
Conceptos básicos
Utilización de objetos
Invocación de métodos
from bolahelado import BolaHelado ❑ Con las instancias
creadas, es posible
bola1 = BolaHelado('Azul', 'Chirimoya') invocar los métodos
bola2 = BolaHelado('Naranjo', 'Lúcuma') declarados en la clase,
bola3 = BolaHelado('Rosado', 'Frutilla') usando el operador de
invocación (punto)
print(bola1.comer())
❑ El resultado de la
print(bola2.comer()) invocación dependerá
print(bola3.comer()) del objeto utilizado en la
invocación
bola1.comer() ¿Qué sale por pantalla?
IN1010 – [email protected] 16
Conceptos básicos
Actividad
❑ Crear una clase Estudiante, que tenga
distintos atributos que Ud. crea
convenientes, además de un método
presentarse(), el cual retorne un texto
con la presentación del estudiante
❑ Luego, genere una aplicación en donde
tenga al menos 3 referencias a estudiantes,
y en donde se muestre por pantalla la
presentación de cada uno
IN1010 – [email protected] 17
Manejo de estados
y referencias
18
IN1010 – [email protected]
Manejo de estados y referencias
IN1010 – [email protected] 19
Manejo de estados y referencias
IN1010 – [email protected] 21
Manejo de estados y referencias
IN1010 – [email protected] 23
Manejo de estados y referencias
c1 = CuentaCorriente('rut1')
¿Qué imprime por pantalla? c1.depositar(100)
c1.girar(10)
print(c1.saldo)
IN1010 – [email protected] 24
Manejo de estados y referencias
c1 = CuentaCorriente('rut1')
¿Qué imprime por pantalla? c1.depositar(100)
c1.girar(10)
print(c1.saldo) # 90
c1
_rut = “rut1“
_saldo = 90
_numTrans = 2
IN1010 – [email protected] 25
Manejo de estados y referencias
c1 = CuentaCorriente('rut1')
¿Qué imprime por pantalla? c1.depositar(100)
c1.girar(10)
print(c1.saldo)
IN1010 – [email protected] 26
Manejo de estados y referencias
c1 = CuentaCorriente('rut1')
¿Qué imprime por pantalla? c1.depositar(100)
c1.girar(10)
print(c1.saldo)
_rut = “rut2“
_saldo = 50
_numTrans = 1
IN1010 – [email protected] 27
Manejo de estados y referencias
c1 = CuentaCorriente('rut1')
¿Qué imprime por pantalla? c1.depositar(100)
c1.girar(10)
print(c1.saldo)
IN1010 – [email protected] 28
Manejo de estados y referencias
c1 = CuentaCorriente('rut1')
¿Qué imprime por pantalla? c1.depositar(100)
c1.girar(10)
print(c1.saldo)
c3
IN1010 – [email protected] 29
Manejo de estados y referencias
c1 = CuentaCorriente('rut1')
¿Qué imprime por pantalla? c1.depositar(100)
c1.girar(10)
print(c1.saldo)
IN1010 – [email protected] 30
Manejo de estados y referencias
c1 = CuentaCorriente('rut1')
¿Qué imprime por pantalla? c1.depositar(100)
c1.girar(10)
print(c1.saldo)
IN1010 – [email protected] 31
Manejo de estados y referencias
c1 = CuentaCorriente('rut1')
¿Qué imprime por pantalla? c1.depositar(100)
c1.girar(10)
print(c1.saldo)
c1 = None
print(c1.saldo)
IN1010 – [email protected] 32
Manejo de estados y referencias
c1 = CuentaCorriente('rut1')
¿Qué imprime por pantalla? c1.depositar(100)
c1.girar(10)
print(c1.saldo)
c1 = None
print(c1.saldo) Error!!
IN1010 – [email protected] 33
Manejo de estados y referencias
IN1010 – [email protected] 34
Manejo de estados y referencias
cuentas = [ None ] * 3
for i in range(len(cuentas)):
¿Qué imprime por pantalla? print(cuentas[i])
IN1010 – [email protected] 35
Manejo de estados y referencias
cuentas = [ None ] * 3
for i in range(len(cuentas)):
¿Qué imprime por pantalla? print(cuentas[i]) # None x 3
0 1 2
cuentas
None None None
IN1010 – [email protected] 36
Manejo de estados y referencias
cuentas = [ None ] * 3
for i in range(len(cuentas)):
¿Qué imprime por pantalla? print(cuentas[i])
cuentas[0] = CuentaCorriente('rut1')
cuentas[0].depositar(10)
Memoria del computador cuentas[1] = CuentaCorriente('rut2')
cuentas[1].depositar(20)
0 1 2
cuentas
None None None for i in range(len(cuentas)):
if(cuentas[i] != None):
print(cuentas[i].saldo)
IN1010 – [email protected] 37
Manejo de estados y referencias
cuentas = [ None ] * 3
for i in range(len(cuentas)):
¿Qué imprime por pantalla? print(cuentas[i])
cuentas[0] = CuentaCorriente('rut1')
cuentas[0].depositar(10)
Memoria del computador cuentas[1] = CuentaCorriente('rut2')
cuentas[1].depositar(20)
0 1 2
cuentas
None for i in range(len(cuentas)):
if(cuentas[i] != None):
print(cuentas[i].saldo) # 10, 20
IN1010 – [email protected] 38
Manejo de estados y referencias
cuentas = [ None ] * 3
for i in range(len(cuentas)):
¿Qué imprime por pantalla? print(cuentas[i])
cuentas[0] = CuentaCorriente('rut1')
cuentas[0].depositar(10)
Memoria del computador cuentas[1] = CuentaCorriente('rut2')
cuentas[1].depositar(20)
0 1 2
cuentas
None for i in range(len(cuentas)):
if(cuentas[i] != None):
print(cuentas[i].saldo)
cuentas[2] = cuentas[1]
_rut = “rut1“ _rut = “rut2“ print(cuentas[2].saldo)
_saldo = 10 _saldo = 20
_numTrans = 1 _numTrans = 1
IN1010 – [email protected] 39
Manejo de estados y referencias
cuentas = [ None ] * 3
for i in range(len(cuentas)):
¿Qué imprime por pantalla? print(cuentas[i])
cuentas[0] = CuentaCorriente('rut1')
cuentas[0].depositar(10)
Memoria del computador cuentas[1] = CuentaCorriente('rut2')
cuentas[1].depositar(20)
0 1 2
cuentas
for i in range(len(cuentas)):
if(cuentas[i] != None):
print(cuentas[i].saldo)
cuentas[2] = cuentas[1]
_rut = “rut1“ _rut = “rut2“ print(cuentas[2].saldo) # 20
_saldo = 10 _saldo = 20
_numTrans = 1 _numTrans = 1
IN1010 – [email protected] 40
Manejo de estados y referencias
Actividad práctica
Desarrolle un programa en Python que maneje un
arreglo de objetos CuentaCorriente de largo N
(solicitado al usuario en el inicio), en donde se
despliegue un menú que ofrezca las siguientes
funciones:
❑ Agregar un nuevo cliente, validando que su RUT
no se repita, y que haya espacio para ingresarlo.
❑ Depositar dinero en una cuenta, buscándola por su
RUT.
❑ Calcular el promedio de los saldos de las cuentas
ingresadas.
IN1010 – [email protected] 41
Programación Orientada a
Objetos en Python
IN1010 – Programación I: Introducción
Ingeniería Civil Industrial – Universidad de Aysén
Prof. Enrique Urra – [email protected]
IN1010 – [email protected]