El UML representa una clase mediante un diagrama conocido como Diagrama de Clase que consiste en un rectángulo separado en tres (y a veces cuatro) partes.
En la primera parte del rectángulo se escribe el nombre de la clase que comenzará con una legra mayúscula, por convención. Nosotros antepondremos a cada nombre de clase la letra mayúscula "C" de clase de modo que la clase Fecha quedará como CFecha, y la clase Alumno quedará como CAlumno, etc.
Una segunda sección del rectángulo está destinado a los atributos, sus tipos y las especificaciones de acceso de cada atributo.
la tercera sección está destinado para los métodos u operaciones que le agregan funcionalidad a la clase. A veces se suelen agregar una cuarta sección donde se incluye la responsabilidad de la clase.
El siguiente diagrama ilustra la clase CFecha que pretendemos utilizar como medio para aprender.
Además de los atributos enteros d, m y a para almacenar el día, el mes y el año respectivamente agregamos un atributo de tipo booleano cuyo objetivo es indicar el formato por defecto activo para mostrar una fecha, dicho atributo lo hemos llamado mflpd, iniciales de las palabras "mostrar fecha larga por defecto". Si este atributo es verdadero la representación es una fecha larga, si es falso, se mostrará una fecha corta. La fecha larga muestra por ejemplo Septiembre y la corta Sep.
El último atributo es fDef, o fecha Defecto. Esta variable del mismo tipo que la clase es una variable estática que no pertenece a ningún objeto, pertenece a la clase. Es la fecha que adoptará una objeto cuando no se proporciona valores a los atributos d, m y a.
La sección correspondiente a las operaciones podríamos separarlo en varias subsecciones bien definidas, la primera correspondiente a los constructores y el destructor. Una segunda sección correspondiente a los métodos internos de validación y de determinación de un año bisiesto. Luego se encuentran los métodos de asignación y lecturas (métodos setter y getter).
Continuando en forma descendente nos encontramos con otros métodos que gestionan la representación de un objeto de la clase. Es decir, estos métodos determinan cómo se mostrará una fecha cuando se utiliza el objeto cout de la librería estándar.
En la última parte se encuentran la sobrecarga de los operadores de asignación y de inserción en los flujos de salida y de entrada.
Un constructor es una operación (o sea una función) que tiene el mismo nombre que la clase, que no retorna valor alguno y que pueden o no tener parámetros. La función de un constructor es inicializar las variables (atributos) cuando se crea un objeto de esa clase. Si no se proporciona un constructor, el compilador suele proporcionar uno por defecto. Si en cambio se escribe un constructor "a medida", este sobre escribe el constructor por defecto y ya no lo tenemos.
Este constructor, que no lleva parámetros, se lo suele llamar, constructor con valores por defecto. Su trabajo es inicializar los atributos cuando se crea un objeto sin proporcionar ningún valor para éstos. Por ejemplo:
CFecha miCumple;