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