Arrays, Cadenas y Vectores Tipos Genéricos

Documentos relacionados
Tema 3. Tipos List y Set

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

Bloque II. Elementos del lenguaje de programación Java

Práctica 2. Reutilización de código Elementos básicos del lenguaje Java Definición de variables, expresiones y asignaciones

Diseño de tipos Igualdad, representación, código, copia y relación de orden

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

Manipulación de Cadenas Introducción a los conceptos de clase e objetos. Nadjet Bouayad-Agha Programación

Examen Teórico Convocatoria de Junio de 2012

Estructura de datos y Programación

Unidad II Tema 3: Tratamiento de arreglos y cadenas en Java

Unidad Didáctica 6. Tipos List y Set con tipos genéricos. Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos. Versión 1.0.

Informática Lección 5. Arreglos (vectores) Curso Pedro Álvarez y José Ángel Bañares 2/11/2010. Dpto. Informática e Ingeniería de Sistemas.

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

FUNDAMENTOS DE PROGRAMACIÓN Versión: Tema 2. Elementos del lenguaje Java

Lección 2: Creando una Aplicación en Java. 1. Estructura del archivo de una clase. 3. Definiendo clases fundamentos

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

Datos Elementales y formato de un programa en Java

Introducción a Java. Fernando Cerezal López. 24 Noviembre 2005

Estructuras de control selectivas

Introducción a la Programación

Clases abstractas e interfaces en Java

Sesión 6. TEMA 8 COMPORTAMIENTO AVANZADO CON OBJETOS

PARTE TEÓRICA - TEST [2,5 PUNTOS]:

Tema 3. Repaso de primero Análisis y Diseño de Algoritmos

Programación Orientada a Objetos con Java. Elementos Básicos del Lenguaje Java. Creación de un objeto. Creación de un objeto. Creación de un objeto

Introducción a la Programación

Construcciones del Lenguaje Java

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

Examen Teórico. Convocatoria de Febrero de 2015

Concurso: Cuánto sabes de JAVA?

Examen Teórico. Convocatoria de Julio de 2015

Computación Geométrica Colecciones en Java

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

Tema 1. Herencia y Polimorfismo

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

int[] nombrearray1; int nombrearray2[];

Unidad Didáctica 10. Concepto de Tipo y Subtipo Diseño e Implementación. Versión 1.0.0

PROGRAMACIÓN ORIENTADA A OBJETOS (L40629) Sabino Miranda-Jiménez

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 + +.

! 16 bit en vez de los 7 u 8 bits que ofrece ASCII. ! Tipo char. ! Los valores se expresan entre comillas simples: a, 4, # !

El programa P1 tiene como objetivo imprimir cada uno de los caracteres de una cadena en una línea, como por ejemplo: h o l a

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

Java para programadores

Seminario 1 Introducción a Java PROGRAMACIÓN 3

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

Ejercicio de Programación Orientada a Objetos Curso 2016/2017 Exámenes

a) Reescribir P1 introduciendo un error sintáctico (de compilación), otro de ejecución, y

Elementos léxicos del lenguaje de programación Java

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

PRÁCTICA No3 POO Arreglos. El alumno conocerá el manejo de arreglos y manipulación de cadenas para la solución de problemas de ingeniería

Fundamentos de Programación

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

Introducción a la Programación VIII. Strings. Carácter. Tabla ASCII. Generación. String 3/16/11. Curso de Programación en Java

PROGRAMACIÓN GENÉRICA

Programación orientada a objetos

Prueba N o 1. Programación II

Clases Abstractas e Interfaces

Programación Tema 3: Tipos y expresiones simples. Programación DIT-UPM

Programación Tema 9: Bibliotecas y Colecciones. Programación DIT-UPM

Clases en Java. Declaración

Programación de sistemas Listas enlazadas

PROGRAMACIÓN EN JAVA. { una línea para definir, crear o ejecutar ; }

Examen Teórico. Convocatoria de Febrero de 2016

Prácticas de Programación

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

8. Colecciones e iteradores

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

Java Básico. Estructuras de Datos 1. Copyright

TEMA 7. ARRAYS (LISTAS Y TABLAS).

Guía - Taller # 2 (JAVA)

STRINGBUFFER, STRINGBUILDER JAVA. EJEMPLO. DIFERENCIAS ENTRE CLASES. CRITERIOS PARA ELEGIR. MÉTODOS. (CU00914C)

Tema 2. El lenguaje de programación Java (Parte 1)

Tema 4- Representación Enlazada

Tema 2.- Objetos y mensajes

Herencia Java y Servicios Web I Master en Ingeniería Matemática

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

HOJA DE EJERCICIOS 5 PROGRAMACIÓN CON EXCEPCIONES EN JAVA

Fundamentos de Programación

c) Explicar qué es un BreakPoint en Netbeans y para qué sirve. 0,5 punto

Examen de Programación II (Ingeniería Informática)

El programa P1 tiene como objetivo imprimir cada uno de los caracteres de una cadena en una línea, como por ejemplo: h o l a

Práctica 8. Diseño de tipos: clase PolinomioEntero. Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos. Versión 1.0.

Arreglos. Un arreglo es un objeto en el que se puede almacenar un conjunto de datos de un mismo tipo.

Fundamentos de Programación

Examen Teórico. Convocatoria de Febrero de 2018

FUNDAMENTOS DE INFORMÁTICA

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

Prácticas de Programación

Programación Orientada a Objetos. Orientación a Objetos en Java

Colecciones e iteradores

Ejercicio 1 (proyecto prlistas, paquete listas)

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

2ª Parte: Problemas (5 puntos sobre 10)

Programación orientada a objetos. Resumen de Temas Unidad 5: Herencia

Algoritmos y Programación Orientada a Objetos I. Contenedoras de tamaño variable y uso de ciclos en otros contextos

Tema 4. Control de flujo. Programación Programación - Tema 4: Control de Flujo

Transcripción:

Unidad Didáctica 5 Arrays, Cadenas y Vectores Tipos Genéricos Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión 1.2.1

Introducción Según lo visto hasta ahora Cómo representaría N vectores en el espacio 3D? : Integer v1_x=1, v1_y=4, v1_z=6; Integer v2_x=7, v2_y=3, v2_z=5; Todo L.P. hace posible agrupar varios valores en una misma variable Al reducir el nº de variables los programas son más fáciles de desarrollar, entender y, por tanto, mantener Integer[ ] v1 = {1, 4, 6; Integer[ ] v2 = {7, 3, 5; Z v1 Y v2 X

Arrays: definición Un array es un conjunto finito de elementos del mismo tipo almacenados en posiciones consecutivas de memoria. Dado que: A: Todos los elementos de un mismo tipo requieren los mismos bytes. B: Siempre se conoce la dirección de memoria de una variable. A y B hacen posible el acceso directo a los elementos de un array. El acceso directo permite acceder y modificar cualquier elemento del array del mismo modo que una variable independiente. El acceso directo en los arrays se lleva a cabo por indexación mediante el operador corchete: [ ] Cada elemento de un array de tamaño N tiene asociado un índice: El primer elemento tiene índice 0 y el último tiene índice N 1 Los arrays pueden contener elementos de cualquier tipo, arrays inclusive. Un array es un objeto y su tamaño no puede cambiarse tras crearse.

Arrays: inicialización int[ ] v1 = {2, 34, 5; /* v1 es un array con 3 elementos de tipo básico int: el primer elemento es 2, el segundo es 34 y el tercero es 5 */ Integer[ ] v2 = new Integer[7]; // v2 es un array vacío con capacidad para 7 elementos de tipo objeto Integer double[ ] v3; // v3 es un array de elementos de tipo básico double Diferencias entre v1, v2 y v3: v1 está inicializado ( tiene valores ) v2 no está inicializado ( no tiene valores ) v3 no es un array todavía (v3==null)

Arrays: operaciones Suponiendo: int[ ] v1 = {2, 34, 5; Integer[ ] v2 = new Integer[7]; Acceso a un elemento: int x = v1[0]; // x==2 Integer y = v2[0] ; // y==null (NULO, SIN VALOR) x=v1[-2]; y=v2[7]; MAL (ArrayIndexOutOfBoundsException) Modificación de un elemento: v2[0] = v1[1]; // Autoboxing Consultar el tamaño: int tams = v1.length + v2.length; // tams es una variable de tipo básico int inicializada con el valor 10 (3+7)

Arrays de dos dimensiones int[ ][ ] m1 = {{3, 7, 4, {2, 5, 9; /* m1 es un array de arrays que alberga 2 arrays con 3 elementos int cada uno. m1 representa a una matriz rectangular de enteros con 2 filas y 3 columnas */ int x = m1[0][1]; // x==7 Integer[ ][ ] m2 = new Integer[7][ ]; // m2 es una matriz que tendrá 7 filas, pero ninguna fila está creada todavía m2[3] = new Integer[8]; // la cuarta fila de m2 está creada pero no está inicializada Integer y = m2[3][6]; // y==null, no existe el elemento y = m2[5][1]; MAL (ArrayIndexOutOfBoundsException)

Arrays de objetos tablapuntos tablapuntos [0] = new PuntoImpl(1.0,1.0); tablapuntos [1] = new PuntoImpl(1.0,2.0); tablapuntos [2] = new PuntoImpl(1.0,3.0); tablapuntos [3] = new PuntoImpl(1.0,4.0); 1.0 1.0 1.0 2.0 1.0 3.0 1.0 4.0 2.0 5.0 tablapuntos [3] = new PuntoImpl(2.0,5.0); tablapuntos = new PuntoImpl[5];

String Representan cadenas de caracteres Clase perteneciente al lenguaje (paquete java.lang) ENCAPSULA un array de elementos de tipo char y le añade funcionalidad Los objetos de tipo String son INMUTABLES La clase String no puede tener clases hijas Un literal (valor) String es toda secuencia de caracteres UNICODE encerrada entre dobles comillas ( )

String: ejemplo de uso Inicialización: String saludo = Hola ; Consultar el número de caracteres: int tam = saludo.length(); // tam==4 Pasar a mayúsculas: String s2 = saludo.touppercase(); // HOLA Comparar dos cadenas: boolean iguales = saludo.equals(s2); //iguales==false

String: métodos de uso frecuente public final class String { public int length( ) { public char charat(int i) { public String concat(string s) { public boolean contains(charsequence s) { public int indexof(int c) { public String substring(int i1, int i2) { public String replace(char c1, char c2) { public String trim( ) { public String tolowercase( ) { public String touppercase( ) {. public boolean equals(object o) {

Vector Clase perteneciente al paquete java.util (IMPORTAR) ENCAPSULA un array de OBJETOS y le añade funcionalidad. Los vectores tienen capacidad "ilimitada" Los vectores no pueden albergar tipos básicos. Todos los elementos de un vector deben ser del mismo tipo: O bien ser creados todos con la misma clase, O bien ser creados con clases que implementen una interfaz común.

Vector: ejemplo de uso Inicialización: Vector<Double> v = new Vector<Double>(); Consultar el número de elementos: int tam = v.size(); // tam==0 Añadir un elemento al final: v.add(2.7); Añadir un elemento al principio: v.add(0, 4.9); Obtener un elemento según su índice: Double x = v.get(1); // x==2.7 Modificar un elemento según su índice: v.set(1, 3.5); Comprobar si contiene un elemento: boolean contiene = v.contains(2.7); //contiene==false

Vector: métodos de uso frecuente public class Vector<T>... { public Vector( ) { public int size( ) { public T get(int index) { public T set(int index, T element ) { public boolean add(t element ) { public void add(int index, T element ) { public boolean isempty( ) { public boolean contains(object o) { public int indexof(object o) { public boolean equals(object o) {

Tipos genéricos: concepto Un parámetro genérico T representa a un tipo conocido en la definición de una clase o interfaz public class Vector<T>... { private T[ ] elems; public class TestGenerico extends Test { public Vector( ){ public static void main(string[] args) { public T get(int index) { Vector<Integer> v; public T set(int index, T element v.add(6); ) { public boolean add(t element mostrar(v); ) { public void add(int index, T element ) { Los parámetros genéricos deben sustituirse por tipos concretos para poder usar objetos de tal clase o interfaz

Tipos genéricos: sintaxis Si una interfaz tiene métodos genéricos se indica con <*> tras su nombre Si una clase tiene atributos genéricos se indica con <*> tras su nombre * = Un solo tipo genérico se indica con T, varios tipos genéricos se indican con T1, T2, T3, interface Comparable<T> { int compareto(t e); public class ParejaImpl<T1,T2> { private T1 e1; private T2 e2;

Tipos genéricos: sintaxis Si una clase no tiene atributos genéricos pero implementa métodos genéricos, estos se indican tras sus modificadores public class TestGenerico2 extends Test { public class Utiles { public static void main(string[] args) { Integer x = 3; public static <T>Vector<T> avector(t a) { String s = "Hola"; Vector<T> v = new Vector<T>(); v.add(a); return v; Vector<Integer> v1 = Utiles.aVector(x); Vector<String> v2 = Utiles.aVector(s); mostrar(v1); mostrar(v2); En un método genérico al menos uno de sus parámetros o su tipo de retorno pueden cambiar en distintas llamadas al método

Tipos genéricos: sintaxis Un atributo genérico se concretará al crear o instanciar un objeto de la clase a la que pertenece el atributo public class ParejaImpl<T1,T2> { private T1 e1; private T2 e2; public class TestGenerico3 extends Test { public static void main(string[] args) { Pareja<Integer, String> p = new ParejaImpl<Integer, String>( );

Tipos genéricos: consideraciones Los operadores con un tipo como operando NO admiten tipos genéricos. Ejemplo: instanceof NO es posible: constructores de un tipo T Inicializar arrays de un tipo T a instanceof Vector // bien (tipo crudo) a instanceof Vector<T> // mal a instanceof T // mal T a = new T( ); // mal T[ ] = new T[10]; // mal T a = (T) new Object(); // warning