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.

Slides:



Advertisements
Presentaciones similares
Curso de java básico (scjp)
Advertisements

Curso de Java Capitulo 6: Cadenas y Arrays Profesor:
Herencia en C#.
Tablas. Descripción general Introducción a las tablas Creación de tablas Uso de tablas.
Uso de variables de tipo referencia
Lenguaje de programación Java
Orientación a Objetos con Java SE
Archivos Implementar un método que lea una secuencia de números enteros de un archivo y compute la cantidad de elementos leídos.
Introducción Abdelahad, Corina Natalia Abdelahad, Yanina Zoraida
Curso de Java Estructura del Lenguaje
Tema 1. Introducción a la programación (Lenguaje java).
1.2 Sintaxis del lenguaje Java.
Encapsulamiento y Abstracción
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.
Algoritmo y Estructura de Datos I
Vectores en java.
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.
TALLER DE PROGRAMACIÓN III
POO Java Módulo 3 Elementos de programas Identificadores
Tema 6: Clases Antonio J. Sierra.
Técnicas avanzadas de programación Interfaces
SCJP Sun Certified Programmer for Java 6
UNIDAD 2 CLASES Y OBJETOS. CLASE Elementos cabecera y cuerpo de la clase. Cabecera: aporta información fundamental sobre la clase en sí y constituye de.
Jerarquía de Clases: Herencia, Composición y Polimorfismo
Curso Programación en Java
El lenguaje de programación Java
JAVA J.A.C..
ARREGLOS BIDIMENSIONALES
1 3Tablas o matrices 3.1. Concepto Las tablas corresponden al concepto matemático de matriz. Todos sus elementos deben ser del mismo tipo y se accede a.
Universidad Domingo Savio Facultad de Ciencias y Tecnología de la Información Carrera Ingeniería en Redes y Telecomunicaciones Materia : Programación I.
Capitulo # 4 herencia PROGRAMACION III UNIVERSIDAD
ESTRUCTURA DE DATOS EN JAVA
Patrones Creacionales
Clase 10: Estructuras de datos y arreglos.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Encapsulamiento.
DEFINICIÓN  Es una forma de entender un problema identificando las entidades principales que se encuentran en el.  Es una forma de desarrollar un sistema.
Fundamentos de Programación
Programación en C para electrónicos
Programación orientada a objetos. Existen 3 niveles de visibilidad: ◦ public: significa que los atributos de una clase pueden ser accedidas desde fuera.
Las clases FileReader y BufferedReader brindan servicios para manejar archivos. Las instrucciones: Archivos FileReader fr = new FileReader (ruta); BufferedReader.
Unidad 2.1: INTRODUCCIÓN A LA ORIENTACIÓN A OBJETOS.
Detalles Generales sobre Java
Introducción a la Programación Orientada a Objetos Una clase que modela los atributos y el comportamiento de una colección de objetos, define un tipo de.
Visual Basic FUNCIONES Y PROCEDIMIENTOS
Arrays multidimensionales en JAVA
Ing. Esp. Ricardo Cujar.  Lenguaje de programación orientado a objetos.  Desarrollado por Sun MicroSystems.  Independiente del Sistema Operativo gracias.
Universidad Domingo Savio Facultad de Ciencias y Tecnología de la Información Carrera Ingeniería en Redes y Telecomunicaciones Materia : Programación I.
ARREGLOS BIDIMENSIONALES MATRICES Son un espacio de almacenamiento continuo, que contiene una serie de elementos del mismo tipo de datos. Desde el punto.
Elementos básicos.  Fuertemente tipeado.  Sintaxis similar a C/C++.  Sin punteros: garbage collection.  Portable.  Integra librerías para objetos.
Clases “ Es una Abstracción de un elemento del mundo real ”
Tratamientos Secuenciales Generalizados II Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Unidad Didáctica 19 Versión
Programación orientada a objetos La programación orientada a objetos o POO (OOP según sus siglas en inglés) es un paradigma de programación que usa objetos.
Estructuras de control selectivas Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión Práctica 3.
1 Métodos. 2 Un método es un conjunto de instrucciones definidas dentro de una clase, que realizan una determinada tarea y a las que podemos invocar mediante.
Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Práctica 4 Versión Diseño de tipos Igualdad, representación, código,
Reutilización de código Elementos básicos del lenguaje Java Definición de variables, expresiones y asignaciones Fundamentos de Programación Departamento.
Las interfaces Predicate y Function Versión Unidad Didáctica 17 Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos.
Diseño de tipos Igualdad, representación, código, copia y relación de orden Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos.
Programación en Java Introducción a Java. Reseña histórica Surge en 1991 por Sun Microsystems Desarrollado para electrodomésticos Se buscaba un código.
Introducción al Lenguaje C (I) Tipos básicos, arrays y punteros Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión
UNIVERSIDAD TECNOLÓGICA DE PANAMÁ Facultad de Ingeniería de Sistemas Computacionales Programa de Lic. en Informática Educativa Computación.
Iterables virtuales Concepto, Metodología de desarrollo y Ejemplos Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión.
Concepto de Tipo y Subtipo Diseño e Implementación Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Unidad Didáctica 10 Versión.
Diseño de tipos: clase PolinomioEntero Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Práctica 8 Versión
Tipos genéricos Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Unidad Didáctica 3.
Programación en Java Introducción a Java. Reseña histórica Surge en 1991 por Sun Microsystems Desarrollado para electrodomésticos Se buscaba un código.
Paso de parámetros Diseño de programas iterativos Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Unidad Didáctica 7 Versión.
Transcripción de la presentación:

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

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

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.

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)

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)

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 )

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); tablaPuntos [3] = new PuntoImpl(2.0,5.0); tablaPuntos = new PuntoImpl[5];

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 (“…”)

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

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) {…} }

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.

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

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) {…} }

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); }

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; … }

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); }

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 ( ); … }

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