fund

Page 393

Tipos abstractos de datos

385

Resultados obtenidos:

Segmento: Segment o: Segment o: Segmento:

14.2.2

(O , 4) (3 , O) Longitud: 5 (1 , 2) (3 , 4) Longitud: 2.82843 (5, O) (6 , O) Longitud: 1 ( - 1, 1) (1 , 1) Longi tud: 2

Ocultación

Para. que un tipo sea realment.e abstracto haría ralta que los dctalles de implementación 110 fuc ran visibles. Los subprogramas, como mecanis mo de abstracción, ya ocultan los detalles de la realización de las operaciones . Si n embargo queda. la cuestión de cómo ocultar la. manera de representar los valores del tipo abstracto.

En el ejemplo a nterior al definir el TipoPunto se tienen visibles los campos de información de sus coorde nadas, que pueden ser consultadas y modificadas por el código que usa el tipo. En este caso no se present,a ningún problema por eso, ya que cualquier pareja de coordenadas define un punto v-álido. No ocurre lo mismo con otros t ipos de datos. Por ejemplo, si se almacena el valor de una fecha como la tupla nlllñérica ( día, mes, aTtO) no se puede admi t ir cualquier combi nación de valores. La fecha (20, 7, 2009) es correcta, pero (7, 20 , 2009) no lo es, y menos aú n (50, -3, 54321 ). Si se quiere definir el tipo fecha como t ipo abstracto será necesario ocultar los detalles de representación interna de los valores, de manera que sólo se puedan construir fechas usando operaciones que garanticen la corrección de los valores del tipo. Para permitir esta ocultación los tipos st ruct admiten la posibilidad de declarar ciertoo elementos componentes como privados, usando la pala bra clave private para delimit ar una zona de declaraciones privarlas dent.ro de la estructura. La interfaz bá..<;ica del TipoFecha podría ser: typedef struct TipoFecha { /ft Dar valor a un dato fe cha '"/ void Poner( int dia, int mes , int anno );

/ft Ob t ener el con tenido de un dato fecha ft/ int DiaO; int MesO; int AnnoO;

private: int dia, mes, anno ; );


Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.