Proyecto integrador. Las TIC en la sociedad S4.pptx
Tema1 (2)
1. EstucturasEstucturas de Datosde Datos PPááginagina 11
Unidad I
Tema 1: Introducción a las Estructuras de
Datos
Profesor: Jorge Escalona / Tobías Bolívar
Email: escaljorge@gmail.com / tobiasbolivar@gmail.com
Página Web: http://estructuradatos.tripod.com
2. EstucturasEstucturas de Datosde Datos PPááginagina 22
Unidad I:IntroducciUnidad I:Introduccióón a las Estructuras de Datosn a las Estructuras de Datos
• Orientación del Curso: Abstracción de Estructuras de Datos,
Reutilización, Orientación a Objetos.
• Objetivo del Curso: modelar una jerarquía de Tipos Abstractos de
Datos (TAD), que sirva como modelo de programación y permita
adquirir habilidades para la utilización de técnicas de encapsulación y
ocultación de información.
• Utilización de bibliotecas o librerias de clases (objetos) reutilizables.
• Implementación de Estructuras de Datos eficientes y confiables.
3. EstucturasEstucturas de Datosde Datos PPááginagina 33
Unidad I:IntroducciUnidad I:Introduccióón a las Estructuras de Datosn a las Estructuras de Datos
• Las EDs son los elementos base de la definición de tipos abstractos
de datos (TAD) y de todo el paradigma Orientado al objeto.
• Las EDs son derivables y concebibles como un ”bloque" o kit de
herramientas de utilidad en la construcción de software más complejo.
• La reutilización y encasuplamiento son técnicas de tanta utilidad como
la algorítmica clásica en el diseño y planteamiento de sistemas de
calidad.
• Una visión general de las EDs independiente de su implementación
permite centrarse en las características principales del modelo de cada
una de ellas.
Razones para la Orientación del Curso:
4. EstucturasEstucturas de Datosde Datos PPááginagina 44
Unidad I:Tipos Abstractos de DatosUnidad I:Tipos Abstractos de Datos
• La Abstracción es un proceso mental que tiene dos aspectos
complementarios:
• El aspecto de destacar los detalles relevantes del objeto en
estudio.
• El aspecto de ignorar los detalles irrelevantes del objeto. Se
entiende que son irrelevantes en ese nivel de abstracción. Si
descendemos de nivel, es probable que algunos de estos
detalles pasen a ser relevantes.
La abstracción en los lenguajes de programación:
5. EstucturasEstucturas de Datosde Datos PPááginagina 55
Unidad I:Tipos Abstractos de DatosUnidad I:Tipos Abstractos de Datos
• Lenguajes de alto nivel (mayor abstracción) vs. lenguajes
ensambladores (menor abstracción).
• Procedimientos parametrizados que permiten dar un nombre a un
conjunto complejo de instrucciones y activarlas con una sola
instrucción
• Las construcciones de sincronización de proceso en lenguajes de
programación concurrentes.
• Las especificaciones formales de lenguajes mediante predicados.
La abstracción en los lenguajes de programación (evolución):
6. EstucturasEstucturas de Datosde Datos PPááginagina 66
Unidad I:Tipos Abstractos de DatosUnidad I:Tipos Abstractos de Datos
• Un mismo estado puede pertenecer a tipos diferentes; p.ej., el nº 4, puede ser
un entero, un real, un complejo, un racional o un natural.
• El usuario puede construir sus propios tipos de datos en un lenguaje
determinado, mediante las construcciones sintácticas que se le den para ello.
• Así, las estructuras de datos se crean usando constructores predefinidos, (de
especial utilidad son los registros y matrices), junto con los tipos que
suministra el lenguaje: REAL, INTEGER, CHAR, BOOLEAN, etc.
• Los tipos de datos definidos por el usuario también se pueden usar para crear
otras estructuras de datos más complejas.
Tipos de Datos
Un tipo de datos es un conjunto de estados o valores permitidos, junto
con las operaciones definidas para sus valores.
Operaciones Tipo Dato = Operaciones constructores + Operaciones base
7. EstucturasEstucturas de Datosde Datos PPááginagina 77
Unidad I:Tipos Abstractos de DatosUnidad I:Tipos Abstractos de Datos
• Un TAD permite la construcción de casi cualquier tipo de datos, atendiendo
sólo a criterios de comportamiento.
• Su objetivo es hacer referencia a una clase de objetos (conjunto de estados)
definidos por una especificación independiente de la representación. La
implementación del tipo se oculta al usuario del programa.
Tipos Abstractos de Datos
Un tipo de dato abstracto es una colección de valores y de operaciones
que se definen mediante una especificación que es independiente de
cualquier representación.
TAD = Representación (datos) + Operaciones (funciones y procedimientos)
8. EstucturasEstucturas de Datosde Datos PPááginagina 88
Unidad I:Tipos Abstractos de DatosUnidad I:Tipos Abstractos de Datos
• Tipo de Dato: centrado en la implementación (cómo lo hace).
• TAD: centrado en el comportamiento (qué hace).
• En un TAD se pueden utilizar diferentes implementaciones,
manteniendo su comportamiento y su interfaz con el exterior.
• Cambios en la implementación del TAD no afectan el resto del
sistema.
Tipos Abstractos de Datos
9. EstucturasEstucturas de Datosde Datos PPááginagina 99
Unidad I:Tipos Abstractos de DatosUnidad I:Tipos Abstractos de Datos
Estructura de un
Tipo Abstracto de Dato
Operación 1 Operación 3
Operación 2 Operación 4
... ...
Interfaz Pública
Implementación de
métodos:
Código Operación 1
Código Operación 2
Código Operación 3
Código Operación 4
....
Representación:
estructura de datos
(variables de instancia)
Implementación Privada
• Interfaz Pública: operaciones y
propiedades que permiten su interacción
con el resto del sistema.
• Implementación privada:
representaciones de datos e
implementación de las operaciones.
10. EstucturasEstucturas de Datosde Datos PPááginagina 1010
Unidad I:Tipos Abstractos de DatosUnidad I:Tipos Abstractos de Datos
• La especificación del tipo: nombre del tipo y la especificación
(sintáctica y semántica) de las operaciones permitidas..
• La implementación del tipo: conocida sólo por el programador,
consiste en la representación del tipo por medio de otros tipos y en la
implementación de las operaciones en términos de dicha
representación .
Partes de un Tipo Abstracto de Dato
11. EstucturasEstucturas de Datosde Datos PPááginagina 1111
Unidad I:Tipos Abstractos de DatosUnidad I:Tipos Abstractos de Datos
• Una especificación formal es la acción de determinar o explicar en
términos formales o matemáticos la cosa deseada. Una implantación
correcta del TAD cumple con todos los axiomas especificados para él.
• La especificación formal se compone de: una especificación
sintáctica donde se definen los nombres, dominios y rangos de las
operaciones; y una especificación semántica que está compuesta
del conjunto de axiomas en forma de ecuaciones, que dicen como
opera cada una de las operaciones especificadas sobre las otras.
Especificación de un Tipo Abstracto de Dato
12. EstucturasEstucturas de Datosde Datos PPááginagina 1212
Unidad I:Tipos Abstractos de DatosUnidad I:Tipos Abstractos de Datos
En resumen, el primer paso al diseñar un TAD es crear una especificación
formal mediante la cual el implementador no tenga duda alguna sobre las
características del producto software que se le está pidiendo que
desarrolle.
Especificación de un Tipo Abstracto de Dato
13. EstucturasEstucturas de Datosde Datos PPááginagina 1313
UnidadUnidad I:TiposI:Tipos Abstractos de DatosAbstractos de Datos
Tipo de dato: Pila[elemento:tipoEle]
Especificación sintáctica:
CrearPila() -> Pila, Crea la pila
MeterElePila(Pila,tipoEle) -> Pila, Inserta un nuevo elemento en el tope
SacarElePila(Pila) -> Pila, Elimina el elemento que está en el tope
ConTopePila(Pila) -> tipoEle / {TipoEleNoDef}, Consulta el elemento que está en el tope
PilaVacia(Pila) -> Lógico, Verifica si la pila está vacía
EliminarPila(Pila) -> . Destruye la pila
Especificación semántica:
Declaración: P: Pila, ele: tipoEle;
SacarElePila(CreaPila()) = CrearPila()
ConTopePila(CrearPila()) = {TipoEleNoDef}
ConTopePila(MeterElePila(P,ele)) = ele
PilaVacía(CrearPila()) = Verdadero
PilaVacia(MeterElePila(P,ele)) =Falso
Especificación de un Tipo Abstracto de Dato (Ejemplo)
14. EstucturasEstucturas de Datosde Datos PPááginagina 1414
Unidad I:Unidad I: Facilidades de los Lenguajes para la EspecificaciFacilidades de los Lenguajes para la Especificacióón den de TADsTADs
• Poseen algunas facilidades para la abstracción:
– Posibilidad de ocultar una implementación dentro de
procedimientos.
– Permite definir nuevos tipos de datos:
• Posibilidad de definir y manipular registros.
• Posibilidad de definir tipos de datos nuevos a partir de los ya
existentes.
• Un TAD se puede implementar como una unidad, librería o un objeto.
Lenguajes Estructurados (Pascal, C, etc..)
15. EstucturasEstucturas de Datosde Datos PPááginagina 1515
Unidad I:Unidad I: Facilidades de los Lenguajes para la EspecificaciFacilidades de los Lenguajes para la Especificacióón den de TADsTADs
• Un paso más en la abstracción de datos, nos lleva a los lenguajes de
programación orientados a objetos, tales como Smalltalk, C++, Eiffel,
Beta, Java, etc.
• En la metodología orientada a objetos, un objeto no es más que un
conjunto de datos privados (cuyos valores dan lugar al estado del
objeto), y unas operaciones para acceder y procesar los datos.
• Un TAD se puede implementar como una clase.
Lenguajes orientados a objetos
16. EstucturasEstucturas de Datosde Datos PPááginagina 1616
Unidad I:Unidad I: Mecanismos para la abstracciMecanismos para la abstraccióón de datos en LOOn de datos en LOO
• Clase: es un modelo que define la estructura y el comportamiento de un
conjunto de objetos que tienen el mismo patrón estructural y de
comportamiento.
• Clasificación: es la agrupación de objetos con propiedades y comportamiento
similares dentro de una clase.
• Instancia de una clase: cada objeto que pertenece a una determinada clase.
• Instanciación: es el proceso de generación o creación de las instancias de
una clase.
• Extensión de la clase: el conjunto de todas las instancias de una
determinada clase.
• Superclase: clase más general o superior a una clase particular.
• Subclase: clase particular de una superclase o clase superior.
• Jerarquía de clases: conjunto de superclases y subclases relacionadas o
derivadas entre sí.
• Metaclase: es la clase que define todas las clases del sistema.
17. EstucturasEstucturas de Datosde Datos PPááginagina 1717
Unidad I:Unidad I: Mecanismos para la abstracciMecanismos para la abstraccióón de datos en LOOn de datos en LOO
Ejemplo de Jerarquía
de Clases
18. EstucturasEstucturas de Datosde Datos PPááginagina 1818
Unidad I:Unidad I: Mecanismos para la abstracciMecanismos para la abstraccióón de datos en LOOn de datos en LOO
• Generalización: es un proceso de
abstracción en el cual un conjunto
de clases existentes, que tienen
atributos y operaciones comunes es
referido por una clase genérica a un
nivel mayor de abstracción.
• Especialización: es el proceso
inverso de la generalización, ya que
una subclase se crea a partir de una
clase ya existente. Soportado por la
mayoría de los sistemas orientados
por objetos.
19. EstucturasEstucturas de Datosde Datos PPááginagina 1919
Unidad I:Unidad I: Mecanismos para la abstracciMecanismos para la abstraccióón de datos en LOOn de datos en LOO
• Herencia: es la propiedad que tienen las clases de heredar de sus
superclases su estructura y/o comportamiento.
• Herencia simple: la subclase hereda solamente de una superclase.
• Herencia múltiple: la subclase hereda de varias superclases.
• Polimorfismo: utilización del mismo nombre para la definición de un método
en varias clases. Ejemplo: el operador + para tipos numéricos y para tipos
caracter.
• Reescritura o sobrecarga: permite nombrar código diferente con el mismo
nombre para más de una clase de objetos.
• Encadenamiento tardío: permite seleccionar el código adecuado al objeto
definido en la invocación del método.
20. EstucturasEstucturas de Datosde Datos PPááginagina 2020
Unidad I:Unidad I: Mecanismos para la abstracciMecanismos para la abstraccióón de datos en LOOn de datos en LOO
• Composición o agregación: permite definir clases de objetos compuestos,
ya que permite colocar atributos en la clase que pertenecen a otra clase. Ella
representa la relación ES-PARTE-DE entre una entidad compuesta y sus
entidades componentes.
21. EstucturasEstucturas de Datosde Datos PPááginagina 2121
Unidad I:Unidad I: Mecanismos para la abstracciMecanismos para la abstraccióón de datos en LOOn de datos en LOO
• Protocolo o interfaz: es el conjunto de operaciones o métodos declarados
como posibles de invocar o activar por los otros objetos.
• Mensajes: son la especificación de un objeto junto con la invocación de uno
de sus métodos. Por lo general, el pase de mensajes tiene la forma
• objetoDestino.nombreDelMétodo(listaDeArgumentos)
• Encapsulación: es la propiedad que permite que los objetos sean definidos
en su estructura y su comportamiento, obligando al uso del pase de mensajes
o de la invocación de sus métodos, si se quiere acceder al objeto.
22. EstucturasEstucturas de Datosde Datos PPááginagina 2222
Unidad I: Ventajas y Desventajas de la POOUnidad I: Ventajas y Desventajas de la POO
Ventajas
• La abstracción de datos y el ocultamiento de la información aumentan la
confiabilidad y ayudan a separar la especificación de la implantación.
• El encadenamiento dinámico incrementa la flexibilidad.
• La herencia junto con el encadenamiento tardío permite la reusabilidad
aumentando así la productividad.
Desventajas
• El costo de tiempo de ejecución del encadenamiento tardío puede llegar a
ser importante dependiendo de la aplicación.
• La implantación con lenguajes orientados por objetos es más compleja
que con los lenguajes convencionales.
• El programador debe leer con frecuencia extensas librerías de clases.
23. EstucturasEstucturas de Datosde Datos PPááginagina 2323
Unidad I: TUnidad I: Téécnicas de Disecnicas de Diseñño e Implementacio e Implementacióón de TADn de TAD’’ss
• Basadas en el uso de variables estáticas y Arreglos o Vectores.
• Con una variable estática, la cantidad de memoria (espacio) ocupada debe ser
declarado por anticipado y no puede ser incrementado durante la ejecución del
programa si se necesitara más espacio de memoria.
• Un arreglo es una estructura estática dado que la cantidad exacta de memoria
se fija por anticipado con la declaración del tamaño del arreglo.
• Las estructuras estáticas de datos son útiles cuando se conoce de antemano
el número total de elementos a procesar o la cantidad máxima de éstos.
Estructuras Estáticas de Datos
1 2 3 4 5 .... n
X O B A L T
Primer
elemento
N-ésimo
elemento
24. EstucturasEstucturas de Datosde Datos PPááginagina 2424
Unidad I: TUnidad I: Téécnicas de Disecnicas de Diseñño e Implementacio e Implementacióón de TADn de TAD’’ss
• Basadas en Punteros y en colecciones variables de elementos (nodos).
• Un puntero es un tipo de dato simple que contiene la dirección de una
variable o estructura en vez de un valor de dato.
• Los punteros (apuntadores) permiten la creación de estructuras de datos
dinámicas, las cuales tienen la capacidad de variar en tamaño y ocupar tanta
memoria como utlicen realmente.
• Las variables que se crean y destruyen durante la ejecución del programa se
llaman variables dinámicas.
• Una estructura de datos dinámica es una colección de elementos llamados
nodos de la estructura –normalmente de tipo registro- que se enlazan o
encadenan en una secuncia determinada.
• El enlace entre nodos se establece asociando con cada nodo un puntero que
apunta al nodo siguiente de la estructura.
• Existen diferentes tipos de estructuras dinámicas de datos, siendo las más
significativas las listas enlazadas, los árboles y grafos.
Estructuras Dinámicas de Datos
25. EstucturasEstucturas de Datosde Datos PPááginagina 2525
Unidad I: TUnidad I: Téécnicas de Disecnicas de Diseñño e Implementacio e Implementacióón den de TADTAD’’ss
• Explique la relación entre los TAD’s en los lenguajes procedurales y las clases y
objetos en la POO.
• Da 3 ejemplos de jerarquía de especialización y 3 de composición o dependencias de
estructuras.
• Investigar las metodologías de diagramación para la programación orientada a
objetos.
• Realizar una pequeña investigación comparativa de los diferentes lenguajes de
programación (orientada a objetos) que existen, y su evolución:
– Historia
– Evolución
– Ventajas y desventajas.
– Conclusiones.
• ¿Cómo clasificaríamos el entorno de tu casa para que funcione correctamente?
– Pista: Clase base: la casa.Luego la recamara, la sala, el baño, la cocina, etc? Luego,
tomando la recamara: ¿qué hay en ella?.- cama, cómoda/closet, mesa, silla, etc.
Actividades de Investigación: