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

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

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

19.1 Introducción<br />

El objetivo que se persigue <strong>en</strong> este apartado es la definición de un conjunto<br />

de objetos con una serie de operaciones para su manipulación. Para resolverlo, se<br />

utiliza la técnica de la abstracción de datos, que permite tratar estas definiciones<br />

de tipos de una forma ord<strong>en</strong>ada, mant<strong>en</strong>ible, reutilizable y coher<strong>en</strong>te.<br />

La abstracción de datos pone a disposición del programador-usuario 1 nuevos<br />

tipos de datos con sus correspondi<strong>en</strong>tes operaciones de una forma totalm<strong>en</strong>te<br />

indep<strong>en</strong>di<strong>en</strong>te de la repres<strong>en</strong>tación de los objetos del tipo y de la implem<strong>en</strong>tación<br />

de las operaciones; de ahí el nombre tipos abstractos de datos.<br />

Esta técnica es llamada abstracción, porque aplica un proceso consist<strong>en</strong>te<br />

<strong>en</strong> ignorar ciertas características de los tipos de datos por ser irrelevantes para<br />

el problema que se int<strong>en</strong>ta resolver. Esas características ignoradas son aquéllas<br />

relativas a cómo se implem<strong>en</strong>tan los datos, c<strong>en</strong>trándose toda la at<strong>en</strong>ción <strong>en</strong> qué<br />

se puede hacer con ellos. Esto es, las propiedades de un tipo abstracto de datos<br />

vi<strong>en</strong><strong>en</strong> dadas implícitam<strong>en</strong>te por su definición y no por una repres<strong>en</strong>tación o<br />

implem<strong>en</strong>tación particular.<br />

Obsérvese que los tipos de datos básicos de <strong>Pascal</strong> (véase el capítulo 3) son<br />

abstractos <strong>en</strong> el sigui<strong>en</strong>te s<strong>en</strong>tido: el programador puede disponer de, por ejemplo,<br />

los <strong>en</strong>teros y sus operaciones (repres<strong>en</strong>tados por el tipo integer), ignorando<br />

la repres<strong>en</strong>tación concreta (complem<strong>en</strong>to restringido o auténtico, o cualquiera de<br />

las explicadas <strong>en</strong> el apartado 2.2 del tomo I) escogida para éstos.<br />

En cambio, con los tipos definidos por el programador (por ejemplo, las colas<br />

pres<strong>en</strong>tadas <strong>en</strong> el apartado 17.3), los detalles de la implem<strong>en</strong>tación están a la<br />

vista, con los sigui<strong>en</strong>tes inconv<strong>en</strong>i<strong>en</strong>tes:<br />

• El programador ti<strong>en</strong>e que trabajar con la repres<strong>en</strong>tación de un objeto <strong>en</strong><br />

lugar de tratar con el objeto directam<strong>en</strong>te.<br />

• El programador podría usar el objeto de modo inconsist<strong>en</strong>te si manipula<br />

inadecuadam<strong>en</strong>te la repres<strong>en</strong>tación de éste.<br />

En resum<strong>en</strong>, desde el punto de vista del programador-usuario se puede afirmar<br />

que la introducción de los tipos abstractos de datos supon<strong>en</strong> un aum<strong>en</strong>to<br />

de nivel <strong>en</strong> la programación, pues bastará con que éste conozca el qué, despreocupándose<br />

de las características irrelevantes (el cómo) para la resolución<br />

del problema. Por otra parte, la tarea del programador que implem<strong>en</strong>ta el tipo<br />

consistirá <strong>en</strong> escoger la repres<strong>en</strong>tación concreta que considere más adecuada y<br />

ocultar los detalles de ésta <strong>en</strong> mayor o m<strong>en</strong>or nivel, dep<strong>en</strong>di<strong>en</strong>do del l<strong>en</strong>guaje<br />

utilizado.<br />

1 Designaremos con este término al programador que utiliza porciones de código puestas a su<br />

disposición por otros programadores (o por él mismo, pero de forma indep<strong>en</strong>di<strong>en</strong>te).

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

Saved successfully!

Ooh no, something went wrong!