En el Paradigma Orientado a Objetos, son plantillas para crear objetos de manera predeterminada. Las clases son Tipos de Dato. En ellas se definen los métodos que tendrán sus objetos.
Una clase puede ser:
- Concreta: puede ser instanciada para crear objeto. Viceversa, todo objeto pertenece a una clase concreta.
- Abstracta: abstrae varios métodos y atributos que algunas clases concretas tengan en común, y los agrupan en una clase abstracta. No se pueden instanciar. Establecen contratos que sus clases hijas deben cumplir (implementar).
Relaciones entre Clases

- Agregación: una clase contiene atributos de otras clases, con un sentimiento de pertenece-a.
- Composición: similar a la agregación pero con un acoplamiento mayor. Tienen el ciclo de vida ligado, y no existe parte sin el todo. Tampoco existe el todo si le faltan partes. Es dueño-de.
- Asociación: la clase conoce a pero no viceversa. Es relación tiene-un.
- De Uso: la clase usa un objeto de otra clase pero no como un atributo, sino como un parámetro de un método o como una simple llamada a un método de esa clase.