<body><script type="text/javascript"> function setAttributeOnload(object, attribute, val) { if(window.addEventListener) { window.addEventListener('load', function(){ object[attribute] = val; }, false); } else { window.attachEvent('onload', function(){ object[attribute] = val; }); } } </script> <div id="navbar-iframe-container"></div> <script type="text/javascript" src="https://apis.google.com/js/platform.js"></script> <script type="text/javascript"> gapi.load("gapi.iframes:gapi.iframes.style.bubble", function() { if (gapi.iframes && gapi.iframes.getContext) { gapi.iframes.getContext().openChild({ url: 'https://www.blogger.com/navbar.g?targetBlogID\x3d11552613\x26blogName\x3dMonoUML\x26publishMode\x3dPUBLISH_MODE_BLOGSPOT\x26navbarType\x3dBLUE\x26layoutType\x3dCLASSIC\x26searchRoot\x3dhttps://monouml.blogspot.com/search\x26blogLocale\x3den_US\x26v\x3d2\x26homepageUrl\x3dhttp://monouml.blogspot.com/\x26vt\x3d-7757409343531954721', where: document.getElementById("navbar-iframe-container"), id: "navbar-iframe", messageHandlersFilter: gapi.iframes.CROSS_ORIGIN_IFRAMES_FILTER, messageHandlers: { 'blogger-ping': function() {} } }); } }); </script>

Friday, June 03, 2005

Rodolfo Campero

Interesting new features

Yesterday I added two new features to MonoUML, which I think are very useful when you are trying to understand a library: showing the generalizations and the specializations of a classifier in a diagram.

Let's say you are trying to understand the way actions work in MonoUML. An action is something that can be performed on a diagram or on a diagram element; you can get a list of the actions available for a given element just right-clicking over it.

Lets continue with the example. The first thing we do is to reverse engineer the library MonoUML.Widgets.dll; then, using the options in the menu we create an empty class diagram, and then we drop the class ActionBase:

Using the right click we get an option that shows all the specializations of the current classifier:

The derived classes appear in the diagram. After reorganizing the diagram and repeating the process for the newly added classes, we obtain all the derived classes:

I think this is a neat feature, and hope you enjoy using it. As soon as I get some spare time I'll implement a similar feature to show all the implemented interfaces and all the classes that implement a given interface.