In programming, a class diagram is a representation of the structure and relationships of classes that serve as a model for objects.[1] It is a very useful model for the development of systems, as it defines all the classes that the system needs to have and is the basis for the construction of communication, sequence and state diagrams.