In questo primo esempio viene preso in esame un tipo molto semplice di oggetto: una pila. Nell’ implementazione dell’oggetto pila si possono notare le due fasi: costruzione della struttura dati (campi o variabili di istanza) e definizione dei metodi (operazioni) che manipolano i dati. Ogno accesso o informazione sulla pila sono possibilli attraverso i suoi metodi. L’implementazione è in linguaggio Pascal.
Program ObjPila;
Const
MAXELEPIL = 100; { numero max elementi di pila}
Type ElePil = integer; { tipo di elementi della pila}
{
****************************************************************
} Type Pila = Object { oggetto Pila *
****************************************************************
}
V:array [1..MAXELEPIL] of Elepil; { vettore contenente gli elementi }
SP:integer; { stack pointer }
Constructor Init; { Inizializza la struttura pila }
Procedure Push(E: Elepil); { Inserisce un nuovo elemento sulla cima della pila }
Procedure Pop(var E:Elepil); {Estrae un elemento dalla cima della pila }
Function Empty: boolean; { Restituisce il valore true se la pila e' vuota }
Function Full: boolean; { Restituisce il valore true se la pila e' piena }
Function NumEle:integer; { Restituisce il numero di elementi }
Destructor Done; { Nun fa nulla }
end;
Constructor
Pila.Init;
begin
SP
:= 1
end;
Procedure
Pila.Push ( E:ElePil);
begin
V[SP]
:= E;
SP:=
SP + 1
end;
Procedure
Pila.Pop ( var E:ElePil);
begin
SP
:= SP - 1;
E := V[SP]
end;
Function
Pila.Full:boolean;
begin
Full := (SP>MAXELEPIL);
end;
Function
Pila.Empty:boolean;
begin
Empty
:= (SP<=1);
end;
Function
Pila.NumEle:integer;
begin
NumEle:=
SP-1;
end;
Destructor
Pila.Done;
begin
end;
{
************************************************
* variabili globali *
************************************************
}
var c1:pila;
i:integer;
{
************************************************
* main program *
************************************************
}
begin
c1.init;
for i:=1 to 10 do c1.push(i);
Writeln('numero di elementi', c1.NumEle);
While not c1.Empty do
begin
c1.pop(i);
writeln('elemento', i)
end
end.