My answer as to what to use to design the class interactions would be "all of the above." A more specific and, perhaps, more helpful answer would be to classify your tools on a scale of "informal and free-form" verses "formal and rigid" and pick your tools as you design your software system moving from the left hand of the scale (informal) to the right hand of the scale (formal.) For example, if you have no clue where to begin and you need to overcome the static friction in the design process (that is, "get the ball moving") using pen and paper or, perhaps better, SimpleDiagrams. In this way, your tool allows you the maximum amount of freedom in designing the system. As you overcome the static friction in the design process, though, you will want to use tools that enforce more of a rigid, orderly design process (UML, ERD, flow charts, et. al.). There are several good tools out there that allow you to do this. Dia is one such tool, and is Open Source. Microsoft's Visio tool is another such tool. I've herd lots of good things about VS's UML diagramming tools, but I haven't used them myself, so I can't stump for them. Hope this helps!
Robert Miesen