Estructuras de Datos Clase 1 - Introducción

Documentos relacionados
Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones

Construcciones del Lenguaje Java

Qué es Java? Un lenguaje de programación Un entorno de desarrollo Un entorno de aplicación Un entorno de despliegue Es similar en sintaxis de C + +.

Lenguaje de programación con JAVA

Parte I: Programación en un lenguaje orientado a objetos

Excepciones. Excepciones

Carlos Montenegro. Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas

Tema 4: Corrección y Robustez en C++ Programación Orientada a Objetos Curso 2008/2009 Begoña Moros Valle

Variables. Una variable no es más que un nombre simbólico que identifica una dirección de memoria: vs.

- Compilar y ejecutar programas en Java - Estructura básica de una clase - El comando javac - El comando java - Introducción al IDE de desarrollo

Examen Teórico Convocatoria de Junio de 2012

Interfaces. Amparo López Gaona. Septiembre de Amparo López Gaona () Interfaces Septiembre de / 1

PROGRAMACIÓN GENÉRICA

Unidad V. Ya veremos qué poner en "algunas_palabras" y "algo_más", por ahora sigamos un poco más.

TEMA 3. Árboles. Objetivos. Contenidos. Bibliografía. Básica

Introducción a Java LSUB. 30 de enero de 2013 GSYC

Universidad Salesiana de Bolivia

Repaso de las características más importantes de la programación Java y su adaptación a Android

VARIABLES, CONSTANTES Y EXPRESIONES ASIGNACIÓN. TIPOS ELEMENTALES. PRECEDENCIA DE LOS ESTRUCTURAS DE CONTROL. CONDICIONAL E

Unidad II. Fundamentos de programación en Java. Ing. José Luis Llamas Cárdenas

Java. Introducción a la Programación Orientada a Objetos

Conceptos Básicos. Programación Orientada a Objetos 2

GUÍA DOCENTE. Ingeniería Informática en Sistemas de Información Doble Grado:

INDICE Prologo 1 Recorrido rápido de java 2 Clases y objetos 3 Extensión de clases

TÉCNICO SUPERIOR UNIVERSITARIO EN TECNOLOGÍAS DE LA INFORMACIÓN Y COMUNICACIÓN ÁREA SISTEMAS INFORMÁTICOS

Tema 5 Corrección y Robustez Excepciones en Java

Estructuras de Datos y Algoritmos. Programa de la asignatura

Programación orientada a objetos

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

Estructuras de Datos Clase 14 Árboles binarios de búsqueda

HOJA DE EJERCICIOS 5 PROGRAMACIÓN CON EXCEPCIONES EN JAVA

Desde los programas más simples escritos en un lenguaje de programación suelen realizar tres tareas en forma secuencial.

Tipo de Datos Abstractos y Programación Orientada a Objetos

Unidad IV. Este tipo de codificación nos es permitido gracias a la sobrecarga, la cual se aplica a métodos y constructores.

DEFINICIONES BÁSICAS DE LAS ESTRUCTURAS DE DATOS

Estructuras de Datos Clase 6 Listas e Iteradores (primera parte)

Unidad Didáctica 1. Introducción a la Programación Orientada a Objetos (POO) Conceptos de clase, objeto e interfaz. Atributos y métodos

JAVA 1. Introducción

Tema 4. Excepciones en Java

Examen de Prácticas de Programación Ingeniería Informática

Taller de Programación I. Tema 10: Herencia en Java

ALGORITMICA Y PROGRAMACION POR OBJETOS I

Tema 6 Patrones de Diseño. Programación Orientada a Objetos Curso 2010/2011

Test : Conteste exclusivamente en una HOJA DE LECTURA ÓPTICA, no olvidando marcar que su tipo de examen es A.

ESTRUCTURAS DE DATOS II

Interface nominterface{

Introducción a Java. Dr. (c) Noé Alejandro Castro Sánchez

Objetivos. El alumno empleará el concepto de excepción en la programación orientada a objetos para el manejo de errores de ejecución.

Tipos Abstractos de Datos (TAD) Lección 1

Estructuras de control selectivas

Tema 1. Herencia y Polimorfismo

Aplicaciones de Escritorio

APUNTES PROII 2º PARCIAL.

o Los arreglos son colecciones ordenadas de datos del mismo tipo. o Ejemplos: 2

Tema: Funciones Virtuales y Polimorfismo.

NOMBRE DEL CURSO: Introducción a la Programación y computación 1

INTERACCION ENTRE OBJETOS

C.I.F.: B Inscrita en el Registro Mercantil de Madrid, Tomo Libro 0, Folio 135, Sección 8. Hoja M Inscripción 1ª

! Qué es la POO?! Un paradigma de programación. ! No hay paradigmas mejores ni peores! Todos tienen sus ventajas e inconvenientes

PROGRAMACIÓN ORIENTADA A OBJETOS 10/02/2009. Examen de Java. Nombre: DNI: Titulación:

Herencia y Polimorfismo

Algoritmos y Estructuras de Datos Iteradores. Guillermo Román Díez

REPASO ARRAYS O ARREGLOS UNIDIMENSIONALES EN JAVA. EJEMPLOS DE CÓDIGO. (CU00903C)

18. Interfaces Declaración de una interfaz

Concurso: Cuánto sabes de JAVA?

PROGRAMACIÓN EN JAVA

Modulo 11. Clases y Objetos en Java

Clases Abstractas e Interfaces

La implementación se realizará en Java, a partir de un diseño orientado a objetos del problema descrito.

Tema 2: Programación basada en Objetos

Identificadores, palabras reservadas, tipos de datos, operadores aritméticos y el sistema estándar de salida en Java

Academia de computación de IE, ICA e ISISA. Unidad didáctica Programación Orientada a Objetos

TIPOS DE DATOS (VARIABLES) EN JAVA. TIPOS PRIMITIVOS (INT, BOOLEAN, ETC.) Y OBJETO (STRING, ARRAY, ETC.) (CU00621B)

Edwin Andrés Cubillos Vega

Guillermo Román Díez

Unidad Didáctica 3. Tipos genéricos. Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos

Programación Orientada a Objetos. Conceptos Básicos

Tema 6- Estructuras de Datos: Jerarquía de. Tema 6- Estructuras de Datos: Jerarquía de una EDA

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

Ingeniería del Software Separación entre Presentación y Lógica del Negocio

UNIVERSIDAD DISTRITAL FRANCISCO JOSÉ DE CALDAS FACULTAD DE INGENIERÍA PROYECTO CURRICULAR DE INGENIERÍA INDUSTRIAL

abril de 2017 Desarrollo de aplicaciones en Java Tipos de datos primitivos Tipos de datos Elementos de aplicaciones simples

Docente: Juan Carlos Pérez P. Alumno : Fecha : Nota:

Transcripción:

Estructuras de Datos Clase 1 - Introducción Dr. Sergio A. Gómez http://cs.uns.edu.ar/~sag Departamento de Ciencias e Ingeniería de la Computación Universidad Nacional del Sur Bahía Blanca, Argentina

Trivia Asignatura: Estructuras de datos Profesor: Dr. Sergio Alejandro Gómez Email: sag@cs.uns.edu.ar Horarios: Teoría: Lunes y jueves de 16 a 18 hs (Aula 131 Alem) Práctica: Martes y jueves de 18 a 20 hs (Aula 131 Alem) Horario de consulta del profesor: A confirmar luego de la mudanza del DCIC. Horarios de laboratorio: A confirmar por la asistente (Lic. Ana Lucía Nicolini: aln@cs.uns.edu.ar) Estructuras de datos - Dr. Sergio A. Gómez 2

Bibliografía M.T. Goodrich & R. Tamassia. Data Structures and Algorithms in Java. Fourth Edition. John Wiley & Sons, 2006. Nota: El curso hará un énfasis importante en la lectura del libro. Adicionalmente se usarán apuntes de la cátedra o diapositivas en la práctica que se distribuirán oportunamente. Nota: Las diapositivas no son exhaustivas. Estructuras de datos - Dr. Sergio A. Gómez 3

Contexto curricular Resolución de Problemas y Algoritmos Introducción a la Programación Orientada a Objetos Estructuras de Datos Tecnología de Programación Estructuras de datos - Dr. Sergio A. Gómez 4

Motivaciones Estamos interesados en construir buenas estructuras de datos y buenos algoritmos. Estructura de datos = Manera sistemática de organizar y acceder datos. Algoritmo = Procedimiento paso a paso para realizar una tarea en una cantidad finita de tiempo. Estructuras de datos - Dr. Sergio A. Gómez 5

Objetivos Continuación y profundización de los conceptos vistos en IPOO. Aprendizaje de: Estructuras de datos (ED) fundamentales Elección de una estructura de datos para un dominio determinado Algoritmos asociados a las estructuras de datos Evaluación de algoritmos (orden de tiempo de ejecución) Estructuras de datos - Dr. Sergio A. Gómez 6

Factores de calidad del software Usaremos POO porque permite construir software de buena calidad. Cómo evaluar la calidad del software? Factores externos de calidad: Cualidad del software que puede ser detectada por un usuario (sin conocer el código fuente). Factores internos de calidad: Cualidad del software que puede ser percibida por el programador (conociendo el código fuente). Estructuras de datos - Dr. Sergio A. Gómez 7

Factores de calidad Correctitud: El programa respeta la especificación (para una entrada dada produce la salida esperada). Robustez: El programa es capaz de manejar entradas no contempladas por la especificación (se espera que se degrade graciosamente o gracefully ). Ej.: Recibe un string cuando espera un entero. Factor crítico en aplicaciones industriales. Extensibilidad: Capacidad de agregarle funcionalidad al sotfware. Estructuras de datos - Dr. Sergio A. Gómez 8

Factores de calidad Portabilidad: Habilidad del software de correr con mínimo cambio en otro hard o sistema operativo (por ello usamos Java). Reusabilidad: Capacidad de usar el código en la construcción de otros programas (con POO). Eficiencia: Capacidad del soft de requerir pocos recursos de cómputo (tiempo de CPU y memoria. Mmmm. Java?). Facilidad de uso: Capacidad del software para ser usado por usuarios con distinta habilidad (GUIs). Estructuras de datos - Dr. Sergio A. Gómez 9

Robustez: Excepciones Las excepciones son eventos inesperados que ocurren durante la ejecución de un programa. Puede ser el resultado de una condición de error o una entrada incorrecta. En POO las excepciones son objetos lanzados por un código que detecta una condición inesperada. La excepción es capturada por otro código que repara la situación (o el programa termina con error en ejecución). Estructuras de datos - Dr. Sergio A. Gómez 10

Excepciones: try-catch void método( parámetros formales ) { try {. sentencia_que_puede_producir_excepción();. } catch( tipo_excepcion e ) { código para manejar la excepción e } } Estructuras de datos - Dr. Sergio A. Gómez 11

Excepciones: Ejemplo Problema: Leer un entero pos y mostrar la componente pos del arreglo a, el doble y el triple. Estructuras de datos - Dr. Sergio A. Gómez 12

Excepciones: try-catch-finally try {. } catch( tipo_excepcion_1 e ) { código para manejar la excepción e } catch( tipo_excepcion_2 e ) { código para manejar la excepción e } finally { código que siempre se ejecuta } Estructuras de datos - Dr. Sergio A. Gómez 13

Excepciones: Ejemplo Estructuras de datos - Dr. Sergio A. Gómez 14

Cómo crear nuestras excepciones Las excepciones son subclases de la clase Exception de Java. Los métodos deben especificar en su signatura las excepciones que pueden lanzar: tipo método( parámetros formales ) throws clase_excepción Una excepción se lanza desde una sentencia throw: throw new clase_excepción( parámetros actuales ); Ejemplo: Programar una clase persona. Una persona tiene un nombre y una edad. La edad debe ser un número positivo. Crearemos una excepción PersonaException para lanzar cuando el cliente ingresa una edad negativa en el constructor. Estructuras de Datos - Dr. Sergio A. Gómez 15

Estructuras de datos - Dr. Sergio A. Gómez 16

Estructuras de Datos - Dr. Sergio A. Gómez 17

Propagación de excepciones por la pila de registros de activación Las excepciones no manejadas se propagan al llamante. Estructuras de Datos - Dr. Sergio A. Gómez 18

Interfaces Una interfaz es una colección de declaraciones de métodos. public interface nombre_interfaz { public tipo método 1 ( parámetros formales ) throws excepciones;... public tipo método n ( parámetros formales ) throws excepciones; } Estructuras de datos - Dr. Sergio A. Gómez 19

Implementación de interfaces Una clase que implementa una interfaz debe implementar todos los métodos provistos por la interfaz. public class mi_clase implements nombre_interfaz {. Lista de atributos public mi_clase() { código del constructor } public tipo método 1 ( parámetros formales ) throws excepciones { código del método }... public tipo método n ( parámetros formales ) throws excepciones { código del método } } Estructuras de datos - Dr. Sergio A. Gómez 20

Estructuras de datos - Dr. Sergio A. Gómez 21

Implementación de más de una interfaz La clase ItemEmpacado implementa las interfaces Vendible y Transportable: Herencia múltiple de interfaces La interfaz ItemAsegurable extiende a las interfaces Vendible y Transportable y las extiende con el método valorasegurado: Estructuras de Datos - Dr. Sergio A. Gómez 22

Clases Wrapper En ocasiones es muy conveniente poder tratar los datos primitivos (int, boolean, float, char, etc.) como objetos. Las clases wrapper existentes son, Byte para byte, Short para short, Integer para int, Long para long, Boolean para boolean, Float para float, Double para double y Character para char. Observe que las clases envoltorio tienen siempre la primera letra en mayúsculas. Nota: Las classes wrapper no están pensadas para actualizar los valores envueltos. Las clases wrapper se usan como cualquier otra: Integer i = new Integer(5); int x = i.intvalue(); Estructuras de Datos - Dr. Sergio A. Gómez 23

Genericidad (pre Java 5) Problema: Implementar una colección genérica. Para ello utilizaremos como estructura de datos subyacente un arreglo de objects Estructuras de datos - Dr. Sergio A. Gómez 24

Genericidad (pre Java 5) Estructuras de datos - Dr. Sergio A. Gómez 25

Genericidad (pre Java 5) Resolución de Problemas y Algoritmos - Dr. Sergio A. Gómez 26

Genericidad (pre Java 5) Problemas del acercamiento: Hay que realizar castings explícitos para recuperar elementos de un conjunto. No hay manera de garantizar la homogeneidad de los elementos del conjunto Ej: Estructuras de Datos - Dr. Sergio A. Gómez 27

Genericidad paramétrica (Java 5 y posterior) Java 5.0 incluye un framework de genericidad para usar tipos de dato abstracto que evitan casting explícito. Un tipo genérico es un tipo que no es definido en compilación sino en tiempo de ejecución y permite definir una clase en función de parámetros formales de tipo que abstraen los tipos de algunos datos internos de una clase. Dada una clase genérica, vamos instanciar objetos usando parámetros actuales de tipo. Estructuras de datos - Dr. Sergio A. Gómez 28

Generidad paramétrica Problema: Programar una clase para representar un par ordenado que permita almacenar dos valores de cualquier tipo. La clase será genérica, se llamará Pair y estará parametrizada en términos de los tipos de las dos componentes del par. Estructuras de datos - Dr. Sergio A. Gómez 29

Estructuras de datos - Dr. Sergio A. Gómez 30

Usando la clase Pair Utilizaremos la clase par ordenado para crear: un par de tipo (string, número real) y le almacenaremos el par ( Sergio, 3.14) Un par de tipo (entero, carácter) y le almacenaremos el par ( 8, b ) Un par de tipo (persona, persona) y le almacenaremos a Juan de 20 años como primera componente y a Tito de 40 años como segunda. Estructuras de Datos - Dr. Sergio A. Gómez 31

Notas: 1) Se deben usar tipos de clase como parámetro actual de tipo (i.e., no tipos básicos) 2) Observe cómo funciona el autoboxing en los constructores. Estructuras de datos - Dr. Sergio A. Gómez 32

Conjunto con genericidad paramétrica Problema: Implementar una colección genérica. Para ello utilizaremos como estructura de datos subyacente un arreglo de elementos de tipo E Luego crearemos un conjunto de enteros con el contenido { 1, 2 }. Luego crearemos otro conjunto de caracteres con los elementos { a, b }. Estructuras de datos - Dr. Sergio A. Gómez 33

Conjunto con genericidad paramétrica Estructuras de Datos - Dr. Sergio A. Gómez 34

Estructuras de Datos - Dr. Sergio A. Gómez 35

Sumario Horarios Contexto curricular Objetivos Factores de calidad Excepciones Interfaces Clases Wrapper Genericidad Clase basada en Capítulos 1 y 2 de Goodrich y Tamassia Estructuras de Datos - Dr. Sergio A. Gómez 36