Está en la página 1de 43

TIPOS DE DATOS DEFINIDOS POR EL USUARIO

Ing. Laura Jurez Guerra

Enero-Junio 2011

En

Java existen tipos de datos y tipos de datos definidos por el usuario. son los tipos de datos primitivos que define el lenguaje: . . . . . . existen ciertos tipos de datos que pueden ser creados por el programador de acuerdo a sus requerimientos.

Estos

Pero

Ing. Laura Jurez Guerra

Enero-Junio 2011

Dentro

de estos tipos de datos definidos por el usuario se tienen: Registros Enumeraciones Vectores Matrices

Ing. Laura Jurez Guerra

Enero-Junio 2011

Ya

se ha visto como variables simples pueden almacenar una sola pieza de informacin y como arreglos pueden almacenar un conjunto de ellas del mismo tipo y al mismo tiempo, estos dos mecanismos pueden manejar una gran variedad de situaciones, pero a menudo se necesita trabajar sobre datos de diversos tipos, en este caso los arreglos no son adecuados .
Ing. Laura Jurez Guerra Enero-Junio 2011

Un

registro es un tipo especial que tiene la capacidad de almacenar datos de diferentes tipos. usa una CLASE para definir un registro.

JAVA

Ing. Laura Jurez Guerra

Enero-Junio 2011

Este

tipo tiene la ventaja de que adems de incluir los campos tradicionales de un registro (en forma de atributos) tambin puede incorporar una serie de mtodos que permiten procesar de manera mas fcil los campos o atributos de la clase.

Ing. Laura Jurez Guerra

Enero-Junio 2011

class alumno2{ void alumno2(){}; static String nombre= new String(); static int edad; void inicializar(){ alumno2.nombre="Laura Jurez"; alumno2.edad=30; }; void desplegar(){ System.out.println(alumno2.nombre); System.out.println(alumno2.edad); } }

Ing. Laura Jurez Guerra

Enero-Junio 2011

Un

tipo enumeracin es un valor int que contiene constantes con nombre que representan diferentes valores posibles. enumeracin es un tipo de valor definido por el usuario. declaracin de un tipo de enumeracin es similar a una declaracin de clase.

Una

Una

Ing. Laura Jurez Guerra

Enero-Junio 2011

Sin embargo, se aplican las reglas adicionales siguientes:

La palabra clave enum se utiliza en lugar de la palabra clave class. Los tipos de enumeracin son implcitamente static. Los tipos de enumeracin no pueden tener mtodos, propiedades ni eventos.
Ing. Laura Jurez Guerra Enero-Junio 2011

public enum ColorEnum { Red, Green, Blue } Se puede hacer referencia a un valor de enumeracin como se muestra a continuacin: int i = (int) ColorEnum.Red

Ing. Laura Jurez Guerra

Enero-Junio 2011

Es

un error intentar crear instancias de un valor de enumeracin utilizando la palabra clave new.

Ing. Laura Jurez Guerra

Enero-Junio 2011

El valor de tipo entero de un miembro enum se puede establecer utilizando la sintaxis siguiente: public enum ColorEnum { Red, Green, Blue } El primer valor de enumeracin en la declaracin de enumeracin se establece en 1. Cualquier miembro subsiguiente, si no se establece explcitamente, se determina a partir del valor del miembro anterior incrementado en una unidad.
Ing. Laura Jurez Guerra Enero-Junio 2011

Varios

miembros de tipo de enumeracin pueden compartir el mismo valor de tipo integral. permiten las dependencias de miembros de un valor enum a otros miembros, siempre que la dependencia no sea circular. public enum ColorEnum { Red, Blue, Green(Blue) }
Ing. Laura Jurez Guerra Enero-Junio 2011

Se

Los

tipos de enumeracin no se pueden convertir implcitamente en su tipo subyacente ni en cualquier otro tipo integral o de enumeracin. Se deben convertir explcitamente utilizando una conversin de tipos. El siguiente fragmento no es correcto: int i = ColorEnum.Red; Esto si es correcto: int i = (int) ColorEnum.Red;
Ing. Laura Jurez Guerra Enero-Junio 2011

Se

pueden utilizar los operadores siguientes en los valores de tipos de enumeracin: ==, !=, <, >, <=, >=, +, -, ^, &, |, ~.

Ing. Laura Jurez Guerra

Enero-Junio 2011

Los

tipos de enumeracin se pueden utilizar en una instruccin switch. Los miembros de enumeracin se pueden utilizar como etiquetas de caso. ColorEnum color = ColorEnum.Red; switch( color ) { case ColorEnum.Red: // ... break; case ColorEnum.Blue: // ... break; case ColorEnum.Green: //...break; default: break; }
Ing. Laura Jurez Guerra Enero-Junio 2011

En

Java los arreglos tienen el problema que no se pueden redimensionar, es decir, no existe ninguna operacin sobre un array que permita aadir nuevos elementos o eliminar los existentes. veces deseamos guardar objetos en un array pero no sabemos cuantos objetos vamos a guardar.
Ing. Laura Jurez Guerra Enero-Junio 2011

Algunas

Una solucin es la de crear un array cuya dimensin sea ms grande que el nmero de elementos que necesitamos guardar. clase Vector nos proporciona una solucin alternativa a este problema

La

Ing. Laura Jurez Guerra

Enero-Junio 2011

Un

vector es similar a un array, la diferencia estriba en que un vector crece automticamente cuando alcanza la dimensin inicial mxima. Adems, proporciona mtodos adicionales para aadir, eliminar elementos, e insertar elementos entre otros dos existentes.

Ing. Laura Jurez Guerra

Enero-Junio 2011

Para

usar la clase Vector hemos de poner al principo del archivo del cdigo fuente la siguiente sentencia import import java.util.*;

Ing. Laura Jurez Guerra

Enero-Junio 2011

Cuando

creamos un vector u objeto de la clase Vector, podemos especificar su dimensin inicial, y cuanto crecer si rebasamos dicha dimensin. Vector vector=new Vector(20, 5); un vector con una dimensin inicial de 20 elementos. Si rebasamos dicha dimensin y guardamos 21 elementos la dimensin del vector crece a 25.
Ing. Laura Jurez Guerra Enero-Junio 2011

Tenemos

Al

segundo constructor, solamente se le pasa la dimensin inicial. Vector vector=new Vector(20); se rebasa la dimensin inicial guardando 21 elementos, la dimensin del vector se duplica.

Si

Ing. Laura Jurez Guerra

Enero-Junio 2011

Con

el tercer constructor, se crea un vector cuya dimensin inicial es 10. Vector vector=new Vector();

La

dimensin del vector se duplica si se rebasa la dimensin inicial, por ejemplo, cuando se pretende guardar once elementos.
Ing. Laura Jurez Guerra Enero-Junio 2011

Hay

dos formas de aadir elementos a un vector. Podemos aadir un elemento a continuacin del ltimo elemento del vector, mediante la funcin miembro addElement. v.addElement("uno");

Ing. Laura Jurez Guerra

Enero-Junio 2011

Podemos

tambin insertar un elemento en una determinada posicin, mediante insertElementAt El segundo parmetro o ndice, indica el lugar que ocupar el nuevo objeto. insertar el string "tres" en la tercera posicin del vector v, escribimos v.insertElementAt("tres", 2);
Ing. Laura Jurez Guerra Enero-Junio 2011

Para

Vector v=new Vector(); v.addElement("uno"); v.addElement("dos"); v.addElement("cuatro"); v.addElement("cinco"); v.addElement("seis"); v.addElement("siete"); v.addElement("ocho"); v.addElement("nueve"); v.addElement("diez"); v.addElement("once"); v.addElement("doce"); v.insertElementAt("tres", 2);
Ing. Laura Jurez Guerra Enero-Junio 2011

Para

saber cuantos elementos guarda un vector, se llama a la funcin miembro size. Para saber la dimensin actual de un vector se llama a la funcin miembro capacity.

Ing. Laura Jurez Guerra

Enero-Junio 2011

System.out.println("n de elementos "+v.size()); System.out.println("dimensin "+v.capacity());

Ing. Laura Jurez Guerra

Enero-Junio 2011

Podemos

eliminar todos los elementos de un vector, llamando a la funcin miembro removeAllElements. O bien, podemos eliminar un elemento concreto, por ejemplo el que guarda el string "tres". v.removeElement("tres");
Ing. Laura Jurez Guerra Enero-Junio 2011

Para

acceder a todos lo elementos del vector, escribimos un cdigo semejante al empleado para acceder a todos los elementos de un array. for(int i=0; i<v.size(); i++) { System.out.print(v.elementAt(i)+"\t"); }
Ing. Laura Jurez Guerra Enero-Junio 2011

Podemos

eliminar dicho elemento, si especificamos su ndice. v.removeElementAt(2);

Ing. Laura Jurez Guerra

Enero-Junio 2011

import java.util.*; public class VectorApp{ public static void main(String[ ] args) {
Vector v=new Vector(); v.addElement("uno"); v.addElement("dos"); v.addElement("cuatro"); v.addElement("cinco"); v.addElement("seis"); v.addElement("siete"); v.addElement("ocho"); v.addElement("nueve"); v.addElement("diez"); v.addElement("once"); v.addElement("doce"); v.insertElementAt("tres", 2); . contina

Ing. Laura Jurez Guerra

Enero-Junio 2011

Continuacin

System.out.println(No. de elementos + v.size()); System.out.println(Dimensin + v.capacity()); System.out.println(); if (v.contains(tres)) { System.out.println(Encontrado tres); } v.removeElement(tres); for(int i=0; i<v.size; i++){ System.out.println(v.elementAt(i) + \t); } System.out.println(); } }

Ing. Laura Jurez Guerra

Enero-Junio 2011

Un

array de dos dimensiones, conocidos tambien por el nombre de tablas o matrices, en realidad es un array de arrays. caractersticas son las mismas que para un array unidimensional, es decir, todos los elementos que lo compongan deben de ser del mismo tipo.

Las

Ing. Laura Jurez Guerra

Enero-Junio 2011

<tipo de datoElemento> <nombre matriz>[ ][ ] = new <tipo de datoElemento [<Numero de Filas>] [<Nmero de Columnas>];
int

equipos [ ][ ] = new int [4][5];

float

discos[ ][ ]; discos= new float[4][5];

Ing. Laura Jurez Guerra

Enero-Junio 2011

Tambin

podemos utilizar constantes para definir la dimensin del arreglo de dos dimensiones: int N = 10; int arreglo[N][N];

Ing. Laura Jurez Guerra

Enero-Junio 2011

Las matrices se pueden inicializar, al igual que los de una dimensin, cuando se declaran. La inicializacin se hace utilizando llaves, encerrando entre llaves la lista de constantes separadas por comas de que consta cada fila. int tabla1 [ ][ ]={ {51, 52, 52}, {54, 55, 56} };

Se define una matriz de 2 filas por tres columnas cada fila. int tabla1 [ ][ ] = { {51, 52, 53}, {54, 55, 56} };
Ing. Laura Jurez Guerra Enero-Junio 2011

Una

matriz o arreglo bidimensional se puede inicializar de este modo:


int matriz[3][3] = {{1,2,3},{4,5,6},{7,8,9}};

Con

la anterior asignacin se crea en memoria una matriz igual a la de abajo


0 0 1 1 4 2 7
Ing. Laura Jurez Guerra

1 2 5 8

2 3 6 9

Enero-Junio 2011

Insercin

de elementos <nombre matriz> [indice fila] [indice columna] = valor elemento; tabla[2][3]= 60; de elementos <variable> = <nombre matriz> [indice fila] [indice columna]; Ventas= tabla[1][1];

Extraccin

Ing. Laura Jurez Guerra

Enero-Junio 2011

Int

fila, col; for (fila=0; fila < NumFilas; ++fila) for(col=0; col< NumCol; ++col) procesar el elemento Mariz[fila][col];

Se

puede acceder a elementos de una matriz mediante bucles anidados.

Ing. Laura Jurez Guerra

Enero-Junio 2011

El

nmero de filas y de columnas se puede obtener con el atributo length. Con este atributo, la sintaxis para acceder a los elementos:

<tipo> Matriz[ ] [ ]; <especificacion de filas y columnas con operador new> For(fila=0; fila<Matriz.length; ++fila) for( col=0; col<Matriz[fila].length; ++col) procesar elemento Matriz[fila][col];

Ing. Laura Jurez Guerra

Enero-Junio 2011

Dadas

las matrices m-por-n A y B, su suma A + B es la matriz m-por-n calculada sumando los elementos correspondientes (i.e. (A + B)[i, j] = A[i, j] + B[i,j] ). Es decir, sumar cada uno de los elementos homlogos de las matrices a sumar. Por ejemplo:

Ing. Laura Jurez Guerra

Enero-Junio 2011

Dada

una matriz A y un producto escalar cA multiplicando el escalar elemento de A (i.e. (cA)[i, Por ejemplo:

nmero c, el se calcula c por cada j] = cA[i, j] ).

Ing. Laura Jurez Guerra

Enero-Junio 2011