Programación en Ada/Subtipos
Apariencia
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.