UML (Unified Modeling Language) is a diagramming language used for object-oriented programming. It can be used to describe how a program is organized, how it executes, how it is used, and how it is deployed over a network. UML uses graphical notation to depict a system, which is clearer than natural language and more overall than code. There are different types of UML diagrams, including class, component, use case, sequence, and state machine diagrams. A class diagram specifically shows classes, interfaces, attributes, operations and relationships.