clase 18: programaci on orientada a objetos (ii)rntoro/intro/18/c18.pdf · 2020-05-10 · clase 18:...
TRANSCRIPT
![Page 1: Clase 18: Programaci on Orientada a Objetos (II)rntoro/intro/18/C18.pdf · 2020-05-10 · Clase 18: Programaci on Orientada a Objetos (II) Rodrigo Toro Icarte (rntoro@uc.cl) IIC1103](https://reader034.vdocumento.com/reader034/viewer/2022042613/5f9e6b41fcdd412ef13d94d6/html5/thumbnails/1.jpg)
Pontificia Universidad Catolica de ChileEscuela de IngenierıaDepartamento de Ciencias de la Computacion
Clase 18: Programacion Orientada aObjetos (II)
Rodrigo Toro Icarte ([email protected])
IIC1103 Introduccion a la Programacion - Seccion 5
20 de Mayo, 2015
![Page 2: Clase 18: Programaci on Orientada a Objetos (II)rntoro/intro/18/C18.pdf · 2020-05-10 · Clase 18: Programaci on Orientada a Objetos (II) Rodrigo Toro Icarte (rntoro@uc.cl) IIC1103](https://reader034.vdocumento.com/reader034/viewer/2022042613/5f9e6b41fcdd412ef13d94d6/html5/thumbnails/2.jpg)
Clase pasada Tipos de datos Relaciones entre clases Sobrecarga de metodos Ejercicios
Clases pasadas
Hemos visto distintos tipos de datos en Python:
int, float, complex, bool, string, list y tuple.
... y como crear nuestros propios tipos de datos:
Sintaxis
class nombre clase:bloque codigo clase
(...)variable = nombre clase()
2
![Page 3: Clase 18: Programaci on Orientada a Objetos (II)rntoro/intro/18/C18.pdf · 2020-05-10 · Clase 18: Programaci on Orientada a Objetos (II) Rodrigo Toro Icarte (rntoro@uc.cl) IIC1103](https://reader034.vdocumento.com/reader034/viewer/2022042613/5f9e6b41fcdd412ef13d94d6/html5/thumbnails/3.jpg)
Clase pasada Tipos de datos Relaciones entre clases Sobrecarga de metodos Ejercicios
Clases pasadas
Hemos visto distintos tipos de datos en Python:
int, float, complex, bool, string, list y tuple.
... y como crear nuestros propios tipos de datos:
Sintaxis
class nombre clase:bloque codigo clase
(...)variable = nombre clase()
2
![Page 4: Clase 18: Programaci on Orientada a Objetos (II)rntoro/intro/18/C18.pdf · 2020-05-10 · Clase 18: Programaci on Orientada a Objetos (II) Rodrigo Toro Icarte (rntoro@uc.cl) IIC1103](https://reader034.vdocumento.com/reader034/viewer/2022042613/5f9e6b41fcdd412ef13d94d6/html5/thumbnails/4.jpg)
Clase pasada Tipos de datos Relaciones entre clases Sobrecarga de metodos Ejercicios
Clases pasadas
Cada clase tiene:
Atributos → Variables
Comportamiento → Metodos
zombie
- vida- dano- velocidad- posicion- dibujo
+ comer()+ avanzar()
3
![Page 5: Clase 18: Programaci on Orientada a Objetos (II)rntoro/intro/18/C18.pdf · 2020-05-10 · Clase 18: Programaci on Orientada a Objetos (II) Rodrigo Toro Icarte (rntoro@uc.cl) IIC1103](https://reader034.vdocumento.com/reader034/viewer/2022042613/5f9e6b41fcdd412ef13d94d6/html5/thumbnails/5.jpg)
Clase pasada Tipos de datos Relaciones entre clases Sobrecarga de metodos Ejercicios
Clases pasadas
Cada clase tiene:
Atributos → Variables
Comportamiento → Metodos
zombie
- vida- dano- velocidad- posicion- dibujo
+ comer()+ avanzar()
3
![Page 6: Clase 18: Programaci on Orientada a Objetos (II)rntoro/intro/18/C18.pdf · 2020-05-10 · Clase 18: Programaci on Orientada a Objetos (II) Rodrigo Toro Icarte (rntoro@uc.cl) IIC1103](https://reader034.vdocumento.com/reader034/viewer/2022042613/5f9e6b41fcdd412ef13d94d6/html5/thumbnails/6.jpg)
Clase pasada Tipos de datos Relaciones entre clases Sobrecarga de metodos Ejercicios
Clases pasadas
zombie
- vida- dano- velocidad- dibujo
+ comer()+ avanzar()
4
![Page 7: Clase 18: Programaci on Orientada a Objetos (II)rntoro/intro/18/C18.pdf · 2020-05-10 · Clase 18: Programaci on Orientada a Objetos (II) Rodrigo Toro Icarte (rntoro@uc.cl) IIC1103](https://reader034.vdocumento.com/reader034/viewer/2022042613/5f9e6b41fcdd412ef13d94d6/html5/thumbnails/7.jpg)
Clase pasada Tipos de datos Relaciones entre clases Sobrecarga de metodos Ejercicios
Clases pasadas
Clase
class nombre clase:def init (self, par 1, par 2, ...):
self.Atributo i = valor iResto bloque codigo constructor
def nombre metodo(self, par 1, par 2, ...):Bloque codigo metodo
Objeto
var = nombre clase()var.Atributo i = nuevo valorvar.nombre metodo(val 1, val 2, ...)
5
![Page 8: Clase 18: Programaci on Orientada a Objetos (II)rntoro/intro/18/C18.pdf · 2020-05-10 · Clase 18: Programaci on Orientada a Objetos (II) Rodrigo Toro Icarte (rntoro@uc.cl) IIC1103](https://reader034.vdocumento.com/reader034/viewer/2022042613/5f9e6b41fcdd412ef13d94d6/html5/thumbnails/8.jpg)
Clase pasada Tipos de datos Relaciones entre clases Sobrecarga de metodos Ejercicios
Clases pasadas
Clase:
2 class persona:
3 # Constructor
4 def __init__(self , nombre , apellido , n_alumno):
5 # Atributos de persona
6 self.nombre = nombre
7 self.apellido = apellido
8 self.n_alumno = n_alumno
9 self.notas = []
Objetos (instancias) de la clase:
12 juan = persona(’Juan’, ’A guila ’, ’14000000 ’)
13 aldo = persona(’Aldo’, ’Verri ’, ’14000001 ’)
14 maria = persona(’Mar ıa’, ’Pinto’, ’14000002 ’)
6
![Page 9: Clase 18: Programaci on Orientada a Objetos (II)rntoro/intro/18/C18.pdf · 2020-05-10 · Clase 18: Programaci on Orientada a Objetos (II) Rodrigo Toro Icarte (rntoro@uc.cl) IIC1103](https://reader034.vdocumento.com/reader034/viewer/2022042613/5f9e6b41fcdd412ef13d94d6/html5/thumbnails/9.jpg)
Clase pasada Tipos de datos Relaciones entre clases Sobrecarga de metodos Ejercicios
Tipos de datos
Existen 2 tipos de datos:
Por valor.
Por referencia.
7
![Page 10: Clase 18: Programaci on Orientada a Objetos (II)rntoro/intro/18/C18.pdf · 2020-05-10 · Clase 18: Programaci on Orientada a Objetos (II) Rodrigo Toro Icarte (rntoro@uc.cl) IIC1103](https://reader034.vdocumento.com/reader034/viewer/2022042613/5f9e6b41fcdd412ef13d94d6/html5/thumbnails/10.jpg)
Clase pasada Tipos de datos Relaciones entre clases Sobrecarga de metodos Ejercicios
Tipos de datos por valor
Por valor: La variable contiene al objeto.
Ejemplos: int, float, complex y bool.
Consecuencia: b = a, copia objeto a en b.
8
![Page 11: Clase 18: Programaci on Orientada a Objetos (II)rntoro/intro/18/C18.pdf · 2020-05-10 · Clase 18: Programaci on Orientada a Objetos (II) Rodrigo Toro Icarte (rntoro@uc.cl) IIC1103](https://reader034.vdocumento.com/reader034/viewer/2022042613/5f9e6b41fcdd412ef13d94d6/html5/thumbnails/11.jpg)
Clase pasada Tipos de datos Relaciones entre clases Sobrecarga de metodos Ejercicios
Tipos de datos por valor
Por valor: La variable contiene al objeto.
Ejemplos: int, float, complex y bool.
Consecuencia: b = a, copia objeto a en b.
8
![Page 12: Clase 18: Programaci on Orientada a Objetos (II)rntoro/intro/18/C18.pdf · 2020-05-10 · Clase 18: Programaci on Orientada a Objetos (II) Rodrigo Toro Icarte (rntoro@uc.cl) IIC1103](https://reader034.vdocumento.com/reader034/viewer/2022042613/5f9e6b41fcdd412ef13d94d6/html5/thumbnails/12.jpg)
Clase pasada Tipos de datos Relaciones entre clases Sobrecarga de metodos Ejercicios
Tipos de datos por valor
Por valor: La variable contiene al objeto.
Ejemplos: int, float, complex y bool.
Consecuencia: b = a, copia objeto a en b.
8
![Page 13: Clase 18: Programaci on Orientada a Objetos (II)rntoro/intro/18/C18.pdf · 2020-05-10 · Clase 18: Programaci on Orientada a Objetos (II) Rodrigo Toro Icarte (rntoro@uc.cl) IIC1103](https://reader034.vdocumento.com/reader034/viewer/2022042613/5f9e6b41fcdd412ef13d94d6/html5/thumbnails/13.jpg)
Clase pasada Tipos de datos Relaciones entre clases Sobrecarga de metodos Ejercicios
Tipos de datos por valor
Por valor: La variable contiene al objeto.
Ejemplos: int, float, complex y bool.
Consecuencia: b = a, copia objeto a en b.
8
![Page 14: Clase 18: Programaci on Orientada a Objetos (II)rntoro/intro/18/C18.pdf · 2020-05-10 · Clase 18: Programaci on Orientada a Objetos (II) Rodrigo Toro Icarte (rntoro@uc.cl) IIC1103](https://reader034.vdocumento.com/reader034/viewer/2022042613/5f9e6b41fcdd412ef13d94d6/html5/thumbnails/14.jpg)
Clase pasada Tipos de datos Relaciones entre clases Sobrecarga de metodos Ejercicios
Tipos de datos por valor
Ejemplo 1:
1 a = 3
2 b = a
3 b += 2
4 print("a =",a,", b =",b)
(a) a = 3 (b) b = a (c) b += 2
9
![Page 15: Clase 18: Programaci on Orientada a Objetos (II)rntoro/intro/18/C18.pdf · 2020-05-10 · Clase 18: Programaci on Orientada a Objetos (II) Rodrigo Toro Icarte (rntoro@uc.cl) IIC1103](https://reader034.vdocumento.com/reader034/viewer/2022042613/5f9e6b41fcdd412ef13d94d6/html5/thumbnails/15.jpg)
Clase pasada Tipos de datos Relaciones entre clases Sobrecarga de metodos Ejercicios
Tipos de datos por valor
Ejemplo 1:
1 a = 3
2 b = a
3 b += 2
4 print("a =",a,", b =",b)
(a) a = 3
(b) b = a (c) b += 2
9
![Page 16: Clase 18: Programaci on Orientada a Objetos (II)rntoro/intro/18/C18.pdf · 2020-05-10 · Clase 18: Programaci on Orientada a Objetos (II) Rodrigo Toro Icarte (rntoro@uc.cl) IIC1103](https://reader034.vdocumento.com/reader034/viewer/2022042613/5f9e6b41fcdd412ef13d94d6/html5/thumbnails/16.jpg)
Clase pasada Tipos de datos Relaciones entre clases Sobrecarga de metodos Ejercicios
Tipos de datos por valor
Ejemplo 1:
1 a = 3
2 b = a
3 b += 2
4 print("a =",a,", b =",b)
(a) a = 3 (b) b = a
(c) b += 2
9
![Page 17: Clase 18: Programaci on Orientada a Objetos (II)rntoro/intro/18/C18.pdf · 2020-05-10 · Clase 18: Programaci on Orientada a Objetos (II) Rodrigo Toro Icarte (rntoro@uc.cl) IIC1103](https://reader034.vdocumento.com/reader034/viewer/2022042613/5f9e6b41fcdd412ef13d94d6/html5/thumbnails/17.jpg)
Clase pasada Tipos de datos Relaciones entre clases Sobrecarga de metodos Ejercicios
Tipos de datos por valor
Ejemplo 1:
1 a = 3
2 b = a
3 b += 2
4 print("a =",a,", b =",b)
(a) a = 3 (b) b = a (c) b += 2
9
![Page 18: Clase 18: Programaci on Orientada a Objetos (II)rntoro/intro/18/C18.pdf · 2020-05-10 · Clase 18: Programaci on Orientada a Objetos (II) Rodrigo Toro Icarte (rntoro@uc.cl) IIC1103](https://reader034.vdocumento.com/reader034/viewer/2022042613/5f9e6b41fcdd412ef13d94d6/html5/thumbnails/18.jpg)
Clase pasada Tipos de datos Relaciones entre clases Sobrecarga de metodos Ejercicios
Tipos de datos por valor
Ejemplo 2:
1 def f(b):
2 b += 2
3
4 a = 3
5 f(a)
6 print(a)
¿Que imprime print(a)?
Observacion: Al dar a como parametro implıcitamente se haceun b = a.
10
![Page 19: Clase 18: Programaci on Orientada a Objetos (II)rntoro/intro/18/C18.pdf · 2020-05-10 · Clase 18: Programaci on Orientada a Objetos (II) Rodrigo Toro Icarte (rntoro@uc.cl) IIC1103](https://reader034.vdocumento.com/reader034/viewer/2022042613/5f9e6b41fcdd412ef13d94d6/html5/thumbnails/19.jpg)
Clase pasada Tipos de datos Relaciones entre clases Sobrecarga de metodos Ejercicios
Tipos de datos por valor
Ejemplo 2:
1 def f(b):
2 b += 2
3
4 a = 3
5 f(a)
6 print(a)
¿Que imprime print(a)?
Observacion: Al dar a como parametro implıcitamente se haceun b = a.
10
![Page 20: Clase 18: Programaci on Orientada a Objetos (II)rntoro/intro/18/C18.pdf · 2020-05-10 · Clase 18: Programaci on Orientada a Objetos (II) Rodrigo Toro Icarte (rntoro@uc.cl) IIC1103](https://reader034.vdocumento.com/reader034/viewer/2022042613/5f9e6b41fcdd412ef13d94d6/html5/thumbnails/20.jpg)
Clase pasada Tipos de datos Relaciones entre clases Sobrecarga de metodos Ejercicios
Tipos de datos por referencia
Por referencia: La variable contiene una referencia al objeto.
Ejemplos: string, tuple, list y clases creadas por nosotros.
Consecuencia: b = a, copia la referencia al objeto a en b.
11
![Page 21: Clase 18: Programaci on Orientada a Objetos (II)rntoro/intro/18/C18.pdf · 2020-05-10 · Clase 18: Programaci on Orientada a Objetos (II) Rodrigo Toro Icarte (rntoro@uc.cl) IIC1103](https://reader034.vdocumento.com/reader034/viewer/2022042613/5f9e6b41fcdd412ef13d94d6/html5/thumbnails/21.jpg)
Clase pasada Tipos de datos Relaciones entre clases Sobrecarga de metodos Ejercicios
Tipos de datos por referencia
Por referencia: La variable contiene una referencia al objeto.
Ejemplos: string, tuple, list y clases creadas por nosotros.
Consecuencia: b = a, copia la referencia al objeto a en b.
11
![Page 22: Clase 18: Programaci on Orientada a Objetos (II)rntoro/intro/18/C18.pdf · 2020-05-10 · Clase 18: Programaci on Orientada a Objetos (II) Rodrigo Toro Icarte (rntoro@uc.cl) IIC1103](https://reader034.vdocumento.com/reader034/viewer/2022042613/5f9e6b41fcdd412ef13d94d6/html5/thumbnails/22.jpg)
Clase pasada Tipos de datos Relaciones entre clases Sobrecarga de metodos Ejercicios
Tipos de datos por referencia
Por referencia: La variable contiene una referencia al objeto.
Ejemplos: string, tuple, list y clases creadas por nosotros.
Consecuencia: b = a, copia la referencia al objeto a en b.
11
![Page 23: Clase 18: Programaci on Orientada a Objetos (II)rntoro/intro/18/C18.pdf · 2020-05-10 · Clase 18: Programaci on Orientada a Objetos (II) Rodrigo Toro Icarte (rntoro@uc.cl) IIC1103](https://reader034.vdocumento.com/reader034/viewer/2022042613/5f9e6b41fcdd412ef13d94d6/html5/thumbnails/23.jpg)
Clase pasada Tipos de datos Relaciones entre clases Sobrecarga de metodos Ejercicios
Tipos de datos por referencia
Por referencia: La variable contiene una referencia al objeto.
Ejemplos: string, tuple, list y clases creadas por nosotros.
Consecuencia: b = a, copia la referencia al objeto a en b.
11
![Page 24: Clase 18: Programaci on Orientada a Objetos (II)rntoro/intro/18/C18.pdf · 2020-05-10 · Clase 18: Programaci on Orientada a Objetos (II) Rodrigo Toro Icarte (rntoro@uc.cl) IIC1103](https://reader034.vdocumento.com/reader034/viewer/2022042613/5f9e6b41fcdd412ef13d94d6/html5/thumbnails/24.jpg)
Clase pasada Tipos de datos Relaciones entre clases Sobrecarga de metodos Ejercicios
Tipos de datos por referencia
Ejemplo 1:
1 class persona:
2 def __init__(self , n):
3 self.n = n
4
5 juan = persona(’juan’)
6 pedro = juan
7 pedro.n = ’pedro’
8 print(juan.n)
¿Que imprime print(juan.n)?
12
![Page 25: Clase 18: Programaci on Orientada a Objetos (II)rntoro/intro/18/C18.pdf · 2020-05-10 · Clase 18: Programaci on Orientada a Objetos (II) Rodrigo Toro Icarte (rntoro@uc.cl) IIC1103](https://reader034.vdocumento.com/reader034/viewer/2022042613/5f9e6b41fcdd412ef13d94d6/html5/thumbnails/25.jpg)
Clase pasada Tipos de datos Relaciones entre clases Sobrecarga de metodos Ejercicios
Tipos de datos por referencia
juan = persona(’juan’)
13
![Page 26: Clase 18: Programaci on Orientada a Objetos (II)rntoro/intro/18/C18.pdf · 2020-05-10 · Clase 18: Programaci on Orientada a Objetos (II) Rodrigo Toro Icarte (rntoro@uc.cl) IIC1103](https://reader034.vdocumento.com/reader034/viewer/2022042613/5f9e6b41fcdd412ef13d94d6/html5/thumbnails/26.jpg)
Clase pasada Tipos de datos Relaciones entre clases Sobrecarga de metodos Ejercicios
Tipos de datos por referencia
pedro = juan
14
![Page 27: Clase 18: Programaci on Orientada a Objetos (II)rntoro/intro/18/C18.pdf · 2020-05-10 · Clase 18: Programaci on Orientada a Objetos (II) Rodrigo Toro Icarte (rntoro@uc.cl) IIC1103](https://reader034.vdocumento.com/reader034/viewer/2022042613/5f9e6b41fcdd412ef13d94d6/html5/thumbnails/27.jpg)
Clase pasada Tipos de datos Relaciones entre clases Sobrecarga de metodos Ejercicios
Tipos de datos por referencia
pedro.n = ’pedro’
15
![Page 28: Clase 18: Programaci on Orientada a Objetos (II)rntoro/intro/18/C18.pdf · 2020-05-10 · Clase 18: Programaci on Orientada a Objetos (II) Rodrigo Toro Icarte (rntoro@uc.cl) IIC1103](https://reader034.vdocumento.com/reader034/viewer/2022042613/5f9e6b41fcdd412ef13d94d6/html5/thumbnails/28.jpg)
Clase pasada Tipos de datos Relaciones entre clases Sobrecarga de metodos Ejercicios
Tipos de datos por referencia
Ejemplo 2:
1 class persona:
2 def __init__(self , n):
3 self.n = n
4
5 def f(b):
6 b.n = ’pedro’
7
8 juan = persona(’juan’)
9 f(juan)
10 print(juan.n)
¿Que imprime print(juan.n)?
Observacion: Al dar juan como parametro implıcitamente sehace un b = juan.
16
![Page 29: Clase 18: Programaci on Orientada a Objetos (II)rntoro/intro/18/C18.pdf · 2020-05-10 · Clase 18: Programaci on Orientada a Objetos (II) Rodrigo Toro Icarte (rntoro@uc.cl) IIC1103](https://reader034.vdocumento.com/reader034/viewer/2022042613/5f9e6b41fcdd412ef13d94d6/html5/thumbnails/29.jpg)
Clase pasada Tipos de datos Relaciones entre clases Sobrecarga de metodos Ejercicios
Tipos de datos por referencia
Ejemplo 2:
1 class persona:
2 def __init__(self , n):
3 self.n = n
4
5 def f(b):
6 b.n = ’pedro’
7
8 juan = persona(’juan’)
9 f(juan)
10 print(juan.n)
¿Que imprime print(juan.n)?
Observacion: Al dar juan como parametro implıcitamente sehace un b = juan.
16
![Page 30: Clase 18: Programaci on Orientada a Objetos (II)rntoro/intro/18/C18.pdf · 2020-05-10 · Clase 18: Programaci on Orientada a Objetos (II) Rodrigo Toro Icarte (rntoro@uc.cl) IIC1103](https://reader034.vdocumento.com/reader034/viewer/2022042613/5f9e6b41fcdd412ef13d94d6/html5/thumbnails/30.jpg)
Clase pasada Tipos de datos Relaciones entre clases Sobrecarga de metodos Ejercicios
Tipos de datos por referencia
Ejemplo 3:
1 def quitar_minimo(l1):
2 l1.remove(min(l1))
3
4 def vaciar_lista(l2):
5 l2 = []
6
7 a = [1,2,3,4]
8 quitar_minimo(a)
9 print(a)
10 vaciar_lista(a)
11 print(a)
¿Que ocurre en este caso?
17
![Page 31: Clase 18: Programaci on Orientada a Objetos (II)rntoro/intro/18/C18.pdf · 2020-05-10 · Clase 18: Programaci on Orientada a Objetos (II) Rodrigo Toro Icarte (rntoro@uc.cl) IIC1103](https://reader034.vdocumento.com/reader034/viewer/2022042613/5f9e6b41fcdd412ef13d94d6/html5/thumbnails/31.jpg)
Clase pasada Tipos de datos Relaciones entre clases Sobrecarga de metodos Ejercicios
Tipos de datos por referencia
a = [1,2,3,4]
18
![Page 32: Clase 18: Programaci on Orientada a Objetos (II)rntoro/intro/18/C18.pdf · 2020-05-10 · Clase 18: Programaci on Orientada a Objetos (II) Rodrigo Toro Icarte (rntoro@uc.cl) IIC1103](https://reader034.vdocumento.com/reader034/viewer/2022042613/5f9e6b41fcdd412ef13d94d6/html5/thumbnails/32.jpg)
Clase pasada Tipos de datos Relaciones entre clases Sobrecarga de metodos Ejercicios
Tipos de datos por referencia
quitar minimo(a)
19
![Page 33: Clase 18: Programaci on Orientada a Objetos (II)rntoro/intro/18/C18.pdf · 2020-05-10 · Clase 18: Programaci on Orientada a Objetos (II) Rodrigo Toro Icarte (rntoro@uc.cl) IIC1103](https://reader034.vdocumento.com/reader034/viewer/2022042613/5f9e6b41fcdd412ef13d94d6/html5/thumbnails/33.jpg)
Clase pasada Tipos de datos Relaciones entre clases Sobrecarga de metodos Ejercicios
Tipos de datos por referencia
l1.remove(min(l1))
20
![Page 34: Clase 18: Programaci on Orientada a Objetos (II)rntoro/intro/18/C18.pdf · 2020-05-10 · Clase 18: Programaci on Orientada a Objetos (II) Rodrigo Toro Icarte (rntoro@uc.cl) IIC1103](https://reader034.vdocumento.com/reader034/viewer/2022042613/5f9e6b41fcdd412ef13d94d6/html5/thumbnails/34.jpg)
Clase pasada Tipos de datos Relaciones entre clases Sobrecarga de metodos Ejercicios
Tipos de datos por referencia
print(a)
21
![Page 35: Clase 18: Programaci on Orientada a Objetos (II)rntoro/intro/18/C18.pdf · 2020-05-10 · Clase 18: Programaci on Orientada a Objetos (II) Rodrigo Toro Icarte (rntoro@uc.cl) IIC1103](https://reader034.vdocumento.com/reader034/viewer/2022042613/5f9e6b41fcdd412ef13d94d6/html5/thumbnails/35.jpg)
Clase pasada Tipos de datos Relaciones entre clases Sobrecarga de metodos Ejercicios
Tipos de datos por referencia
vaciar lista(a)
22
![Page 36: Clase 18: Programaci on Orientada a Objetos (II)rntoro/intro/18/C18.pdf · 2020-05-10 · Clase 18: Programaci on Orientada a Objetos (II) Rodrigo Toro Icarte (rntoro@uc.cl) IIC1103](https://reader034.vdocumento.com/reader034/viewer/2022042613/5f9e6b41fcdd412ef13d94d6/html5/thumbnails/36.jpg)
Clase pasada Tipos de datos Relaciones entre clases Sobrecarga de metodos Ejercicios
Tipos de datos por referencia
l2 = []
23
![Page 37: Clase 18: Programaci on Orientada a Objetos (II)rntoro/intro/18/C18.pdf · 2020-05-10 · Clase 18: Programaci on Orientada a Objetos (II) Rodrigo Toro Icarte (rntoro@uc.cl) IIC1103](https://reader034.vdocumento.com/reader034/viewer/2022042613/5f9e6b41fcdd412ef13d94d6/html5/thumbnails/37.jpg)
Clase pasada Tipos de datos Relaciones entre clases Sobrecarga de metodos Ejercicios
Tipos de datos por referencia
print(l)
24
![Page 38: Clase 18: Programaci on Orientada a Objetos (II)rntoro/intro/18/C18.pdf · 2020-05-10 · Clase 18: Programaci on Orientada a Objetos (II) Rodrigo Toro Icarte (rntoro@uc.cl) IIC1103](https://reader034.vdocumento.com/reader034/viewer/2022042613/5f9e6b41fcdd412ef13d94d6/html5/thumbnails/38.jpg)
Clase pasada Tipos de datos Relaciones entre clases Sobrecarga de metodos Ejercicios
Tipos de datos por referencia
Ejemplo 4:
1 class persona:
2 def __init__(self , nombre):
3 self.nombre = nombre
4 self.notas = []
5 def agregar_notas(self ,l):
6 self.notas.extend(l)
7
8 juan = persona(’Juan’)
9 n = juan.notas
10 juan.agregar_notas ([6.5, 7.0, 6.7])
11 del n[:]
12 print(juan.notas)
25
![Page 39: Clase 18: Programaci on Orientada a Objetos (II)rntoro/intro/18/C18.pdf · 2020-05-10 · Clase 18: Programaci on Orientada a Objetos (II) Rodrigo Toro Icarte (rntoro@uc.cl) IIC1103](https://reader034.vdocumento.com/reader034/viewer/2022042613/5f9e6b41fcdd412ef13d94d6/html5/thumbnails/39.jpg)
Clase pasada Tipos de datos Relaciones entre clases Sobrecarga de metodos Ejercicios
None
Tipo especial de dato que apuntan al mismo objeto NoneType.
1 a = None
2 b = None
3 c = None
26
![Page 40: Clase 18: Programaci on Orientada a Objetos (II)rntoro/intro/18/C18.pdf · 2020-05-10 · Clase 18: Programaci on Orientada a Objetos (II) Rodrigo Toro Icarte (rntoro@uc.cl) IIC1103](https://reader034.vdocumento.com/reader034/viewer/2022042613/5f9e6b41fcdd412ef13d94d6/html5/thumbnails/40.jpg)
Clase pasada Tipos de datos Relaciones entre clases Sobrecarga de metodos Ejercicios
None
Con None no se puede hacer nada:
No tiene atributos.
No tiene metodos.
No le puedes agregar atributos.
(...)
¿Para que sirve? :s
... para usarlo como valor invalido.
27
![Page 41: Clase 18: Programaci on Orientada a Objetos (II)rntoro/intro/18/C18.pdf · 2020-05-10 · Clase 18: Programaci on Orientada a Objetos (II) Rodrigo Toro Icarte (rntoro@uc.cl) IIC1103](https://reader034.vdocumento.com/reader034/viewer/2022042613/5f9e6b41fcdd412ef13d94d6/html5/thumbnails/41.jpg)
Clase pasada Tipos de datos Relaciones entre clases Sobrecarga de metodos Ejercicios
None
Con None no se puede hacer nada:
No tiene atributos.
No tiene metodos.
No le puedes agregar atributos.
(...)
¿Para que sirve? :s
... para usarlo como valor invalido.
27
![Page 42: Clase 18: Programaci on Orientada a Objetos (II)rntoro/intro/18/C18.pdf · 2020-05-10 · Clase 18: Programaci on Orientada a Objetos (II) Rodrigo Toro Icarte (rntoro@uc.cl) IIC1103](https://reader034.vdocumento.com/reader034/viewer/2022042613/5f9e6b41fcdd412ef13d94d6/html5/thumbnails/42.jpg)
Clase pasada Tipos de datos Relaciones entre clases Sobrecarga de metodos Ejercicios
None
Con None no se puede hacer nada:
No tiene atributos.
No tiene metodos.
No le puedes agregar atributos.
(...)
¿Para que sirve? :s
... para usarlo como valor invalido.
27
![Page 43: Clase 18: Programaci on Orientada a Objetos (II)rntoro/intro/18/C18.pdf · 2020-05-10 · Clase 18: Programaci on Orientada a Objetos (II) Rodrigo Toro Icarte (rntoro@uc.cl) IIC1103](https://reader034.vdocumento.com/reader034/viewer/2022042613/5f9e6b41fcdd412ef13d94d6/html5/thumbnails/43.jpg)
Clase pasada Tipos de datos Relaciones entre clases Sobrecarga de metodos Ejercicios
None
Con None no se puede hacer nada:
No tiene atributos.
No tiene metodos.
No le puedes agregar atributos.
(...)
¿Para que sirve? :s
... para usarlo como valor invalido.
27
![Page 44: Clase 18: Programaci on Orientada a Objetos (II)rntoro/intro/18/C18.pdf · 2020-05-10 · Clase 18: Programaci on Orientada a Objetos (II) Rodrigo Toro Icarte (rntoro@uc.cl) IIC1103](https://reader034.vdocumento.com/reader034/viewer/2022042613/5f9e6b41fcdd412ef13d94d6/html5/thumbnails/44.jpg)
Clase pasada Tipos de datos Relaciones entre clases Sobrecarga de metodos Ejercicios
None
Ej: Implementa la funcion obtener persona(l,nombre), querecibe una lista de objetos del tipo personas (que tiene comoatributo su nombre, entre otras cosas), y retorna la personallamada nombre.
6 def obtener_persona(l,nombre):
7 for p in l:
8 if(p.nombre == nombre):
9 return p
¿Que debiera retornar si nombre no se encuentra en l?
28
![Page 45: Clase 18: Programaci on Orientada a Objetos (II)rntoro/intro/18/C18.pdf · 2020-05-10 · Clase 18: Programaci on Orientada a Objetos (II) Rodrigo Toro Icarte (rntoro@uc.cl) IIC1103](https://reader034.vdocumento.com/reader034/viewer/2022042613/5f9e6b41fcdd412ef13d94d6/html5/thumbnails/45.jpg)
Clase pasada Tipos de datos Relaciones entre clases Sobrecarga de metodos Ejercicios
None
Ej: Implementa la funcion obtener persona(l,nombre), querecibe una lista de objetos del tipo personas (que tiene comoatributo su nombre, entre otras cosas), y retorna la personallamada nombre.
6 def obtener_persona(l,nombre):
7 for p in l:
8 if(p.nombre == nombre):
9 return p
¿Que debiera retornar si nombre no se encuentra en l?
28
![Page 46: Clase 18: Programaci on Orientada a Objetos (II)rntoro/intro/18/C18.pdf · 2020-05-10 · Clase 18: Programaci on Orientada a Objetos (II) Rodrigo Toro Icarte (rntoro@uc.cl) IIC1103](https://reader034.vdocumento.com/reader034/viewer/2022042613/5f9e6b41fcdd412ef13d94d6/html5/thumbnails/46.jpg)
Clase pasada Tipos de datos Relaciones entre clases Sobrecarga de metodos Ejercicios
None
Ej: Implementa la funcion obtener persona(l,nombre), querecibe una lista de objetos del tipo personas (que tiene comoatributo su nombre, entre otras cosas), y retorna la personallamada nombre.
6 def obtener_persona(l,nombre):
7 for p in l:
8 if(p.nombre == nombre):
9 return p
¿Que debiera retornar si nombre no se encuentra en l?
28
![Page 47: Clase 18: Programaci on Orientada a Objetos (II)rntoro/intro/18/C18.pdf · 2020-05-10 · Clase 18: Programaci on Orientada a Objetos (II) Rodrigo Toro Icarte (rntoro@uc.cl) IIC1103](https://reader034.vdocumento.com/reader034/viewer/2022042613/5f9e6b41fcdd412ef13d94d6/html5/thumbnails/47.jpg)
Clase pasada Tipos de datos Relaciones entre clases Sobrecarga de metodos Ejercicios
None
6 def obtener_persona(l,nombre):
7 for p in l:
8 if(p.nombre == nombre):
9 return p
10 return None
... al llamar a la funcion se chequea si el resultado es None.
15 p = obtener_persona(l,"pedro")
16 if(p is None):
17 print("persona no encontrada")
29
![Page 48: Clase 18: Programaci on Orientada a Objetos (II)rntoro/intro/18/C18.pdf · 2020-05-10 · Clase 18: Programaci on Orientada a Objetos (II) Rodrigo Toro Icarte (rntoro@uc.cl) IIC1103](https://reader034.vdocumento.com/reader034/viewer/2022042613/5f9e6b41fcdd412ef13d94d6/html5/thumbnails/48.jpg)
Clase pasada Tipos de datos Relaciones entre clases Sobrecarga de metodos Ejercicios
None
6 def obtener_persona(l,nombre):
7 for p in l:
8 if(p.nombre == nombre):
9 return p
10 return None
... al llamar a la funcion se chequea si el resultado es None.
15 p = obtener_persona(l,"pedro")
16 if(p is None):
17 print("persona no encontrada")
29
![Page 49: Clase 18: Programaci on Orientada a Objetos (II)rntoro/intro/18/C18.pdf · 2020-05-10 · Clase 18: Programaci on Orientada a Objetos (II) Rodrigo Toro Icarte (rntoro@uc.cl) IIC1103](https://reader034.vdocumento.com/reader034/viewer/2022042613/5f9e6b41fcdd412ef13d94d6/html5/thumbnails/49.jpg)
Clase pasada Tipos de datos Relaciones entre clases Sobrecarga de metodos Ejercicios
None
1 class persona:
2 def __init__(self ,nombre ,apellido):
3 self.nombre = nombre
4 self.apellido = apellido
5
6 def obtener_persona(l,nombre):
7 for p in l:
8 if(p.nombre == nombre):
9 return p
10 return None
11
12 l = [persona("juan","a guila"),
13 persona("mar ıa","pinto"),
14 persona("aldo","verri")]
15 p = obtener_persona(l,"pedro")
16 if(p is None):
17 print("persona no encontrada")
18 else:
19 print("encontr e a",p.nombre ,p.apellido)
30
![Page 50: Clase 18: Programaci on Orientada a Objetos (II)rntoro/intro/18/C18.pdf · 2020-05-10 · Clase 18: Programaci on Orientada a Objetos (II) Rodrigo Toro Icarte (rntoro@uc.cl) IIC1103](https://reader034.vdocumento.com/reader034/viewer/2022042613/5f9e6b41fcdd412ef13d94d6/html5/thumbnails/50.jpg)
Clase pasada Tipos de datos Relaciones entre clases Sobrecarga de metodos Ejercicios
Tipos de datos
¿Por que existen distintos tipos de datos?
31
![Page 51: Clase 18: Programaci on Orientada a Objetos (II)rntoro/intro/18/C18.pdf · 2020-05-10 · Clase 18: Programaci on Orientada a Objetos (II) Rodrigo Toro Icarte (rntoro@uc.cl) IIC1103](https://reader034.vdocumento.com/reader034/viewer/2022042613/5f9e6b41fcdd412ef13d94d6/html5/thumbnails/51.jpg)
Clase pasada Tipos de datos Relaciones entre clases Sobrecarga de metodos Ejercicios
Relaciones entre clases
Las clases interactuan entre ellas.
32
![Page 52: Clase 18: Programaci on Orientada a Objetos (II)rntoro/intro/18/C18.pdf · 2020-05-10 · Clase 18: Programaci on Orientada a Objetos (II) Rodrigo Toro Icarte (rntoro@uc.cl) IIC1103](https://reader034.vdocumento.com/reader034/viewer/2022042613/5f9e6b41fcdd412ef13d94d6/html5/thumbnails/52.jpg)
Clase pasada Tipos de datos Relaciones entre clases Sobrecarga de metodos Ejercicios
Relaciones entre clases
Existen 3 tipos de relaciones entre clases, pero veremos 2:
Asociacion.
Composicion.
33
![Page 53: Clase 18: Programaci on Orientada a Objetos (II)rntoro/intro/18/C18.pdf · 2020-05-10 · Clase 18: Programaci on Orientada a Objetos (II) Rodrigo Toro Icarte (rntoro@uc.cl) IIC1103](https://reader034.vdocumento.com/reader034/viewer/2022042613/5f9e6b41fcdd412ef13d94d6/html5/thumbnails/53.jpg)
Clase pasada Tipos de datos Relaciones entre clases Sobrecarga de metodos Ejercicios
Relaciones entre clases
Asociacion: Se produce si una clase utiliza a la otra en algunode sus metodos.
34
![Page 54: Clase 18: Programaci on Orientada a Objetos (II)rntoro/intro/18/C18.pdf · 2020-05-10 · Clase 18: Programaci on Orientada a Objetos (II) Rodrigo Toro Icarte (rntoro@uc.cl) IIC1103](https://reader034.vdocumento.com/reader034/viewer/2022042613/5f9e6b41fcdd412ef13d94d6/html5/thumbnails/54.jpg)
Clase pasada Tipos de datos Relaciones entre clases Sobrecarga de metodos Ejercicios
Relaciones entre clases
Asociacion: Se produce si una clase utiliza a la otra en algunode sus metodos.
34
![Page 55: Clase 18: Programaci on Orientada a Objetos (II)rntoro/intro/18/C18.pdf · 2020-05-10 · Clase 18: Programaci on Orientada a Objetos (II) Rodrigo Toro Icarte (rntoro@uc.cl) IIC1103](https://reader034.vdocumento.com/reader034/viewer/2022042613/5f9e6b41fcdd412ef13d94d6/html5/thumbnails/55.jpg)
Clase pasada Tipos de datos Relaciones entre clases Sobrecarga de metodos Ejercicios
Relaciones entre clases
Asociacion: Se produce si una clase utiliza a la otra en algunode sus metodos.
35
![Page 56: Clase 18: Programaci on Orientada a Objetos (II)rntoro/intro/18/C18.pdf · 2020-05-10 · Clase 18: Programaci on Orientada a Objetos (II) Rodrigo Toro Icarte (rntoro@uc.cl) IIC1103](https://reader034.vdocumento.com/reader034/viewer/2022042613/5f9e6b41fcdd412ef13d94d6/html5/thumbnails/56.jpg)
Clase pasada Tipos de datos Relaciones entre clases Sobrecarga de metodos Ejercicios
Relaciones entre clases
Composicion: Se produce si una clase tiene como atributo aotra clase.
36
![Page 57: Clase 18: Programaci on Orientada a Objetos (II)rntoro/intro/18/C18.pdf · 2020-05-10 · Clase 18: Programaci on Orientada a Objetos (II) Rodrigo Toro Icarte (rntoro@uc.cl) IIC1103](https://reader034.vdocumento.com/reader034/viewer/2022042613/5f9e6b41fcdd412ef13d94d6/html5/thumbnails/57.jpg)
Clase pasada Tipos de datos Relaciones entre clases Sobrecarga de metodos Ejercicios
Relaciones entre clases
Composicion: Se produce si una clase tiene como atributo aotra clase.
36
![Page 58: Clase 18: Programaci on Orientada a Objetos (II)rntoro/intro/18/C18.pdf · 2020-05-10 · Clase 18: Programaci on Orientada a Objetos (II) Rodrigo Toro Icarte (rntoro@uc.cl) IIC1103](https://reader034.vdocumento.com/reader034/viewer/2022042613/5f9e6b41fcdd412ef13d94d6/html5/thumbnails/58.jpg)
Clase pasada Tipos de datos Relaciones entre clases Sobrecarga de metodos Ejercicios
Ejemplo: Blackjack
“Cree un programa que permita jugar Blackjack contra elcomputador”
37
![Page 59: Clase 18: Programaci on Orientada a Objetos (II)rntoro/intro/18/C18.pdf · 2020-05-10 · Clase 18: Programaci on Orientada a Objetos (II) Rodrigo Toro Icarte (rntoro@uc.cl) IIC1103](https://reader034.vdocumento.com/reader034/viewer/2022042613/5f9e6b41fcdd412ef13d94d6/html5/thumbnails/59.jpg)
Clase pasada Tipos de datos Relaciones entre clases Sobrecarga de metodos Ejercicios
Ejemplo: Blackjack
Reglas:
Se juega con un mazo de cartas inglesas.
Se entregan 2 cartas al jugador y 2 a la maquina.
El computador puede ver ambas cartas del jugador, pero eljugador solo ve la primera carta del computador.
Si la suma de la mano inicial del jugador es 21, ganaautomaticamente (donde J, Q y K valen 10 y el As puedevaler 11 o 1).
En otro caso, el jugador puede pedir cartas mientras nosupere 21.
Cuando el jugador decida no pedir mas cartas, elcomputador comenzara a pedir hasta que supere la sumadel jugador o se pase de 21.
Gana quien este mas cercano a 21 por debajo (puedenexistir empates).
38
![Page 60: Clase 18: Programaci on Orientada a Objetos (II)rntoro/intro/18/C18.pdf · 2020-05-10 · Clase 18: Programaci on Orientada a Objetos (II) Rodrigo Toro Icarte (rntoro@uc.cl) IIC1103](https://reader034.vdocumento.com/reader034/viewer/2022042613/5f9e6b41fcdd412ef13d94d6/html5/thumbnails/60.jpg)
Clase pasada Tipos de datos Relaciones entre clases Sobrecarga de metodos Ejercicios
Ejemplo: Blackjack
¿Que clases deberıamos considerar?
(a) Carta (b) Mazo (c) Jugador
39
![Page 61: Clase 18: Programaci on Orientada a Objetos (II)rntoro/intro/18/C18.pdf · 2020-05-10 · Clase 18: Programaci on Orientada a Objetos (II) Rodrigo Toro Icarte (rntoro@uc.cl) IIC1103](https://reader034.vdocumento.com/reader034/viewer/2022042613/5f9e6b41fcdd412ef13d94d6/html5/thumbnails/61.jpg)
Clase pasada Tipos de datos Relaciones entre clases Sobrecarga de metodos Ejercicios
Ejemplo: Blackjack
¿Que clases deberıamos considerar?
(a) Carta (b) Mazo (c) Jugador
39
![Page 62: Clase 18: Programaci on Orientada a Objetos (II)rntoro/intro/18/C18.pdf · 2020-05-10 · Clase 18: Programaci on Orientada a Objetos (II) Rodrigo Toro Icarte (rntoro@uc.cl) IIC1103](https://reader034.vdocumento.com/reader034/viewer/2022042613/5f9e6b41fcdd412ef13d94d6/html5/thumbnails/62.jpg)
Clase pasada Tipos de datos Relaciones entre clases Sobrecarga de metodos Ejercicios
Ejemplo: Blackjack
Carta
- numero- pinta
+ get valor()
40
![Page 63: Clase 18: Programaci on Orientada a Objetos (II)rntoro/intro/18/C18.pdf · 2020-05-10 · Clase 18: Programaci on Orientada a Objetos (II) Rodrigo Toro Icarte (rntoro@uc.cl) IIC1103](https://reader034.vdocumento.com/reader034/viewer/2022042613/5f9e6b41fcdd412ef13d94d6/html5/thumbnails/63.jpg)
Clase pasada Tipos de datos Relaciones entre clases Sobrecarga de metodos Ejercicios
Ejemplo: Blackjack
Carta
- numero- pinta
+ get valor()
40
![Page 64: Clase 18: Programaci on Orientada a Objetos (II)rntoro/intro/18/C18.pdf · 2020-05-10 · Clase 18: Programaci on Orientada a Objetos (II) Rodrigo Toro Icarte (rntoro@uc.cl) IIC1103](https://reader034.vdocumento.com/reader034/viewer/2022042613/5f9e6b41fcdd412ef13d94d6/html5/thumbnails/64.jpg)
Clase pasada Tipos de datos Relaciones entre clases Sobrecarga de metodos Ejercicios
Ejemplo: Blackjack
Mazo
- cartas
+ generar mazo()+ dar carta(jugador, num)
41
![Page 65: Clase 18: Programaci on Orientada a Objetos (II)rntoro/intro/18/C18.pdf · 2020-05-10 · Clase 18: Programaci on Orientada a Objetos (II) Rodrigo Toro Icarte (rntoro@uc.cl) IIC1103](https://reader034.vdocumento.com/reader034/viewer/2022042613/5f9e6b41fcdd412ef13d94d6/html5/thumbnails/65.jpg)
Clase pasada Tipos de datos Relaciones entre clases Sobrecarga de metodos Ejercicios
Ejemplo: Blackjack
Mazo
- cartas
+ generar mazo()+ dar carta(jugador, num)
41
![Page 66: Clase 18: Programaci on Orientada a Objetos (II)rntoro/intro/18/C18.pdf · 2020-05-10 · Clase 18: Programaci on Orientada a Objetos (II) Rodrigo Toro Icarte (rntoro@uc.cl) IIC1103](https://reader034.vdocumento.com/reader034/viewer/2022042613/5f9e6b41fcdd412ef13d94d6/html5/thumbnails/66.jpg)
Clase pasada Tipos de datos Relaciones entre clases Sobrecarga de metodos Ejercicios
Ejemplo: Blackjack
Jugador
- nombre- mano
+ contar mano()+ recibir carta(c)
42
![Page 67: Clase 18: Programaci on Orientada a Objetos (II)rntoro/intro/18/C18.pdf · 2020-05-10 · Clase 18: Programaci on Orientada a Objetos (II) Rodrigo Toro Icarte (rntoro@uc.cl) IIC1103](https://reader034.vdocumento.com/reader034/viewer/2022042613/5f9e6b41fcdd412ef13d94d6/html5/thumbnails/67.jpg)
Clase pasada Tipos de datos Relaciones entre clases Sobrecarga de metodos Ejercicios
Ejemplo: Blackjack
Jugador
- nombre- mano
+ contar mano()+ recibir carta(c)
42
![Page 68: Clase 18: Programaci on Orientada a Objetos (II)rntoro/intro/18/C18.pdf · 2020-05-10 · Clase 18: Programaci on Orientada a Objetos (II) Rodrigo Toro Icarte (rntoro@uc.cl) IIC1103](https://reader034.vdocumento.com/reader034/viewer/2022042613/5f9e6b41fcdd412ef13d94d6/html5/thumbnails/68.jpg)
Clase pasada Tipos de datos Relaciones entre clases Sobrecarga de metodos Ejercicios
Ejemplo: Blackjack
43
![Page 69: Clase 18: Programaci on Orientada a Objetos (II)rntoro/intro/18/C18.pdf · 2020-05-10 · Clase 18: Programaci on Orientada a Objetos (II) Rodrigo Toro Icarte (rntoro@uc.cl) IIC1103](https://reader034.vdocumento.com/reader034/viewer/2022042613/5f9e6b41fcdd412ef13d94d6/html5/thumbnails/69.jpg)
Clase pasada Tipos de datos Relaciones entre clases Sobrecarga de metodos Ejercicios
Sobrecarga de metodos
Python permite sobrecargar metodos en la definicion de la clase.
... es decir, definir comportamientos para +, *, <=, etc.
1 class persona:
2 pass
3
4 a = persona ()
5 b = persona ()
6 print(str(a)) # ?
7 print(int(a)) # ?
8 print(a+b) # ?
9 print(a*b) # ?
10 print(a < b) # ?
11 print(a and b) # ?
44
![Page 70: Clase 18: Programaci on Orientada a Objetos (II)rntoro/intro/18/C18.pdf · 2020-05-10 · Clase 18: Programaci on Orientada a Objetos (II) Rodrigo Toro Icarte (rntoro@uc.cl) IIC1103](https://reader034.vdocumento.com/reader034/viewer/2022042613/5f9e6b41fcdd412ef13d94d6/html5/thumbnails/70.jpg)
Clase pasada Tipos de datos Relaciones entre clases Sobrecarga de metodos Ejercicios
Sobrecarga de metodos
Python permite sobrecargar metodos en la definicion de la clase.
... es decir, definir comportamientos para +, *, <=, etc.
1 class persona:
2 pass
3
4 a = persona ()
5 b = persona ()
6 print(str(a)) # ?
7 print(int(a)) # ?
8 print(a+b) # ?
9 print(a*b) # ?
10 print(a < b) # ?
11 print(a and b) # ?
44
![Page 71: Clase 18: Programaci on Orientada a Objetos (II)rntoro/intro/18/C18.pdf · 2020-05-10 · Clase 18: Programaci on Orientada a Objetos (II) Rodrigo Toro Icarte (rntoro@uc.cl) IIC1103](https://reader034.vdocumento.com/reader034/viewer/2022042613/5f9e6b41fcdd412ef13d94d6/html5/thumbnails/71.jpg)
Clase pasada Tipos de datos Relaciones entre clases Sobrecarga de metodos Ejercicios
Sobrecarga de metodos
Intentemos mejorar el mini-siding.
2 class persona:
3
4 # Constructor
5 def __init__(self , nombre , apellido , n_alumno):
6 # Atributos de persona
7 self.nombre = nombre
8 self.apellido = apellido
9 self.n_alumno = n_alumno
10 self.notas = []
11
12 # Me todos
13 def agregar_nota(self ,n):
14 self.notas.append(n)
15 def agregar_notas(self ,l):
16 self.notas.extend(l)
17 def get_promedio(self):
18 return sum(self.notas)/len(self.notas)
45
![Page 72: Clase 18: Programaci on Orientada a Objetos (II)rntoro/intro/18/C18.pdf · 2020-05-10 · Clase 18: Programaci on Orientada a Objetos (II) Rodrigo Toro Icarte (rntoro@uc.cl) IIC1103](https://reader034.vdocumento.com/reader034/viewer/2022042613/5f9e6b41fcdd412ef13d94d6/html5/thumbnails/72.jpg)
Clase pasada Tipos de datos Relaciones entre clases Sobrecarga de metodos Ejercicios
Sobrecarga de metodos
Intentemos mejorar el mini-siding.
2 class persona:
3
4 # Constructor
5 def __init__(self , nombre , apellido , n_alumno):
6 # Atributos de persona
7 self.nombre = nombre
8 self.apellido = apellido
9 self.n_alumno = n_alumno
10 self.notas = []
11
12 # Me todos
13 def agregar_nota(self ,n):
14 self.notas.append(n)
15 def agregar_notas(self ,l):
16 self.notas.extend(l)
17 def get_promedio(self):
18 return sum(self.notas)/len(self.notas)
45
![Page 73: Clase 18: Programaci on Orientada a Objetos (II)rntoro/intro/18/C18.pdf · 2020-05-10 · Clase 18: Programaci on Orientada a Objetos (II) Rodrigo Toro Icarte (rntoro@uc.cl) IIC1103](https://reader034.vdocumento.com/reader034/viewer/2022042613/5f9e6b41fcdd412ef13d94d6/html5/thumbnails/73.jpg)
Clase pasada Tipos de datos Relaciones entre clases Sobrecarga de metodos Ejercicios
Sobrecarga de metodos
20 # Creo las personas y doy valores a sus atributos
21 juan = persona(’Juan’, ’A guila ’, ’14000000 ’)
22 aldo = persona(’Aldo’, ’Verri ’, ’14000001 ’)
23 maria = persona(’Mar ıa’, ’Pinto’, ’14000002 ’)
24
25 # Agrego notas
26 juan.agregar_notas ([6.5, 7.0, 6.7])
27 aldo.agregar_notas ([3.0, 2.7, 3.8])
28 maria.agregar_notas ([5.7 , 7.0, 6.2])
29
30 # Formo lista y muestro promedios
31 estudiantes = [juan , aldo , maria]
32 for e in estudiantes:
33 print(e.apellido ,"\t=>",’%0.2f’%e.get_promedio ())
34
35 # Salida:
36 # >>> A guila => 6.73
37 # >>> Verri => 3.17
38 # >>> Pinto => 6.30
46
![Page 74: Clase 18: Programaci on Orientada a Objetos (II)rntoro/intro/18/C18.pdf · 2020-05-10 · Clase 18: Programaci on Orientada a Objetos (II) Rodrigo Toro Icarte (rntoro@uc.cl) IIC1103](https://reader034.vdocumento.com/reader034/viewer/2022042613/5f9e6b41fcdd412ef13d94d6/html5/thumbnails/74.jpg)
Clase pasada Tipos de datos Relaciones entre clases Sobrecarga de metodos Ejercicios
Sobrecarga de metodos
Sobrecarga de casteadores.
Nombre funcion Descripcion
int (self) A intfloat (self) A floatbool (self) A boolstr (self) A string
Para el mini-siding nos podrıa servir el str (self).
47
![Page 75: Clase 18: Programaci on Orientada a Objetos (II)rntoro/intro/18/C18.pdf · 2020-05-10 · Clase 18: Programaci on Orientada a Objetos (II) Rodrigo Toro Icarte (rntoro@uc.cl) IIC1103](https://reader034.vdocumento.com/reader034/viewer/2022042613/5f9e6b41fcdd412ef13d94d6/html5/thumbnails/75.jpg)
Clase pasada Tipos de datos Relaciones entre clases Sobrecarga de metodos Ejercicios
Sobrecarga de metodos
Sobrecarga de casteadores.
Nombre funcion Descripcion
int (self) A intfloat (self) A floatbool (self) A boolstr (self) A string
Para el mini-siding nos podrıa servir el str (self).
47
![Page 76: Clase 18: Programaci on Orientada a Objetos (II)rntoro/intro/18/C18.pdf · 2020-05-10 · Clase 18: Programaci on Orientada a Objetos (II) Rodrigo Toro Icarte (rntoro@uc.cl) IIC1103](https://reader034.vdocumento.com/reader034/viewer/2022042613/5f9e6b41fcdd412ef13d94d6/html5/thumbnails/76.jpg)
Clase pasada Tipos de datos Relaciones entre clases Sobrecarga de metodos Ejercicios
Sobrecarga de metodos
Idea: Cuando muestro los datos de un alumno siempre uso elformato Apellido promedio. Definamos esto en str (self).
21 def __str__(self):
22 s = self.apellido + "\t=> %0.2f"%e.get_promedio ()
23 return s
Antes:
32 for e in estudiantes:
33 print(e.apellido ,"\t=>",’%0.2f’%e.get_promedio ())
Ahora:
37 for e in estudiantes:
38 print(e)
48
![Page 77: Clase 18: Programaci on Orientada a Objetos (II)rntoro/intro/18/C18.pdf · 2020-05-10 · Clase 18: Programaci on Orientada a Objetos (II) Rodrigo Toro Icarte (rntoro@uc.cl) IIC1103](https://reader034.vdocumento.com/reader034/viewer/2022042613/5f9e6b41fcdd412ef13d94d6/html5/thumbnails/77.jpg)
Clase pasada Tipos de datos Relaciones entre clases Sobrecarga de metodos Ejercicios
Sobrecarga de metodos
Idea: Cuando muestro los datos de un alumno siempre uso elformato Apellido promedio. Definamos esto en str (self).
21 def __str__(self):
22 s = self.apellido + "\t=> %0.2f"%e.get_promedio ()
23 return s
Antes:
32 for e in estudiantes:
33 print(e.apellido ,"\t=>",’%0.2f’%e.get_promedio ())
Ahora:
37 for e in estudiantes:
38 print(e)
48
![Page 78: Clase 18: Programaci on Orientada a Objetos (II)rntoro/intro/18/C18.pdf · 2020-05-10 · Clase 18: Programaci on Orientada a Objetos (II) Rodrigo Toro Icarte (rntoro@uc.cl) IIC1103](https://reader034.vdocumento.com/reader034/viewer/2022042613/5f9e6b41fcdd412ef13d94d6/html5/thumbnails/78.jpg)
Clase pasada Tipos de datos Relaciones entre clases Sobrecarga de metodos Ejercicios
Sobrecarga de metodos
Sobrecarga de comparadores.
Nombre funcion Descripcion
lt (self, other) Menor quele (self, other) Menor o igualeq (self, other) Igualne (self, other) No es igualgt (self, other) Mayor quege (self, other) Mayor o igual
Para el mini-siding nos podrıa servir el gt (self,other).
49
![Page 79: Clase 18: Programaci on Orientada a Objetos (II)rntoro/intro/18/C18.pdf · 2020-05-10 · Clase 18: Programaci on Orientada a Objetos (II) Rodrigo Toro Icarte (rntoro@uc.cl) IIC1103](https://reader034.vdocumento.com/reader034/viewer/2022042613/5f9e6b41fcdd412ef13d94d6/html5/thumbnails/79.jpg)
Clase pasada Tipos de datos Relaciones entre clases Sobrecarga de metodos Ejercicios
Sobrecarga de metodos
Sobrecarga de comparadores.
Nombre funcion Descripcion
lt (self, other) Menor quele (self, other) Menor o igualeq (self, other) Igualne (self, other) No es igualgt (self, other) Mayor quege (self, other) Mayor o igual
Para el mini-siding nos podrıa servir el gt (self,other).
49
![Page 80: Clase 18: Programaci on Orientada a Objetos (II)rntoro/intro/18/C18.pdf · 2020-05-10 · Clase 18: Programaci on Orientada a Objetos (II) Rodrigo Toro Icarte (rntoro@uc.cl) IIC1103](https://reader034.vdocumento.com/reader034/viewer/2022042613/5f9e6b41fcdd412ef13d94d6/html5/thumbnails/80.jpg)
Clase pasada Tipos de datos Relaciones entre clases Sobrecarga de metodos Ejercicios
Sobrecarga de metodos
¿Como ordenamos por nota, rompiendo empates por apellido?
Idea: Si definimos gt (self,other) podrıamos usar sort().
28 def __gt__(self ,other):
29 # Comparo seg un notas
30 if(self.get_promedio () > other.get_promedio ()):
31 return True
32 elif(self.get_promedio () < other.get_promedio ()):
33 return False
34 else: # si tienen la misma nota
35 if(self.apellido > other.apellido): return True
36 else: return False
Ordenar es simplemente:
50 estudiantes.sort()
50
![Page 81: Clase 18: Programaci on Orientada a Objetos (II)rntoro/intro/18/C18.pdf · 2020-05-10 · Clase 18: Programaci on Orientada a Objetos (II) Rodrigo Toro Icarte (rntoro@uc.cl) IIC1103](https://reader034.vdocumento.com/reader034/viewer/2022042613/5f9e6b41fcdd412ef13d94d6/html5/thumbnails/81.jpg)
Clase pasada Tipos de datos Relaciones entre clases Sobrecarga de metodos Ejercicios
Sobrecarga de metodos
¿Como ordenamos por nota, rompiendo empates por apellido?
Idea: Si definimos gt (self,other) podrıamos usar sort().
28 def __gt__(self ,other):
29 # Comparo seg un notas
30 if(self.get_promedio () > other.get_promedio ()):
31 return True
32 elif(self.get_promedio () < other.get_promedio ()):
33 return False
34 else: # si tienen la misma nota
35 if(self.apellido > other.apellido): return True
36 else: return False
Ordenar es simplemente:
50 estudiantes.sort()
50
![Page 82: Clase 18: Programaci on Orientada a Objetos (II)rntoro/intro/18/C18.pdf · 2020-05-10 · Clase 18: Programaci on Orientada a Objetos (II) Rodrigo Toro Icarte (rntoro@uc.cl) IIC1103](https://reader034.vdocumento.com/reader034/viewer/2022042613/5f9e6b41fcdd412ef13d94d6/html5/thumbnails/82.jpg)
Clase pasada Tipos de datos Relaciones entre clases Sobrecarga de metodos Ejercicios
Sobrecarga de metodos
¿Como ordenamos por nota, rompiendo empates por apellido?
Idea: Si definimos gt (self,other) podrıamos usar sort().
28 def __gt__(self ,other):
29 # Comparo seg un notas
30 if(self.get_promedio () > other.get_promedio ()):
31 return True
32 elif(self.get_promedio () < other.get_promedio ()):
33 return False
34 else: # si tienen la misma nota
35 if(self.apellido > other.apellido): return True
36 else: return False
Ordenar es simplemente:
50 estudiantes.sort()
50
![Page 83: Clase 18: Programaci on Orientada a Objetos (II)rntoro/intro/18/C18.pdf · 2020-05-10 · Clase 18: Programaci on Orientada a Objetos (II) Rodrigo Toro Icarte (rntoro@uc.cl) IIC1103](https://reader034.vdocumento.com/reader034/viewer/2022042613/5f9e6b41fcdd412ef13d94d6/html5/thumbnails/83.jpg)
Clase pasada Tipos de datos Relaciones entre clases Sobrecarga de metodos Ejercicios
Sobrecarga de metodos
Sobrecarga de operadores matematicos y logicos.
Nombre funcion Descripcion
add (self,other) a + bsub (self,other) a - bmul (self,other) a * bdiv (self,other) a / b
not (self) not aand (self,other) a and bor (self,other) a or b
¿Alguna idea sobre que podrıamos hacer conadd (self,other)?
51
![Page 84: Clase 18: Programaci on Orientada a Objetos (II)rntoro/intro/18/C18.pdf · 2020-05-10 · Clase 18: Programaci on Orientada a Objetos (II) Rodrigo Toro Icarte (rntoro@uc.cl) IIC1103](https://reader034.vdocumento.com/reader034/viewer/2022042613/5f9e6b41fcdd412ef13d94d6/html5/thumbnails/84.jpg)
Clase pasada Tipos de datos Relaciones entre clases Sobrecarga de metodos Ejercicios
Sobrecarga de metodos
Sobrecarga de operadores matematicos y logicos.
Nombre funcion Descripcion
add (self,other) a + bsub (self,other) a - bmul (self,other) a * bdiv (self,other) a / b
not (self) not aand (self,other) a and bor (self,other) a or b
¿Alguna idea sobre que podrıamos hacer conadd (self,other)?
51
![Page 85: Clase 18: Programaci on Orientada a Objetos (II)rntoro/intro/18/C18.pdf · 2020-05-10 · Clase 18: Programaci on Orientada a Objetos (II) Rodrigo Toro Icarte (rntoro@uc.cl) IIC1103](https://reader034.vdocumento.com/reader034/viewer/2022042613/5f9e6b41fcdd412ef13d94d6/html5/thumbnails/85.jpg)
Clase pasada Tipos de datos Relaciones entre clases Sobrecarga de metodos Ejercicios
Sobrecarga de metodos
Programe un simulador de batallas entre:
(a) Superman. (b) Goku. (c) Chuck Norris.
52
![Page 86: Clase 18: Programaci on Orientada a Objetos (II)rntoro/intro/18/C18.pdf · 2020-05-10 · Clase 18: Programaci on Orientada a Objetos (II) Rodrigo Toro Icarte (rntoro@uc.cl) IIC1103](https://reader034.vdocumento.com/reader034/viewer/2022042613/5f9e6b41fcdd412ef13d94d6/html5/thumbnails/86.jpg)
Clase pasada Tipos de datos Relaciones entre clases Sobrecarga de metodos Ejercicios
Sobrecarga de metodos
Usaremos una sola clase:
guerrero
- nombre- vida- fuerza- precision- velocidad- defensa
+ golpear(g)
53
![Page 87: Clase 18: Programaci on Orientada a Objetos (II)rntoro/intro/18/C18.pdf · 2020-05-10 · Clase 18: Programaci on Orientada a Objetos (II) Rodrigo Toro Icarte (rntoro@uc.cl) IIC1103](https://reader034.vdocumento.com/reader034/viewer/2022042613/5f9e6b41fcdd412ef13d94d6/html5/thumbnails/87.jpg)
Clase pasada Tipos de datos Relaciones entre clases Sobrecarga de metodos Ejercicios
Sobrecarga de metodos
Sobreescribamos add (self,other) en la clase guerrero.
3 class guerrero:
4 def __add__(self ,other):
5 nombre = self.nombre + "_" + other.nombre
6 vida = self.vida + other.vida
7 fuerza = self.fuerza + other.fuerza
8 precision = self.precision + other.precision
9 velocidad = self.velocidad + other.velocidad
10 defensa = self.defensa + other.defensa
11 return guerrero(nombre ,vida ,fuerza ,precision ,
12 velocidad ,defensa)
13 # ... mas abajo "constructor" y "golpear"
54
![Page 88: Clase 18: Programaci on Orientada a Objetos (II)rntoro/intro/18/C18.pdf · 2020-05-10 · Clase 18: Programaci on Orientada a Objetos (II) Rodrigo Toro Icarte (rntoro@uc.cl) IIC1103](https://reader034.vdocumento.com/reader034/viewer/2022042613/5f9e6b41fcdd412ef13d94d6/html5/thumbnails/88.jpg)
Clase pasada Tipos de datos Relaciones entre clases Sobrecarga de metodos Ejercicios
Sobrecarga de metodos
Ahora podemos crear un super guerrero...
48 # creamos guerreros
49 superman = guerrero(’Superman ’ ,100,50,80,30,20)
50 goku = guerrero(’Gok u’ ,100,60,80,40,20)
51 chuck = guerrero(’Chuck Norris ’ ,200,99,99,99,99)
52 # Creamos el super guerrero
53 supergoku = superman + goku
... y simular la batalla
55 # simula batalla
56 simular_batalla(supergoku , chuck)
55
![Page 89: Clase 18: Programaci on Orientada a Objetos (II)rntoro/intro/18/C18.pdf · 2020-05-10 · Clase 18: Programaci on Orientada a Objetos (II) Rodrigo Toro Icarte (rntoro@uc.cl) IIC1103](https://reader034.vdocumento.com/reader034/viewer/2022042613/5f9e6b41fcdd412ef13d94d6/html5/thumbnails/89.jpg)
Clase pasada Tipos de datos Relaciones entre clases Sobrecarga de metodos Ejercicios
Sobrecarga de metodos
Ahora podemos crear un super guerrero...
48 # creamos guerreros
49 superman = guerrero(’Superman ’ ,100,50,80,30,20)
50 goku = guerrero(’Gok u’ ,100,60,80,40,20)
51 chuck = guerrero(’Chuck Norris ’ ,200,99,99,99,99)
52 # Creamos el super guerrero
53 supergoku = superman + goku
... y simular la batalla
55 # simula batalla
56 simular_batalla(supergoku , chuck)
55
![Page 90: Clase 18: Programaci on Orientada a Objetos (II)rntoro/intro/18/C18.pdf · 2020-05-10 · Clase 18: Programaci on Orientada a Objetos (II) Rodrigo Toro Icarte (rntoro@uc.cl) IIC1103](https://reader034.vdocumento.com/reader034/viewer/2022042613/5f9e6b41fcdd412ef13d94d6/html5/thumbnails/90.jpg)
Clase pasada Tipos de datos Relaciones entre clases Sobrecarga de metodos Ejercicios
Ejemplo: Blackjack
¿Programemos esto?
Demo
56