Programación en Ada/Tipos limitados
Tipos privados limitados
editarCuando se define un tipo privado, se predefinen inherentemente las operaciones de asignación, igualdad y desigualdad. Si no se quiere que exista ninguna operación, sino únicamente las definidas en el paquete, se debe emplear el tipo privado limitado.
Como consecuencia de no tener operador de asignación, la declaración de un objeto de dicho tipo no puede incluir un valor inicial. Esto también tiene la consecuencia de que no pueden existir constantes de un tipo privado limitado.
La ventaja es que el programador de la unidad que contenga un tipo privado limitado se asegura el control absoluto sobre los objetos de dicho tipo.
Para indicarlo, se define el tipo como limited
private
. Por ejemplo,
implementado un tipo abstracto de datos pila:
package
Pilasis
type
TPilais
limited
private
;-- Tipo privado limitado.
procedure
Poner (P:in
out
TPila; X:in
Integer);procedure
Quitar (P:in
out
TPila; X:out
Integer);function
"=" (P1, P2: TPila)return
Boolean;private
Max:constant
:= 100;type
TVectorEnterosis
array
(Integerrange
<>)of
Integer;type
TPilais
record
P: TVectorEnteros(1..Max); Cima; Integerrange
0..Max := 0;end
record
;end
Pilas;
La función "=" se implementa para comprobar que dos pilas tienen el mismo número de elementos y cada uno de ellos en el mismo orden deber ser iguales. Por eso, se ha optado por un tipo privado limitado.