2.9. Tipos Abstractos de Datos

Anuncio
2.9. Tipos Abstractos de Datos
•
•
•
•
•
Ventajas de los lenguajes de alto nivel: programador no se preocupa de la
representación física de los datos.
ADT (Abstract data type) es una ampliación: un modulo dará nombre a un
nuevo tipo y define las operaciones que pueden ser aplicadas.
La especificación y su cuerpo se compilan por separado.
La estructura debe estar oculta, debe ir en el cuerpo.
Ejemplo de cola en ADA
Package ModCola is
Type Cola is limited private; -- Solo se pueden aplicar sobre el tipo
subprogramas definidos en este
paquete
Procedure Crear (Q:in out Cola);
Function vacia (Q: cola) return boolean;
Procedure Insertar (Q:in out Cola; E: Elemento);
Procedure Eliminar (Q:in out Cola; E:out Elemento);
Private
Type Nodocola;
Type Colaptr is access Nodocola;
Type Nodcola is
Record
Contenido: Elemento;
Siguiente: Colaptr;
End record;
Type cola is
Record
Frente: Colaptr;
Final: Colaptr;
End record;
End Modcola;
Package body Modcola is
---------end ModCola;
Tema 2. Programación de STR
33
Programación orientada a objetos
• Los TAD carecen de 4 propiedades que los harían adecuados
para la POO:
o Herencia
o Inicialización automática de objetos
o Finalización "
"
"
o Selección de operaciones en tiempo de ejecución.
• En el ejemplo de la cola hay que declarar una variable colas y
después llamar al procedimiento de inicialización. En POO esto
es automático.
• Ejemplo de Cola en Java:
Import algunpaquete.Elemento // importar elemento
Package colas; // nombre del paquete
Class NodoCola (( clase local
{
Elemento dato;
NodoCola siguiente;
}
public class Cola // Clase accesible desde fuera del paquete
{
NodoCola frente, final; // variables de instancia
Public Cola() // Constructor público
{
frente = null;
final = null; }
public void insetar (Elemento E) // método visible
{
NodoCola nodonuevo = new NodoCOla();
NodoNuevo.dato = e;
NodoNuevo.siguiente = null;
If (vacia()) {
Frente = nodoNuevo;
} else {
final.siguiente = nodoNuevo;
}
final =nodoNuevo;
}
}
If (vacia()) {
Elemento ImpE = frente.dato;
Frente = Frente.siguiente ;
If (vacia()) final = null;
Tema 2. Programación de STR
34
Java y Herencia
o Se obtiene derivando unas clases de otras.
o Ejemplo de coordenadas
Package coordenadas;
Public class Coordenadas
{
float X;
float Y;
public coordenadas
}(float X_ini, float Y_ini) // constructor
{
X = X_ini;
Y = Y_ini;
}
public void establedcer(float F1, float F2);
{
X = f1;
Y = F2;
}
public float obtenerX();
{
return X,
}
public float obtenerY();
{
return Y;
}
/////////////////////////////////////////////////////////////////////////
package coordenadas;
public class 3dimensiones extends Coordenadas;// Indica la clase base
float Z;
// nuevo campo
public 3dimensiones(float Xini, float Yini, float Zini) // constructor
{
super (Xini, Yini) // llamada al constructor de la superclase
Z = Zini;
}
public void establecer(float F1, float F2, float F3) // metodo redefinido
{
establecer(F1, F2) // llamada a establecer de la superclase
Z = F3;
}
public float obtener() // nuevo método
{
return Z;
};
};
Tema 2. Programación de STR
35
Descargar