Subido por Adriana Amarilla

Práctica 5 Traits y Mixins

Anuncio
Programación con Objetos 3
2023c2
Práctica 5:
Traits y Mixins
Ejercicio 1
Considere el siguiente código en Python
class A:
pass
class B(A):
pass
class C(A):
pass
class D:
pass
class E(D,B):
pass
class F(C,D)
pass
Sin verificarlo previamente en código, se pide indique cual es el MRO de:
a) La clase A
b) La clase B
c) La clase C
d) La clase D
e) La clase E
f) La clase F
Ejercicio 2
Considere el siguiente código en Python
class A:
def m(self):
print(“m en A”)
class B(A):
def m(self):
super().m()
print(“m en B”)
class C(A):
Programación con Objetos 3
2023c2
def m(self):
super().m()
print(“m en C”)
class D:
def m(self):
super().m()
print(“m en D”)
class E(D,B):
def m(self):
super().m()
print(“m en E”)
class F(C,D)
def m(self):
super().m()
print(“m en F”)
Sin verificarlo previamente en código, se pide indique que se pide al ejecutar:
a) F().m()
b) E().m()
Ejercicio 3
Considere la siguiente sintaxis para traits:
●
●
●
A + B (describe un nuevo trait que incluye todos los métodos de A y todos los de B)
A - #m (describe un nuevo trait que incluye todos los métodos de A, salvo el método m.
A / #m -> #n (describe un nuevo trait que incluye todos los métodos de A,salvo m, el cual fue
renombrado como n)
Considerando entonces los siguientes traits
trait A:
method m1() { ... }
method m2() { ... }
method m3() { ... }
trait B:
method m2() { ... }
method m4() { ... }
method m5() { ... }
trait C:
method m3() { ... }
method m4() { ... }
method m6() { ... }
Programación con Objetos 3
2023c2
Indique qué métodos se obtienen con los siguientes traits, y sí alguno presenta o no un conflicto:
1. C + B
2. A + (B - #m2)
3. A / #m2 -> m6 + B
4. A - #m3 + B
5. A / #m3 -> m3a + C / #m3 -> m3c
Descargar