You are on page 1of 6

Tres niveles de abstraccin El enfoque de este libro es sobre los tipos abstractos de datos, visto desde tres diferentes

perperspectivas: sus especificaciones, su aplicacin, y su aplicacin. La especin describe el nivel lgico o abstracto. Este nivel tiene que ver con lo que el las operaciones de hacer. El nivel de aplicacin, a veces llamado el nivel de usuario, se refiere con la forma en el tipo de datos podran ser utilizados para resolver un problema. Este nivel se refiere con la razn de las operaciones hacen lo que hacen. El nivel de ejecucin es donde el las operaciones son en realidad codificada. Este nivel se refiere a la pregunta cmo. Dentro de este enfoque, hacemos hincapi en la teora de ciencias de la computacin e ingeniera de software principios, como la modularizacin, encapsulacin de datos, ocultacin de informacin, de datos

Abstraccin de datos Para que el sistema sea til, debe recuperar los datos eficientemente. Esto ha conducido al diseo de estructuras complejas para la representacin de los datos en la base de datos. Los desarrolladores esconden la complejidad a travs de los niveles de abstraccin para simplificar la interaccin de los usuarios con el sistema: ??Nivel fsico. El nivel ms bajo de abstraccin, describe como se almacenan realmente los datos. En el nivel fsico se describen en detalle las estructuras de datos complejas de bajo nivel. ??Nivel lgico. El siguiente nivel de abstraccin describe que datos se almacena n en la base de datos y que relaciones existen entre esos datos. ??Nivel de vistas. Este nivel solo describe parte de la base de datos completa. A muchos usuarios no les importar el nivel lgico, solo querrn ver parte de la informacin. Para la simplificacin de la interaccin del usuario se crea un nivel de vistas.

El principio del encapsulamiento: Tambin conocido como ocultacin, permite cambiar la visibilidad de los elementos miembros de la clase, tanto para atributos como para mtodos. De forma que los elementos miembro de la clase pueden tener tres niveles as: Privados: Son los elementos que solo pueden ser accedidos directamente por la clase que los define. El smbolo usado es el menos En java la palabra reservada es private. Protegidos: Los elementos protegidos son aquellos que pueden ser accedidos por las clases descendientes o clases que compartan el mismo espacio fsico "paquete" El smbolo usado es el nmeral # En java la palabra reservada es protected Pblicos: Estos son los elementos en los cuales no hay restriccin alguna y pueden ser accedidos por cualquier clase y objeto del modelo. El smbolo usado es el nmeral + En java la palabra reservada es public El encapsulamiento es interno y externo. Para el interno manejamos los elementos privados y los protegidos. Para el externo manejamos los elementos pblicos.

#include<iostream> using namespace std; double double double double suma (double a,double b){return (a+b);} resta (double a,double b){return (a-b);} multiplica (double a,double b){return (a*b);} divide (double a,double b){return (a/b);}

int main() { double d1,d2,(*pf)(double,double),respt; int caso; do { cout<<"----------CALCULADORA-----------"<<endl; cout<<"1.SUMAR"<<endl

<<"2.RESTAR"<<endl <<"3.MULTIPLICAR"<<endl <<"4.DIVIDIR"<<endl <<"5.SALIR"<<endl; cout<<"----INGRESE SU OPCION---"<<endl; cin>>caso; if(caso>0 && caso<5){ cout<<"INGRESE DATO1"<<endl; cin>>d1; cout<<"INGRESE DATO2"<<endl; cin>>d2; switch(caso) { case 1: pf=&suma; respt=pf(d1,d2); break; case 2: pf=&resta; respt=pf(d1,d2); break; case 3: pf=&multiplica; respt=pf(d1,d2); break; case 4: pf=&divide; respt=pf(d1,d2); break; default: cout<<"INGRESE OTRA OPCION"; cin>>caso; } cout<<"SU RESPT ES: "<<respt<<endl; } } while(caso!=5);

return 0; }

void Insertar(int px, int py, T pinfo) { if(EsVacio())

{ info=pinfo; x=px; y=py; NW=new CQuadTree<T>(); SW=new CQuadTree<T>(); NE=new CQuadTree<T>(); SE=new CQuadTree<T>(); } else if(EsHoja()) { int hijo=ObtenerHijo(px, py); switch(hijo) { case 1: { SE=new CQuadTree<T>(px, py, pinfo); };break; case 2: { NE=new CQuadTree<T>(px, py, pinfo); };break; case 3: { SW=new CQuadTree<T>(px, py, pinfo); };break; case 4: { NW=new CQuadTree<T>(px, py, pinfo); };break; } } else { int hijo=ObtenerHijo(px, py); switch(hijo) { case 1: { SE->Insertar(px, py, pinfo);

};break; case 2: { NE->Insertar(px, py, pinfo); };break; case 3: { SW->Insertar(px, py, pinfo); };break; case 4: { NW->Insertar(px, py, pinfo); };break; } } } int ObtenerHijo(int px, int py) { if(x<px) { if(y<py) return 1; else return 2; } else { if(y<py) return 3; else return 4; } }

JARNIK (Grafo G, nodo_fuente s) // Inicializamos todos los nodos del grafo. La distancia la ponemos a infinito y el padre de cada nodo a NULL // Encolamos, en una cola de prioridad donde la prioridad es la distancia, todas las parejas <nodo,distancia> del grafo por cada u en V[G] hacer distancia[u] = INFINITO padre[u] = NULL Aadir(cola,<u,distancia[u]>) distancia[u]=0 mientras cola != 0 hacer // OJO: Se entiende por mayor prioridad aquel nodo cuya distancia[u] es menor. u = extraer_minimo(cola) //devuelve el minimo y lo elimina de la cola. por cada v adyacente a 'u' hacer si ((v cola) && (distancia[v] > peso(u, v)) entonces padre[v] = u distancia[v] = peso(u, v) Actualizar(cola,<v,distancia[v]>)

You might also like