Programación en Ada / Subtipos
De Wikilibros, la colección de libros de texto de contenido libre.
Los subtipos se emplean para definir un subconjunto de un tipo determinado definido por una restricción.
Esta restricción puede ser un rango para un tipo escalar:
subtypeTDíaDelMesisIntegerrange1..31;subtypeTDíaFebreroisTDíaDelMesrange1..29;subtypeTLaborableisTDíaDeSemanarangeLunes..Viernes;
O una restricción en un array irrestringido:
typeTMatrizisarray(Positive range <>, Positiverange<>)ofInteger;subtypeTMatriz10x10isTMatriz (1 .. 10, 1 .. 10);
O una restricción en el valor de un registro discriminado:
typeTPersona (Sexo : TSexo)isrecordNombre : TNombre;caseSexoiswhenMujer => Embarazada : Boolean;whenHombre =>null;endcase;endrecord;subtypeTMujerisTPersona (Sexo => Mujer);
Los subtipos de un mismo tipo base son totalmente compatibles entre sí, es decir no es necesaria una conversión de tipos para asignar objetos de subtipos distintos. Sin embargo, si en tiempo de ejecución se asigna un objeto a una variable y no se cumplen las restricciones del subtipo, se levantará la excepción Constraint_Error.

