La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

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

Presentaciones similares


Presentación del tema: "Arrays, Cadenas y Vectores Tipos Genéricos Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Unidad Didáctica 5 Versión 1.2.1."— Transcripción de la presentación:

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

2 UD5: Arrays, Cadenas y Vectores. Tipos Genéricos 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}; … Y X Z v2 v1

3 UD5: Arrays, Cadenas y Vectores. Tipos Genéricos 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.

4 UD5: Arrays, Cadenas y Vectores. Tipos Genéricos 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)

5 UD5: Arrays, Cadenas y Vectores. Tipos Genéricos 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)

6 UD5: Arrays, Cadenas y Vectores. Tipos Genéricos 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 )

7 UD5: Arrays, Cadenas y Vectores. Tipos Genéricos 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.01.01.02.01.03.0 1.04.0 tablaPuntos [3] = new PuntoImpl(2.0,5.0); tablaPuntos = new PuntoImpl[5];

8 UD5: Arrays, Cadenas y Vectores. Tipos Genéricos 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 (“…”)

9 UD5: Arrays, Cadenas y Vectores. Tipos Genéricos 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

10 UD5: Arrays, Cadenas y Vectores. Tipos Genéricos 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) {…} }

11 UD5: Arrays, Cadenas y Vectores. Tipos Genéricos 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.

12 UD5: Arrays, Cadenas y Vectores. Tipos Genéricos Vector: ejemplo de uso  Inicialización:  Vector v = new Vector ();  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

13 UD5: Arrays, Cadenas y Vectores. Tipos Genéricos Vector: métodos de uso frecuente public class Vector... { 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) {…} }

14 UD5: Arrays, Cadenas y Vectores. Tipos Genéricos Un parámetro genérico T representa a un tipo conocido en la definición de una clase o interfaz public class Vector... { private T[ ] elems; public Vector( ){…} 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 class Vector... { private T[ ] elems; public Vector( ){…} public T get(int index) {…} public T set(int index, T element ) {…} public boolean add(T element ) {…} public void add(int index, T element ) {…} … } Tipos genéricos: concepto Los parámetros genéricos deben sustituirse por tipos concretos para poder usar objetos de tal clase o interfaz public class TestGenerico extends Test { public static void main(String[] args) { Vector v; v.add(6); mostrar(v); } public class TestGenerico extends Test { public static void main(String[] args) { Vector v; v.add(6); mostrar(v); }

15 UD5: Arrays, Cadenas y Vectores. Tipos Genéricos 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 { int compareTo(T e); } interface Comparable { int compareTo(T e); } public class ParejaImpl { private T1 e1; private T2 e2; … } public class ParejaImpl { private T1 e1; private T2 e2; … }

16 UD5: Arrays, Cadenas y Vectores. Tipos Genéricos Tipos genéricos: sintaxis Si una clase no tiene atributos genéricos pero implementa métodos genéricos, estos se indican tras sus modificadores 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 public class Utiles { … public static Vector aVector(T a) { Vector v = new Vector (); v.add(a); return v; } … } public class Utiles { … public static Vector aVector(T a) { Vector v = new Vector (); v.add(a); return v; } … } public class TestGenerico2 extends Test { public static void main(String[] args) { Integer x = 3; String s = "Hola " ; Vector v1 = Utiles.aVector(x); Vector v2 = Utiles.aVector(s); mostrar(v1); mostrar(v2); } public class TestGenerico2 extends Test { public static void main(String[] args) { Integer x = 3; String s = "Hola " ; Vector v1 = Utiles.aVector(x); Vector v2 = Utiles.aVector(s); mostrar(v1); mostrar(v2); }

17 UD5: Arrays, Cadenas y Vectores. Tipos Genéricos 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 … { private T1 e1; private T2 e2; … } public class ParejaImpl … { private T1 e1; private T2 e2; … } public class TestGenerico3 extends Test { public static void main(String[] args) { Pareja p = new ParejaImpl ( ); … } public class TestGenerico3 extends Test { public static void main(String[] args) { Pareja p = new ParejaImpl ( ); … }

18 UD5: Arrays, Cadenas y Vectores. Tipos Genéricos 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 // mal a instanceof T // mal T a = new T( );// mal T[ ] = new T[10]; // mal T a = (T) new Object(); // warning a instanceof Vector// bien (tipo crudo) a instanceof Vector // mal a instanceof T // mal T a = new T( );// mal T[ ] = new T[10]; // mal T a = (T) new Object(); // warning


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

Presentaciones similares


Anuncios Google