Orientación a Objetos - WordPress.com€¦ · Orientación a Objetos Parte 2 tkinter . Más sobre...
Transcript of Orientación a Objetos - WordPress.com€¦ · Orientación a Objetos Parte 2 tkinter . Más sobre...
![Page 1: Orientación a Objetos - WordPress.com€¦ · Orientación a Objetos Parte 2 tkinter . Más sobre herencia •Suponga la siguiente jerarquía: ClaseA Métodos m1, m2 ClaseB Métodos](https://reader035.fdocumento.com/reader035/viewer/2022070218/61265659c616d96dc80f4812/html5/thumbnails/1.jpg)
Orientación a Objetos
Parte 2
tkinter
![Page 2: Orientación a Objetos - WordPress.com€¦ · Orientación a Objetos Parte 2 tkinter . Más sobre herencia •Suponga la siguiente jerarquía: ClaseA Métodos m1, m2 ClaseB Métodos](https://reader035.fdocumento.com/reader035/viewer/2022070218/61265659c616d96dc80f4812/html5/thumbnails/2.jpg)
Más sobre herencia
• Suponga la siguiente jerarquía:
ClaseA Métodos m1, m2
ClaseB Métodos m2, m3
ClaseC Métodos m3, m4
![Page 3: Orientación a Objetos - WordPress.com€¦ · Orientación a Objetos Parte 2 tkinter . Más sobre herencia •Suponga la siguiente jerarquía: ClaseA Métodos m1, m2 ClaseB Métodos](https://reader035.fdocumento.com/reader035/viewer/2022070218/61265659c616d96dc80f4812/html5/thumbnails/3.jpg)
Más sobre herencia
Para m = ClaseC(1,2,3,4,5,6) Qué valores retorna: m.m4(), m.m3(), m.m2(), m.m1()?
![Page 4: Orientación a Objetos - WordPress.com€¦ · Orientación a Objetos Parte 2 tkinter . Más sobre herencia •Suponga la siguiente jerarquía: ClaseA Métodos m1, m2 ClaseB Métodos](https://reader035.fdocumento.com/reader035/viewer/2022070218/61265659c616d96dc80f4812/html5/thumbnails/4.jpg)
Algo nuevo
• Creación dinámica de atributos en objetos
– setattr(objeto, atributo, valor)
– Ejemplo:
– A.campo = 10 es equivalente a:
• setattr(A, “campo”, 10)
• Acceso a atributos (independientemente como fueron creados)
– getattr(A, “campo”)
![Page 5: Orientación a Objetos - WordPress.com€¦ · Orientación a Objetos Parte 2 tkinter . Más sobre herencia •Suponga la siguiente jerarquía: ClaseA Métodos m1, m2 ClaseB Métodos](https://reader035.fdocumento.com/reader035/viewer/2022070218/61265659c616d96dc80f4812/html5/thumbnails/5.jpg)
Atributos de clase
• Se definen en la clase antes de cualquiera de los métodos.
• Se referencian dentro de la clase como NombreClase.atributo_de_clase.
• Los atributos de clase son globales para todas las instancias de la clase.
![Page 6: Orientación a Objetos - WordPress.com€¦ · Orientación a Objetos Parte 2 tkinter . Más sobre herencia •Suponga la siguiente jerarquía: ClaseA Métodos m1, m2 ClaseB Métodos](https://reader035.fdocumento.com/reader035/viewer/2022070218/61265659c616d96dc80f4812/html5/thumbnails/6.jpg)
Ejemplo de Atributos de Clase
Discusión: Qué pasaría si decimos a.mi = 900?
![Page 7: Orientación a Objetos - WordPress.com€¦ · Orientación a Objetos Parte 2 tkinter . Más sobre herencia •Suponga la siguiente jerarquía: ClaseA Métodos m1, m2 ClaseB Métodos](https://reader035.fdocumento.com/reader035/viewer/2022070218/61265659c616d96dc80f4812/html5/thumbnails/7.jpg)
Métodos de clase
• Permiten invocarse mediante NombreClase.Metodo()
![Page 8: Orientación a Objetos - WordPress.com€¦ · Orientación a Objetos Parte 2 tkinter . Más sobre herencia •Suponga la siguiente jerarquía: ClaseA Métodos m1, m2 ClaseB Métodos](https://reader035.fdocumento.com/reader035/viewer/2022070218/61265659c616d96dc80f4812/html5/thumbnails/8.jpg)
Ejercicio
• Desarrolle una clase Cripto que: – Implemente la criptografía por corrimiento:
• abcdefghijklmnopqrstuvwxyz como base
• bcdefghijklmnopqrstuvwxyza con corrimiento de 1
– Así “casa” se codifica como “dbtb”
• Consideraciones sobre la clase: – Atributo de clase: corrimiento
– Método de clase: establezca corrimiento
– Atributo de instancia: tira
– Métodos: codifique
![Page 9: Orientación a Objetos - WordPress.com€¦ · Orientación a Objetos Parte 2 tkinter . Más sobre herencia •Suponga la siguiente jerarquía: ClaseA Métodos m1, m2 ClaseB Métodos](https://reader035.fdocumento.com/reader035/viewer/2022070218/61265659c616d96dc80f4812/html5/thumbnails/9.jpg)
Cripto
![Page 10: Orientación a Objetos - WordPress.com€¦ · Orientación a Objetos Parte 2 tkinter . Más sobre herencia •Suponga la siguiente jerarquía: ClaseA Métodos m1, m2 ClaseB Métodos](https://reader035.fdocumento.com/reader035/viewer/2022070218/61265659c616d96dc80f4812/html5/thumbnails/10.jpg)
Estatuto raise y las clases para el manejo de errores
• raise
• raise clase – Raise IndexError
• raise instancia – raise
IndexError(“variable no definida”)
• Definición de clases de error propias.
• Propagación de errores: raise
![Page 11: Orientación a Objetos - WordPress.com€¦ · Orientación a Objetos Parte 2 tkinter . Más sobre herencia •Suponga la siguiente jerarquía: ClaseA Métodos m1, m2 ClaseB Métodos](https://reader035.fdocumento.com/reader035/viewer/2022070218/61265659c616d96dc80f4812/html5/thumbnails/11.jpg)
Ejercicio
• Clase Empleado – __init__(self, persona, puesto = None, salario)
• Persona debe corresponder a: – nombre [segundo nombre] apellido_1 apellido_2
• En caso contrario debe hacer un raise de un error EmpleadoError(“nombre mal conformado”)
– aplicarAumento(porcentaje) – obtenerApellido(self)
• Retorna el primer apellido
• Especialización Jefe(Empleado) – El puesto es “Jefe” – aplicarAumento(porcentaje, bono= 1000)
![Page 12: Orientación a Objetos - WordPress.com€¦ · Orientación a Objetos Parte 2 tkinter . Más sobre herencia •Suponga la siguiente jerarquía: ClaseA Métodos m1, m2 ClaseB Métodos](https://reader035.fdocumento.com/reader035/viewer/2022070218/61265659c616d96dc80f4812/html5/thumbnails/12.jpg)
Clase Empleado
![Page 13: Orientación a Objetos - WordPress.com€¦ · Orientación a Objetos Parte 2 tkinter . Más sobre herencia •Suponga la siguiente jerarquía: ClaseA Métodos m1, m2 ClaseB Métodos](https://reader035.fdocumento.com/reader035/viewer/2022070218/61265659c616d96dc80f4812/html5/thumbnails/13.jpg)
Clase Jefe
![Page 14: Orientación a Objetos - WordPress.com€¦ · Orientación a Objetos Parte 2 tkinter . Más sobre herencia •Suponga la siguiente jerarquía: ClaseA Métodos m1, m2 ClaseB Métodos](https://reader035.fdocumento.com/reader035/viewer/2022070218/61265659c616d96dc80f4812/html5/thumbnails/14.jpg)
Sobrecarga de operadores
• __getitem__(self, llave) x[llave] • __add__(self, otro) x + otro • __radd__(self, otro) otro + x • __iadd__(self, otro) x += otro • __str__(self) print(x) • __call__(self) x() • __call__(self, p) x(p) • __sub__(self, otro) x - otro • __bool__(self) if x • __contains__(self, x) x in …
![Page 15: Orientación a Objetos - WordPress.com€¦ · Orientación a Objetos Parte 2 tkinter . Más sobre herencia •Suponga la siguiente jerarquía: ClaseA Métodos m1, m2 ClaseB Métodos](https://reader035.fdocumento.com/reader035/viewer/2022070218/61265659c616d96dc80f4812/html5/thumbnails/15.jpg)
Ejemplo de sobrecarga
![Page 16: Orientación a Objetos - WordPress.com€¦ · Orientación a Objetos Parte 2 tkinter . Más sobre herencia •Suponga la siguiente jerarquía: ClaseA Métodos m1, m2 ClaseB Métodos](https://reader035.fdocumento.com/reader035/viewer/2022070218/61265659c616d96dc80f4812/html5/thumbnails/16.jpg)
Otro ejemplo de sobre carga
![Page 17: Orientación a Objetos - WordPress.com€¦ · Orientación a Objetos Parte 2 tkinter . Más sobre herencia •Suponga la siguiente jerarquía: ClaseA Métodos m1, m2 ClaseB Métodos](https://reader035.fdocumento.com/reader035/viewer/2022070218/61265659c616d96dc80f4812/html5/thumbnails/17.jpg)
Ejemplo: una calculadora
![Page 18: Orientación a Objetos - WordPress.com€¦ · Orientación a Objetos Parte 2 tkinter . Más sobre herencia •Suponga la siguiente jerarquía: ClaseA Métodos m1, m2 ClaseB Métodos](https://reader035.fdocumento.com/reader035/viewer/2022070218/61265659c616d96dc80f4812/html5/thumbnails/18.jpg)
Calculadora
• Cómo quitar los _ innecesarios?
• Cómo hacer para que la calculadora adquiera el comportamiento normal?
![Page 19: Orientación a Objetos - WordPress.com€¦ · Orientación a Objetos Parte 2 tkinter . Más sobre herencia •Suponga la siguiente jerarquía: ClaseA Métodos m1, m2 ClaseB Métodos](https://reader035.fdocumento.com/reader035/viewer/2022070218/61265659c616d96dc80f4812/html5/thumbnails/19.jpg)
Toplevel • El widget Toplevel provee un
contenedor separado para otros widgets, como por ejemplo los frames.
• Hay 4 tipos de Toplevel: – La ventana principal referida
generalmente como root. – El toplevel child que actúa como
una ventana separada, al menos que la raíz sea destruida en cuyo caso la ventana hija será destruida.
– El toplevel transient que se dibuja al frente de su padre y que se oculta si el padre se oculta o es minimizado.
– Un toplevel no decorado, que crea una ventana que no puede ser movida o minimizada en forma directa.
![Page 20: Orientación a Objetos - WordPress.com€¦ · Orientación a Objetos Parte 2 tkinter . Más sobre herencia •Suponga la siguiente jerarquía: ClaseA Métodos m1, m2 ClaseB Métodos](https://reader035.fdocumento.com/reader035/viewer/2022070218/61265659c616d96dc80f4812/html5/thumbnails/20.jpg)
Frame
• Los widgets frame son contenedores para otros widgets.
• Los frames pueden tener un tipo de relieve y un ancho de borde.
![Page 21: Orientación a Objetos - WordPress.com€¦ · Orientación a Objetos Parte 2 tkinter . Más sobre herencia •Suponga la siguiente jerarquía: ClaseA Métodos m1, m2 ClaseB Métodos](https://reader035.fdocumento.com/reader035/viewer/2022070218/61265659c616d96dc80f4812/html5/thumbnails/21.jpg)
Label • El widget Label permite presentar texto o imágenes.
![Page 22: Orientación a Objetos - WordPress.com€¦ · Orientación a Objetos Parte 2 tkinter . Más sobre herencia •Suponga la siguiente jerarquía: ClaseA Métodos m1, m2 ClaseB Métodos](https://reader035.fdocumento.com/reader035/viewer/2022070218/61265659c616d96dc80f4812/html5/thumbnails/22.jpg)
UNIVERSOS LAURENTIANOS
![Page 23: Orientación a Objetos - WordPress.com€¦ · Orientación a Objetos Parte 2 tkinter . Más sobre herencia •Suponga la siguiente jerarquía: ClaseA Métodos m1, m2 ClaseB Métodos](https://reader035.fdocumento.com/reader035/viewer/2022070218/61265659c616d96dc80f4812/html5/thumbnails/23.jpg)
![Page 24: Orientación a Objetos - WordPress.com€¦ · Orientación a Objetos Parte 2 tkinter . Más sobre herencia •Suponga la siguiente jerarquía: ClaseA Métodos m1, m2 ClaseB Métodos](https://reader035.fdocumento.com/reader035/viewer/2022070218/61265659c616d96dc80f4812/html5/thumbnails/24.jpg)
![Page 25: Orientación a Objetos - WordPress.com€¦ · Orientación a Objetos Parte 2 tkinter . Más sobre herencia •Suponga la siguiente jerarquía: ClaseA Métodos m1, m2 ClaseB Métodos](https://reader035.fdocumento.com/reader035/viewer/2022070218/61265659c616d96dc80f4812/html5/thumbnails/25.jpg)
![Page 26: Orientación a Objetos - WordPress.com€¦ · Orientación a Objetos Parte 2 tkinter . Más sobre herencia •Suponga la siguiente jerarquía: ClaseA Métodos m1, m2 ClaseB Métodos](https://reader035.fdocumento.com/reader035/viewer/2022070218/61265659c616d96dc80f4812/html5/thumbnails/26.jpg)
![Page 27: Orientación a Objetos - WordPress.com€¦ · Orientación a Objetos Parte 2 tkinter . Más sobre herencia •Suponga la siguiente jerarquía: ClaseA Métodos m1, m2 ClaseB Métodos](https://reader035.fdocumento.com/reader035/viewer/2022070218/61265659c616d96dc80f4812/html5/thumbnails/27.jpg)
Representación de los Universos Laurentianos
Un universo laurentiano está definido por una matriz de 3 dimensiones: alto, frente, profundidad. En el ejemplo anterior: Alto = 2, Frente = 5, Profundidad = 3
10001 01001 11111 10001 00000 00110
![Page 28: Orientación a Objetos - WordPress.com€¦ · Orientación a Objetos Parte 2 tkinter . Más sobre herencia •Suponga la siguiente jerarquía: ClaseA Métodos m1, m2 ClaseB Métodos](https://reader035.fdocumento.com/reader035/viewer/2022070218/61265659c616d96dc80f4812/html5/thumbnails/28.jpg)
Operaciones sobre universos
• sucumbir
![Page 29: Orientación a Objetos - WordPress.com€¦ · Orientación a Objetos Parte 2 tkinter . Más sobre herencia •Suponga la siguiente jerarquía: ClaseA Métodos m1, m2 ClaseB Métodos](https://reader035.fdocumento.com/reader035/viewer/2022070218/61265659c616d96dc80f4812/html5/thumbnails/29.jpg)
Operaciones sobre universos
• Sumar (+) +
![Page 30: Orientación a Objetos - WordPress.com€¦ · Orientación a Objetos Parte 2 tkinter . Más sobre herencia •Suponga la siguiente jerarquía: ClaseA Métodos m1, m2 ClaseB Métodos](https://reader035.fdocumento.com/reader035/viewer/2022070218/61265659c616d96dc80f4812/html5/thumbnails/30.jpg)
Obtener visión aérea
• aerea
[ [3 0 0 1 3] [0 2 0 0 1] [1 2 3 3 1] ]
![Page 31: Orientación a Objetos - WordPress.com€¦ · Orientación a Objetos Parte 2 tkinter . Más sobre herencia •Suponga la siguiente jerarquía: ClaseA Métodos m1, m2 ClaseB Métodos](https://reader035.fdocumento.com/reader035/viewer/2022070218/61265659c616d96dc80f4812/html5/thumbnails/31.jpg)
Obtener vision frontal
• Frontal
• Similarmente se definen izquierda, derecha y posterior.
[ [1 0 3 1 1] [1 0 3 3 2] [1 0 3 3 1] ]
![Page 32: Orientación a Objetos - WordPress.com€¦ · Orientación a Objetos Parte 2 tkinter . Más sobre herencia •Suponga la siguiente jerarquía: ClaseA Métodos m1, m2 ClaseB Métodos](https://reader035.fdocumento.com/reader035/viewer/2022070218/61265659c616d96dc80f4812/html5/thumbnails/32.jpg)
Crear Universos
• Universo(Tapa=2, Frente=5, Profundidad=3) crea un universo vacio.
![Page 33: Orientación a Objetos - WordPress.com€¦ · Orientación a Objetos Parte 2 tkinter . Más sobre herencia •Suponga la siguiente jerarquía: ClaseA Métodos m1, m2 ClaseB Métodos](https://reader035.fdocumento.com/reader035/viewer/2022070218/61265659c616d96dc80f4812/html5/thumbnails/33.jpg)
Creación de Universos a partir de archivos
• Universo(archivo=nombre)
• Suponga que el archivo contiene:
• No es válido combinar archivo con tapa, frente, profundidad. Las dimensiones se deducen.
10001 01001 11111 10001 00000 00110
Raise de ErrorLuarentiano
Las tapas siguientes se
suman !!
![Page 34: Orientación a Objetos - WordPress.com€¦ · Orientación a Objetos Parte 2 tkinter . Más sobre herencia •Suponga la siguiente jerarquía: ClaseA Métodos m1, m2 ClaseB Métodos](https://reader035.fdocumento.com/reader035/viewer/2022070218/61265659c616d96dc80f4812/html5/thumbnails/34.jpg)
Creación de Universos particulares
• Universo(tapa, frente, profundidad, forma, tam, desp)
• Donde forma puede ser: – “”solido”: todos los cubitos elementos son azules – “tablero”: como un tablero comenzando con azul,
blanco, y así sucesivamente. – “recuadro”: todo el borde azul, el ancho es de tam – “invrecuadro”: el inverso de recuadro de tam – “horizontal”: de tamaño tam con desplazamiento desp
(visto desde arriba) – “vertical”: igual al anterior pero visto desde arriba
![Page 35: Orientación a Objetos - WordPress.com€¦ · Orientación a Objetos Parte 2 tkinter . Más sobre herencia •Suponga la siguiente jerarquía: ClaseA Métodos m1, m2 ClaseB Métodos](https://reader035.fdocumento.com/reader035/viewer/2022070218/61265659c616d96dc80f4812/html5/thumbnails/35.jpg)
El antiUniverso de un Universo
• Transforma todos los blancos en azules y viceversa y luego los cubos caen.
![Page 36: Orientación a Objetos - WordPress.com€¦ · Orientación a Objetos Parte 2 tkinter . Más sobre herencia •Suponga la siguiente jerarquía: ClaseA Métodos m1, m2 ClaseB Métodos](https://reader035.fdocumento.com/reader035/viewer/2022070218/61265659c616d96dc80f4812/html5/thumbnails/36.jpg)
Atributos de clase
• Valores por defecto para la dimensión de un universo laurentiano.
![Page 37: Orientación a Objetos - WordPress.com€¦ · Orientación a Objetos Parte 2 tkinter . Más sobre herencia •Suponga la siguiente jerarquía: ClaseA Métodos m1, m2 ClaseB Métodos](https://reader035.fdocumento.com/reader035/viewer/2022070218/61265659c616d96dc80f4812/html5/thumbnails/37.jpg)
Escritura de Universos en Archivos
• genTexto(nombreArchivo)
10001 01001 11111 10001 00000 00110