Marzo 2007 Lenguajes Visuales Clase III.

Slides:



Advertisements
Presentaciones similares
Técnicas avanzadas en java 1.4 y java 5.0
Advertisements

Curso de java básico (scjp)
INTELIGENCIA ARTIFICIAL
Complejidad Computacional
Curso de java básico (scjp)
Curso de java básico (scjp)
CJ02 – Técnicas avanzadas en java 1.4 y 5.0
Lenguaje de programación Java
Clases Extendidas La clase extendida hereda los campos y métodos de la clase de la cual extiende. La clase original se conoce como superclase y la clase.
Unidad 5 Listas Enlazadas Bibliografía: Algoritmos y Estructuras de datos de Aguilar y Martinez. Unidad 9 Autor: Ing Rolando Simon Titiosky.
Listas enlazadas c++ Prof. Franklin Cedeño.
Programación II Listas
Lenguaje de consulta de Hibernate
Capitulo 3 Java util.
Genéricos en Java Jaime Ramírez, Ángel Lucas González
Árboles binarios. Algoritmos básicos
Tratamiento de listas en Java
1.2 Sintaxis del lenguaje Java.
Rosalía Laza Fidalgo Reyes Pavón Rial Curso
Abstracción de Datos La abstracción es un recurso fundamental en la programación orientada a objetos y está además fuertemente ligado a reusabilidad.
Programación Orientada a Objetos en Java
Oscar Bedoya. Edificio 331, 2º piso, E.I.S.C. Estructuras de datos y algoritmos.
Genericidad Los datos de aplicaciones muy diferentes puede modelarse con frecuencia a partir de tipos de datos cuyas operaciones no dependen del tipo de.
Herramientas para el acceso directo a memoria en C++
Manipulación de caracteres e hileras de texto
Archivos Contenido: Archivos de Texto Archivos de Acceso Aleatorio
Tema 7: Polimorfismo Antonio J. Sierra. Índice Introducción. Sobrecarga de métodos. Objetos como parámetros. Paso de argumentos. Devolución de objetos.
Herencia e Interfaces.
JAVA 1.5 Fernando Almeida Octubre Introducción Java Specification Request (JSR) 14Java Specification Request (JSR) 14 propone introducir tipos y.
Programación Orientada a Objetos usando C++
Medio de tele-comunicación
POO Java Módulo 3 Elementos de programas Identificadores
Herencia y Polimorfismo en JAVA
Definición Estructura de datos jerárquica (no lineal) que puede representarse como un conjunto de nodos enlazados entre sí por medio de ramas. Formalmente,
Lic. Rosemary Torrico Bascopé
Slide 7-1 Copyright © 2003 Pearson Education, Inc. Figure: Estructuras de datos.
Clases y objetos La unidad fundamental de programación OO son las clases. Conjunto de métodos y semántica Qué se va a hacer POO Clase: que define la implementación.
Igor Santos Grueiro. De este tipo de pilas NO vamos a hablar.
Tema 6: Clases Antonio J. Sierra.
Tablas hash Juan Ramón Pérez Pérez Prácticas EDI - © Juan Ramón Pérez.
1 Herencia en Java Agustín J. González Diseño y Programación Orientados a Objetos.
Variables polimórficas (plantillas): definición, uso y aplicación
 2003 Prentice Hall, Inc. All rights reserved. 1 Capítulo 6: Clases y Abstracción de Datos Índice del capítulo 6.1 Introducción 6.2 Estructuras 6.3 Clases.
Técnicas avanzadas de programación Interfaces
Colecciones.
Programación orientada a objetos
Patrón Observador Un patrón de diseño es una descripción de clases y objetos comunicándose entre si adaptada para resolver un problema de diseño general.
Matrices Es una estructura homogénea, compuesta por varios elementos, todos del mismo tipo y almacenados consecutivamente en memoria A cada elemento se.
Jerarquía de Clases: Herencia, Composición y Polimorfismo
Curso Programación en Java
7. Interfaces Herencia múltiple Interfaces Comparable y Comparator
7.  El TDA Diccionario.
ESTRUCTURA DE DATOS EN JAVA
Arboles M.C. José Andrés Vázquez FCC/BUAP
El lenguaje de programación Java
SCJP SUN CERTIFIED PROGRAMMER FOR JAVA 6. SCJP 6.0 SEMANA SIETE GENERICOS Y COLECCIONES.
Herramientas de polimorfismo y herencia en C++
Árboles Binarios Estructuras de Datos.
El lenguaje de programación Java1 8. Colecciones e iteradores - interfaz Collection - clases ArrayList, LinkedList, HashSet, TreeSet - interfaz Map - clases.
Colecciones en JAVA José Luis Redondo García.
Unidad 2.1: INTRODUCCIÓN A LA ORIENTACIÓN A OBJETOS.
Presentado por: PABLO ANDRES DIAZ SAIN HASSAM CAICEDO
Detalles Generales sobre Java
Algoritmos y Programación III 4. Colecciones, excepciones Carlos Fontela, 2006.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Tipo.
ARRAYS Y COLECCIONES DE DATOS. ARRAYS Arrays – Matriz – Vector Elemento del lenguaje que nos permite agrupar un conjunto de valores del mismo tipo, y.
ESTRUCTURAS DE DATOS “Conceptualización de estructuras de datos” Por: Eduardo Robayo.
1 ListaUna Lista se define como una serie de N elementos E 1, E 2,..., E N, ordenados de manera consecutiva, es decir, el elemento E k (que se denomina.
Factorías e Iterables Introducción del concepto de patrón de diseño Construcción de tipos para recorridos con for extendido Fundamentos de Programación.
Lenguaje de Programación II Prof. Rafael Montenegro B. Carrera: T.S.U en Informática Periodo: 2014-I.
Transcripción de la presentación:

Marzo 2007 Lenguajes Visuales Clase III

Estructuras de datos Estructuras estáticas. Estructuras dinámicas. Marzo 2007 Estructuras de datos Estructuras estáticas. Arreglos simples. Arreglos de arreglos. Estructuras dinámicas. Colecciones. Sin elementos duplicados. Con elementos duplicados. Listas ordenadas. Diccionarios. Arboles. Marzo 2007 Godio - López - Cancela

Estructuras estáticas Marzo 2007 Estructuras estáticas Los arreglos son estructuras que permiten contener varios valores del mismo tipo. La longitud del arreglo (cantidad de valores) se establece en el momento de la declaración de la estructura. Una vez creada la estructura es de longitud fija. En los arreglos multidimensionales cada elemento de la dimensión es una referencia a otro arreglo con su propia dimensión. El concepto de matrices está representado por estructuras de arreglos de arreglos en los cuales cada elemento de la primera dimensión es una referencia a otro arreglo, todos de la misma longitud. Marzo 2007 Godio - López - Cancela

Declaración de arreglos. Marzo 2007 Declaración de arreglos. Arreglos de una dimensión. int[ ] arr1; // declara a un arreglo de int. arr1 = new int[10]; // dimensiona un arreglo de 10 int. int[10] arr2 = new int[10]; // declara y dimensiona. int[ ] arr3 = { 7, 2, 14, 8 }; // declara, dimensiona e inicializa Arreglos de arreglos. int[ ][ ] mat1; mat1 = new int[4][3]; int[2][ ] mat2; mat2[0] = new int[4]; mat2[1] = new int[3]; int[ ][ ] mat3 = { { 3, 8 }, {12, 1, 7 }, { 19 } }; Marzo 2007 Godio - López - Cancela

Marzo 2007 Recorrido de Arreglos La propiedad length indica la cantidad de elementos que un arreglo posee en una determinada dimensión: arreglo.length ; Cada elemento se referencia subindicando la posición del arreglo: arreglo[ posición] ; Ejemplo del recorrido de todos los elementos de un arreglo: for (int i = 0 ; i < arreglo.length ; i++ ) { arreglo[ i ] … } Ejemplo del recorrido de todos los elementos de un arreglo de arreglos: for (int j = 0 ; j < arreglo[ i ].length ; j++ ) arreglo[ i ] [ j ] … Marzo 2007 Godio - López - Cancela

Marzo 2007 Arreglos de objetos Se declaran y dimensionan de la misma forma que los de tipos por valor. Cada elemento debe instanciarse. Object[ ] objetos = new Object[ 3 ]; objetos[0] = new String(“abc”) ; objetos[1] = new Integer( 10 ) ; objetos[2] = new Double( 30.25 ); Se recorren de la misma forma. for (int i = 0 ; i < objetos.lenght ; i++) { Object o = objetos[ i ] ; } Marzo 2007 Godio - López - Cancela

Genéricos Son tipos parametrizados que permiten definir colecciones para cualquier el tipo de dato. Sin utilizar parámetros: List nombres = new ArrayList(); nombres.add(“Juan”); nombres.add(“Ana”); … Object o = nombres.get(0); String s = (String) o; El elemento debe ser convertido a String al ser todos Objects. Utilizando parámetros List<String> nombres = new ArrayList <String>(); Se define una lista de Strings nombres.add(“Juan”); nombre.add(“Ana”); … String s = nombres.get(0); No es necesario convertirlos al ser todos Strings. El tipo de dato del genérico se indica cuando se declara la estructura. Marzo 2007 Godio - López - Cancela

Genéricos Identificación y tipos de parámetros: E : parámetro que identifica al elemento de la colección. K : parámetro que identifica al elemento clave de la colección. V : parámetro que identifica al valor que apunta la clave. T : parámetro que identifica un conjunto de valores. . . . Son utilizados en la definición de una clase que permita instanciarse con tipos genéricos. Marzo 2007 Godio - López - Cancela

Genéricos Definición de clases genéricas Indicar en la declaración de la clase el tipo de genérico que reconoce: class Lista<E> class Diccionario<K,V> Indicar el tipo de dato genérico a los miembros de la clase. private E item; public E getItem() { return item; } public void setItem(E item) { this.item = item; } private K clave; private V valor; public K getClave() { return clave; } public V getValor() { return valor; } Marzo 2007 Godio - López - Cancela

Marzo 2007 Colecciones El manejo que realiza la VM de las colecciones se representa mediante la siguiente arquitectura: Interfaces. Son los tipos abstractos que representan la colección. Implementaciones. Son las implementaciones concretas de la interfaz de la colección. Definen estructuras reusables. Algoritmos. Métodos depurados para ejecutar eficientemente un proceso, como los algoritmos de búsqueda y ordenamiento. Estos son polimórficos, para poder ser adoptados por distintas colecciones. Marzo 2007 Godio - López - Cancela

Colecciones - Interfaces Jerarquía de las Interfaces Marzo 2007 Godio - López - Cancela

interface Collection Es la ruta de todas las colecciones. Marzo 2007 interface Collection Es la ruta de todas las colecciones. Representa un grupo de objetos conocidos como elementos. Define el siguiente comportamiento (código parcial): public interface Collection<E> extends Iterable<E> { int size(); boolean isEmpty(); boolean contains(Object element); boolean add(E element); boolean remove(Object element); Iterator iterator(); void clear(); . . . } Marzo 2007 Godio - López - Cancela

Recorrido de una colección Marzo 2007 Recorrido de una colección Una colección puede ser recorrida: Bloque for-each. Objeto Iterator. Bloque for-each es una particularidad del bloque for. Sintaxis: for ( elemento : colección) … for ( Object o : coleccion ) { o.toString( ) } Las colecciones permiten la implementación de un Iterador. La interface Iterator<E> define el siguiente comportamiento: public interface Iterator<E> { boolean hasNext( ); E next( ); void remove( ); } Implementación de un iterador: for ( Iterator i = c.iterator( ); i.hasNext( ); ) { System.out.println(i.next()); Marzo 2007 Godio - López - Cancela

interface Map Representa a los diccionarios. Marzo 2007 interface Map Representa a los diccionarios. No permiten elementos duplicados. Define una clave que mapea al elemento. Define el siguiente comportamiento (código parcial): public interface Map { V put(K key, V value); V get(Object key); V remove(Object key); boolean containsKey(Object key); boolean containsValue(Object value); int size(); boolean isEmpty(); void clear(); . . . } Marzo 2007 Godio - López - Cancela

Colecciones - Implementaciones Marzo 2007 Colecciones - Implementaciones Las interfaces de las colecciones se implementan en las siguientes clases: (lista parcial) interface Set class HashSet class TreeSet interface List class ArrayList class LinkedList interface Map class HashMap class TreeMap Marzo 2007 Godio - López - Cancela

Manejo de una List (implementando ArrayList) Marzo 2007 Manejo de una List (implementando ArrayList) Declaración de una lista de elementos enteros. List<Integer> lista = new ArrayList<Integer>( ); Agregar un elemento al final de la lista. lista.add( 20 ); Insertar un elemento en determinada posición. lista.add( 0, 6 ); Buscar un elemento en la lista. If ( lista.contains( 20 ) ) // existe Eliminar un elemento en la lista. lista.remove( 20 ) ; Eliminar todos los elementos en la lista. lista.clear( ) ; Obtener un elemento en determinada posición. lista.get( posicion ) ; Marzo 2007 Godio - López - Cancela

Manejo de un Set (implementando HashSet) Marzo 2007 Manejo de un Set (implementando HashSet) Declaración de un set de elementos enteros. Set<Integer> set = new HashSet<Integer>( ); Agregar un elemento al final del set. set.add( 20 ); Buscar un elemento en el set. If ( set.contains( 20 ) ) // existe Eliminar un elemento del set. set.remove( 20 ) ; Eliminar todos los elementos del set. If ( ! Set.isEmpty( ) ) set.clear( ) ; Asociar un Iterador a la colección set. Iterator i = set.iterator( ) ; Marzo 2007 Godio - López - Cancela

Manejo de un Map (implementando TreeMap) Declaración de un TreeMap. SortedMap<String,String> map = new TreeMap<String,String>( ); Agregar un elemento. map.put( “lu”, “Lunes” ); Buscar un elemento por el valor. If ( map.containsValue( “Lunes” ) ) // existe Buscar un elemento por la clave. If ( map.containsKey( “lu” ) ) // existe Eliminar un elemento. map.remove( “lu” ); Eliminar todos los elementos. map.clear( ); Recorrer un TreeMap. Set keys = map.keySet( ); // obtiene el set de claves for ( Iterator i = keys.iterator( ); i.hasNext( ); ) { String key = i.next(); // obtiene la clave map.get( key ); // obtiene el valor } Marzo 2007 Godio - López - Cancela

Objetos auto referenciados Son los elementos de las estructuras dinámicas Implementación de un OAR: Definir una clase parametrizada. Debe estar compuesta por: Un item de tipo genérico. Una o mas referencias a objetos de la misma clase. Definir constructores. Implementar encapsulamiento. < E > < E > < E > Marzo 2007 Godio - López - Cancela

Objetos auto referenciados La clase Nodo<E> define un OAR Una colección de objetos Nodo<E> puede componer estructuras de datos simplemente enlazadas. El objeto parametrizado E item define la utilización de genéricos para las estructuras que tengan que implementarlo. La referencia siguiente de tipo Nodo<E> determina a otro objeto de la misma clase como miembro de ésta. Los restantes métodos conforman el encapsulamiento. public class Nodo<E> { private E item; private Nodo<E> sigiente; public Nodo(E item) { this.item = item; siguiente = null; } public Nodo(E item, Nodo<E> sig) { this.siguiente = sig; public E getItem() { return item; // métodos get y set Marzo 2007 Godio - López - Cancela

Estructuras auto referenciadas Una estructura dinámica encadena sus valores con objetos auto referenciados. Estructuras básicas: Pila Cola Lista simple Estructuras complejas Lista doblemente enlazada Diccionario Arbol binario Estructuras avanzadas Arbol balanceado Cola de prioridades Arboles disjuntos Marzo 2007 Godio - López - Cancela

Estructuras auto referenciadas Pila: Estado actual: Agregar: Eliminar Código: Declaración del Nodo<E> private Nodo<E> nodo; Agregar public void insertar(E item) { nodo = new Nodo<E> ( item, nodo ); } Eliminación public E eliminar() { … E item = nodo.getItem(); nodo = nodo.getSiguiente(); return item; nodo 8 12 nodo 44 8 12 nodo 44 8 12 Marzo 2007 Godio - López - Cancela

Estructuras auto referenciadas La clase Nodo<E> define al OAR. La interface Ipila<E> define el TDA. La clase Pila resuelve la EAR. La clase EstructuraVaciaException define la excepción que debe lanzarse cuando no se pueda aplicar el método por encontrarse la estructura vacía. Pila<E> tope : Nodo<E> { IPila<E> Exception + vacia( ) : boolean + obtener( ) throws Ex : E + eliminar( ) throws Ex : E + insertar(E item) : void Nodo<E> EstructuraVaciaException item : E - sig : Nodo<E> Marzo 2007 Godio - López - Cancela