Estructuras de datos que consisten de elementos de datos
relacionados, del mismo tipo. Son entidades de longitud fija. Conservan siempre la misma longitud una vez creados, aunque la referencia a un arreglo puede reasignarse a un nuevo arreglo de distinta longitud. En Java, un arreglo es un grupo de variables (elementos o componentes) que contienen valores del mismo tipo. ARREGLOS Los arreglos en Java son objetos, por lo que se consideran tipos de referencia. Los elementos de un arreglo en Java pueden ser tipos primitivos o de referencia. Para hacer referencia a un elemento especfico en un arreglo, se debe especificar el nombre de la referencia al arreglo y el nmero de la posicin del elemento en el arreglo. Todos los objetos en Java deben crearse con la palabra clave new. ARREGLOS Ejemplo: int c[] = new int[12];
int c[]; c = new int[12]; Al crear un arreglo, cada uno de sus elementos recibe un valor predeterminado: cero para los elementos numricos de tipos primitivos, false, para los elementos boolean y null para las referencias (cualquier tipo no primitivo). ARREGLOS BIDIMENSIONALES Un arreglo bidimensional es en esencia una lista de arreglos unidimensionales. Ejemplo de la declaracin de un arreglo bidimensional: int table[ ][ ] = new int [10][20];
Al igual que los arreglos unidimensionales pueden inicializarse mediante inicializadores de arreglos en las declaraciones: int b[ ][ ] = { { 1, 2 } , { 3, 4 } }; ARREGLOS BIDIMENSIONALES La forma en que Java representa los arreglos multidimensionales los hace bastantes flexibles. De hecho las longitudes de las filas no tienen que ser iguales: (1) int b[ ][ ] = { { 1, 2 }, { 3, 4, 5 } };
(2) int b[ ][ ]; b = new int[ 2 ] [ ]; // Crear 2 filas b[0] = new int [5]; // Crear 5 columnas para la fila 0 b[1] = new int[3]; // Crear 3 columnas para la fila 1 Aunque no hay regla sintctica que lo exija, una clase bien diseada puede definir una y slo una entidad lgica. Una clase bien diseada agrupa informacin conectada lgicamente. No es obligatorio en una clase definir un mtodo main( ). Un mtodo main( ) se requiere slo si esa clase es el punto de partida de un programa. Forma General de una Clase Definicin de una clase que encapsule informacin acerca de vehculos automotores. A esta clase se le denomina Vehicle y almacenar tres elementos de informacin acerca del vehculo: Nmero de pasajeros que puede llevar, capacidad de combustible y promedio de consumo de combustible (en kilmetros por litro). Versin 1 class Vehicle { int pasajeros; // nmero de pasajeros int combcap; // capacidad de combustible int kpl; // consumo de combustible } La declaracin de clase es slo un tipo de descripcin; no crea un objeto real. Definicin de una Clase Para crear un objeto Vehicle se utiliza una declaracin como la siguiente: Vehicle minivan = new Vehicle(); Cada vez que cree una instancia de una clase estar creando un objeto con su propia copia de cada variable de instancia definida por la clase. Para acceder a las variables de instancia se emplea el operador de punto (.). El operador de punto enlaza el nombre de un objeto con el nombre de un miembro. La forma general del operador de punto es: Objeto.miembro Ejemplo: minivan.combcap = 70; Definicin de una Clase La siguiente instruccin se us para declarar un objeto de tipo Vehicle: Vehicle minivan = new Vehicle(); Esta declaracin desempea dos funciones. Primero, declara una variable de nombre minivan del tipo de clase Vehicle. Esta variable no define un objeto. Es una variable que puede referirse a un objeto. Segundo, la declaracin crea una copia fsica del objeto y asigna minivan una referencia a ese objeto. Esto se hace usando el operador new. El operador new asigna dinmicamente memoria (en tiempo de ejecucin) para un objeto y le devuelve una referencia a ste. Esta referencia es la direccin de memoria del objeto asignado por new. Esta referencia es almacenada en una variable. Creacin de Objetos La combinacin de los dos pasos en el enunciado anterior se puede reescribir para mostrar cada paso individualmente como sigue: Vehicle minivan; // Declara referencia al objeto Minivan = new Vehicle; // Asigna un objeto Vehicle Creacin de Objetos Declara a minivan como una referencia a un objeto de tipo Vehicle; es una variable que puede referirse a un objeto pero no es un objeto por s misma. En este momento contiene el valor null. Crea un nuevo objeto Vehicle y asigna una referencia para minivan. Minivan se enlaza con un objeto. En una operacin de asignacin, las variables con referencia a objetos actan diferente a como lo hacen las variables de tipo simple, como int. Cuando se asigna una variable de referencia a objeto a otro se est cambiando el objeto al que se refiere la variable de referencia. Por ejemplo: Vehicle car1 = new Vehicle(); Vehicle car2 = car1; Las sentencias anteriores indican que car1 y car2 se refieren al mismo objeto. Sin embargo, no se relacionan de ninguna otra forma. Variables de Referencia y Asignacin Indique el efecto de ejecutar las siguientes instrucciones: Vehicle car1 = new Vehicle(); Vehicle car2 = car1; Vehicle car3 = new Vehicle(); car2 = car3; Variables de Referencia y Asignacin 1. Instancia: posee diferentes valores para diferentes instancias de clase, se usan para representar los atributos de datos de un objeto particular. Public class Vehiculo { int pasajeros; int combcap; int kpl; }
Tipos de Variables 2. Clase: posee el mismo valor para todas las instancias de la clase, a veces se les llaman static. Slo habr una copia de una variable de clase en la memoria independientemente del nmero de instancias creadas de la clase, las variables static son usualmente privadas en la clase. Public class Estudiante{ Static int codigoEstudiante; Int id; Public Estudiante(){ This.id=codigoEstudiante; codigoEstudiante++; } }
Tipos de Variables 2. Voltil: el modificador volatile previene al compilador de realizar ciertas optimizaciones sobre una variable miembro. Le dice al compilador que el valor de la variable puede ser cambiado inesperadamente por otra parte del programa. volatile int var=100; 3. Transitorias (transient): se usa en una declaracin de variable para especificar al sistema de tiempo de ejecucin de Java que la variable no debe ser serializadas. transient int var=100; 4. final: indica que el miembro tiene un valor constante.la variables miembro final deben ser inicializadas con un valor en el momento de la declaracin si no, el compilador arrojara un mensaje de error. final float pi=3.14; Tipos de Variables Los mtodos son subrutinas que manipulan los datos definidos por una clase y, en muchos casos, proveen acceso a esos datos. Es frecuente que otras partes de un programa interacten con una clase a travs de sus mtodos. Un mtodo contiene una o ms declaraciones. En cdigo bien escrito de Java, cada mtodo desempea slo una tarea. Cada mtodo tiene un nombre y este nombre se usa para llamar al mtodo. El nombre main() est reservado para el mtodo que inicia la ejecucin del programa. Mtodos La forma general de un mtodo es: tipo de retorno nombre de mtodo (lista de parmetros) { // cuerpo del mtodo } Tipo de retorno especifica el tipo de datos devueltos por el mtodo Nombre de mtodo identificador vlido Lista de parmetros secuencia de parejas, tipo e identificador, separados por comas. Son variables que reciben valor de los argumentos pasados al mtodo cuando ste se llama. Mtodos Un mtodo getter se usa para obtener el valor de una variable de instancia y normalmente comienza con la palabra get public String getNombre () { return nombre; // cuerpo del mtodo } Un mtodo setter se usa para asignar valor a variables privadas. Los mtodos setter se inician con la palabra set. public void setNombre (String sNombre) { nombre=sNombre; // cuerpo del mtodo }
Mtodos
El sistema de recoleccin de basura de Java reclama objetos que aparecen transparentemente detrs de escena, sin ninguna intervencin del programador. Cuando no existe una referencia a un objeto, se asume que ese objeto no se necesita ms y se recupera la memoria ocupada por ste. La recoleccin de basura se ejecuta, generalmente, slo cuando se cumplen dos condiciones: que existan objetos para reciclar y la necesidad de reciclarlos. Recoleccin de Basura y Finalizadores Finalize() Mtodo que ser llamado exactamente antes de la destruccin final del objeto por parte del recolector de basura. Se puede usar para garantizar que un objeto termine limpio. Se emplea para aadir un finalizador a una clase. Formato el mtodo finalize(): protected void finalize() { // cdigo de finalizacin } Recoleccin de Basura y Finalizadores This Referencia al objeto invocado. This class Pwr { double b; int e; double val;
Pwr(double base, int exp) { b = base; e = exp;
val = 1; if(exp==0) return; for( ; exp>0; exp--) val = val * base; }
double get_pwr() { return val; } } class Pwr { double b; int e; double val;
double get_pwr() { return this.val; } } Java permite tener dos o ms mtodos con el mismo nombre dentro de la misma clase. Los mtodos sobrecargados deben tambin tener un nmero diferentes de parmetros o diferentes tipos de datos en los parmetros. Esta es una forma de lograr polimorfismo en Java. Distintos mtodos con el mismo nombre pero diferentes parmetros. Sobrecarga de Mtodos Ejemplo: public class Area{ void area(double radio) { double areacirculo=0; areacirculo=3.14*radio*radio; System.out.println("el area del circulo\n"+areacirculo); } void area(double base, double altura) { double areatriangulo=0; areatriangulo=0.5*base*altura; System.out.println("el area del triangulo es\n"+areatriangulo); }
void area(float largo,double ancho) { double arearectangulo=0; arearectangulo=largo*ancho; System.out.println("el area del rectangulo es\n"+arearectangulo); } void area(double radio, float altura) { double areacilindro=0; areacilindro=3.14*radio*radio*altura; System.out.println("el area del cilindro es\n"+areacilindro); } } class Usuario{ public static void main(String[] args) { Area are=new Area(); are.area(25); are.area(5,3); are.area(8f,2); are.area(6,3f); } }