2010-04-22 12 views
9

Yo y muchos otros desarrolladores actualmente estamos limpiando nuestra base de código heredada, en su mayoría separando capas visuales y de datos. Para ayudar a los desarrolladores que no participan en esta refactorización a entender el modelo, me gustaría presentar un diagrama de clase (bastante informal) con comentarios sobre el alcance y el uso deseado para cada clase. Como soy flojo, me gustaría usar UMLGraph para eso.¿Cómo represento un mixin/role/rasit con UML correctamente?

Sin embargo, hay un pequeño problema: tenemos una base de código perl y la refactorización utiliza los roles de Moose de manera exhaustiva. Ahora bien, no conozco UML lo suficiente como para encontrar una abstaction adecuada para los roles; mi primera conjetura sería que fueran interfaces, pero también contienen implementación; la herencia múltiple tampoco termina de cortar.

¿Cómo puedo (o cómo lo haría) representar roles correctamente en un diagrama de clases?

Respuesta

3

Me representar un papel como una clase UML con el «role» estereotipo. La clase que compone el rol tendrá una asociación con el rol del estereotipo «does».

Simple Composition http://img820.imageshack.us/img820/5665/simplecomposition.png

Si necesitaba adaptar aún más el papel, con el alias o exclusiones, lo que crearía como una clase de asociación con los miembros de una indicación adecuada y con la «adaptation» estereotipo. El nombre de la clase de asociación no importaría, porque no será un tipo real en el diseño; así que lo dejaría sin nombre.

Composition with Conflict Resolution http://img828.imageshack.us/img828/244/conflictcomposition.png

(Tenga en cuenta que he mostrado la adaptación de "clase" conectada a la composición y el papel que se adapta. Lo que realmente quería hacer era conectarlo a la asociación entre MyComposition y MyRole1. Es sólo que la herramienta que utilicé no admitía clases de asociación).

+0

Jordão, me gusta el aspecto de esos diagramas. ¿Qué herramienta usaste para crearlos? –

+0

@WayneConrad: utilicé [yUML] (http://yuml.me/), ¡compruébalo! –

+0

Eso es como graphviz para UML. ¡Muy agradable! –

Cuestiones relacionadas