New 2 Java: Suplementos

Distinguir entre clases, objetos y constructores puede ser confuso. Entender las diferencias entre estos t�rminos es importante para saber cuando est�mos dise�ando un objeto y cuando est�mos creando un objeto, y c�mo se construyen nuestros objetos.

Las clases y objetos son los fundamentos de la programaci�n Java. Todos los objetos est�n basados en clases. Una clase es una receta o plano de un objeto. Las clases especifican lo siguiente:

  • Los datos (a trav�s de campos, atributos, o variables).
  • C�mo manipular los datos (a trav�s de m�todos).
  • C�mo construir, o ejemplarizar, el objeto (opcional).

Una clase es una plantilla que define un objeto de la misma forma que una receta define nuestra comida favorita. Una clase no es un objeto igual que una receta de una tarta de manzada no es una tarta.

Supongamos que escribimos una clase llamada BankAccount que especifica los datos:

double account = 0; 
String name = ""; 

Definimos m�todos que operan sobre los datos. Para usar esta clase, creamos un ejemplar de la clase llamado al constructor. El constructor es un m�todo especial que crea un objeto de la clase desde donde es llamado. Por ejemplo:

BankAccount ba = new BankAccount()

Crea un objeto BankAccount.

Los constructores podr�an incluir par�metros, por eso si se ejemplariza un objeto, es ejemplarizado con los argumentos suministrados.

En el ejemplo anterior BankAccount se inicializ� sin ning�n par�metro. Pero la clase puede especificar que el constructor acepte par�metros:

BankAccount(double account, String name) { 
    account = account;
    customername = name; 
}

Cuando se ejemplariza BankAccount con BankAccount ba1 = new BankAccount(900, "Jane Doe"). Este objeto BankAccount ba1 tiene un saldo y un nombre que van con la cuenta.

Podemos crear tantos constructores como necesitemos. Si no escribirmos un constructor, se proporciona autom�ticamente un constructor por defecto igual que el primer constructor mostrado arriba en BankAccount(){}. El constructor por defecto ejemplariza un objeto sin par�metros.

La documentaci�n de J2SE detalla como ejemplarizar objetos de las clases predefinidas en la librer�a llamando a su constructor o constructores.

Por ejemplo, consideremos el siguiente p�rrafo de la documentaci�n del J2SE:

FileInputStream(File file) // constructor

Crea un FileInputStream abriendo una conexi�n a un fichero real, el fichero nombrado por el objeto File en el sistema de ficheros.

Si queremos usar este FileInputStream, ejemplarizamos la clase llamando a su constructor:

FileInputStream fin = new FileInputStream("bankaccount.dat");
NOTA:
FileInputStream es una clase del paquete IO. Recuerda importar java.io.*

Proporcionando constructores nos asguramos de que los objetos se construyen exactamente como lo deseamos, con los datos especificados en los par�metros.

.�Entender la Librer�a de Clases Java

.�La clase ArrayList Explicada:

Las aplicaciones frecuentemente necesitan almacenar un grupo de datos en un s�lo objeto. Los arrays sirven bien para este prop�sito, pero algunas veces necesitamos incrementar o reducir din�micamente el n�mero de elementos del array, o hacer que contenga distintos tipos de datos

Esto es com�n entre las aplicaciones como las tiendas online. Un cliente a�ade una mercanc�a a su carro de la compra, y detr�s de la escena, los �tems son almacenados y eliminados autom�ticamente.

Para esta clase de grupos de datos crecientes y menguantes, podemos usar la clase Vector, o la reciente clase ArrayList del paquete java.util.

Un ArrayList contiene tantos objetos como necesitemos.

ArrayList tiene varios constructores, dependiendo de c�mo necesitemos construir el ArrayList. Los siguientes dos constructores nos ayudar�n a empezar:

  • ArrayList() construye un ArrayList con capacidad cero por defecto, pero crecer� seg�n le vayamos a�adiendo:
    ArrayList al = new ArrayList();
  • ArrayList(int initialCapacity) construye un ArrayList vac�o con una capacidad inicial especificada:
    ArrayList al2 = new ArrayList(5);

Un objeto ArrayList s�lo contiene referencias a objetos. Para almacenar tipos primitivos como double, long, o float, usamos una clase envoltura, como se desmuestra abajo. Para a�adir objetos al ArrayList, llamamos a sus m�todos con el operador punto:

al.add("Java Technology Book"); //adds a String
al.add(new Double(40.00)); //adds a double in a class wrapper
                           //More about class wrappers in a future issue

System.out.println(al.size()); //prints the size of 
                               //the ArrayList

Si necesitamos circular a trav�s de los elementos del ArrayList, usamos la clase Iterator y sus m�todos hasNext y next:

 
Iterator alIt = al.iterator();

while (alIt.hasNext()) {
    System.out.println(alIt.next() + " ");
}

ArrayList es una de las muchas clases del Collection Framework, que proporciona un conjunto de interfaces y clases bien-dise�ados para almacenar y manipular grupos de datos como una sola unidad, una coleccion.

.�Programa Ejercicio

Hemos aprendido s�bre las clases, los objetos y los constructores, y sobre la clase ArrayList. Pon estos conceptos juntos para crear la siguiente aplicaci�n:

  • Crea una clase llamada ItemsListing.
  • Crea un constructor para ItemsListing que tome un par�metro: item.
  • En la clase ItemsListing, usa el siguiente m�todo para convertir un dato variable en un String:
    public String toString() {
       	String s = "Item: " + item;
       	return s;
    }     
    
  • Crea una clase p�blica llamada ArrayListItems que contenga el m�todo main.
  • En el m�todo main, ejemplariza tres objetos de ItemsListing, proporcionando los datos para el constructor.
  • Crea un ArrayList.
  • Rellena el ArrayList con los tres objetos, usando el m�todo add.
  • Pasa el ArrayList a un Iterator.
  • Usa un bucle while y el m�todo hasNext para imprimir el contenido del ArrayList.
  • Graba el fichero como ArrayListItems.java compilalo y ejecutalo.

El resultado deber�a ser similar a este:

Item: Snorkel
Item: Diving Mask
Item: 6.5 mm Wet Suit

.�Un poco de Java

.��Por qu� los Argumentos de la L�nea de Comandos no son Tecnolog�a 100% Pura Java?

Las aplicaciones que requieren argumentos de la l�nea de comandos no son 100% Puro Java porque no todos lo sistemas tienen disponible una l�nea de comandos.

Si tienes una l�nea de comandos en tu sistema, usar argumentos de l�nea de comadnos durante el desarrollo de la aplicaci�n es �til para probar la l�gica del c�digo, o leer ficheros. De otra forma, debes considerrr el utilizar propiedades para que tu aplicaci�n sea portable.

.�Soluci�n al Programa de Ejercicio

Esta es una posible soluci�n al Programa del Ejercicio:

//ArrayList class is in the 
//java.util package
import java.util.*;

class ItemsListing {
  
    private String item;
     
    // Constructor with parameters. When each object
   // is instantiated, or created, arguments must be
   // provided so the object contains the required 
   // data.
   public ItemsListing (String item) {
                                    
         // The keyword this is necessary to prevent confusion
         // over which object you are referring to when
         // you instantiate multiple objects.
         
         this.item = item;
    }
         
    // Method to convert the objects to Strings. 
         
   public String toString() {
       String s = "Item: " + item;
       return s;
   	}	  
}
______________________________________________________________________
 
public class ArrayListItems {

   public static void main(String []args) {
         
       // Creates an ArrayList to store each object, and 
       // adds each object with the add method and dot operator
       // as well as with the arguments for each object.
       
       ArrayList items = new ArrayList();
       items.add(new ItemsListing("Snorkel"));
       items.add(new ItemsListing("Diving Mask"));
       items.add(new ItemsListing("6.5 mm Wet Suit"));
       
      // The ArrayList is then passed to an Iterator
      
       Iterator iterateItems = items.iterator();
       
      // while loops through each element of the ArrayList
      // and prints the results 
      
       while (iterateItems.hasNext()) {
           System.out.println(iterateItems.next());
       }
    }
} 

Resultados:

Snorkel
Diving Mask
Item: 6.5 mm Wet Suit

.�Descargar la Plataforma Java 2

Para la mayor�a del desarrollo Java, necesitas las librer�as de clases Java, el compilador, las herramientas, y el entorno de ejecuci�n proporcionado por el kit de desarrollo de Java 2, Standard Edition.

COMPARTE ESTE ARTÍCULO

COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP
SIGUIENTE ARTÍCULO