(Viene de la página anterior)
Página anterior | ![]() Volver al principio del trabajo | Página siguiente ![]() |
Los arreglos en Java son dinámicos, pero no extensibles, lo cual significa que deben ser creados con el tamaño que tendrán hasta el final de su vida.
Un arreglo se declara de la siguiente forma:
<tipo>[] <nombre>;
O sea, para declarar, por ejemplo, un arreglo de números enteros utilizaremos la siguiente sentencia:
int[] arrInt;
Es importante notar que el arreglo aún no ha sido creado, sino meramente declarado. Para crear el arreglo (reservar su memoria e inicializarlo) deberemos recurrir al operador new:
arrInt = new int[10];
Este comportamiento debe comprenderse de esta forma: en Java todo es un objeto, y los objetos deben ser creados mediante el operador new. El caso de los arreglos no es diferente, el tipo de datos del arreglo (int[] en este caso) es una clase y cada una de sus instancias debe ser creada explícitamente, el tamaño puede pensarse como un parámetro al constructor de la clase.
A partir de este momento podemos utilizar arrInt como un arreglo de cualquier otro lenguaje.
Una de las características que hacen de Java un entorno de programación seguro, y que se relaciona con el manejo de los arreglos es que el lenguaje no permite la indexación de arreglos fuera de rango, o sea, una asignación de este tipo generará una excepción:
ArrInt[25] = 1;
Otra forma de declararlos es la siguiente:
UNIDIMENSIONALES:
tipo nombre_array[]=new tipo[nº];
tipo nombre_array[]={valores};
BIDIMENSIONALES:
tipo nombre_array[][]=new tipo[nº][nº];
tipo nombre_array[][]={valores};
Ejemplo 6.1
Se sabe que la velocidad de un proyectil está dada por la ecuación, en forma vectorial: V= ai+ bj+ ck. Diseñe una aplicación que sea capaz de leer los valores de las constantes a, b y c. y muestre la magnitud y dirección de dicho proyectil.
1 import javax.swing.*;
2 public class Proyectil{
3 public static void main (String args []){
4 String leer;
5 double magnitud, direccion, sum;
6 double vector[]=new double[3];
7 int ban=1;
8 while(ban==1)//miestras hayan datos a procesar
9 {
10 //leemos el valor de las constantes
11 leer=JOptionPane.showInputDialog("Ingrese el valor de a:");
12 vector[0]=Double.parseDouble(leer);
13 leer=JOptionPane.showInputDialog("Ingrese el valor de b:");
14 vector[1]=Double.parseDouble(leer);
15 leer=JOptionPane.showInputDialog("Ingrese el valor de c:");
16 vector[2]=Double.parseDouble(leer);
17 //calculamos la magnitud
18 //la cual es la raíz cuadrada de las suma+
19 //de las componentes al cuadrado
20 sum=(vector[0]*vector[0])+(vector[1]*vector[1])+(vector[2]*vector[2]);
21 magnitud=Math.sqrt(sum);
22 //La dirección viene dada por la tangente inversa
23 //del cociente de las componentes x,y
24 direccion=Math.atan(vector[1]/vector[0]);
25 JOptionPane.showMessageDialog(null, "El valor de la magnitud es: "+magnitud+"\n y con un angulo direccional de: "+direccion+" Radianes");
26 leer=JOptionPane.showInputDialog("¿Hay más datos a procesar?\n\nSi=1 y No=0");
27 ban=Integer.parseInt(leer);
28 }//del while
29 }//del main
30 }//de la clase
Ejemplo 6.2
Se tienen las notas de 5 exámenes de 10 alumnos, y se desea promediar la nota final de cada uno de ellos. Diseñe una aplicación que solucione este problema.
1 import javax.swing.*;
2 public class MatrizNotas{
3 public static void main (String args []) {
4 int f,c;
5 double suma, promedio;
6 double notas [][]=new double[10][5];
7 String leer;
8 for(f=0; f<10; f++)//las filas
9 {
10 suma=0;
11 for(c=0; c<5; c++)
12 {
13 leer=JOptionPane.showInputDialog("Ingrese la nota: "+c+" del alumno: "+f);
14 notas[f][c]=Double.parseDouble(leer);
15 while(notas[f][c]>10 || notas [f][c]<0)
16 {
17 leer=JOptionPane.showInputDialog("Ingrese la nota: "+c+" del alumno: "+f);
18 notas[f][c]=Double.parseDouble(leer);
19 }
20 suma=suma+notas[f][c];
21 }
22 promedio=suma/5;
23 JOptionPane.showMessageDialog(null, "El alumno, tiene un promedio de: "+promedio);
24 }
25 }
26 }
27

Algunas de sus características más importantes de los arrays son las siguientes:
1. Los arrays se crean con el operador new seguido del tipo y número de elementos.
2. Se puede acceder al número de elementos de un array con la variable miembro implícita length (por ejemplo, vect.length).
3. Se accede a los elementos de un array con los corchetes [] y un índice que varía de length-1.
4. Se pueden crear arrays de objetos de cualquier tipo. En principio un array de objetos es un array de referencias que hay que completar llamando al operador new.
5. Los elementos de un array se inicializan al valor por defecto del tipo correspondiente (cero para valores numéricos, el carácter nulo para char, false para boolean, null para Strings y para referencias).
6. Como todos los objetos, los arrays se pasan como argumentos a los métodos por referencia.
7. Se pueden crear arrays anónimos (por ejemplo, crear un nuevo array como argumento actual en la llamada a un método).
Inicialización de arrays:
1. Los arrays se pueden inicializar con valores entre llaves {...} separados por comas.
2. También los arrays de objetos se pueden inicializar con varias llamadas a new dentro de unas llaves {...}.
3. Si se igualan dos referencias a un array no se copia el array, sino que se tiene un array con dos nombres, apuntando al mismo y único objeto.
4. Creación de una referencia a un array. Son posibles dos formas:
double[] x; // preferible
double x[];
5. Creación del array con el operador new:
x = new double[100];
6. Las dos etapas 4 y 5 se pueden unir en una sola:
double[] x = new double[100];
Preguntas
Descubre el error
A continuación se presentan una serie de códigos los cuales pueden poseer alguna clase de error, puedes identificarlos y corregirlos???
v[i]=i+5;
4. int [] b = {{1, 2, 3}, {4, 5, 6}, };// esta coma es permitida
Ejercicios
Al fin!!!... lo que hasta el capítulo anterior, pareciera que hayamos estado repasando el lenguaje C/C++, puesto que Java, posee mucho de estos lenguajes. Pero nos estamos adentrando a la esencia de la Programación Orientadaza o Objetos.
Un programa se construye a partir de un conjunto de clases.
Una vez definida e implementada una clase, es posible declarar elementos de esta clase de modo similar a como se declaran las variables del lenguaje (de los tipos primitivos int, double, String, …). Los elementos declarados de una clase se denominan objetos de la clase. De una única clase se pueden declarar o crear numerosos objetos. La clase es lo genérico: es el patrón o modelo para crear objetos.
Cada objeto tiene sus propias copias de las variables miembro, con sus propios valores, en general distintos de los demás objetos de la clase. Las clases pueden tener variables static, que son propias de la clase y no de cada objeto.
Una clase es una agrupación de datos (variables o campos) y de funciones (métodos) que operan sobre esos datos. A estos datos y funciones pertenecientes a una clase se les denomina variables y métodos o funciones miembro. La programación orientada a objetos se basa en la programación de clases.
Una clase es una agrupación de datos (variables o campos) y de funciones (métodos) que operan sobre esos datos. La definición de una clase se realiza en la siguiente forma:
[public] class Classname { //lo de public es opcional
// definición de variables y métodos
...
}
donde la palabra public es opcional: si no se pone, la clase tiene la visibilidad por defecto, esto es, sólo es visible para las demás clases del package. Todos los métodos y variables deben ser definidos dentro del bloque {...} de la clase.
Un objeto (en inglés, instance) es un ejemplar concreto de una clase. Las clases son como tipos de variables, mientras que los objetos son como variables concretas de un tipo determinado.
Classname unObjeto;
Classname otroObjeto;
A continuación se enumeran algunas características importantes de las clases:
1. Todas las variables y funciones de Java deben pertenecer a una clase. No hay variables y funciones globales.
2. Si una clase deriva de otra (extends), hereda todas sus variables y métodos.
3. Java tiene una jerarquía de clases estándar de la que pueden derivar las clases que crean los usuarios.
Una clase sólo puede heredar de una única clase (en Java no hay herencia múltiple). Si al definir una clase no se especifica de qué clase deriva, por defecto la clase deriva de Object. La clase Object es la base de toda la jerarquía de clases de Java.
5. En un fichero se pueden definir varias clases, pero en un fichero no puede haber más que una clase public. Este fichero se debe llamar como la clase public que contiene con extensión *.java. Con algunas excepciones, lo habitual es escribir una sola clase por fichero.
6. Si una clase contenida en un fichero no es public, no es necesario que el fichero se llame como la clase.
7. Los métodos de una clase pueden referirse de modo global al objeto de esa clase al que se aplican por medio de la referencia this.
8. Las clases se pueden agrupar en packages, introduciendo una línea al comienzo del fichero (package packageName;). Esta agrupación en packages está relacionada con la jerarquía de directorios y ficheros en la que se guardan las clases.
Para la creación de un objeto se necesita el operador new, y que se declaren las variables de instancia dentro de una clase. Mediante una clase se pueden declarar varios objetos que tendrán los mismos atributos.
Creación de Un Objeto
nomb_clase nomb_objeto=new nomb_clase([valores]);
Cuando se hace referencia a un método este debe estar declarado y desarrollado al igual que el objeto. Para declarar y desarrollar un método debe estar dentro de una clase y se debe indicar el valor que devuelve, el nombre y los valores que se le pasan.
Definición de los Métodos
valor devuelto nombre_método([valores])
{
cuerpo;
}
Si tenemos que hacer referencia a las variables de instancia y los métodos contenidos en un objeto se necesita el operador punto(.).
Objeto.nomb_método( );
Objeto.nomb_método(valores);
Objeto.variable;
Veamos un Ejemplo para ilustrar lo que se ha dicho:
Ejemplo 7.1
Diseñe una Clase, para crear objetos del tipo Alumnos, en el cual, permita ingresar el nombre, edad y Nota de ciertos objetos de ese tipo.
Solución:
1 /*Archivo Alumnos.Java*/
2 import javax.swing.*;
3 public class Alumnos{
4 //declaración de los atributos
5 public String Nombre;
6 public int Edad;
7 public double Nota;
8
9 //declaración de los métodos
10 public void EstablecerNombre()
11 {
12 Nombre=JOptionPane.showInputDialog("Ingrese el nombre: ");
13 }
14 public void EstablecerEdad(int x)
15 {
16 Edad=x;//el valor recibido lo asigna a Edad
17 }
18 public void EstablecerNota(double y)
19 {
20 Nota=y;
21 }
22 /*Este método, muestra todos los datos del
23 del objeto en pantalla*/
24 public void MostrarDatos()
25 {
26 String salida="Nombre del Alumno: "+Nombre+"\nEdad: "+Edad+"\nNota: "+Nota;
27 JOptionPane.showMessageDialog(null, salida);
28 }
29 }
2. Luego guarde el archivo, Compílelo, pero NO lo ejecute. Con esto estamos creando nuestra Clase, con la cual, podremos construir Objetos de este tipo.
3. Ahora, y en otro archivo digite las siguientes sentencias:
1 /*Archivo UsaAlumnos.java*/
2 class UsaAlumnos{
3 public static void main (String args []) {
4 //declaramos y creamos un objeto del tipo Alumnos
5 Alumnos Datos=new Alumnos();
6 //LLamamos a los métodos
7 Datos.EstablecerNombre();
8 Datos.EstablecerEdad(20);
9 Datos.EstablecerNota(9.5);
10
11 //Ahora mostramos los Datos
12 Datos.MostrarDatos();
13 }
14 }
4. Luego Guarde el archivo, Compílelo y Ejecútelo.

Explicación.
En el ejemplo anterior puede notar que, los atributos, son esas variables simples, es las cuales almacenaremos información relevante a los objetos que, crearemos a partir de esa clase.
Además que, los estamos declarando como públicos, lo cual indica que tenemos acceso directo desde cualquier otro archivo a los atributos. Los métodos son del tipo public y no devuelven ningún valor, por tal razón son declarados como void. Además que. El método EstablecerEdad y EstablecerNota, reciben un argumento cada uno de ellos, el cual es asignado al respectivo atributo.
Un Constructor es una función, método, etc, de las clases, la cual es llamada automáticamente cuando se crea un objeto de esa clase.
Por ser métodos, los constructores también aceptan parámetros. Cuando en una clase no especificamos ningún tipo de constructor, el compilador añade uno público por omisión sin parámetros, el cual NO hace nada.
Características de los Constructores
Supongamos una clase llamada Datos
public class Datos
{
//declaracion de atributos
public Datos();//constructor sin parametros
public Datos(int Edad)
{//Constructor con parámetros
EdadM=Edad;
}
}
Ejemplo 7.2
Se Desea crear un objeto del tipo Coordenadas, que indique, la posición de un punto en el plano cartesiano, y permita calcular la distancia existente con otro punto, además del punto medio entre ellos.
1 /*Archivo Coordenadas.java*/
2
3 public class Coordenadas {
4 private int x,y;//Atributos
5 public Coordenadas (int x1 , int y1)//constructor
6 {
7 //asignamos esos valores
8 x=x1;
9 y=y1;
10 }
11 public double Distancia (int x1, int y1)
12 {
13 //este método recibe como parametros
14 //las coordenadas del segundo punto
15 double D;
16 D=Math.sqrt((x-x1)*(x-x1)+(y-y1)*(y-y1));
17 return D;//Retornamops el valor de la distancia
18 }
19 public void Pmedio(int x1, int y1)
20 {
21 double p1, p2;
22 p1=(x+x1)/2;
23 p2=(y+y1)/2;
24 System.out.println("El puntomedio es: "+p1+","+p2);
25 }
26 }
1 /*Archivo UsaCoordenadas.java*/
2 public class UsaCoordenadas {
3 public static void main (String args []){
4 Coordenadas P=new Coordenadas (10,20);
5 //calculamos la Distancia:
6 System.out.println("La Distancia es: "+P.Distancia(5,6));
7 //Punto Medio
8 P.Pmedio(5,6);
9 }
10 }
Explicación:
Un método, si va a devolver algún valor, éste debe especificarse cuando se hace la definición del mismo, para el caso, el método Distancia, devuelve el valor de la distancia, es por ello que lo especificamos como public double. Además que, cuando realizamos la llamada de ese método, es en ese preciso lugar que aparecerá el valor que devuelve. Por otra parte, los atributos, son de acceso privado, lo cual implica que, sólo podemos acceder a ellos, en la clase Coordenadas.
Cuando en una clase, se definen un mismo método, con diferente número de parámetros, o bien con el mismo numero de parámetros pero diferenciándose en la definición, en la cual, al menos un parámetro sea de diferente tipo, cuando esto sucede, se dice que el método está sobrecargado.
Ejemplo 7.3
Cree una aplicación en Java, que imprima un número imaginario. Nota, los números imaginarios, poseen una parte real y otra imaginaria, acompañada por la constante i.
1 class Imaginario {
2 private int real, imag;
3 public Imaginario()
4 {
5 real=0;
6 imag=0;
7 }
8 public Imaginario(int x, int y)
9 {
10 real=x;
11 imag=y;
12 }
13 public void Mostrar()
14 {
15 System.out.println("El Numero Imaginario es: "+real+" + "+imag+"i");
16 }
17 }
1 class UsaImaginario{
2 public static void main (String args []) {
3 Imaginario oI=new Imaginario(5,6);
4 oI.Mostrar();
5 }
6 }
Preguntas
Descubre el error
1. class punto{
Public int x;
Private int y;
void punto( )
{x=10;y=20;}
}
5. punto(int a, int b){a=x; y=b;}
punto(){a=-1;b=-1;}
Ejercicios
8.1 Paquetes (Packages)
Un package es una agrupación de clases. En la API de Java 1.1 había 22 packages; en Java 1.2 hay 59 packages, lo que da una idea del "crecimiento" experimentado por el lenguaje. Además, el usuario puede crear sus propios packages. Para que una clase pase a formar parte de un package llamado pkgName, hay que introducir en ella la sentencia:
package pkgName;
que debe ser la primera sentencia del fichero sin contar comentarios y líneas en blanco.
Los nombres de los packages se suelen escribir con minúsculas, para distinguirlos de las clases, que empiezan por mayúscula. El nombre de un package puede constar de varios nombres unidos por puntos (los propios packages de Java siguen esta norma, como por ejemplo java.awt.event). Todas las clases que forman parte de un package deben estar en el mismo directorio. Los nombres compuestos de los packages están relacionados con la jerarquía de directorios en que se guardan las clases. Es recomendable que los nombres de las clases de Java sean únicos en Internet. Es el nombre del package lo que permite obtener esta característica. Una forma de conseguirlo es incluir el nombre del
dominio (quitando quizás el país), como por ejemplo en el package siguiente:
es.ceit.jgjalon.infor2.ordenar
Las clases de un package se almacenan en un directorio con el mismo nombre largo (path) que el package. Por ejemplo, la clase,
es.ceit.jgjalon.infor2.ordenar.QuickSort.class
debería estar en el directorio,
CLASSPATH\es\ceit\jgjalon\infor2\ordenar\QuickSort.class
donde CLASSPATH es una variable de entorno del PC que establece la posición absoluta de los directorios en los que hay clases de Java (clases del sistema o de usuario), en este caso la posición del directorio es en los discos locales del ordenador.
Pasos Para Crear un Paquete
package MisClases.es;
import MisClases.es.Coordenadas;
Con lo Anterior ya hemos creado, nuestro primer paquete, lo cual, es de manera similar, que Java controla, los paquetes que dispone para la realización de nuestros programas.

Una interfaz, pareceriera que no tiene ningún tipo de aplicación o implementación, dentro de los programas que, creamos en Java. Sin embargo no es así. Ya que, una interfaz indica, como será la "apariencia", que la clase tendrá. Además que, establece cierto "protocolo" entre las clases.
Para declarar una clase haremos uso de la palabra reservada interface (la cual sustituye a la palabra class).
Y para implementar la interfaz, haremos uso de la palabra reservada implements la cual debe especificarse, al momento de declarar la clase que, implementará dicha interfaz.
Ejemplo:
Supongamos que queremos crear un programa que, dadas la base y la altura de un rectángulo, nos devuelva su area, su perímetro y su volumen. Pero haciendo uso de una interfaz.
Solución:
1 //declaración de la interfaz
2 public interface Calculos {
3 public double Perimetro();//calcula el Perímetro
4 public double Area();//calcula Area
5 public double Volumen();//calcula el volumen
6 }//fin de la interfaz
2. Guarde este archivo y compílelo.
3. En otro archivo digite el siguiente código:
1 //Declaración de la clase que implementa la Interfaz Calculos
2 public class Rectangulo extends Object implements Calculos{
3 private double base, altura;
4 public Rectangulo()//constructor
5 {
6 base=0;
7 altura=0;
8 }
9 //establece la base
10 public void AignarBase(double x)
11 {
12 base=x;
13 }
14 //estabece el valor de la altura
15 public void AsignarAltura(double y)
16 {
17 altura=y;
18 }
19 //Calculamos el Perímetro
20 public double Perimetro()
21 {
22 return 2*base+2*altura;
23 }
24 //calculamos el area
25 public double Area()
26 {
27 return base*altura;
28 }
29 public double Volumen()
30 {
31 double espesor=5;
32 return base*altura*espesor;
33 }
34 }
4. Guarde y compile.
5. Ahora digite, en otro archivo, la siguiente secuencia de código:
1 //vamos a probar la clase
2 //y la interfaz
3 import javax.swing.*;
4 import java.text.DecimalFormat;//para que los resultados
5 //se muestren con decimales
6 public class PruebaRect {
7 public static void main (String args []) {
8 double a,b,c;
9 String salida;
10 DecimalFormat df=new DecimalFormat(".00");
11 //creamos el objeto, que contenga sólo dos decimales
12 Rectangulo rect=new Rectangulo();
13
14 //Dimenciones del rectangulo:
15 rect.AsignarBase(8.5);
16 rect.AsignarAltura(10.98);
17
18 //calculos
19 a=rect.Perimetro();
20 b=rect.Area();
21 c=rect.Volumen();
22
23 //impresión
24 salida="El rectangulo, tiene un perímetro de: "+df.format(a)+"\nUn area de: "+df.format(b)+"\nY un volumen de: "+df.format(c);
25 JOptionPane.showMessageDialog(null, salida);
26 }
6. Guárdelo, compílelo y ejecútelo.
Quizá el lector piense que, una interfaz no tiene mayor uso, y a lo mejor, ni se perciba su funcionamiento y mucho menos su implementación. Y siendo franco, al principio, ni yo entendía el por que usar una interfaz. Sin embargo Las interfaces son útiles para:
Página anterior | ![]() Volver al principio del trabajo | Página siguiente ![]() |
excelenteleonardoraygoza | 2007-10-14 10:23:41
La verdad me da gusto que existan sitios que se dediquen a publicar este tipo de documentos, y que haya personas que les guste ayudar de esa manera, en lo particular creo que esta monografía es excelente, soy estudiante de ing en sistemas y la verdad es que este tema me interesa mucho y como lo investigo por mi cuenta pues la verdad es que me esta siendo de mucha utilidad, de antemano agradezco tanto al sitio como a la persona que haya hecho la monografía.
Trabajos relacionados
Ver mas trabajos de Programacion |
|
Nota al lector: es posible que esta página no contenga todos los componentes del trabajo original (pies de página, avanzadas formulas matemáticas, esquemas o tablas complejas, etc.). Recuerde que para ver el trabajo en su versión original completa, puede descargarlo desde el menú superior.