Since UML is independent of implementation or deployment (it is, by definition, a modeling language) a diagram shouldn't differ for different language implementations; ideally, you are creating use-cases (language-independent), state diagrams (language-independent), packages and classes, with properties, events and methods, and building or modeling the problem domain and a solution set in an abstract manner, trying to define the best or best practicable architecture for a system. True, if you are planning on implementing something in VB6 rather than VB.NET, C# or Java, you don't get to inherit or interface in a manner that is as elegant as the latter, so in that case, your classes could be a bit one-dimensional... Then again, that's just my opinion, I could be wrong. Anyone else out there care to discuss?