Double Dispatch Ing. Nicolás Paez Noviembre 2010 FIUBA Problema Como modelar una interacción cuando el resultado depende del receptor y del argumento FIUBA Problema - Nodriza explota contra la estrella pero atraviesa la nube - Destructor destruye la estrella y dismuye su velocidad al atravesar la nube FIUBA Solución trivial Nodriza >> chocar: unCuerpo unCuerpo class = Estrella ifTrue: [ self chocarEstrella: unCuerpo]. UnCuerpo class = Nube ifTrue: [ self chocarNube; unCuerpo ]. FIUBA Solución: double dispatching Nodriza >> chocar: unCuerpo unCuerpo chocarConNodriza: self Nube >> chocarConNodriza: nodriza “hacer algo” nodriza chocarNube: self Estrella >> chocarConNodriza: nodriza “hacer algo” unaNave chocarEstrella: self FIUBA Double Dispatching FIUBA Ejemplo 2 FIUBA Ejemplo 2 (cont.) FIUBA ¿Preguntas? Material disponible en site de la materia FIUBA Recursos ● http://www.c2.com/cgi/wiki?DoubleDispatch FIUBA