09.05.2013 Views

Algoritmos y Programación en Pascal

Algoritmos y Programación en Pascal

Algoritmos y Programación en Pascal

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

442 Capítulo 19. Tipos abstractos de datos<br />

La idea de partida que se ha de tomar <strong>en</strong> esta tarea es bi<strong>en</strong> clara: escoger<br />

una repres<strong>en</strong>tación que permita implem<strong>en</strong>tar las operaciones del tipo abstracto<br />

de datos simple y efici<strong>en</strong>tem<strong>en</strong>te, respetando, por supuesto, las ev<strong>en</strong>tuales restricciones<br />

exist<strong>en</strong>tes.<br />

Ahora bi<strong>en</strong>, <strong>en</strong> el mom<strong>en</strong>to de llevar a la práctica esta idea, se ha de t<strong>en</strong>er<br />

pres<strong>en</strong>te que el verdadero s<strong>en</strong>tido de la abstracción de datos vi<strong>en</strong>e dado por la<br />

separación del qué y del cómo, de la especificación y de la implem<strong>en</strong>tación, y de<br />

la ocultación al programador-usuario de la información refer<strong>en</strong>te a esta última.<br />

De acuerdo con esto, y como ya se adelantó <strong>en</strong> el apartado 19.2.3, resulta imprescindible<br />

disponer <strong>en</strong> el l<strong>en</strong>guaje de programación empleado de herrami<strong>en</strong>tas<br />

que permitan la implem<strong>en</strong>tación separada de los programas y los datos. Estas<br />

herrami<strong>en</strong>tas se d<strong>en</strong>ominan unidades, módulos o paquetes <strong>en</strong> algunos de los<br />

l<strong>en</strong>guajes de programación imperativa más ext<strong>en</strong>didos. Pero estas herrami<strong>en</strong>tas<br />

no están disponibles <strong>en</strong> <strong>Pascal</strong> estándar, por lo que es imposible realizar la<br />

abstracción de datos de una forma completa 6 <strong>en</strong> este l<strong>en</strong>guaje, como se advirtió<br />

<strong>en</strong> el apartado anterior. Sin embargo, <strong>en</strong> Turbo <strong>Pascal</strong> sí que se dispone de la<br />

posibilidad de compilación separada mediante el empleo de unidades (véase el<br />

apartado B.11), y esto es sufici<strong>en</strong>te para llevar a la práctica la abstracción de<br />

datos.<br />

En otros términos, las unidades de Turbo <strong>Pascal</strong> posibilitan una total “<strong>en</strong>capsulación”<br />

de los datos, al incluir la definición y la implem<strong>en</strong>tación del tipo abstracto<br />

<strong>en</strong> la misma unidad. Ésta es una característica positiva, al aum<strong>en</strong>tar la<br />

modularidad de los programas y facilitar el aislami<strong>en</strong>to de los cambios.<br />

No obstante, las unidades permit<strong>en</strong> ocultar sólo parcialm<strong>en</strong>te las características<br />

del tipo abstracto de datos dadas por la repres<strong>en</strong>tación escogida. Es preciso<br />

recalcar la parcialidad de la ocultación de información, ya que es necesario incluir<br />

la repres<strong>en</strong>tación concreta <strong>en</strong> la declaración del tipo abstracto (<strong>en</strong> el ejemplo<br />

tConj = ^tNodoLista; o tConj = árbol de búsqueda) cont<strong>en</strong>ida <strong>en</strong> la sección<br />

de interfaz de la unidad, y, por tanto, el programador-usuario conocerá parte de<br />

los detalles de la repres<strong>en</strong>tación. 7<br />

Para finalizar, se puede decir que la implem<strong>en</strong>tación típica de un tipo abstracto<br />

de datos <strong>en</strong> Turbo <strong>Pascal</strong>, sigui<strong>en</strong>do las ideas de Collins y McMillan [CM],<br />

ti<strong>en</strong>e la sigui<strong>en</strong>te estructura:<br />

unit TipoAbstractoDeDatos;<br />

6 En <strong>Pascal</strong> estándar habría que incluir la implem<strong>en</strong>tación del tipo de datos y de sus operaciones<br />

<strong>en</strong> cada programa que lo necesite, con lo cual no existe ninguna separación <strong>en</strong>tre la especificación<br />

y la implem<strong>en</strong>tación, que estará totalm<strong>en</strong>te visible al programador-usuario.<br />

7 En otros l<strong>en</strong>guajes, como, por ejemplo, Modula2, se puede conseguir la ocultación total de<br />

información mediante el empleo de los llamados tipos opacos.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!