clase 17: programaci on orientada a objetos
TRANSCRIPT
![Page 1: Clase 17: Programaci on Orientada a Objetos](https://reader036.vdocuments.mx/reader036/viewer/2022071219/62cc3b2596420c25b16ae02f/html5/thumbnails/1.jpg)
Pontificia Universidad Catolica de ChileEscuela de IngenierıaDepartamento de Ciencias de la Computacion
Clase 17: Programacion Orientada aObjetos
Rodrigo Toro Icarte ([email protected])
IIC1103 Introduccion a la Programacion - Seccion 5
18 de Mayo, 2015
![Page 2: Clase 17: Programaci on Orientada a Objetos](https://reader036.vdocuments.mx/reader036/viewer/2022071219/62cc3b2596420c25b16ae02f/html5/thumbnails/2.jpg)
Clase pasada POO Ejemplo Ejercicios
Clases pasadas
Hemos visto distintos tipos de datos en Python:
int, float, complex, bool, string, list y tuple.
... de hecho podemos saber la clase de un objeto con elcomando type().
1 a = 4.5; b = "4.5"
2 c = [1,2,3,4]
3 d = (1,2,3,4)
4
5 print(type(a)) # <class ’float ’>
6 print(type(b)) # <class ’str ’>
7 print(type(c)) # <class ’list ’>
8 print(type(d)) # <class ’tuple ’>
2
![Page 3: Clase 17: Programaci on Orientada a Objetos](https://reader036.vdocuments.mx/reader036/viewer/2022071219/62cc3b2596420c25b16ae02f/html5/thumbnails/3.jpg)
Clase pasada POO Ejemplo Ejercicios
Clases pasadas
Hemos visto distintos tipos de datos en Python:
int, float, complex, bool, string, list y tuple.
... de hecho podemos saber la clase de un objeto con elcomando type().
1 a = 4.5; b = "4.5"
2 c = [1,2,3,4]
3 d = (1,2,3,4)
4
5 print(type(a)) # <class ’float ’>
6 print(type(b)) # <class ’str ’>
7 print(type(c)) # <class ’list ’>
8 print(type(d)) # <class ’tuple ’>
2
![Page 4: Clase 17: Programaci on Orientada a Objetos](https://reader036.vdocuments.mx/reader036/viewer/2022071219/62cc3b2596420c25b16ae02f/html5/thumbnails/4.jpg)
Clase pasada POO Ejemplo Ejercicios
Programacion Orientada a Objetos
En computacion aspiramos a modelar el mundo para solucionarproblemas reales.
3
![Page 5: Clase 17: Programaci on Orientada a Objetos](https://reader036.vdocuments.mx/reader036/viewer/2022071219/62cc3b2596420c25b16ae02f/html5/thumbnails/5.jpg)
Clase pasada POO Ejemplo Ejercicios
Programacion Orientada a Objetos
En computacion aspiramos a modelar el mundo para solucionarproblemas reales.
3
![Page 6: Clase 17: Programaci on Orientada a Objetos](https://reader036.vdocuments.mx/reader036/viewer/2022071219/62cc3b2596420c25b16ae02f/html5/thumbnails/6.jpg)
Clase pasada POO Ejemplo Ejercicios
Programacion Orientada a Objetos
... o para matar el tiempo.
4
![Page 7: Clase 17: Programaci on Orientada a Objetos](https://reader036.vdocuments.mx/reader036/viewer/2022071219/62cc3b2596420c25b16ae02f/html5/thumbnails/7.jpg)
Clase pasada POO Ejemplo Ejercicios
Programacion Orientada a Objetos
... o para matar el tiempo.
4
![Page 8: Clase 17: Programaci on Orientada a Objetos](https://reader036.vdocuments.mx/reader036/viewer/2022071219/62cc3b2596420c25b16ae02f/html5/thumbnails/8.jpg)
Clase pasada POO Ejemplo Ejercicios
Programacion Orientada a Objetos
Queremos modelar el mundo...
Miren a su alrededor... ¿que ven?
5
![Page 9: Clase 17: Programaci on Orientada a Objetos](https://reader036.vdocuments.mx/reader036/viewer/2022071219/62cc3b2596420c25b16ae02f/html5/thumbnails/9.jpg)
Clase pasada POO Ejemplo Ejercicios
Programacion Orientada a Objetos
Queremos modelar el mundo...
Miren a su alrededor... ¿que ven?
5
![Page 10: Clase 17: Programaci on Orientada a Objetos](https://reader036.vdocuments.mx/reader036/viewer/2022071219/62cc3b2596420c25b16ae02f/html5/thumbnails/10.jpg)
Clase pasada POO Ejemplo Ejercicios
Programacion Orientada a Objetos
“Hay Objetos que pertenecen a cierta Clase”.
Ejemplos:
Puerta
Ventana
Plumon
Persona
Trabajemos un poco con la clase persona.
6
![Page 11: Clase 17: Programaci on Orientada a Objetos](https://reader036.vdocuments.mx/reader036/viewer/2022071219/62cc3b2596420c25b16ae02f/html5/thumbnails/11.jpg)
Clase pasada POO Ejemplo Ejercicios
Programacion Orientada a Objetos
“Hay Objetos que pertenecen a cierta Clase”.
Ejemplos:
Puerta
Ventana
Plumon
Persona
Trabajemos un poco con la clase persona.
6
![Page 12: Clase 17: Programaci on Orientada a Objetos](https://reader036.vdocuments.mx/reader036/viewer/2022071219/62cc3b2596420c25b16ae02f/html5/thumbnails/12.jpg)
Clase pasada POO Ejemplo Ejercicios
Programacion Orientada a Objetos
“Hay Objetos que pertenecen a cierta Clase”.
Ejemplos:
Puerta
Ventana
Plumon
Persona
Trabajemos un poco con la clase persona.
6
![Page 13: Clase 17: Programaci on Orientada a Objetos](https://reader036.vdocuments.mx/reader036/viewer/2022071219/62cc3b2596420c25b16ae02f/html5/thumbnails/13.jpg)
Clase pasada POO Ejemplo Ejercicios
Programacion Orientada a Objetos
Ejercicio: Disene un mini-siding, donde se pueda agregarnotas a cada estudiante y calcular promedios.
Solucion: Tenemos que manejar una lista de estudiantes.¿Como los representamos?
Opcion: Con tuplas (nombre, apellido, n◦ de alumno, notas)
1 estudiantes = []
2 estudiantes.append ((’Juan’,’A guila ’,’14000000 ’ ,[]))
3 estudiantes.append ((’Aldo’,’Verri ’,’14000001 ’ ,[]))
4 estudiantes.append ((’Mar ıa’,’Pinto ’,’14000002 ’ ,[]))
7
![Page 14: Clase 17: Programaci on Orientada a Objetos](https://reader036.vdocuments.mx/reader036/viewer/2022071219/62cc3b2596420c25b16ae02f/html5/thumbnails/14.jpg)
Clase pasada POO Ejemplo Ejercicios
Programacion Orientada a Objetos
Ejercicio: Disene un mini-siding, donde se pueda agregarnotas a cada estudiante y calcular promedios.
Solucion: Tenemos que manejar una lista de estudiantes.¿Como los representamos?
Opcion: Con tuplas (nombre, apellido, n◦ de alumno, notas)
1 estudiantes = []
2 estudiantes.append ((’Juan’,’A guila ’,’14000000 ’ ,[]))
3 estudiantes.append ((’Aldo’,’Verri ’,’14000001 ’ ,[]))
4 estudiantes.append ((’Mar ıa’,’Pinto ’,’14000002 ’ ,[]))
7
![Page 15: Clase 17: Programaci on Orientada a Objetos](https://reader036.vdocuments.mx/reader036/viewer/2022071219/62cc3b2596420c25b16ae02f/html5/thumbnails/15.jpg)
Clase pasada POO Ejemplo Ejercicios
Programacion Orientada a Objetos
Ejercicio: Disene un mini-siding, donde se pueda agregarnotas a cada estudiante y calcular promedios.
Solucion: Tenemos que manejar una lista de estudiantes.¿Como los representamos?
Opcion: Con tuplas (nombre, apellido, n◦ de alumno, notas)
1 estudiantes = []
2 estudiantes.append ((’Juan’,’A guila ’,’14000000 ’ ,[]))
3 estudiantes.append ((’Aldo’,’Verri ’,’14000001 ’ ,[]))
4 estudiantes.append ((’Mar ıa’,’Pinto ’,’14000002 ’ ,[]))
7
![Page 16: Clase 17: Programaci on Orientada a Objetos](https://reader036.vdocuments.mx/reader036/viewer/2022071219/62cc3b2596420c25b16ae02f/html5/thumbnails/16.jpg)
Clase pasada POO Ejemplo Ejercicios
Programacion Orientada a Objetos
1 estudiantes = []
2 estudiantes.append ((’Juan’,’A guila ’,’14000000 ’ ,[]))
3 estudiantes.append ((’Aldo’,’Verri ’,’14000001 ’ ,[]))
4 estudiantes.append ((’Mar ıa’,’Pinto ’,’14000002 ’ ,[]))
5
6 # Agrego notas
7 estudiantes [0][3]. append (6.5)
8 estudiantes [0][3]. append (7.0)
9 estudiantes [0][3]. append (6.7)
10
11 estudiantes [1][3]. append (3.0)
12 estudiantes [1][3]. append (2.7)
13 estudiantes [1][3]. append (3.8)
14
15 estudiantes [2][3]. append (5.7)
16 estudiantes [2][3]. append (7.0)
17 estudiantes [2][3]. append (6.2)
8
![Page 17: Clase 17: Programaci on Orientada a Objetos](https://reader036.vdocuments.mx/reader036/viewer/2022071219/62cc3b2596420c25b16ae02f/html5/thumbnails/17.jpg)
Clase pasada POO Ejemplo Ejercicios
Programacion Orientada a Objetos
19 # Muestro promedios
20 for e in estudiantes:
21 promedio = sum(e[3])/len(e[3])
22 print(e[1],"\t=>",’%0.2f’%promedio)
23
24 # Salida:
25 # >>> A guila => 6.73
26 # >>> Verri => 3.17
27 # >>> Pinto => 6.30
9
![Page 18: Clase 17: Programaci on Orientada a Objetos](https://reader036.vdocuments.mx/reader036/viewer/2022071219/62cc3b2596420c25b16ae02f/html5/thumbnails/18.jpg)
Clase pasada POO Ejemplo Ejercicios
Programacion Orientada a Objetos
¿No les parecen incomodas las tuplas?
Debemos recordar el significado de cada id.
Con muchos atributos equivocarse con los id es facil.
No podemos cambiar los valores de los atributos.
Se pueden agregar tuplas en orden incorrecto.
... Serıa util si Python nos permitiera crear nuestros propiostipos de datos.
10
![Page 19: Clase 17: Programaci on Orientada a Objetos](https://reader036.vdocuments.mx/reader036/viewer/2022071219/62cc3b2596420c25b16ae02f/html5/thumbnails/19.jpg)
Clase pasada POO Ejemplo Ejercicios
Programacion Orientada a Objetos
¿No les parecen incomodas las tuplas?
Debemos recordar el significado de cada id.
Con muchos atributos equivocarse con los id es facil.
No podemos cambiar los valores de los atributos.
Se pueden agregar tuplas en orden incorrecto.
... Serıa util si Python nos permitiera crear nuestros propiostipos de datos.
10
![Page 20: Clase 17: Programaci on Orientada a Objetos](https://reader036.vdocuments.mx/reader036/viewer/2022071219/62cc3b2596420c25b16ae02f/html5/thumbnails/20.jpg)
Clase pasada POO Ejemplo Ejercicios
Programacion Orientada a Objetos
¿No les parecen incomodas las tuplas?
Debemos recordar el significado de cada id.
Con muchos atributos equivocarse con los id es facil.
No podemos cambiar los valores de los atributos.
Se pueden agregar tuplas en orden incorrecto.
... Serıa util si Python nos permitiera crear nuestros propiostipos de datos.
10
![Page 21: Clase 17: Programaci on Orientada a Objetos](https://reader036.vdocuments.mx/reader036/viewer/2022071219/62cc3b2596420c25b16ae02f/html5/thumbnails/21.jpg)
Clase pasada POO Ejemplo Ejercicios
Programacion Orientada a Objetos
Python nos permite definir nuestras propias clases.
Sintaxis
class nombre clase:bloque codigo clase
Ahora podemos crear un objeto del tipo nombre clase.
Sintaxis
variable = nombre clase()
11
![Page 22: Clase 17: Programaci on Orientada a Objetos](https://reader036.vdocuments.mx/reader036/viewer/2022071219/62cc3b2596420c25b16ae02f/html5/thumbnails/22.jpg)
Clase pasada POO Ejemplo Ejercicios
Programacion Orientada a Objetos
Python nos permite definir nuestras propias clases.
Sintaxis
class nombre clase:bloque codigo clase
Ahora podemos crear un objeto del tipo nombre clase.
Sintaxis
variable = nombre clase()
11
![Page 23: Clase 17: Programaci on Orientada a Objetos](https://reader036.vdocuments.mx/reader036/viewer/2022071219/62cc3b2596420c25b16ae02f/html5/thumbnails/23.jpg)
Clase pasada POO Ejemplo Ejercicios
Programacion Orientada a Objetos
Ejemplo:
1 # Defino el tipo de dato (clase) "persona"
2 class persona:
3 pass
4
5 # Creo un objeto de la clase persona
6 p = persona ()
7 print(type(p))
8 # >>> <class ’__main__.persona ’>
... por ahora persona no hace nada.
12
![Page 24: Clase 17: Programaci on Orientada a Objetos](https://reader036.vdocuments.mx/reader036/viewer/2022071219/62cc3b2596420c25b16ae02f/html5/thumbnails/24.jpg)
Clase pasada POO Ejemplo Ejercicios
Programacion Orientada a Objetos
Ejemplo:
1 # Defino el tipo de dato (clase) "persona"
2 class persona:
3 pass
4
5 # Creo un objeto de la clase persona
6 p = persona ()
7 print(type(p))
8 # >>> <class ’__main__.persona ’>
... por ahora persona no hace nada.
12
![Page 25: Clase 17: Programaci on Orientada a Objetos](https://reader036.vdocuments.mx/reader036/viewer/2022071219/62cc3b2596420c25b16ae02f/html5/thumbnails/25.jpg)
Clase pasada POO Ejemplo Ejercicios
Atributos
A cada objeto le podemos agregar atributos (variables) yver/modificar sus valores.
Sintaxis
var = nombre clase()var.nombre atributo = valorprint(var.nombre atributo)
13
![Page 26: Clase 17: Programaci on Orientada a Objetos](https://reader036.vdocuments.mx/reader036/viewer/2022071219/62cc3b2596420c25b16ae02f/html5/thumbnails/26.jpg)
Clase pasada POO Ejemplo Ejercicios
Atributos
A cada objeto le podemos agregar atributos (variables) yver/modificar sus valores.
Sintaxis
var = nombre clase()var.nombre atributo = valorprint(var.nombre atributo)
13
![Page 27: Clase 17: Programaci on Orientada a Objetos](https://reader036.vdocuments.mx/reader036/viewer/2022071219/62cc3b2596420c25b16ae02f/html5/thumbnails/27.jpg)
Clase pasada POO Ejemplo Ejercicios
Atributos
Ejemplo: En nuestro problema cada persona tiene un nombre,apellido, numero de alumno y lista de notas.
Primero defino la clase persona.
1 # Defino el tipo de dato (clase) "persona"
2 class persona:
3 pass
14
![Page 28: Clase 17: Programaci on Orientada a Objetos](https://reader036.vdocuments.mx/reader036/viewer/2022071219/62cc3b2596420c25b16ae02f/html5/thumbnails/28.jpg)
Clase pasada POO Ejemplo Ejercicios
Atributos
Ejemplo: En nuestro problema cada persona tiene un nombre,apellido, numero de alumno y lista de notas.
Primero defino la clase persona.
1 # Defino el tipo de dato (clase) "persona"
2 class persona:
3 pass
14
![Page 29: Clase 17: Programaci on Orientada a Objetos](https://reader036.vdocuments.mx/reader036/viewer/2022071219/62cc3b2596420c25b16ae02f/html5/thumbnails/29.jpg)
Clase pasada POO Ejemplo Ejercicios
Atributos
... luego creo personas y agrego sus atributos.
5 # Creo una persona y le damos valor a sus atributos
6 juan = persona ()
7 juan.nombre = ’Juan’
8 juan.apellido = ’A guila ’
9 juan.n_alumno = ’14000000 ’
10
11 # Creo otra persona
12 aldo = persona ()
13 aldo.nombre = ’Aldo’
14 aldo.apellido = ’Verri ’
15 aldo.n_alumno = ’14000001 ’
16
17 # Creo u ltimo estudiante
18 maria = persona ()
19 maria.nombre = ’Mar ıa’
20 maria.apellido = ’Pinto’
21 maria.n_alumno = ’14000002 ’
15
![Page 30: Clase 17: Programaci on Orientada a Objetos](https://reader036.vdocuments.mx/reader036/viewer/2022071219/62cc3b2596420c25b16ae02f/html5/thumbnails/30.jpg)
Clase pasada POO Ejemplo Ejercicios
Atributos
Finalmente, podrıamos agregarlos a una lista y mostrar susnombres.
23 # Agrego estudiantes a mi lista
24 estudiantes = []
25 estudiantes.append(juan)
26 estudiantes.append(aldo)
27 estudiantes.append(maria)
28
29 # Muestro los nombres
30 for e in estudiantes:
31 print(e.nombre)
¿Que cosas pueden fallar con este enfoque?
16
![Page 31: Clase 17: Programaci on Orientada a Objetos](https://reader036.vdocuments.mx/reader036/viewer/2022071219/62cc3b2596420c25b16ae02f/html5/thumbnails/31.jpg)
Clase pasada POO Ejemplo Ejercicios
Atributos
Finalmente, podrıamos agregarlos a una lista y mostrar susnombres.
23 # Agrego estudiantes a mi lista
24 estudiantes = []
25 estudiantes.append(juan)
26 estudiantes.append(aldo)
27 estudiantes.append(maria)
28
29 # Muestro los nombres
30 for e in estudiantes:
31 print(e.nombre)
¿Que cosas pueden fallar con este enfoque?
16
![Page 32: Clase 17: Programaci on Orientada a Objetos](https://reader036.vdocuments.mx/reader036/viewer/2022071219/62cc3b2596420c25b16ae02f/html5/thumbnails/32.jpg)
Clase pasada POO Ejemplo Ejercicios
Atributos
Finalmente, podrıamos agregarlos a una lista y mostrar susnombres.
23 # Agrego estudiantes a mi lista
24 estudiantes = []
25 estudiantes.append(juan)
26 estudiantes.append(aldo)
27 estudiantes.append(maria)
28
29 # Muestro los nombres
30 for e in estudiantes:
31 print(e.nombre)
¿Que cosas pueden fallar con este enfoque?
16
![Page 33: Clase 17: Programaci on Orientada a Objetos](https://reader036.vdocuments.mx/reader036/viewer/2022071219/62cc3b2596420c25b16ae02f/html5/thumbnails/33.jpg)
Clase pasada POO Ejemplo Ejercicios
Constructores
Constructor: Es un metodo que se llama cuando se crea unnuevo objeto de la clase.
Sintaxis
class nombre clase:def init (self, par 1, par 2, ...):
Bloque codigo constructor
Al hacer var = nombre clase(val 1,val 2,...) se ejecutainit ().
17
![Page 34: Clase 17: Programaci on Orientada a Objetos](https://reader036.vdocuments.mx/reader036/viewer/2022071219/62cc3b2596420c25b16ae02f/html5/thumbnails/34.jpg)
Clase pasada POO Ejemplo Ejercicios
Constructores
Constructor: Es un metodo que se llama cuando se crea unnuevo objeto de la clase.
Sintaxis
class nombre clase:def init (self, par 1, par 2, ...):
Bloque codigo constructor
Al hacer var = nombre clase(val 1,val 2,...) se ejecutainit ().
17
![Page 35: Clase 17: Programaci on Orientada a Objetos](https://reader036.vdocuments.mx/reader036/viewer/2022071219/62cc3b2596420c25b16ae02f/html5/thumbnails/35.jpg)
Clase pasada POO Ejemplo Ejercicios
Constructores
Ejemplo:
1 # Defino el tipo de dato (clase) "persona"
2 class persona:
3 # Constructor
4 def __init__(self , nombre):
5 print("Persona creada:",nombre)
6
7 # Creo una persona
8 j = persona("juan")
Preguntas:
¿Que muestra el codigo anterior?
¿Que es self?
18
![Page 36: Clase 17: Programaci on Orientada a Objetos](https://reader036.vdocuments.mx/reader036/viewer/2022071219/62cc3b2596420c25b16ae02f/html5/thumbnails/36.jpg)
Clase pasada POO Ejemplo Ejercicios
Constructores
Ejemplo:
1 # Defino el tipo de dato (clase) "persona"
2 class persona:
3 # Constructor
4 def __init__(self , nombre):
5 print("Persona creada:",nombre)
6
7 # Creo una persona
8 j = persona("juan")
Preguntas:
¿Que muestra el codigo anterior?
¿Que es self?
18
![Page 37: Clase 17: Programaci on Orientada a Objetos](https://reader036.vdocuments.mx/reader036/viewer/2022071219/62cc3b2596420c25b16ae02f/html5/thumbnails/37.jpg)
Clase pasada POO Ejemplo Ejercicios
Constructores
self : Es una variable especial que contiene el objeto reciencreado.
1 # Defino el tipo de dato (clase) "persona"
2 class persona:
3 # Constructor
4 def __init__(self , nombre):
5 print("Persona creada:",nombre)
6
7 # Creo una persona
8 j = persona("juan")
9 j.nombre = ’Juan’
10 j.apellido = ’A guila ’
11 j.n_alumno = ’14000000 ’
... en este caso, self equivale a j.
19
![Page 38: Clase 17: Programaci on Orientada a Objetos](https://reader036.vdocuments.mx/reader036/viewer/2022071219/62cc3b2596420c25b16ae02f/html5/thumbnails/38.jpg)
Clase pasada POO Ejemplo Ejercicios
Constructores
self : Es una variable especial que contiene el objeto reciencreado.
1 # Defino el tipo de dato (clase) "persona"
2 class persona:
3 # Constructor
4 def __init__(self , nombre):
5 print("Persona creada:",nombre)
6
7 # Creo una persona
8 j = persona("juan")
9 j.nombre = ’Juan’
10 j.apellido = ’A guila ’
11 j.n_alumno = ’14000000 ’
... en este caso, self equivale a j.
19
![Page 39: Clase 17: Programaci on Orientada a Objetos](https://reader036.vdocuments.mx/reader036/viewer/2022071219/62cc3b2596420c25b16ae02f/html5/thumbnails/39.jpg)
Clase pasada POO Ejemplo Ejercicios
Constructores
¿De que nos podrıa servir tener self (i.e. j) en el constructor?
1 # Defino el tipo de dato (clase) "persona"
2 class persona:
3 # Constructor
4 def __init__(self , nombre):
5 print("Persona creada:",nombre)
6
7 # Creo una persona
8 j = persona("juan")
9 j.nombre = ’Juan’
10 j.apellido = ’A guila ’
11 j.n_alumno = ’14000000 ’
... podemos agregar los atributos en el constructor
20
![Page 40: Clase 17: Programaci on Orientada a Objetos](https://reader036.vdocuments.mx/reader036/viewer/2022071219/62cc3b2596420c25b16ae02f/html5/thumbnails/40.jpg)
Clase pasada POO Ejemplo Ejercicios
Constructores
¿De que nos podrıa servir tener self (i.e. j) en el constructor?
1 # Defino el tipo de dato (clase) "persona"
2 class persona:
3 # Constructor
4 def __init__(self , nombre):
5 print("Persona creada:",nombre)
6
7 # Creo una persona
8 j = persona("juan")
9 j.nombre = ’Juan’
10 j.apellido = ’A guila ’
11 j.n_alumno = ’14000000 ’
... podemos agregar los atributos en el constructor
20
![Page 41: Clase 17: Programaci on Orientada a Objetos](https://reader036.vdocuments.mx/reader036/viewer/2022071219/62cc3b2596420c25b16ae02f/html5/thumbnails/41.jpg)
Clase pasada POO Ejemplo Ejercicios
Constructores
Con self.var = valor agregamos un atributo al objeto.
2 class persona:
3 # Constructor
4 def __init__(self , nombre , apellido , n_alumno):
5 # Agrego atributos a persona
6 self.nombre = nombre
7 self.apellido = apellido
8 self.n_alumno = n_alumno
9 self.notas = []
Creo objetos de la clase persona mediante su constructor:
12 juan = persona(’Juan’, ’A guila ’, ’14000000 ’)
13 aldo = persona(’Aldo’, ’Verri ’, ’14000001 ’)
14 maria = persona(’Mar ıa’, ’Pinto’, ’14000002 ’)
21
![Page 42: Clase 17: Programaci on Orientada a Objetos](https://reader036.vdocuments.mx/reader036/viewer/2022071219/62cc3b2596420c25b16ae02f/html5/thumbnails/42.jpg)
Clase pasada POO Ejemplo Ejercicios
Constructores
Con self.var = valor agregamos un atributo al objeto.
2 class persona:
3 # Constructor
4 def __init__(self , nombre , apellido , n_alumno):
5 # Agrego atributos a persona
6 self.nombre = nombre
7 self.apellido = apellido
8 self.n_alumno = n_alumno
9 self.notas = []
Creo objetos de la clase persona mediante su constructor:
12 juan = persona(’Juan’, ’A guila ’, ’14000000 ’)
13 aldo = persona(’Aldo’, ’Verri ’, ’14000001 ’)
14 maria = persona(’Mar ıa’, ’Pinto’, ’14000002 ’)
21
![Page 43: Clase 17: Programaci on Orientada a Objetos](https://reader036.vdocuments.mx/reader036/viewer/2022071219/62cc3b2596420c25b16ae02f/html5/thumbnails/43.jpg)
Clase pasada POO Ejemplo Ejercicios
Constructores
16 # Agrego notas
17 juan.notas.extend ([6.5, 7.0, 6.7])
18 aldo.notas.extend ([3.0, 2.7, 3.8])
19 maria.notas.extend ([5.7 , 7.0, 6.2])
20
21 # Formo lista con los estudiantes
22 estudiantes = [juan , aldo , maria]
23
24 # Muestro promedios
25 for e in estudiantes:
26 promedio = sum(e.notas)/len(e.notas)
27 print(e.apellido ,"\t=>",’%0.2f’%promedio)
28
29 # Salida:
30 # >>> A guila => 6.73
31 # >>> Verri => 3.17
32 # >>> Pinto => 6.30
22
![Page 44: Clase 17: Programaci on Orientada a Objetos](https://reader036.vdocuments.mx/reader036/viewer/2022071219/62cc3b2596420c25b16ae02f/html5/thumbnails/44.jpg)
Clase pasada POO Ejemplo Ejercicios
Constructores
Ventaja constructores:
Logica para asignar atributos dentro de la definicion de laclase.
Obligamos asignacion de atributos.
Podemos ejecutar codigo cada vez que se crea el objeto.
23
![Page 45: Clase 17: Programaci on Orientada a Objetos](https://reader036.vdocuments.mx/reader036/viewer/2022071219/62cc3b2596420c25b16ae02f/html5/thumbnails/45.jpg)
Clase pasada POO Ejemplo Ejercicios
Constructores
Constructores conocidos
1 # input cualquiera
2 n = input("Ingrese input: ")
3
4 # constructores que hemos utilizado
5 i = int(n)
6 f = float(n)
7 c = complex(n)
8 b = bool(n)
9 s = str(n)
10 l = list()
11 t = tuple()
24
![Page 46: Clase 17: Programaci on Orientada a Objetos](https://reader036.vdocuments.mx/reader036/viewer/2022071219/62cc3b2596420c25b16ae02f/html5/thumbnails/46.jpg)
Clase pasada POO Ejemplo Ejercicios
Constructores
Constructores conocidos
1 # input cualquiera
2 n = input("Ingrese input: ")
3
4 # constructores que hemos utilizado
5 i = int(n)
6 f = float(n)
7 c = complex(n)
8 b = bool(n)
9 s = str(n)
10 l = list()
11 t = tuple()
24
![Page 47: Clase 17: Programaci on Orientada a Objetos](https://reader036.vdocuments.mx/reader036/viewer/2022071219/62cc3b2596420c25b16ae02f/html5/thumbnails/47.jpg)
Clase pasada POO Ejemplo Ejercicios
Metodos
Idea: Ademas de atributos, los objetos tienen comportamiento.
comportamiento == accion == metodo == codigo
25
![Page 48: Clase 17: Programaci on Orientada a Objetos](https://reader036.vdocuments.mx/reader036/viewer/2022071219/62cc3b2596420c25b16ae02f/html5/thumbnails/48.jpg)
Clase pasada POO Ejemplo Ejercicios
Metodos
Ejemplo 1: ¿Que objetos importantes hay aquı?
26
![Page 49: Clase 17: Programaci on Orientada a Objetos](https://reader036.vdocuments.mx/reader036/viewer/2022071219/62cc3b2596420c25b16ae02f/html5/thumbnails/49.jpg)
Clase pasada POO Ejemplo Ejercicios
Metodos
¿Que atributos y acciones nos interesan de ellos?
(a) Usuario. (b) Guardia. (c) Metro.
27
![Page 50: Clase 17: Programaci on Orientada a Objetos](https://reader036.vdocuments.mx/reader036/viewer/2022071219/62cc3b2596420c25b16ae02f/html5/thumbnails/50.jpg)
Clase pasada POO Ejemplo Ejercicios
Metodos
usuario
- volumen- posicion- destino
+ intentar entrar()+ intentar salir()
28
![Page 51: Clase 17: Programaci on Orientada a Objetos](https://reader036.vdocuments.mx/reader036/viewer/2022071219/62cc3b2596420c25b16ae02f/html5/thumbnails/51.jpg)
Clase pasada POO Ejemplo Ejercicios
Metodos
guardia
- volumen- posicion
+ senal cerrar puertas()
29
![Page 52: Clase 17: Programaci on Orientada a Objetos](https://reader036.vdocuments.mx/reader036/viewer/2022071219/62cc3b2596420c25b16ae02f/html5/thumbnails/52.jpg)
Clase pasada POO Ejemplo Ejercicios
Metodos
metro
- volumen interior- personas interior- posicion
+ avanzar()+ detenerse()+ abrir puertas()+ cerrar puertas()
30
![Page 53: Clase 17: Programaci on Orientada a Objetos](https://reader036.vdocuments.mx/reader036/viewer/2022071219/62cc3b2596420c25b16ae02f/html5/thumbnails/53.jpg)
Clase pasada POO Ejemplo Ejercicios
Metodos
Ejemplo 2: ¿Que objetos importantes hay aquı?
31
![Page 54: Clase 17: Programaci on Orientada a Objetos](https://reader036.vdocuments.mx/reader036/viewer/2022071219/62cc3b2596420c25b16ae02f/html5/thumbnails/54.jpg)
Clase pasada POO Ejemplo Ejercicios
Metodos
¿Que atributos y acciones nos interesan de ellos?
(a) Girasol. (b) Zombie. (c) Planta.
32
![Page 55: Clase 17: Programaci on Orientada a Objetos](https://reader036.vdocuments.mx/reader036/viewer/2022071219/62cc3b2596420c25b16ae02f/html5/thumbnails/55.jpg)
Clase pasada POO Ejemplo Ejercicios
Metodos
girasol
- vida- frecuencia sol- posicion- dibujo
+ lanzar sol()
33
![Page 56: Clase 17: Programaci on Orientada a Objetos](https://reader036.vdocuments.mx/reader036/viewer/2022071219/62cc3b2596420c25b16ae02f/html5/thumbnails/56.jpg)
Clase pasada POO Ejemplo Ejercicios
Metodos
zombie
- vida- dano- velocidad- posicion- dibujo
+ comer()+ avanzar()
34
![Page 57: Clase 17: Programaci on Orientada a Objetos](https://reader036.vdocuments.mx/reader036/viewer/2022071219/62cc3b2596420c25b16ae02f/html5/thumbnails/57.jpg)
Clase pasada POO Ejemplo Ejercicios
Metodos
planta
- vida- dano- frecuencia ataque- posicion- dibujo
+ atacar()
35
![Page 58: Clase 17: Programaci on Orientada a Objetos](https://reader036.vdocuments.mx/reader036/viewer/2022071219/62cc3b2596420c25b16ae02f/html5/thumbnails/58.jpg)
Clase pasada POO Ejemplo Ejercicios
Metodos
Metodo: Funcion asociada a una clase particular.
Sintaxis
class nombre clase:def init (self, par 1, par 2, ...):
Bloque codigo constructordef nombre metodo(self, par 1, par 2, ...):
Bloque codigo metodo
Para llamar al metodo:
Sintaxis
var = nombre clase()var.nombre metodo(val 1, val 2, ...)
36
![Page 59: Clase 17: Programaci on Orientada a Objetos](https://reader036.vdocuments.mx/reader036/viewer/2022071219/62cc3b2596420c25b16ae02f/html5/thumbnails/59.jpg)
Clase pasada POO Ejemplo Ejercicios
Metodos
Metodo: Funcion asociada a una clase particular.
Sintaxis
class nombre clase:def init (self, par 1, par 2, ...):
Bloque codigo constructordef nombre metodo(self, par 1, par 2, ...):
Bloque codigo metodo
Para llamar al metodo:
Sintaxis
var = nombre clase()var.nombre metodo(val 1, val 2, ...)
36
![Page 60: Clase 17: Programaci on Orientada a Objetos](https://reader036.vdocuments.mx/reader036/viewer/2022071219/62cc3b2596420c25b16ae02f/html5/thumbnails/60.jpg)
Clase pasada POO Ejemplo Ejercicios
Metodos
En mini-siding ¿Que metodos podrıamos agregar a persona?
persona
- nombre- apellido- n alumno- notas
+ agregar nota(n)+ agregar notas(l)+ obtener promedio()
¿Como programarıan obtener promedio()?
37
![Page 61: Clase 17: Programaci on Orientada a Objetos](https://reader036.vdocuments.mx/reader036/viewer/2022071219/62cc3b2596420c25b16ae02f/html5/thumbnails/61.jpg)
Clase pasada POO Ejemplo Ejercicios
Metodos
En mini-siding ¿Que metodos podrıamos agregar a persona?
persona
- nombre- apellido- n alumno- notas
+ agregar nota(n)+ agregar notas(l)+ obtener promedio()
¿Como programarıan obtener promedio()?
37
![Page 62: Clase 17: Programaci on Orientada a Objetos](https://reader036.vdocuments.mx/reader036/viewer/2022071219/62cc3b2596420c25b16ae02f/html5/thumbnails/62.jpg)
Clase pasada POO Ejemplo Ejercicios
Metodos
En mini-siding ¿Que metodos podrıamos agregar a persona?
persona
- nombre- apellido- n alumno- notas
+ agregar nota(n)+ agregar notas(l)+ obtener promedio()
¿Como programarıan obtener promedio()?
37
![Page 63: Clase 17: Programaci on Orientada a Objetos](https://reader036.vdocuments.mx/reader036/viewer/2022071219/62cc3b2596420c25b16ae02f/html5/thumbnails/63.jpg)
Clase pasada POO Ejemplo Ejercicios
Metodos
1 # Defino el tipo de dato (clase) "persona"
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 = []
10 # Me todos
11 def agregar_nota(self ,n):
12 self.notas.append(n)
13 def agregar_notas(self ,l):
14 self.notas.extend(l)
15 def get_promedio(self):
16 return sum(self.notas)/len(self.notas)
38
![Page 64: Clase 17: Programaci on Orientada a Objetos](https://reader036.vdocuments.mx/reader036/viewer/2022071219/62cc3b2596420c25b16ae02f/html5/thumbnails/64.jpg)
Clase pasada POO Ejemplo Ejercicios
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
39
![Page 65: Clase 17: Programaci on Orientada a Objetos](https://reader036.vdocuments.mx/reader036/viewer/2022071219/62cc3b2596420c25b16ae02f/html5/thumbnails/65.jpg)
Clase pasada POO Ejemplo Ejercicios
Metodos
Self es una variable especial que contiene al objeto sobre el quese ejecuta la funcion.
Definicion metodo agregar notas(l).
13 def agregar_notas(self ,l):
14 self.notas.extend(l)
Llamados a agregar notas(l) son sin el self.
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])
Obs: Necesitamos self para acceder a atributos y metodos.
40
![Page 66: Clase 17: Programaci on Orientada a Objetos](https://reader036.vdocuments.mx/reader036/viewer/2022071219/62cc3b2596420c25b16ae02f/html5/thumbnails/66.jpg)
Clase pasada POO Ejemplo Ejercicios
Metodos
Self es una variable especial que contiene al objeto sobre el quese ejecuta la funcion.
Definicion metodo agregar notas(l).
13 def agregar_notas(self ,l):
14 self.notas.extend(l)
Llamados a agregar notas(l) son sin el self.
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])
Obs: Necesitamos self para acceder a atributos y metodos.
40
![Page 67: Clase 17: Programaci on Orientada a Objetos](https://reader036.vdocuments.mx/reader036/viewer/2022071219/62cc3b2596420c25b16ae02f/html5/thumbnails/67.jpg)
Clase pasada POO Ejemplo Ejercicios
Metodos
Self es una variable especial que contiene al objeto sobre el quese ejecuta la funcion.
Definicion metodo agregar notas(l).
13 def agregar_notas(self ,l):
14 self.notas.extend(l)
Llamados a agregar notas(l) son sin el self.
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])
Obs: Necesitamos self para acceder a atributos y metodos.
40
![Page 68: Clase 17: Programaci on Orientada a Objetos](https://reader036.vdocuments.mx/reader036/viewer/2022071219/62cc3b2596420c25b16ae02f/html5/thumbnails/68.jpg)
Clase pasada POO Ejemplo Ejercicios
Metodos
Ventajas metodos:
Asociamos funcionalidades propias de una clase, a sudefinicion.
Ganamos semantica.
Codigo reutilizable.
41
![Page 69: Clase 17: Programaci on Orientada a Objetos](https://reader036.vdocuments.mx/reader036/viewer/2022071219/62cc3b2596420c25b16ae02f/html5/thumbnails/69.jpg)
Clase pasada POO Ejemplo Ejercicios
Metodos
Metodos conocidos
Algunos metodos sobre strings...
2 s = "hola"
3 s.replace(’h’,’’)
4 s.lower()
5 s.count(’a’)
Algunos metodos sobre listas...
8 l = [1,2,3,4,5]
9 l.append (6)
10 l.extend ([7,8,9])
11 l.sort()
12 l.reverse ()
42
![Page 70: Clase 17: Programaci on Orientada a Objetos](https://reader036.vdocuments.mx/reader036/viewer/2022071219/62cc3b2596420c25b16ae02f/html5/thumbnails/70.jpg)
Clase pasada POO Ejemplo Ejercicios
Metodos
Metodos conocidos
Algunos metodos sobre strings...
2 s = "hola"
3 s.replace(’h’,’’)
4 s.lower()
5 s.count(’a’)
Algunos metodos sobre listas...
8 l = [1,2,3,4,5]
9 l.append (6)
10 l.extend ([7,8,9])
11 l.sort()
12 l.reverse ()
42
![Page 71: Clase 17: Programaci on Orientada a Objetos](https://reader036.vdocuments.mx/reader036/viewer/2022071219/62cc3b2596420c25b16ae02f/html5/thumbnails/71.jpg)
Clase pasada POO Ejemplo Ejercicios
Clases vs Objetos
¿Cual es la diferencia entre la clase y el objeto?
Clase
La clase es el template del objeto (≈ su molde).
A partir del molde podemos construir objetos.
Objeto
Un objeto es una instancia particular de una clase.
43
![Page 72: Clase 17: Programaci on Orientada a Objetos](https://reader036.vdocuments.mx/reader036/viewer/2022071219/62cc3b2596420c25b16ae02f/html5/thumbnails/72.jpg)
Clase pasada POO Ejemplo Ejercicios
Clases vs Objetos
¿Cual es la diferencia entre la clase y el objeto?
Clase
La clase es el template del objeto (≈ su molde).
A partir del molde podemos construir objetos.
Objeto
Un objeto es una instancia particular de una clase.
43
![Page 73: Clase 17: Programaci on Orientada a Objetos](https://reader036.vdocuments.mx/reader036/viewer/2022071219/62cc3b2596420c25b16ae02f/html5/thumbnails/73.jpg)
Clase pasada POO Ejemplo Ejercicios
Clases vs Objetos
¿Cual es la diferencia entre la clase y el objeto?
Clase
La clase es el template del objeto (≈ su molde).
A partir del molde podemos construir objetos.
Objeto
Un objeto es una instancia particular de una clase.
43
![Page 74: Clase 17: Programaci on Orientada a Objetos](https://reader036.vdocuments.mx/reader036/viewer/2022071219/62cc3b2596420c25b16ae02f/html5/thumbnails/74.jpg)
Clase pasada POO Ejemplo Ejercicios
Clases vs Objetos
zombie
- vida- dano- velocidad- dibujo
+ atacar()+ avanzar()
44
![Page 75: Clase 17: Programaci on Orientada a Objetos](https://reader036.vdocuments.mx/reader036/viewer/2022071219/62cc3b2596420c25b16ae02f/html5/thumbnails/75.jpg)
Clase pasada POO Ejemplo Ejercicios
Clases vs Objetos
Clase:
2 class persona:
3 # Constructor
4 def __init__(self , nombre , apellido , n_alumno):
5 # Agrego atributos a 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 ’)
45
![Page 76: Clase 17: Programaci on Orientada a Objetos](https://reader036.vdocuments.mx/reader036/viewer/2022071219/62cc3b2596420c25b16ae02f/html5/thumbnails/76.jpg)
Clase pasada POO Ejemplo Ejercicios
Ejemplo
Programe un simulador de batallas entre:
(a) Superman. (b) Goku. (c) Chuck Norris.
46
![Page 77: Clase 17: Programaci on Orientada a Objetos](https://reader036.vdocuments.mx/reader036/viewer/2022071219/62cc3b2596420c25b16ae02f/html5/thumbnails/77.jpg)
Clase pasada POO Ejemplo Ejercicios
Ejemplo
Programe un simulador de batallas entre:
(a) Superman.
(b) Goku. (c) Chuck Norris.
46
![Page 78: Clase 17: Programaci on Orientada a Objetos](https://reader036.vdocuments.mx/reader036/viewer/2022071219/62cc3b2596420c25b16ae02f/html5/thumbnails/78.jpg)
Clase pasada POO Ejemplo Ejercicios
Ejemplo
Programe un simulador de batallas entre:
(a) Superman. (b) Goku.
(c) Chuck Norris.
46
![Page 79: Clase 17: Programaci on Orientada a Objetos](https://reader036.vdocuments.mx/reader036/viewer/2022071219/62cc3b2596420c25b16ae02f/html5/thumbnails/79.jpg)
Clase pasada POO Ejemplo Ejercicios
Ejemplo
Programe un simulador de batallas entre:
(a) Superman. (b) Goku. (c) Chuck Norris.
46
![Page 80: Clase 17: Programaci on Orientada a Objetos](https://reader036.vdocuments.mx/reader036/viewer/2022071219/62cc3b2596420c25b16ae02f/html5/thumbnails/80.jpg)
Clase pasada POO Ejemplo Ejercicios
Ejemplo
Usaremos una sola clase:
guerrero
- nombre- vida- fuerza- precision- velocidad- defensa
+ golpear(g)
47
![Page 81: Clase 17: Programaci on Orientada a Objetos](https://reader036.vdocuments.mx/reader036/viewer/2022071219/62cc3b2596420c25b16ae02f/html5/thumbnails/81.jpg)
Clase pasada POO Ejemplo Ejercicios
Ejemplo
Consideremos que estan luchando j1 contra j2:
Se golpea por turnos.
Comienza el jugador con mayor velocidad.
Si j1 intenta golpear a j2, la probabilidad de acierto es:
j1.precision− j2.velocidad
100
Si j1 golpea a j2, el dano sera:
max(j1.fuerza− j2.defensa + randrange(−10, 11), 1)
Pelea finaliza cuando algun guerrero llega a vida 0.
48
![Page 82: Clase 17: Programaci on Orientada a Objetos](https://reader036.vdocuments.mx/reader036/viewer/2022071219/62cc3b2596420c25b16ae02f/html5/thumbnails/82.jpg)
Clase pasada POO Ejemplo Ejercicios
Ejemplo
1 import random
2
3 class guerrero:
4 def __init__(self ,nombre ,vida ,fuerza ,precision ,
velocidad ,defensa):
5 self.nombre = nombre; self.vida = vida
6 self.fuerza = fuerza; self.precision = precision
7 self.velocidad = velocidad; self.defensa = defensa
8
9 def golpear(self ,g):
10 # veo si acierto el golpe
11 if(random.random () <= (self.precision - g.
velocidad) / 100):
12 # en caso de acertar , agrego da~no al oponente
13 g.vida -= max([( self.fuerza - g.defensa)
14 + random.randrange (-10,11) ,1])
15 print("Golpe certero de", self.nombre)
16 else:
17 print(g.nombre , "esquiva el golpe!")
49
![Page 83: Clase 17: Programaci on Orientada a Objetos](https://reader036.vdocuments.mx/reader036/viewer/2022071219/62cc3b2596420c25b16ae02f/html5/thumbnails/83.jpg)
Clase pasada POO Ejemplo Ejercicios
Ejemplo
Funcion que simula la batalla:
20 def simular_batalla(j1 ,j2):
21 # comienza jugador mas veloz
22 golpeador ,receptor = j1 , j2
23 if(j1.velocidad < j2.velocidad):
24 golpeador ,receptor = j2 ,j1
25 # se golpean hasta que alguno tenga vida cero
26 while(j1.vida > 0 and j2.vida > 0):
27 print("\n" + j1.nombre ,j1.vida ,"vs",
28 j2.vida ,j2.nombre)
29 golpeador.golpear(receptor)
30 # cambio de turnos
31 golpeador ,receptor = receptor ,golpeador
32 # fin
33 print("\n" + j1.nombre ,j1.vida ,"vs",
34 j2.vida ,j2.nombre)
35 print("Ganador:",receptor.nombre)
50
![Page 84: Clase 17: Programaci on Orientada a Objetos](https://reader036.vdocuments.mx/reader036/viewer/2022071219/62cc3b2596420c25b16ae02f/html5/thumbnails/84.jpg)
Clase pasada POO Ejemplo Ejercicios
Ejemplo
Creamos objetos y simulamos una batalla:
37 # batalla de ejemplo
38 superman = guerrero(’Superman ’ ,100,50,80,30,20)
39 goku = guerrero(’Gok u’ ,100,60,80,40,20)
40 chuck = guerrero(’Chuck Norris ’ ,200,99,99,99,99)
41
42 # simula batalla
43 simular_batalla(goku ,chuck)
51
![Page 85: Clase 17: Programaci on Orientada a Objetos](https://reader036.vdocuments.mx/reader036/viewer/2022071219/62cc3b2596420c25b16ae02f/html5/thumbnails/85.jpg)
Clase pasada POO Ejemplo Ejercicios
Ejercicios
1) Agregue a la clase persona del mini-siding un metodo queborre las notas de un estudiante.
2) Agregue un nuevo guerrero al simulador de batallas con lossiguientes atributos:
Nombre: Aldo Verri
Vida: 10
Fuerza: 1
Precision: 1
Velocidad: 1
Resistencia: 1
... luego haga que pelee contra Chuck Norris.
52
![Page 86: Clase 17: Programaci on Orientada a Objetos](https://reader036.vdocuments.mx/reader036/viewer/2022071219/62cc3b2596420c25b16ae02f/html5/thumbnails/86.jpg)
Clase pasada POO Ejemplo Ejercicios
Ejercicios
3) Cree una clase ampolleta con un metodo para cambiar suestado (si estaba apagada pasa a estar prendida y viceversa).Luego cree 4 ampolletas y que el usuario sea capaz deprenderlas y apagarlas.
4) Cree un mini-plants vs zombies. Para ello debe programaruna clase planta y una clase zombie. Ambos tienen vida y seencuentran a n metros de distancia. En cada turno, la plantaataca al zombie (desde lejos) y el zombie se acerca a la planta(un metro). Cuando el zombie se encuentre a 1 metro de laplanta, puede atacarla (2 mordiscos por turno). El dano decada ataque de la planta es p.ataque +
random.randrange(-10,11), y el dano del ataque del zombiees z.ataque + 2*random.randrange(-10,11). El juego acabacuando el zombie se come a la planta o la planta mata alzombie.
53
![Page 87: Clase 17: Programaci on Orientada a Objetos](https://reader036.vdocuments.mx/reader036/viewer/2022071219/62cc3b2596420c25b16ae02f/html5/thumbnails/87.jpg)
Clase pasada POO Ejemplo Ejercicios
Ejercicios
5) Cree un tablero de n× n donde existan 5 objetos: un lapiz,un cuaderno, un computador, un pase escolar y una mochila.Tambien hay una persona en alguna posicion del tablero. Encada turno, la persona se puede mover una casilla en cualquierdireccion (izquierda, derecha, arriba, abajo). Para ello utilicelas teclas asdw. El juego consiste en obtener cada objeto ydejarlo en la mochila. La persona solo puede cargar un objeto ala vez y no puede mover de lugar la mochila. El juego terminacuando todos los objetos estan en la mochila. La idea es haceresto en el mınimo numero de pasos. Para mostrar los distintoselementos del tablero en consola, use letras. Ejemplo: Lapersona es una O, la mochila una M, etc...
54