Sie sind auf Seite 1von 33

Introduccin a la programacin J ava, parte 1: Conceptos bsicos del lenguaje J ava

http://www.ibm.com/developerworks/ssa/java/tutorials/j-introtojava1/[19/09/2014 8:07:46]
Este tutorial de dos partes presenta la estructura, la sintaxis y el paradigma de programacin
del lenguaje y la plataforma J ava. Aprender la sintaxis J ava que ms probablemente
encontrar profesionalmente y los modismos de la programacin J ava que puede usar para
desarrollar aplicaciones J ava slidas y plausibles de mantener. En la Parte 1, J . Steven
Perry lo gua a travs de los puntos fundamentales de la programacin orientada a objetos
en la plataforma J ava, que incluye la sintaxis J ava fundamental y su uso. Comenzar con la
creacin de objetos J ava y la adicin de comportamiento a ellos y concluir con una
introduccin a la Infraestructura de colecciones J ava, con un terreno considerable cubierto
en el medio.
| (1269 KB) |
, Consultor Director, Makoto
Consulting Group, Inc.
03-12-2012
Desarrolle habilidades de este tema
Este contenido es parte de un knowledge path
progresivo para avanzar en sus habilidades. Vea
Convirtase en un desarrollador J ava
Antes que comience
Descubra qu esperar de este tutorial y cmo sacarle el mayor provecho.
Acerca de este tutorial
El tutorial de dos partes "Introduccin a la programacin J ava" tiene como objetivo
conseguir que los desarrolladores de software que sean nuevos en la tecnologa J ava
estn listos y en movimiento con la programacin orientada a objetos (OOP) y el
desarrollo de aplicaciones del mundo real usando el lenguaje y la plataforma J ava.
La primera parte es una introduccin paso a paso a la OOP con el uso del lenguaje J ava.
El tutorial comienza con una visin general de la plataforma y el lenguaje J ava y le siguen las instrucciones para establecer un entorno de
desarrollo que consiste en un Kit de desarrollo de J ava (J DK) y el Eclipse IDE. Una vez que se le hayan presentado los componentes de su
entorno de desarrollo, comenzar a aprender la sintaxis J ava bsica en un modo prctico.
La Parte 2 cubre funciones de lenguaje ms avanzadas, que incluyen expresiones regulares, genricos, E/S y serializacin. Los ejemplos de
programacin en la Parte 2 se desarrollan en base al objeto Per son que usted comienza a desarrollar en la Parte 1.
Objetivos
Cuando haya terminado la Parte 1, estar familiarizado con la sintaxis del lenguaje J ava bsico y podr escribir programas J ava simples.
Debera continuar con "Introduccin a la programacin J ava, parte 2: construcciones para aplicaciones del mundo real" para desarrollarse
sobre esta base.
Requisitos previos
Este tutorial es para desarrolladores de software que todava no tienen experiencia con el cdigo J ava o la plataforma J ava. El tutorial
incluye una visin general de los conceptos de OOP.
Requisitos del sistema
Para completar los ejercicios de este tutorial, instale y establezca un entorno de desarrollo que consista en:
J DK 6 de Sun/Oracle.
IDE Eclipse para desarrolladores J ava.
En el tutorial, se incluyen instrucciones de descarga e instalacin para ambos.
La configuracin recomendada del sistema es la siguiente:
Un sistema que soporte J ava SE 6 con al menos 1GB de memoria principal. J ava 6 tiene soporte en Linux, Windowsy Solaris.
Al menos 20MB de espacio en disco para instalar los componentes y ejemplos del software.
developerWorks en espaol Temas Tcnicos tecnologia J ava Biblioteca tcnica
Introduccin a la programacin Java, parte 1: Conceptos
bsicos del lenguaje Java
Programacin orientada a objetos en la plataforma Java
Ver ms contenido de esta serie PDF:
J . Steven Perry
Volver arriba
Ingrese (o Regstrese) Espaol IBM
Temas Tcnicos Descargas Comunidad
Tabla de contenidos
Buscar en developerWorks Enviar
Introduccin a la programacin J ava, parte 1: Conceptos bsicos del lenguaje J ava
http://www.ibm.com/developerworks/ssa/java/tutorials/j-introtojava1/[19/09/2014 8:07:46]
Conozca las API de Java
La mayora de los desarrolladores J ava hacen
referencia constantemente a la documentacin API de
J ava online oficial, tambin llamada el J avadoc (vea
Recursos). De forma predeterminada, usted ve tres
marcos en el J avadoc. El marco superior izquierdo
muestra todos los paquetes en la API y debajo estn
las clases en cada paquete. El marco principal (a la
derecha) muestra detalles del paquete o de la clase
seleccionada actualmente. Por ejemplo, si selecciona
el paquete j ava. ut i l en el marco superior izquierdo y
luego selecciona la clase Ar r ayLi st que aparece
debajo de l, en el marco derecho, ver detalles acerca
del Ar r ayLi st , que incluyen una descripcin de lo que
hace, cmo usarlo y sus mtodos.
Visin general de la plataforma Java
La tecnologa J ava se usa para desarrollar aplicaciones para un amplio alcance de entornos, desde dispositivos del consumidor hasta
sistemas empresariales heterogneos. En esta seccin, obtenga una vista de alto nivel de la plataforma J ava y sus componentes. Vea
Recursos para aprender ms acerca de los componentes de la plataforma J ava discutidos en esta seccin.
El lenguaje Java
Como cualquier lenguaje de programacin, el lenguaje J ava tiene su propia estructura,
reglas de sintaxis y paradigma de programacin. El paradigma de programacin del
lenguaje J ava se basa en el concepto de programacin orientada a objetos (OOP), que las
funciones del lenguaje soportan.
El lenguaje J ava es un derivado del lenguaje C, por lo que sus reglas de sintaxis se
parecen mucho a C: por ejemplo, los bloques de cdigos se modularizan en mtodos y se
delimitan con llaves ({ y }) y las variables se declaran antes de que se usen.
Estructuralmente, el lenguaje J ava comienza con paquetes. Un paquete es el mecanismo
de espacio de nombres del lenguaje J ava. Dentro de los paquetes se encuentran las
clases y dentro de las clases se encuentran mtodos, variables, constantes, entre otros.
En este tutorial, aprender acerca de las partes del lenguaje J ava.
El compilador Java
Cuando usted programa para la plataforma J ava, escribe el cdigo de origen en archivos .java y luego los compila. El compilador verifica su
cdigo con las reglas de sintaxis del lenguaje, luego escribe los cdigos byte en archivos .class. Los cdigos byte son instrucciones
estndar destinadas a ejecutarse en una J ava Virtual Machine (J VM). Al agregar este nivel de abstraccin, el compilador J ava difiere de los
otros compiladores de lenguaje, que escriben instrucciones apropiadas para el chipset de la CPU en el que el programa se ejecutar.
La JVM
Al momento de la ejecucin, la J VM lee e interpreta archivos .class y ejecuta las instrucciones del programa en la plataforma de hardware
nativo para la que se escribi la J VM. La J VM interpreta los cdigos byte del mismo modo en que una CPU interpretara las instrucciones
del lenguaje del conjunto. La diferencia es que la J VM es un software escrito especficamente para una plataforma particular. La J VM es el
corazn del principio "escrito una vez, ejecutado en cualquier lugar" del lenguaje J ava. Su cdigo se puede ejecutar en cualquier chipset
para el cual una implementacin apropiada de la J VM est disponible. Las J VM estn disponibles para plataformas principales como Linux y
Windows y se han implementado subconjuntos del lenguaje J ava en las J VM para telfonos mviles y aficionados de chips.
El recolector de basura
En lugar de forzarlo a mantenerse a la par con la asignacin de memoria (o usar una biblioteca de terceros para hacer esto), la plataforma
J ava proporciona una gestin de memoria lista para usar. Cuando su aplicacin J ava crea una instancia de objeto al momento de ejecucin,
la J VM asigna automticamente espacio de memoria para ese objeto desde el almacenamiento dinmico, que es una agrupacin de
memoria reservada para que use su programa. El recolector de basura J ava se ejecuta en segundo plano y realiza un seguimiento de
cules son los objetos que la aplicacin ya no necesita y recupera la memoria que ellos ocupan. Este abordaje al manejo de la memoria se
llama gestin de la memoria implcita porque no le exige que escriba cualquier cdigo de manejo de la memoria. La recogida de basura es
una de las funciones esenciales del rendimiento de la plataforma J ava.
El kit de desarrollo de Java
Cuando usted descarga un kit de desarrollo de J ava (J DK), obtiene, adems del compilador y otras herramientas, una librera de clase
completa de programas de utilidad preconstruidos que lo ayudan a cumplir cualquier tarea comn al desarrollo de aplicaciones. El mejor
modo para tener una idea del mbito de los paquetes y bibliotecas J DK es verificar la documentacin API J DK (vea Recursos).
El Java Runtime Environment
El J ava Runtime Environment (J RE, tambin conocido como el J ava Runtime) incluye las bibliotecas de cdigos de la J VM y los
componentes que son necesarios para programas en ejecucin escritos en el lenguaje J ava. Est disponible para mltiples plataformas.
Puede redistribuir libremente el J RE con sus aplicaciones, de acuerdo a los trminos de la licencia del J RE, para darles a los usuarios de la
aplicacin una plataforma en la cual ejecutar su software. El J RE se incluye en el J DK.
Configuracin de su entorno de desarrollo de Java
En esta seccin, tendr instrucciones para descargar e instalar el J DK 6 y el lanzamiento actual de IDE Eclipse y para configurar su entorno
de desarrollo de Eclipse.
Si usted ya ha instalado el J DK e IDE Eclipse, tal vez quiera saltar a la seccin Getting started with Eclipse o a la que le sigue, Object-
oriented programming concepts.
Volver arriba
Introduccin a la programacin J ava, parte 1: Conceptos bsicos del lenguaje J ava
http://www.ibm.com/developerworks/ssa/java/tutorials/j-introtojava1/[19/09/2014 8:07:46]
Su entorno de desarrollo
El J DK incluye un conjunto de herramientas de lnea de comandos para compilar y ejecutar su cdigo J ava, que incluye una copia completa
del J RE. Aunque usted ciertamente puede usar estas herramientas para desarrollar sus aplicaciones, la mayora de los desarrolladores
valoran la funcionalidad adicional, la gestin de tareas y la interfaz visual de un IDE.
Eclipse es un IDE de cdigo abierto popular para el desarrollo J ava. Maneja las tareas bsicas, tales como la compilacin de cdigos y la
configuracin de un entorno de depuracin, para que pueda centrase en escribir y probar cdigos. Adems, puede usar Eclipse para
organizar archivos de cdigos de origen en proyectos, compilar y probar esos proyectos y almacenar archivos de proyectos en cualquier
cantidad de repositorios de origen. Necesita tener instalado un J DK para usar Eclipse para el desarrollo J ava.
Instale JDK 6
Siga estos pasos para descargar e instalar J DK 6:
1. Navegue hasta J ava SE Downloads y haga clic en el recuadro Java Platform (JDK) para visualizar la pgina de descarga de la ltima
versin del J DK (J DK 6, actualizacin 21 al momento de escritura).
2. Haga clic en el botn Download.
3. Seleccione la plataforma del sistema operativo que necesita.
4. Se le pedir el nombre de usuario y contrasea de su cuenta. Ingrselos si tiene una cuenta, regstrese si no la tiene o puede hacer clic
en Continue para saltar este paso y continuar para hacer la descarga.
5. Guarde el archivo en su unidad de disco duro cuando se lo solicite.
6. Cuando se complete la descarga, ejecute el programa de instalacin. (El archivo que acaba de descargar es un archivo ZIP autoextrable
que tambin es el programa de instalacin). Instale el J DK en su unidad de disco duro en un una ubicacin fcil de recordar (por ejemplo,
C:\home\jdk1.6.0_20 en Windows o ~/jdk1.6.0_20 en Linux). Es una buena idea codificar el nmero de actualizacin en el nombre del
directorio de instalacin que usted elija.
Ahora tiene un entorno J ava en su mquina. A continuacin, instalar el IDE Eclipse.
Instale Eclipse
Para descargar e instalar Eclipse, siga estos pasos:
1. Navegue hasta Eclipse Galileo Sr2 Packages.
2. Haga clic en Eclipse IDE for Java Developers.
3. Bajo los Enlaces de descarga en el lado derecho, seleccione su plataforma.
4. Seleccione la rplica desde la cual quiere hacer la descarga, luego guarde el archivo en su unidad de disco duro.
5. Extraiga los contenidos del archivo .zip a una ubicacin en su disco duro que pueda recordar fcilmente (por ejemplo, C:\home\eclipse en
Windows o ~/eclipse en Linux).
Configure Eclipse
El IDE Eclipse se coloca encima del J DK como una extraccin til pero todava necesita acceder al J DK y sus diversas herramientas. Antes
de que pueda usar Eclipse para escribir el cdigo J ava, tiene que indicarle dnde est ubicado el J DK.
Para configurar su entorno de desarrollo Eclipse:
1. Inicie Eclipse al hacer doble clic en eclipse.exe (o el ejecutable equivalente para su plataforma).
2. Aparecer el Iniciador del espacio de trabajo, que le permitir seleccionar una carpeta raz para sus proyectos Eclipse. Elija una carpeta
que recuerde fcilmente, por ejemplo C:\home\workspace en Windows o ~/workspace en Linux.
3. Descarte la pantalla Bienvenido a Eclipse.
4. Haga clic en Window > Preferences > Java > Installed JREs. La Ilustracin 1 muestra la pantalla de configuracin para el J RE:
Ilustracin 1. Configuracin del JDK que Eclipse utiliza.
Introduccin a la programacin J ava, parte 1: Conceptos bsicos del lenguaje J ava
http://www.ibm.com/developerworks/ssa/java/tutorials/j-introtojava1/[19/09/2014 8:07:46]
5. Eclipse indicar un J RE instalado. Necesita asegurarse de usar el que descarg con J DK 6. Si Eclipse no detecta automticamente el
J DK que usted instal, haga clic en Add... y en el siguiente dilogo Standard VM, luego haga clic en Next.
6. Especifique el directorio de inicio del J DK (por ejemplo, C:\home\jdk1.6.0_20 en Windows), luego haga clic en Finish.
7. Confirme que el J DK que quiere usar est seleccionado y haga clic en OK.
Ahora Eclipse est configurado y listo para que usted cree proyectos y compile y ejecute cdigos J ava. La siguiente seccin lo familiarizar
con Eclipse.
Comenzar a usar Eclipse
Eclipse no es solo un IDE, es todo un ecosistema de desarrollo. Esta seccin es una breve introduccin prctica para usar Eclipse para el
desarrollo J ava. Vea Recursos si quiere aprender ms acerca de Eclipse.
El entorno de desarrollo de Eclipse
El entorno de desarrollo de Eclipse tiene cuatro componentes principales:
Espacio de trabajo
Proyectos
Perspectivas
Vistas
La unidad primaria de organizacin en Eclipse es el espacio de trabajo. Un espacio de trabajo contiene todos sus proyectos. Una perspectiva
es un modo de observar cada proyecto (de ah el nombre) y dentro de una perspectiva hay una o ms vistas.
La perspectiva Java
La Ilustracin 2 muestra la perspectiva J ava, que es la perspectiva predeterminada para Eclipse. Debera ver esta perspectiva cuando inicie
Eclipse.
Ilustracin 2. Perspectiva Java de Eclipse
Volver arriba
Introduccin a la programacin J ava, parte 1: Conceptos bsicos del lenguaje J ava
http://www.ibm.com/developerworks/ssa/java/tutorials/j-introtojava1/[19/09/2014 8:07:46]
La perspectiva J ava contiene las herramientas que necesita para comenzar a escribir las aplicaciones J ava. Cada pestaa que se muestra
en la Ilustracin 2 es una vista para la perspectiva J ava. Package Explorer y Outline son dos vistas particularmente tiles.
El entorno Eclipse tiene un alto grado de configuracin. Cada vista es acoplable, por lo que puede desplazarla alrededor de la perspectiva
J ava y ubicarla donde quiera. Aunque por ahora, qudese con la configuracin predeterminada de la perspectiva y de la vista.
Cree un proyecto
Siga estos pasos para crear un proyecto J ava nuevo:
1. Haga clic en File > New > Java Project ... y ver un recuadro de dilogo que se abre como el que se muestra en la Ilustracin 3:
Ilustracin 3. Asistente para el proyecto Java nuevo
2. Ingrese I nt r o como nombre del proyecto y haga clic en Finish.
3. Si quiere modificar los parmetros predeterminados del proyecto, haga clic en Next. (Esto se recomienda solo si tiene experiencia con el
IDE Eclipse).
4. Haga clic en Finish para aceptar la configuracin del proyecto y crear el proyecto.
Ahora ha creado un nuevo proyecto J ava de Eclipse y carpeta de origen. Su entorno de desarrollo est listo para actuar. Sin embargo, una
comprensin del paradigma OOP, que se cubre en las siguientes dos secciones de este tutorial, es esencial. Si usted est
familiarizado con los conceptos y principios de OOP, tal vez quiera saltar a Getting started with the J ava language.
Introduccin a la programacin J ava, parte 1: Conceptos bsicos del lenguaje J ava
http://www.ibm.com/developerworks/ssa/java/tutorials/j-introtojava1/[19/09/2014 8:07:46]
Conceptos de programacin orientada a objetos
El lenguaje J ava est (en su mayor parte) orientado a objetos. Si no ha utilizado un lenguaje orientado a objetos antes, sus conceptos
pueden parecer extraos al principio. Esta seccin es una breve introduccin a los conceptos del lenguaje OOP, que utiliza programacin
estructurada como punto de contraste.
Qu es un objeto?
Los lenguajes de programacin estructurada como C y COBOL siguen un paradigma de programacin muy diferente de los orientados a
objetos. El paradigma de programacin estructurada est altamente orientado a datos, lo cual significa que usted tiene estructuras de datos
por una parte y luego instrucciones del programa que actan sobre esos datos. Los lenguajes orientados a objetos, como el lenguaje J ava,
combinan datos e instrucciones del programa en objetos.
Un objeto es una entidad independiente que contiene atributos y comportamientos y nada ms. En lugar de tener una estructura de datos
con campos (atributos) y pasar esa estructura a toda la lgica del programa que acta sobre ella (comportamiento), en un lenguaje
orientado a objetos, se combinan los datos y la lgica del programa. Esta combinacin puede ocurrir en niveles completamente diferentes
de granularidad, desde objetos especficos como un Number hasta objetos de aplicacin general como un servicio de FundsTr ansf er en
una gran aplicacin bancaria.
Objetos padre e hijo
Un objeto padre es aquel que sirve como la base estructural para derivar objetos hijos ms complejos. Un objeto hijo se parece a su padre
pero es ms especializado. El paradigma orientado a objetos le permite reutilizar los atributos y comportamientos comunes del objeto padre
y le agrega a sus objetos hijos atributos y comportamientos que difieren. (Usted aprender ms sobre herencia en la siguiente seccin de
este tutorial).
Comunicacin y coordinacin de objetos
Los objetos se comunican con otros objetos por medio del envo de mensajes (llamadas de mtodo en el lenguaje J ava). Adems, en una
aplicacin orientada a objetos, el cdigo del programa coordina las actividades entre objetos para realizar tareas dentro del contexto del
dominio de aplicacin dado. (En el paradigma Modelo-Vista-Controlador, este cdigo de programa de coordinacin es el Controlador. Vea
Recursos para aprender ms acerca de MVC).
Resumen del objeto
Un objeto bien escrito:
tiene lmites ntidos.
realiza un conjunto limitado de actividades.
conoce solo lo relacionado a sus datos y cualquier otro objeto que necesite para cumplir sus actividades.
Bsicamente, un objeto es una entidad diferenciada que tiene solo las dependencias necesarias de otros objetos para realizar sus tareas.
Ahora ver cmo luce un objeto.
El objeto Per son
Comenzar con un ejemplo que est basado en escenario comn de desarrollo de aplicacin: se representa a un individuo con un objeto
Per son.
Volviendo a la definicin de un objeto, usted sabe que un objeto tiene dos elementos primarios: atributos y comportamiento. Ver cmo estos
se aplican al objeto Per son.
Atributos
Qu atributos puede tener una persona? Algunos atributos comunes incluyen:
Nombre
Edad
Altura
Peso
Color de ojos
Gnero
Probablemente a usted se le pueden ocurrir ms (y siempre puede agregar ms atributos ms tarde) pero esta lista es un buen comienzo.
Comportamiento
Volver arriba
Introduccin a la programacin J ava, parte 1: Conceptos bsicos del lenguaje J ava
http://www.ibm.com/developerworks/ssa/java/tutorials/j-introtojava1/[19/09/2014 8:07:46]
Una persona real puede hacer todo tipo de actividades pero los comportamientos de los objetos normalmente se relacionan con algn tipo
de contexto de aplicacin. En un contexto de aplicacin de negocio, por ejemplo, puede querer preguntarle a su objeto Per son: "Qu edad
tiene?" Como respuesta, Per son le dira el valor de su atributo de Edad.
Una lgica ms compleja podra estar oculta dentro del objeto Per son pero por ahora suponga que esa Per son tiene el comportamiento de
responder estas preguntas:
Cul es su nombre?
Qu edad tiene?
Cul es su altura?
Cunto pesa?
Cul es su color de ojos?
Cul es su gnero?
Estado y cadena
El Estado es un concepto importante en OOP. El estado de un objeto se representa en cualquier momento por medio del valor de sus
atributos.
En el caso de Per son, su estado se define por sus atributos, tales como nombre, edad, altura y peso. Si usted quisiera presentar una lista de
varios de esos atributos, podra hacerlo utilizando una clase de St r i ng, sobre la cual hablar ms en el tutorial posteriormente.
J untos, los conceptos de estado y cadena le permiten decirle a Per son: cunteme quin es usted dndome un listado (o una St r i ng) de sus
atributos.
Principios de OOP
Si usted viene de un ambiente de programacin estructurada, la proposicin de valores de OOP puede que no sea clara todava. Despus
de todo, los atributos de una persona y cualquier lgica para recuperar (y convertir) sus valores pueden escribirse en C o COBOL. Esta
seccin clarifica los beneficios del paradigma OOP al explicar sus principios distintivos: encapsulamiento, herencia y polimorfismo.
Encapsulamiento
Recuerde que un objeto es, sobre todo, diferenciado o independiente. Este es el principio de encapsulamiento en funcionamiento. Ocultacin
es otro trmino que a veces se usa para expresar la naturaleza independiente y protegida de los objetos.
Sin tener en cuenta la terminologa, lo que es importante es que el objeto mantiene un lmite entre su estado y comportamiento y el mundo
exterior. Como los objetos del mundo real, los objetos usados en la programacin de computadora tienen diversos tipos de relaciones con
diferentes categoras de objetos en las aplicaciones que los utilizan.
En la plataforma J ava, puede usar especificadores de acceso (los que presentar ms adelante en el tutorial) para variar la naturaleza de las
relaciones de los objetos desde lo pblico a lo privado. El acceso pblico tiene una gran apertura, mientras que el acceso privado significa
que los atributos del objeto son accesibles solo dentro del objeto mismo.
El lmite entre lo pblico y lo privado hace cumplir el principio orientado a objetos de encapsulamiento. En la plataforma J ava, usted puede
variar la fortaleza de ese lmite sobre una base de objeto a objeto, al depender de un sistema de confianza. El encapsulamiento es una
potente funcin del lenguaje J ava.
Herencia
En la programacin estructurada, es comn copiar una estructura, darle un nombre nuevo y agregar o modificar los atributos que hacen que
la nueva identidad (por ejemplo, un registro de Cuent a) sea diferente de su fuente original. Con el tiempo, este abordaje genera una gran
cantidad de cdigos duplicados, que pueden crear problemas de mantenimiento.
OOP presenta el concepto de herencia, por el cual los objetos especializados, sin ningn cdigo adicional, pueden "copiar" los
atributos y el comportamiento de los objetos de origen en los que se especializan. Si alguno de esos atributos o comportamientos necesitan
modificarse, entonces simplemente modifquelos temporalmente. Solo modifique lo que necesite modificar para crear objetos
especializados. Como ya sabe desde la seccin Object-oriented programming concepts, el objeto origen se llama el padre y la
especializacin nueva se llama el hijo.
Herencia en funcionamiento
Suponga que est escribiendo una aplicacin de recursos humanos y quiere usar el objeto Per son como base para un objeto nuevo llamado
Empl oyee. Al ser el hijo de Per son, el Empl oyee tendra todos los atributos de un objeto Per son, junto con los adicionales, tales como:
Volver arriba
Introduccin a la programacin J ava, parte 1: Conceptos bsicos del lenguaje J ava
http://www.ibm.com/developerworks/ssa/java/tutorials/j-introtojava1/[19/09/2014 8:07:46]
El lenguaje Java: no est puramente
orientado a objetos
El lenguaje J ava le permite crear objetos de primera
clase pero no todo en el lenguaje es un objeto. Hay dos
cualidades que diferencian el lenguaje J ava de los
lenguajes puramente orientados a objetos como
Smalltalk. Primero, el lenguaje J ava es una mezcla de
objetos y tipos primitivos. Segundo, le permite escribir
un cdigo que exponga el funcionamiento interno de un
objeto a cualquier otro objeto que lo utilice.
El lenguaje J ava s le da las herramientas necesarias
para seguir principios OOP slidos y producir un cdigo
slido orientado a objetos. Debido a que J ava no est
puramente orientado a objetos, debe ejercitar alguna
disciplina sobre cmo usted escribe un cdigo. El
lenguaje no lo obliga a hacer lo correcto, por lo tanto
debe hacerlo usted mismo. (Esta ltima seccin del
tutorial, Writing good J ava code, proporciona consejos).
Nmero de identificacin del contribuyente
Fecha de contratacin
Salario
La herencia hace que sea fcil crear la nueva clase de Empl oyee del objeto sin necesidad de copiar manualmente todo el cdigo de Per son
o mantenerlo.
Ver muchos ejemplos de herencia en la programacin J ava ms adelante en el tutorial, especialmente en la Part 2.
Polimorfismo
El polimorfismo es un concepto ms difcil de entender que el encapsulamiento o la herencia. Bsicamente, significa que los objetos que
pertenecen a la misma ramificacin de una jerarqua, cuando se enva el mismo mensaje (es decir, cuando se le indica que realice lo
mismo), pueden manifestar ese comportamiento de modo diferente.
Para entender cmo el polimorfismo se aplica a un contexto de aplicacin de negocio, regrese al ejemplo de Per son. Recuerda indicarle a
Per son que formatee sus atributos en una St r i ng? El polimorfismo hace que sea posible para Per son representar sus atributos en una
variedad de formas, dependiendo del tipo de Per son que sea.
El polimorfismo es uno de los conceptos ms complejos con los que se encontrar en OOP en la plataforma J ava y no dentro del mbito de
un tutorial introductorio. Vea Recursos si quiere aprender ms acerca del polimorfismo.
Comenzar con el lenguaje Java
Sera imposible introducir toda la sintaxis del lenguaje J ava en un solo tutorial. Lo que resta
de la Parte 1 se centra en los conceptos bsicos del lenguaje, por lo que le da suficiente
conocimiento y prctica para escribir programas simples. OOP se trata por completo de
los objetos, por lo cual esta seccin comienza con dos temas relacionados
especficamente con la forma en que el lenguaje J ava los maneja: palabras reservadas y
la estructura de un objeto J ava.
Palabras reservadas
Como cualquier lenguaje de programacin, el lenguaje J ava designa ciertas palabras que
el compilador reconoce como especiales y, como tales, usted no tiene permitido usarlas
para nombrar sus construcciones J ava. La lista de palabras reservadas es
sorprendentemente corta:
abst r act o
af i r mar
bool eano
i nt er r upci n
byt e
caso
capt ur ar
car act .
cl ase
const .
cont i nuar
pr edet er mi nado
hacer
dobl e
el se
enumer .
ext i ende
Volver arriba
Introduccin a la programacin J ava, parte 1: Conceptos bsicos del lenguaje J ava
http://www.ibm.com/developerworks/ssa/java/tutorials/j-introtojava1/[19/09/2014 8:07:46]
f i nal
f i nal ment e
f l ot ant e
par a
i r a
si
i mpl ement a
i mpor t ar
i nst anci a de
i nt
i nt er f az
l ar go
nat i vo
nuevo
paquet e
pr i vado
pr ot egi do
pbl i co
r et or no
cor t o
est t i co
st r i ct f p
sper
conmut ador
si ncr oni zado
est o
ar r oj ar
ar r oj a
t r ansi t or i o
i nt ent ar
i nvl i do
vol t i l
mi ent r as
Observe que t r ue, f al se y nul l tcnicamente no son palabras reservadas. Aunque son literales, las incluyo en esta lista porque no puede
usarlas para nombrar construcciones J ava.
Una ventaja de la programacin con un IDE es que puede usar coloreado de sintaxis para palabras reservadas, como ver ms adelante en
este tutorial.
Estructura de un objeto Java
Recuerde que un objeto es una entidad diferenciada que contiene atributos y comportamiento. Eso significa que tiene un lmite ntido y un
estado y puede realizar actividades cuando se lo piden correctamente. Cada lenguaje de orientacin a objetos tiene reglas sobre cmo
definir un objeto.
En el lenguaje J ava, los objetos se definen como se demuestra en el Listado 1
Listado 1. Definicin de objeto
Introduccin a la programacin J ava, parte 1: Conceptos bsicos del lenguaje J ava
http://www.ibm.com/developerworks/ssa/java/tutorials/j-introtojava1/[19/09/2014 8:07:46]
package packageName;
import Cl assNameToI mpor t ;
accessSpeci f i er class Cl assName {
accessSpeci f i er dat aType var i abl eName [ = i ni t i al Val ue] ;
accessSpeci f i er Cl assName( [ ar gument Li st ] ) {
const r uct or St at ement ( s)
}
accessSpeci f i er r et ur nType met hodName( [ ar gument Li st ] ) {
met hodSt at ement ( s)
}
/ / Thi s i s a comment
/ * Thi s i s a comment t oo */
/ * Thi s i s a
mul t i l i ne
comment */
}
El Listado 1 contiene diversos tipos de construcciones, que he diferenciado con formato de fuente. Las construcciones que se muestran en
negrita (que encontrar en la lista de palabras reservadas) son literales. En cualquier definicin de objeto, deben ser exactamente lo que
son aqu. Los nombres que le he dado a las otras construcciones describen los conceptos que representan. Explicar todas las
construcciones en detalle en el resto de esta seccin.
Nota: En el Listado 1 y algunos otros ejemplos de cdigos en esta seccin, los corchetes indican que las construcciones dentro de ellos no
se requieren. Los corchetes en s (a diferencia de { y }) no son parte de la sintaxis J ava.
Comentarios en el cdigo
Observe que el Listado 1 tambin incluye algunas lneas de comentarios:
/ / Est e es un coment ar i o
/ * Est e t ambi n es un coment ar i o */
/ * Est e es un
coment ar i o
ml t i pl e */
Casi todos los lenguajes de programacin le permiten al programador agregar comentarios para ayudar a documentar el cdigo. La sintaxis
J ava permite tanto comentarios de una sola lnea como comentarios mltiples. Un comentario de una sola lnea debe ocupar una lnea,
aunque puede usar comentarios de una sola lnea adyacentes para formar un bloque. Un comentario de lneas mltiples comienza con / *,
debe terminar con */ y puede distribuirse en cualquier cantidad de lneas.
Aprender ms sobre los comentarios cuando llegue a la seccin Writing good J ava code de este tutorial.
Empaquetado de objetos
El lenguaje J ava le permite elegir los nombres de sus objetos, tales como Account , Per son o Li zar dMan. En ocasiones, puede que termine
usando el mismo nombre para expresar dos conceptos ligeramente diferentes. Esto se llama una colisin de nombres y sucede con
frecuencia. El lenguaje J ava usa paquetes para resolver estos conflictos.
Un paquete J ava es un mecanismo para proporcionar un espacio de nombres: un rea encapsulada en donde los nombres son nicos pero,
fuera de esa rea, puede que no lo sean. Para identificar una construccin de manera nica, debe calificarla totalmente al incluir su espacio
de nombres.
Los paquetes tambin le dan una buena forma para construir aplicaciones ms complejas en unidades diferenciadas de funcionalidad.
Definicin de paquete
Para definir un paquete, use la palabra clave paquet e seguida por un nombre de paquete legal y termina con un punto y coma. A menudo,
los nombres de los paquetes se separan con puntos y siguen este plan de facto:
package or gType. or gName. appName. compName;
Esta definicin de paquete se divide de la siguiente manera:
or gType es el tipo de organizacin, tales como com, or g o net .
or gName es el nombre del mbito de la organizacin, tales como makot ogr oup, sun o i bm.
appName es el nombre de la aplicacin, abreviado.
compName es el nombre del componente.
El lenguaje J ava no lo obliga a seguir este convenio de paquetes. De hecho, usted no necesita especificar ningn paquete, en cuyo caso
todos sus objetos deben tener nombres de clases nicos y residirn en el paquete predeterminado. Como una prctica mejor, recomiendo
que defina todas sus clases J ava en paquetes. Usted seguir ese convenio durante este tutorial.
Sentencias de importacin
A continuacin en la definicin de objeto (retomando el Listado 1) se encuentra la sentencia de importacin. Una sentencia de importacin le
comunica al compilador J ava dnde encontrar las clases a las que usted hace referencia dentro de su cdigo. Cualquier objeto no trivial usa
Introduccin a la programacin J ava, parte 1: Conceptos bsicos del lenguaje J ava
http://www.ibm.com/developerworks/ssa/java/tutorials/j-introtojava1/[19/09/2014 8:07:46]
Variables pblicas
Nunca es una buena idea usar variables pblicas pero,
en casos extremadamente raros, podra ser necesario,
as que existe la opcin. La plataforma J ava no
restringe sus casos de uso. Por lo tanto, depende de
usted ser disciplinado al usar buenos convenios de
codificacin, incluso si se siente tentado para hacer lo
contrario.
otros objetos para alguna funcionalidad y la sentencia de importacin es cmo usted le comunica al compilador J ava sobre ellos.
Una sentencia de importacin normalmente luce as:
import Cl assNameToI mpor t ;
Especifique la palabra clave i mpor t aci n seguida de la clase que quiere importar seguida de un punto y coma. El nombre de la clase
debera estar completamente calificado, es decir, debera incluir su paquete.
Para importar todas las clases dentro de un paquete, puede poner . * despus del nombre del paquete. Por ejemplo, esta sentencia importa
cada clase en el paquete com. makot ogr oup:
i mpor t com. makot ogr oup. *;
Sin embargo, importar todo un paquete puede hacer que su cdigo sea menos legible, por lo tanto recomiendo que importe solo las clases
que necesite.
Eclipse simplifica las importaciones
Cuando escribe el cdigo en el editor de Eclipse, puede escribir el nombre de una clase que usted quiera usar, seguido por Ctrl+Shift+O.
Eclipse resuelve cules son las importaciones que usted necesita y las agrega automticamente. Si Eclipse encuentra dos clases con el
mismo nombre, visualiza un recuadro de dilogo que le pregunta para cul de las clases quiere agregar importaciones.
Declaracin de clase
Para definir un objeto en el lenguaje J ava, debe declarar una clase. Considere a una clase como una plantilla para un objeto, como un molde
de galletas. La clase define la estructura bsica del objeto y, al momento de la ejecucin, su aplicacin crea una instancia del objeto. La
palabra objeto a menudo se usa como sinnimo de la palabra clase. En sentido estricto, una clase define la estructura de algo de lo cual el
objeto es una instancia.
El Listado 1 incluye esta declaracin de clase:
accessSpeci f i er class Cl assName {
accessSpeci f i er dat aType var i abl eName [ = i ni t i al Val ue] ;
accessSpeci f i er Cl assName( [ ar gument Li st ] ) {
const r uct or St at ement ( s)
}
accessSpeci f i er r et ur nType met hodName( [ ar gument Li st ] ) {
met hodSt at ement ( s)
}
}
Un accessSpeci f i er de una clase podra tener varios valores pero, por lo general, es pbl i co. Observar otros valores de
accessSpeci f i er pronto.
Convenios de denominacin de clases
Puede denominar a las clases prcticamente como quiera pero el convenio es usar bicapitalizacin: comenzar con una letra en mayscula,
usar mayscula en la primera letra de cada palabra concatenada y dejar todas las otras letras en minscula. Los nombres de las clases
deberan contener solo letras y nmeros. Adherirse a estas guas asegurar que su cdigo sea ms accesible para otros desarrolladores
que siguen los mismos convenios.
Las clases pueden tener dos tipos de miembros: variables y mtodos.
Variables
Los valores de las variables de una clase dada distinguen cada instancia de esa clase y define su estado. A estos valores a menudo se los
denomina variables de instancia. Una variable tiene:
Un accessSpeci f i er
Un dat aType
Un var i abl eName
Opcionalmente, un i ni t i al Val ue
Lo posibles valores de accessSpeci f i er son:
pbl i co: Cualquier objeto en cualquier paquete puede ver la variable. (Nunca use este
valor).
pr ot egi do: Cualquier objeto definido en el mismo paquete, o una subclase (definida en
cualquier paquete), puede ver la variable.
Ningn especificador (tambin llamado acceso amigable o privado al paquete): Solo los
objetos cuyas clases se definen en el mismo paquete pueden ver la variable.
Introduccin a la programacin J ava, parte 1: Conceptos bsicos del lenguaje J ava
http://www.ibm.com/developerworks/ssa/java/tutorials/j-introtojava1/[19/09/2014 8:07:46]
Los constructores son opcionales
Si usted no proporciona un constructor, el compilador
proporcionar uno por usted, denominado el
constructor predeterminado (o sin argumento). Si usted
proporciona un constructor que no sea un constructor
sin argumento (o no-arg), el compilador no generar
uno por usted.
pr i vado: Solo la clase que contiene la variable puede verla
El dat aType de una variable depende de lo que la variable sea, podra ser un tipo primitivo u otro tipo de clase (repito, profundizaremos
sobre esto ms adelante).
El var i abl eName depende de usted pero, por convenio, los nombres de las variables usan el convenio de bicapitalizacin que describ
anteriormente, con la excepcin de que comienzan con una letra minscula. (A este estilo a veces se lo llama lowerCamelCase).
No se preocupe por el i ni t i al Val ue por ahora; solo sepa que puede inicializar una variable de instancia cuando la declara. (De otro modo,
el compilador genera una predeterminacin por usted que se establecer cuando se cree una instancia de la clase).
Ejemplo: Definicin de clase de Per son
Antes de seguir con los mtodos, aqu hay un ejemplo que resume lo que ha aprendido hasta ahora. El Listado 2 es una definicin de clase
de Per son:
Listado 2. Definicin de clase bsica de Per son
package com. makot ogr oup. i nt r o;
publ i c cl ass Per son {
pr i vat e St r i ng name;
pr i vat e i nt age;
pr i vat e i nt hei ght ;
pr i vat e i nt wei ght ;
pr i vat e St r i ng eyeCol or ;
pr i vat e St r i ng gender ;
}
La definicin de clase bsica de Per son no es muy til en este momento porque define solo sus atributos (y los privados).
Para ser ms interesante, la clase de Per son necesita comportamiento, y eso significa mtodos.
Mtodos
Los mtodos de una clase definen su comportamiento. A veces, este comportamiento no es nada ms que devolver el valor actual de un
atributo. Otras veces, el comportamiento puede ser bastante complejo.
Hay esencialmente dos categoras de mtodos: constructores y todos los otros mtodos, de los cuales existen muchos tipos. Un mtodo
constructor se usa solo para crear una instancia de una clase. Otros tipos de mtodos pueden usarse para prcticamente cualquier
comportamiento de aplicacin.
Al mirar hacia atrs al Listado 1, muestra el modo para definir la estructura de un mtodo, que incluye aspectos como:
accessSpeci f i er
r et ur nType
met hodName
ar gument Li st
La combinacin de estos elementos estructurales en la definicin de un mtodo se llama su firma.
A continuacin, ver en ms detalle dos tipos de mtodos, comenzando con los constructores.
Mtodos constructores
Los constructores le permiten especificar cmo crear una instancia de una clase. El Listado 1 muestra la sintaxis de la declaracin del
constructor en una forma abstracta. Aqu est de nuevo en el Listado 3:
Listado 3. Sintaxis de la declaracin del constructor
accessSpeci f i er Cl assName( [ ar gument Li st ] ) {
const r uct or St at ement ( s)
}
El accessSpeci f i er de un constructor es el mismo que el de las variables. El nombre del
constructor debe coincidir con el nombre de la clase. Por lo tanto, si llama a su clase
Per son, entonces el nombre del constructor tambin debe ser Per son.
Para cualquier constructor que no sea el constructor predeterminado, usted pasa una
ar gument Li st , que es una o ms de:
ar gument Type ar gument Name
Los argumentos en una ar gument Li st se separan con comas y dos argumentos no pueden tener el mismo nombre. El ar gument Type es
un tipo primitivo u otro tipo de clase (lo mismo que sucede con los tipos de variables).
Introduccin a la programacin J ava, parte 1: Conceptos bsicos del lenguaje J ava
http://www.ibm.com/developerworks/ssa/java/tutorials/j-introtojava1/[19/09/2014 8:07:46]
Definicin de clase con un constructor
Ahora ver lo que sucede cuando agrega la capacidad de crear un objeto Per son de dos modos: al usar un constructor sin argumento y al
inicializar una lista parcial de atributos.
El Listado 4 muestra cmo crear constructores y tambin cmo usar la ar gument Li st :
Listado 4. Definicin de clase de Per son con un constructor
package com. makot ogr oup. i nt r o;
publ i c cl ass Per son {
pr i vat e St r i ng name;
pr i vat e i nt age;
pr i vat e i nt hei ght ;
pr i vat e i nt wei ght ;
pr i vat e St r i ng eyeCol or ;
pr i vat e St r i ng gender ;
publ i c Per son( ) {
/ / Not hi ng t o do. . .
}

publ i c Per son( St r i ng name, i nt age, i nt hei ght , St r i ng eyeCol or , St r i ng gender ) {
t hi s. name = name;
t hi s. age = age;
t hi s. hei ght = hei ght ;
t hi s. wei ght = wei ght ;
t hi s. eyeCol or = eyeCol or ;
t hi s. gender = gender ;
}
}
Observe el uso de la palabra clave t hi s al hacer las asignaciones de variables en el Listado 4. Esto es una taquigrafa de J ava para "this
object" y debe usarse cuando se haga referencia a dos variables con el mismo nombre (como en este caso en el que la edad, por ejemplo,
es tanto un parmetro constructor como una variable de clase) y le ayuda al compilador a desambiguar la referencia.
El objeto Per son se est haciendo ms interesante pero necesita ms comportamiento. Y para eso, usted necesita ms mtodos.
Otros mtodos
Un constructor es un tipo particular de mtodo con una funcin particular. De forma similar, muchos otros tipos de mtodos desempean
funciones particulares en los programas J ava. La exploracin de otros mtodos comienza en esta seccin y contina durante todo el tutorial.
En el Listado 1, le mostr cmo declarar un mtodo:
accessSpeci f i er r et ur nType met hodName( [ ar gument Li st ] ) {
met hodSt at ement ( s)
}
Otros mtodos se parecen bastante a los constructores, con un par de excepciones. En primer lugar, usted puede denominar a otros
mtodos cmo usted quiera (aunque, por supuesto, hay reglas). Recomiendo los siguientes convenios:
Comenzar con una letra minscula.
Evitar nmeros, a menos que sean absolutamente necesarios.
Usar solo caracteres alfabticos.
En segundo lugar, a diferencia de los constructores, otros mtodos tienen un tipo de retorno opcional.
Otros mtodos de Per son
Con esta informacin bsica de su lado, usted puede ver en el Listado 5 lo que sucede cuando agrega algunos mtodos ms al objeto
Per son. (He omitido los constructores para ser breve).
Listado 5. Per son con algunos mtodos nuevos
package com. makot ogr oup. i nt r o;
publ i c cl ass Per son {
pr i vat e St r i ng name;
pr i vat e i nt age;
pr i vat e i nt hei ght ;
pr i vat e i nt wei ght ;
pr i vat e St r i ng eyeCol or ;
pr i vat e St r i ng gender ;
publ i c St r i ng get Name( ) { r et ur n name; }
publ i c voi d set Name( St r i ng val ue) { name = val ue; }
/ / Ot her get t er / set t er combi nat i ons. . .
}
Observe el comentario en el Listado 5 sobre "combinaciones getter/setter". Usted trabajar ms con getters y setters ms adelante en el
tutorial. Por ahora, todo lo que necesita saber es que un getter es un mtodo para recuperar el valor de un atributo y un setter es un mtodo
para modificar ese valor. Solo le he mostrado una combinacin getter/setter (para el atributo de Nombr e) pero usted podra definir ms de
manera similar.
Introduccin a la programacin J ava, parte 1: Conceptos bsicos del lenguaje J ava
http://www.ibm.com/developerworks/ssa/java/tutorials/j-introtojava1/[19/09/2014 8:07:46]
Observe en el Listado 5 que si un mtodo no devuelve un valor, debe comunicrselo al compilador especificando el tipo de devolucin
i nvl i do en su firma.
Mtodos estticos y de instancia
Hay generalmente dos tipos de mtodos (no constructores): los mtodos de instancia y los mtodos estticos. Los mtodos de instancia
dependen del estado de una instancia de objeto especfico por sus comportamientos. Los mtodos estticos tambin se denominan a veces
mtodos de clase porque sus comportamientos no dependen del estado de ningn objeto en particular. El comportamiento de un mtodo
esttico sucede al nivel de la clase.
Los mtodos estticos se usan en gran medida por utilidad; puede considerarlos como un modo de tener mtodos globales ( la C) mientras
mantiene el cdigo mismo agrupado con la clase que lo necesita.
Por ejemplo, en todo este tutorial usar la clase de Logger J DK para enviar informacin a la consola. Para crear una instancia de clase de
Logger , no cree una instancia de clase de Logger ; en cambio, invoque un mtodo esttico llamado get Logger ( ) .
La sintaxis para invocar un mtodo esttico es diferente de la sintaxis usada para invocar un mtodo para una instancia de objeto. Tambin
use el nombre de la clase que contiene el mtodo esttico, como se muestra en esta invocacin:
Logger l = Logger . get Logger ( " NewLogger " ) ;
Por lo cual, para invocar un mtodo esttico, no necesita una instancia de objeto, solo el nombre de la clase.
Su primer objeto Java
Es tiempo de reunir lo que ha aprendido en las secciones previas y comenzar a escribir algunos cdigos. Esta seccin lo gua por la
declaracin de una clase y la adicin de variables y mtodos a ella para usar el Eclipse Package Explorer. Aprender cmo usar la clase de
Logger para mantener en vista al comportamiento de su aplicacin y tambin cmo usar un mtodo mai n( ) como un banco de pruebas.
Creacin de un paquete
Si todava no est all, vaya a la perspectiva Package Explorer en Eclipse. Se lo va a preparar para crear su primera clase J ava. El primer
paso es crear un lugar para que la clase viva. Los paquetes son construcciones de espacio de nombres pero tambin se correlacionan
convenientemente de forma directa con la estructura del directorio del sistema de archivos.
En lugar de usar el paquete predeterminado (casi siempre una mal idea), crear uno especficamente para el cdigo que estar escribiendo.
Haga clic en File > New > Package para acceder al asistente del Paquete J ava, que se muestra en la Ilustracin 4:
Ilustracin 4. El asistente del Paquete Java de Eclipse
Escriba com. makot ogr oup. i nt r o en el recuadro de texto del Nombre y haga clic en Finish. Ver el nuevo paquete creado en el Package
Explorer.
Declaracin de la clase
Hay ms de un modo para crear una clase desde el Package Explorer pero el modo ms fcil es hacer clic derecho en el paquete que acaba
de crear y elegir New > Class.... Ver el recuadro de dilogo New Class (Clase nueva).
En el recuadro de texto de Name escriba Per son. Bajo Qu resguardos de mtodos le gustara crear?, marque publ i c st at i c voi d
mai n( St r i ng[ ] ar gs) . (Pronto ver por qu). Luego, haga clic en Finish.
Volver arriba
Introduccin a la programacin J ava, parte 1: Conceptos bsicos del lenguaje J ava
http://www.ibm.com/developerworks/ssa/java/tutorials/j-introtojava1/[19/09/2014 8:07:46]
La clase nueva aparece en su ventana de edicin. Recomiendo cerrar algunas de las vistas de su aspecto predeterminado para que sea
ms fcil ver su cdigo de origen, como se muestra en la Ilustracin 5:
Ilustracin 5. Un espacio de trabajo bien ordenado
Eclipse genera una clase de shell para usted e incluye la sentencia del paquete en la parte superior, junto con el mtodo mai n( ) que usted
pidi y los comentarios que ve. Ahora, solo necesita precisar la clase. Puede configurar cmo Eclipse genera clases nuevas por medio de
Window > Preferences > Java > Code Style > Code Templates. Para simplificar, usted optar por la generacin de cdigo simple de
instalar de Eclipse.
En la Ilustracin 5, observe el asterisco (*) junto al nuevo archivo de cdigo de origen, que indica que he hecho una modificacin. Y observe
que el cdigo no est guardado. Luego, observe que he cometido un error cuando declar el atribut Name: Declar que el tipo de Name era
St r i n. El compilador no pudo encontrar una referencia para tal clase y la distingui como un error de compilacin (esa es la lnea roja
ondulada debajo de St r i n). Por supuesto, puedo corregir mi error al agregar una g al final de St r i n. Esto es solo una pequea
demostracin del poder de un IDE sobre el uso de herramientas de lneas de comandos para el desarrollo de software.
Adicin de variables de clases
En el Listado 4, usted comienza a precisar la clase de Per son pero no expliqu mucho sobre la sintaxis. Ahora formalmente definir cmo
agregar variables de clases.
Recuerde que una variable tiene un accessSpeci f i er , un dat aType, un var i abl eName y, opcionalmente, un i ni t i al Val ue.
Anteriormente, observ brevemente cmo definir el accessSpeci f i er y var i abl eName. Ahora ver el dat aType que una variable puede
tener.
Un dat aType puede ser un tipo primitivo o una referencia a otro objeto. Por ejemplo, observe que Age es un i nt (un tipo primitivo) y Name es
una St r i ng (un objeto). El J DK viene empaquetado lleno de clases tiles como j ava. l ang. St r i ng y aquellos en el paquete j ava. l ang
no necesitan ser importados (una cortesa taquigrfica del compilador J ava). Pero ya sea que el dat aType sea una clase J DK como St r i ng
o una clase definida por el usuario, la sintaxis es esencialmente la misma.
La Tabla 1 muestra los ocho tipos de datos primitivos que es probable que usted vea regularmente, incluidos los valores predeterminados
que los primitivos adquieren si usted no inicializa explcitamente el valor de una variable miembro:
Tabla 1. Tipos de datos primitivos
Tipo Tamao Valor predeterminado Rango de valores
bool eano
n/d falso verdadero o falso
byt e
8 bits 0 -128 a 127
car act .
16 bits (sin firmar) \u0000' \u0000' a \uffff' o 0 a 65535
cor t o
16 bits 0 -32768 a 32767
i nt
32 bits 0 -2147483648 a 2147483647
l ar go
64 bits 0 -9223372036854775808 a 9223372036854775807
f l ot ant e
32 bits 0,0 1.17549435e-38 a 3.4028235e+38
Introduccin a la programacin J ava, parte 1: Conceptos bsicos del lenguaje J ava
http://www.ibm.com/developerworks/ssa/java/tutorials/j-introtojava1/[19/09/2014 8:07:46]
dobl e
64 bits 0,0 4.9e-324 a 1.7976931348623157e+308
Registro incorporado
Antes de avanzar ms en la codificacin, necesita saber cmo sus programas le dicen lo que estn haciendo.
La plataforma J ava incluye el paquete j ava. ut i l . l oggi ng, un mecanismo de registro incorporado para juntar informacin de programa en
una forma legible. Los registradores son entidades con nombres que usted crea por medio de una llamada de mtodo esttico a la clase
Logger , como la siguiente:
i mpor t j ava. ut i l . l oggi ng. Logger ;
/ / . . .
Logger l = Logger . get Logger ( get Cl ass( ) . get Name( ) ) ;
Cuando se llama al mtodo get Logger ( ) , usted pase una St r i ng. Por ahora, solo acostmbrese a pasar al nombre de la clase el cdigo en
el que su escritura se encuentra. Desde cualquier mtodo regular (es decir, no esttico), el cdigo anterior siempre har referencia al
nombre de la clase y lo pasar al Logger .
Si usted est haciendo una llamada de Logger dentro de un mtodo esttico, solo haga referencia al nombre de la clase en la que se
encuentre:
Logger l = Logger . get Logger ( Per son. cl ass. get Name( ) ) ;
En este ejemplo, el cdigo en el que usted se encuentra es la clase de Per son, por lo tanto haga referencia a un literal especial denominado
cl ase que recupera el objeto Cl ass (profundizaremos sobre esto ms adelante) y obtiene su atributo Name.
La seccin Writing good J ava code de este tutorial incluye un consejo sobre cmo no hacer un registro.
Utilizacin de mai n( ) como un banco de pruebas
mai n( ) es un mtodo especial que usted puede incluir en cualquier clase para que el J RE pueda ejecutar su cdigo. No se requiere que una
clase tenga un mtodo mai n( ) , de hecho, la mayora nunca lo tendr, y una clase puede tener, como mucho, un mtodo mai n( ) .
mai n( ) es un mtodo prctico para tener porque le da un banco de pruebas rpido para la clase. En el desarrollo empresarial, usted usara
bibliotecas de pruebas pero, a los propsitos de este tutorial, usar mai n( ) como su banco de pruebas.
Vaya al editor de cdigo de origen de Eclipse para Per son y agregue un cdigo para hacer que se parezca al Listado 4. Eclipse tiene un
prctico generador de cdigos para generar getters y setters (entre otros). Para probarlo, ponga el cursor del ratn en la definicin de clase
de Per son (es decir, en la palabra Per son en la definicin de clase) y vaya a Source > Generate Getters and Setters.... Cuando el
recuadro de dilogo se abra, haga clic en Select All, como se muestra en la Ilustracin 6:
Ilustracin 6. Eclipse genera getters y setters
Para el punto de insercin, elija Last member y haga clic en OK. Observe que los getters y setters aparecen luego del mtodo mai n( ) .
Hay ms sobre mai n( )
Ahora agregar algunos cdigos a mai n( ) para que le permita crear una instancia de una Per son, establecer algunos atributos y luego
Introduccin a la programacin J ava, parte 1: Conceptos bsicos del lenguaje J ava
http://www.ibm.com/developerworks/ssa/java/tutorials/j-introtojava1/[19/09/2014 8:07:46]
imprimirlos en la consola.
Comience agregando un constructor a Per son. Escriba el cdigo en el Listado 6 en su ventana de origen debajo de la parte superior de la
definicin de clase (la lnea inmediatamente debajo de publ i c cl ass Per son ( ) ):
Listado 6. Constructor de Per son
publ i c Per son( St r i ng name, i nt age, i nt hei ght , i nt wei ght , St r i ng eyeCol or ,
St r i ng gender ) {
t hi s. name = name;
t hi s. age = age;
t hi s. hei ght = hei ght ;
t hi s. wei ght = wei ght ;
t hi s. eyeCol or = eyeCol or ;
t hi s. gender = gender ;
}
Asegrese de no tener lneas onduladas que indiquen errores de compilacin.
Luego, vaya al mtodo mai n( ) y haga que se parezca al Listado 7:
Listado 7. El mtodo mai n( )
publ i c st at i c voi d mai n( St r i ng[ ] ar gs) {
Per son p = new Per son( " J oe Q Aut hor " , 42, 173, 82, " Br own" , " MALE" ) ;
Logger l = Logger . get Logger ( Per son. cl ass. get Name( ) ) ;
l . i nf o( " Name: " + p. get Name( ) ) ;
l . i nf o( " Age: " + p. get Age( ) ) ;
l . i nf o( " Hei ght ( cm) : " + p. get Hei ght ( ) ) ;
l . i nf o( " Wei ght ( kg) : " + p. get Wei ght ( ) ) ;
l . i nf o( " Eye Col or : " + p. get EyeCol or ( ) ) ;
l . i nf o( " Gender : " + p. get Gender ( ) ) ;
}
No se preocupe por la clase de Logger por ahora. Solo ingrese el cdigo como lo ve en el Listado 7. Ahora est listo para ejecutar su primer
programa J ava.
Ejecucin de cdigo en Eclipse
Para ejecutar una aplicacin J ava desde dentro de Eclipse, seleccione la clase que quiere ejecutar, que debe tener un mtodo mai n( ) .
Actualmente, usted tiene solo una clase, y s tiene un mtodo mai n( ) , por lo tanto seleccione Per son, luego haga clic en el icono Run
(que es verde y tiene una pequea flecha triangular que apunta a la derecha). Cuando se lo pida, seleccione ejecutar Per son como una
aplicacin J ava, luego sintese y obsrvelo funcionar. Debera ver algo parecido a la captura de pantalla de la Ilustracin 7:
Ilustracin 7. Vea ejecucin de Per son
Observe que la vista de Consola se abre automticamente y muestra la salida de Logger . Tambin he seleccionado la vista de Esquema en
el panel izquierdo, que revela la estructura bsica de la clase de Per son en una vista rpida.
Adicin de comportamiento a un objeto Java
Per son se ve bien hasta el momento pero le podra servir algn comportamiento adicional para que sea ms interesante. Como ya ha
aprendido, crear un comportamiento significa agregar mtodos. Esta seccin ve ms de cerca los mtodos accessor, a saber, los getters
y setters que usted ya ha visto en accin. Tambin aprender la sintaxis para llamar mtodos.
Mtodos accessor
Para encapsular los datos de una clase desde otros objetos, declare que sus variables sean pr i vadas y luego proporcione mtodos
accessor. Como sabe, un getter es un mtodo accessor para recuperar el valor de un atributo; un setter es un mtodo accessor para
Volver arriba
Introduccin a la programacin J ava, parte 1: Conceptos bsicos del lenguaje J ava
http://www.ibm.com/developerworks/ssa/java/tutorials/j-introtojava1/[19/09/2014 8:07:46]
modificar ese valor. La denominacin de accessor sigue un convenio estricto conocido como el patrn J avaBeans, por el que cualquier
atributo Foo tiene un getter llamado get Foo( ) y un setter llamado set Foo( ) .
El patrn J avaBeans es tan comn que su soporte est construido justo en el IDE Eclipse. Incluso, usted ya lo ha visto en accin, cuando
gener getters y setters para Per son en la seccin anterior.
Los accessor siguen estas guas:
El atributo en s siempre se declara con acceso pr i vado.
El especificador de acceso para los getters y setters es pbl i co.
Los getters no toman ningn parmetro y devuelven un valor cuyo tipo es el mismo que el atributo al que accede.
Los setters solo toman un parmetro, del tipo del atributo, y no devuelven un valor.
Declaracin de accessor
El modo ms fcil, por mucho, de declarar accessor es dejar que Eclipse lo haga por usted, como se mostr en la Ilustracin 6. Pero tambin
debera saber cmo codificar manualmente un par de getters y setters Suponga que usted tiene un atributo, Foo, cuyo tipo es
j ava. l ang. St r i ng. Una declaracin completa para aquel (siguiendo las guas de accessor) sera:
pr i vat e St r i ng f oo;
publ i c St r i ng get Foo( ) {
r et ur n f oo;
}
publ i c voi d set Foo( St r i ng val ue) {
f oo = val ue;
}
Tal vez usted observe enseguida que el valor del parmetro que pas al setter se denomina de modo diferente que si lo hubiera generado
Eclipse. Este es mi propio convenio y uno que recomiendo a otros desarrolladores. En la rara ocasin que yo codifique manualmente un
setter, siempre uso el nombre val ue como el valor de parmetro para el setter. Este captador de miradas me recuerda que he codificado
manualmente el setter. Debido a que normalmente permito que Eclipse genere los getters y setters por m, cuando no lo hago es por una
buena razn. Usar val ue como valor de parmetro del setter me recuerda que este setter es especial. (Los comentarios de cdigo tambin
lo podran hacer).
Llamado de mtodos
Invocar, o llamar, mtodos es fcil. Usted vio en el Listado 7 cmo invocar los diversos getters de Per son para devolver sus valores. Ahora
formalizar el mecanismo de realizar llamadas de mtodos.
La invocacin de un mtodo con y sin parmetros
Para invocar un mtodo para un objeto, necesita una referencia a ese objeto. La sintaxis de la invocacin de mtodos comprende la
referencia del objeto, un punto literal, el nombre del mtodo y cualquier parmetro que necesite pasarse:
obj ect Ref er ence. someMet hod( ) ;
obj ect Ref er ence. someOt her Met hod( par amet er ) ;
Aqu hay una invocacin de mtodo sin parmetros:
Per son p = / *obt ai n somehow */ ;
p. get Name( ) ;
Y aqu hay una invocacin de mtodo con parmetros (con acceso al atributo Name de Per son):
Per son p = new Per son( " J oe Q Aut hor " , 42, 173, 82, " Br own" , " MALE" ) ;
Recuerde que los constructores tambin son mtodos. Y puede separar los parmetros con espacios y saltos de lnea. Al compilador J ava
no le interesa. Las siguientes dos invocaciones de mtodos son idnticas:
new Per son( " J oe Q Aut hor " , 42, 173, 82, " Br own" , " MALE" ) ;
new Per son( " J oe Q Aut hor " ,
42,
173,
82,
" Br own" ,
" MALE" ) ;
Invocacin de mtodo anidada
Las invocaciones de mtodos tambin pueden ser anidadas:
Logger l = Logger . get Logger ( Per son. cl ass. get Name( ) ) ;
l . i nf o( " Name: " + p. get Name( ) ) ;
Aqu usted est pasando el valor de retorno de Per son. cl ass. get Name( ) al mtodo get Logger ( ) . Recuerde que la llamada del mtodo
get Logger ( ) es una llamada de mtodo esttico, por lo cual su sintaxis difiere un poco. (Usted no necesita una referencia de Logger para
Introduccin a la programacin J ava, parte 1: Conceptos bsicos del lenguaje J ava
http://www.ibm.com/developerworks/ssa/java/tutorials/j-introtojava1/[19/09/2014 8:07:46]
hacer la invocacin; en lugar de eso, solo use el nombre de la clase misma como el lado izquierdo de la invocacin).
Eso es todo realmente sobre la invocacin de mtodos.
Cadenas y operadores
El tutorial ha presentado hasta el momento varias variables de tipo St r i ng pero sin mucha explicacin. Aprenda ms acerca de las cadenas
en esta seccin y tambin descubra cundo y cmo usar los operadores.
Cadenas
El manejo de cadenas en C es un trabajo intensivo porque son matrices de finalizacin nula de caracteres de 8 bits que usted tiene que
manipular. En el lenguaje J ava, las cadenas son objetos de primera clase de tipo St r i ng, con mtodos que le ayudan a manejarlas. (Lo
ms cerca que el cdigo J ava llega al mundo C con respecto a las cadenas es el tipo de datos primitivos char , que puede tener un solo
carcter Unicode, por ejemplo a).
Ya ha visto cmo crear una instancia de un objeto St r i ng y establecer su valor (en el Listado 5) pero existen varias otras formas de hacer
eso. Aqu hay un par de formas para crear una instancia St r i ng con un valor de hel l o:
St r i ng gr eet i ng = " hel l o" ;
gr eet i ng = new St r i ng( " hel l o" ) ;
Debido a que las St r i ngs son objetos de primera clase en el lenguaje J ava, puede usar new para crear una instancia de ellas. Establecer
una variable de tipo St r i ng tiene el mismo resultado porque el lenguaje J ava crea un objeto St r i ng para tener el literal, luego asigna ese
objeto a la variable de instancia.
Concatenacin de cadenas
Puede hacer muchas cosas con St r i ng y la clase tiene muchos mtodos tiles. Sin siquiera usar un mtodo, ya ha hecho algo interesante
con dos St r i ngs al concatenarlas o combinarlas:
l . i nf o( " Name: " + p. get Name( ) ) ;
El signo ms (+) es taquigrfico para concatenar St r i ngs en el lenguaje J ava. (Existe una sancin de rendimiento por hacer este tipo de
concatenacin dentro de un bucle pero por ahora no tiene que preocuparse por eso).
Ejemplo de concatenacin
Intentemos concatenar St r i ngs dentro de la clase Per son. En este momento, tiene una variable de instancia de name pero sera bueno
tener un f i r st Name y un l ast Name. Entonces podra concatenarlas cuando otro objeto solicite el nombre completo de Per son.
Lo primero que necesita hacer es agregar las nuevas variables de instancias (en la misma ubicacin en el cdigo de origen donde se define
actualmente el name):
/ / pr i vat e St r i ng name;
pr i vat e St r i ng f i r st Name;
pr i vat e St r i ng l ast Name;
Ya no necesita el name; lo ha reemplazado con el f i r st Name y el l ast Name.
Encadenamiento de llamadas de mtodos
Ahora puede generar getters y setters para el f i r st Name y el l ast Name (como se muestra en la Ilustracin 6), eliminar el mtodo
set Name( ) y cambiar el get Name( ) para que se vea as:
publ i c St r i ng get Name( ) {
r et ur n f i r st Name. concat ( " " ) . concat ( l ast Name) ;
}
Este cdigo ilustra el encadenamiento de las llamadas de mtodos. Esta es una tcnica comnmente usada con objetos inmutables como
St r i ng, donde una modificacin a un objeto inmutable siempre devuelve la modificacin (pero no cambia el original). Entonces, usted opera
sobre el valor cambiado de retorno.
Operadores
Como puede esperar, el lenguaje J ava puede calcular y ya ha visto como asignar variables. Ahora, le dar un breve vistazo a algunos de los
operadores del lenguaje J ava que necesitar mientras sus aptitudes mejoran. El lenguaje J ava usa dos tipos de operadores:
Unario: Solo se necesita un operando.
Binario: Se necesitan dos operandos.
Los operadores aritmticos del lenguaje J ava se resumen en la Tabla 2:
Volver arriba
Introduccin a la programacin J ava, parte 1: Conceptos bsicos del lenguaje J ava
http://www.ibm.com/developerworks/ssa/java/tutorials/j-introtojava1/[19/09/2014 8:07:46]
Tabla 2. Operadores aritmticos del lenguaje Java
Operador Uso Descripcin
+ a + b
Suma
a
y
b
+ +a
Potencia
a
a
i nt
si es un
byt e
,
shor t
, o
char
- a - b
Resta
b
de
a
- - a
Aritmticamente niega
a
* a * b
Multiplica
a
y
b
/ a / b
Divide
a
por
b
% a %b
Devuelve el resto de la divisin de
a
por
b
(el operador de mdulo)
++ a++
Incrementa
a
por 1; calcula el valor de
a
antes de incrementarlo
++ ++a
Incrementa
a
por 1; calcula el valor de
a
despus de incrementarlo
- - a- -
Disminuye
a
por 1; calcula el valor de
a
antes de disminuirlo
- - - - a
Disminuye
a
por 1; calcula el valor de
a
despus de disminuirlo
+= a += b
Taquigrafa para
a = a + b
- = a - = b
Taquigrafa para
a = a - b
*= a *= b
Taquigrafa para
a = a * b
%= a %= b
Taquigrafa para
a = a %b
Operadores adicionales
Adems de los operadores en la Tabla 2, ha visto varios otros smbolos que se llaman operadores en el lenguaje J ava. Por ejemplo:
El punto (. ), que califica los nombres de los paquetes e invoca mtodos.
Los parntesis (( ) ), que delimitan una lista separada por comas de parmetros para un mtodo.
new, que (cuando le sigue un nombre de constructor) crea una instancia de un objeto.
La sintaxis del lenguaje J ava tambin incluye una cantidad de operadores que se usan especficamente para programacin condicional, es
decir, programas que responden de forma diferente en base a una entrada diferente. Los ver en la siguiente seccin.
Operadores condicionales y sentencias de control
En esta seccin, aprender acerca de las diversas sentencias y operadores que usar para comunicarle a sus programas J ava cmo quiere
que acten en base a una entrada diferente.
Operadores relacionales y condicionales
El lenguaje J ava le da operadores y sentencias de control que le permiten tomar decisiones en su cdigo. Muy a menudo, una decisin en el
cdigo comienza con una expresin booleana (es decir, una que evala ya sea verdadera o falsa). Tales expresiones usan operadores
relacionales, que comparan un operando o una expresin con otra, y operadores condicionales.
La Tabla 3 enumera los operadores relacionales y condicionales del lenguaje J ava:
Tabla 3. Operadores relacionales y condicionales
Operador Uso Retorna verdadero si...
> a > b a
es mayor que
b
>= a >= b a
es mayor que o igual a
b
< a < b a
es menor que
b
<= a <= b a
es menor que o igual a
b
== a == b a
es igual a
b
! = a ! = b a
no es igual a
b
&& a && b
Ambos
a
y
b
son verdaderos, evala condicionalmente a
b
(si
a
es falso,
b
no se evala)
Volver arriba
Introduccin a la programacin J ava, parte 1: Conceptos bsicos del lenguaje J ava
http://www.ibm.com/developerworks/ssa/java/tutorials/j-introtojava1/[19/09/2014 8:07:46]
| | a | | b a
o
b
es verdadero, evala condicionalmente a
b
(si
a
es verdadero,
b
no se evala)
! ! a a
es falso
& a & b
Ambos
a
y
b
son verdaderos, siempre evala a
b
| a | b a
o
b
es verdadero, siempre evala a
b
^ a ^ b a
y
b
son diferentes
La sentencia i f
Ahora que tiene un grupo de operadores, es momento de usarlos. Este cdigo muestra lo que sucede cuando agrega algo de lgica al
accessor get Hei ght ( ) del objeto Per son:
publ i c i nt get Hei ght ( ) {
i nt r et = hei ght ;
/ / I f l ocal e of t he machi ne t hi s code i s r unni ng on i s U. S. ,
i f ( Local e. get Def aul t ( ) . equal s( Local e. US) )
r et / = 2. 54; / / conver t f r omcmt o i nches
r et ur n r et ;
}
Si el entorno local actual est en los Estados Unidos (donde no se usa el sistema mtrico), entonces tal vez tenga sentido convertir el valor
interno de altura (en centmetros) a pulgadas. Este ejemplo ilustra el uso de la sentencia i f , que evala una expresin booleana en
parntesis. Si esa expresin evala como verdadera, ejecuta la siguiente sentencia.
En este caso, solo necesita ejecutar una sentencia si el Local e de la mquina en la que se ejecuta el cdigo es Local e. US. Si necesita
ejecutar ms de una sentencia, puede usar llaves para formar una sentencia compuesta. Una sentencia compuesta agrupa muchas
sentencias en una, y las sentencias compuestas tambin pueden contener otras sentencias compuestas.
mbito variable
Cada variable en una aplicacin J ava tiene un mbito, o espacio de nombres localizado, al cual usted puede acceder por nombre dentro del
cdigo. Fuera de ese espacio, la variable est fuera de mbito y usted obtendr un error de compilacin si intenta acceder a ella. Los
niveles de mbitos en el lenguaje J ava se definen de acuerdo a dnde se declare una variable, como se muestra en el Listado 8:
Listado 8. mbito variable
publ i c cl ass SomeCl ass {
pr i vat e St r i ng someCl assVar i abl e;
publ i c voi d someMet hod( St r i ng somePar amet er ) {
St r i ng someLocal Var i abl e = " Hel l o" ;
i f ( t r ue) {
St r i ng someOt her Local Var i abl e = " Howdy" ;
}
someCl assVar i abl e = somePar amet er ; / / l egal
someLocal Var i abl e = someCl assVar i abl e; / / al so l egal
someOt her Local Var i abl e = someLocal Var i abl e; / / Var i abl e out of scope!
}
publ i c voi d someOt her Met hod( ) {
someLocal Var i abl e = " Hel l o t her e" ; / / That var i abl e i s out of scope!
}
}
Dentro de SomeCl ass, someCl assVar i abl e es accesible por medio de todos los mtodos de instancia (es decir, no estticos). Dentro de
someMet hod, somePar amet er es visible pero, fuera de ese mtodo, no lo es y lo mismo sucede para someLocal Var i abl e. Dentro del
bloque i f , someOt her Local Var i abl e se declara y, fuera de ese bloque i f , est fuera de mbito.
El mbito tiene muchas reglas pero el Listado 8 muestra las ms comunes. Tmese algunos minutos para familiarizarse con ellas.
La sentencia el se
Hay momentos en el flujo de control de un programa en los que usted quiere participar solo si una expresin particular falla al evaluar como
verdadero. En ese momento es cuando el se resulta de ayuda:
publ i c i nt get Hei ght ( ) {
i nt r et ;
i f ( gender . equal s( " MALE" ) )
r et = hei ght + 2;
el se {
r et = hei ght ;
Logger . get Logger ( " Per son" ) . i nf o( " Bei ng honest about hei ght . . . " ) ;
}
r et ur n r et ;
}
La sentencia el se funciona del mismo modo que i f en el sentido que ejecuta solo la siguiente sentencia que encuentra. En este caso, dos
sentencias se agrupan en una sentencia compuesta (observe las llaves), que luego el programa ejecuta.
Tambin puede usar el se para realizar una verificacin i f adicional, del siguiente modo:
Introduccin a la programacin J ava, parte 1: Conceptos bsicos del lenguaje J ava
http://www.ibm.com/developerworks/ssa/java/tutorials/j-introtojava1/[19/09/2014 8:07:46]
i f ( condi t i onal ) {
/ / Bl ock 1
} el se i f ( condi t i onal 2) {
/ / Bl ock 2
} el se i f ( condi t i onal 3) {
/ / Bl ock 3
} el se {
/ / Bl ock 4
} / / End
Si condi t i onal evala como verdadero, entonces el Bl ock 1 se ejecuta y el programa salta a la siguiente sentencia luego de la llave final
(lo que se indica con / / End). Si condi t i onal no evala como verdadero, entonces se evala condi t i onal 2. Si es verdadero, entonces el
Bl ock 2 se ejecuta y el programa salta a la siguiente sentencia luego de la llave final. Si condi t i onal 2 no es verdadero, entonces el
programa sigue con condi t i onal 3 y as sucesivamente. Solo si las tres condicionales fallan, se ejecutara el Bl ock 4.
El operador ternario
El lenguaje J ava proporciona un operador prctico para hacer simples verificaciones de sentencias i f /el se. Su sintaxis es:
( condi t i onal ) ? st at ement I f Tr ue : st at ement I f Fal se;
Si condi t i onal evala como verdadero, entonces se ejecuta st at ement I f Tr ue; caso contrario, se ejecuta st at ement I f Fal se. Las
sentencias compuestas no se permiten para ninguna de las sentencias.
El operador ternario es de ayuda cuando usted sabe que necesitar ejecutar una sentencia como el resultado de la condicional que evala
como verdadero, y otra si no lo hace. Los operadores ternarios a menudo se usan para inicializar una variable (como un valor de retorno),
como de la siguiente manera:
publ i c i nt get Hei ght ( ) {
r et ur n ( gender . equal s( " MALE" ) ) ? ( hei ght + 2) : hei ght ;
}
Los parntesis que siguen luego del signo de interrogacin anterior no se requieren estrictamente pero s hacen que el cdigo sea ms
legible.
Bucles
Adems de poder aplicar condiciones a sus programas y ver diferentes resultados en base a diversos escenarios i f /t hen, a veces quiere
que su cdigo solo haga lo mismo una y otra vez hasta que se haga el trabajo. En esta seccin, aprenda acerca de dos construcciones
usadas para iterar el cdigo o ejecutarlo ms de una vez. Bucles f or y bucles whi l e loops.
Qu es un bucle?
Un bucle es una construccin de programacin que se ejecuta repetidamente mientras se cumple alguna condicin (o conjunto de
condiciones). Por ejemplo, puede pedirle a un programa que lea todos los registros hasta el final de un archivo o que realice un bucle por
todos los elementos de una matriz, procesando cada uno. (Aprender acerca de las matrices en la seccin J ava Collections de este tutorial).
Bucles f or
La construccin de bucle bsico en el lenguaje J ava es la sentencia f or , que le permite iterar un rango de valores para determinar cuntas
veces ejecutar un bucle. La sintaxis abstracta para un bucle f or es:
f or ( i ni t i al i zat i on; l oopWhi l eTr ue; execut eAt Bot t omOf EachLoop) {
st at ement sToExecut e
}
Al comienzo del bucle, se ejecuta la sentencia de inicializacin (las sentencias de inicializacin mltiples se pueden separar con comas).
Mientras l oopWhi l eTr ue (una expresin condicional de J ava que debe evaluar ya sea como verdadero o falso) sea verdadero, el bucle se
ejecutar. Al final del bucle, se ejecuta execut eAt Bot t omOf EachLoop.
Ejemplo de un bucle f or
Si usted quisiera cambiar a un mtodo mai n( ) para que se ejecute tres veces, podra usar un bucle f or , como se muestra en el Listado 9:
Listado 9. Un bucle f or
publ i c st at i c voi d mai n( St r i ng[ ] ar gs) {
Logger l = Logger . get Logger ( Per son. cl ass. get Name( ) ) ;
for (int aa = 0; aa < 3; aa++) {
Per son p = new Per son( " J oe Q Aut hor " , 42, 173, 82, " Br own" , " MALE" ) ;
l.info(" Loop executing iteration# " + aa);
l . i nf o( " Name: " + p. get Name( ) ) ;
l . i nf o( " Age: " + p. get Age( ) ) ;
l . i nf o( " Hei ght ( cm) : " + p. get Hei ght ( ) ) ;
l . i nf o( " Wei ght ( kg) : " + p. get Wei ght ( ) ) ;
l . i nf o( " Eye Col or : " + p. get EyeCol or ( ) ) ;
l . i nf o( " Gender : " + p. get Gender ( ) ) ;
}
}
Volver arriba
Introduccin a la programacin J ava, parte 1: Conceptos bsicos del lenguaje J ava
http://www.ibm.com/developerworks/ssa/java/tutorials/j-introtojava1/[19/09/2014 8:07:46]
La variable local aa se inicializa en cero al comienzo del listado. Esta sentencia se ejecuta solo una vez, cuando se inicializa el bucle. Luego,
el bucle contina tres veces y cada vez se incrementa aa en uno.
Como ver ms adelante, una sintaxis alternativa de bucle f or est disponible para realizar un bucle por las construcciones que
implementan la interfaz I t er abl e (tales como matrices y otras clases de programas de utilidad J ava). Por ahora, solo observe el uso de la
sintaxis del bucle f or en el Listado 9.
Bucles whi l e
La sintaxis para un bucle whi l e es:
whi l e ( l oopWhi l eTr ue) {
st at ement sToExecut e
}
Como puede sospechar, whi l e l oopWhi l eTr ue evala como verdadero, por lo tanto el bucle se ejecutar. En la parte superior de cada
iteracin (es decir, antes de que se ejecute cualquier sentencia), se evala la condicin. Si es verdadero, el bucle se ejecuta. Por lo que es
posible que un bucle whi l e nunca se ejecute si su expresin condicional no es verdadera por lo menos una vez.
Observe de nuevo el bucle f or en el Listado 9. Por comparacin, el Listado 10 lo codifica usando un bucle whi l e:
Listado 10. Un bucle whi l e
publ i c st at i c voi d mai n( St r i ng[ ] ar gs) {
Logger l = Logger . get Logger ( Per son. cl ass. get Name( ) ) ;
int aa = 0;
while (aa < 3) {
Per son p = new Per son( " J oe Q Aut hor " , 42, 173, 82, " Br own" , " MALE" ) ;
l.info(" Loop executing iteration# " + aa);
l . i nf o( " Name: " + p. get Name( ) ) ;
l . i nf o( " Age: " + p. get Age( ) ) ;
l . i nf o( " Hei ght ( cm) : " + p. get Hei ght ( ) ) ;
l . i nf o( " Wei ght ( kg) : " + p. get Wei ght ( ) ) ;
l . i nf o( " Eye Col or : " + p. get EyeCol or ( ) ) ;
l . i nf o( " Gender : " + p. get Gender ( ) ) ;
aa++;
}
Como puede ver, un bucle whi l e requiere un poco ms de mantenimiento que un bucle f or . Usted debe inicializar la variable aa y tambin
recordar incrementarla al final del bucle.
Bucles do. . . whi l e
Si usted quiere un bucle que se ejecute siempre una vez y luego verifique su expresin condicional, pruebe usar un bucle do. . . whi l e,
como se muestra en el Listado 11:
Listado 11. Un bucle do. . . whi l e
int aa = 0;
do {
Per son p = new Per son( " J oe Q Aut hor " , 42, 173, 82, " Br own" , " MALE" ) ;
l.info(" Loop executing iteration# " + aa);
l . i nf o( " Name: " + p. get Name( ) ) ;
l . i nf o( " Age: " + p. get Age( ) ) ;
l . i nf o( " Hei ght ( cm) : " + p. get Hei ght ( ) ) ;
l . i nf o( " Wei ght ( kg) : " + p. get Wei ght ( ) ) ;
l . i nf o( " Eye Col or : " + p. get EyeCol or ( ) ) ;
l . i nf o( " Gender : " + p. get Gender ( ) ) ;
aa++;
} while (aa < 3);
La expresin condicional (aa < 3) no se verifica hasta el final del bucle.
Ramificacin del bucle
Hay momentos en los que necesita retirarse de un bucle antes de que la expresin condicional evale como falso. Esto podra suceder si
usted estuviera buscando una matriz de St r i ngs para un valor particular y, una vez que lo encontrara, no le importara los otros elementos
de la matriz. Para aquellos momentos en que usted solo quiere retirarse, el lenguaje J ava proporciona la sentencia br eak, como se muestra
en el Listado 12:
Listado 12. Una sentencia br eak
publ i c st at i c voi d mai n( St r i ng[ ] ar gs) {
Logger l = Logger . get Logger ( Per son. cl ass. get Name( ) ) ;
i nt aa = 0;
whi l e ( aa < 3) {
i f ( aa == 1)
br eak;
Per son p = new Per son( " J oe Q Aut hor " , 42, 173, 82, " Br own" , " MALE" ) ;
l . i nf o( " Loop execut i ng i t er at i on# " + aa) ;
l . i nf o( " Name: " + p. get Name( ) ) ;
l . i nf o( " Age: " + p. get Age( ) ) ;
l . i nf o( " Hei ght ( cm) : " + p. get Hei ght ( ) ) ;
l . i nf o( " Wei ght ( kg) : " + p. get Wei ght ( ) ) ;
l . i nf o( " Eye Col or : " + p. get EyeCol or ( ) ) ;
l . i nf o( " Gender : " + p. get Gender ( ) ) ;
Introduccin a la programacin J ava, parte 1: Conceptos bsicos del lenguaje J ava
http://www.ibm.com/developerworks/ssa/java/tutorials/j-introtojava1/[19/09/2014 8:07:46]
Nota: Los corchetes en los ejemplos de cdigos de esta
seccin son parte de la sintaxis requerida para las
Colecciones J ava, no indicadores de elementos
opcionales.
aa++;
}
La sentencia br eak lo lleva a la siguiente sentencia ejecutable fuera del bucle en el que se ubica.
Continuacin del bucle
En el ejemplo (simplista) del Listado 12, usted solo quiere ejecutar el bucle una vez y retirarse. Tambin puede saltar una sola iteracin de
un bucle pero contina ejecutando el bucle. Para eso, necesita la sentencia cont i nue, que se muestra en el Listado 13:
Listado 13. Una sentencia cont i nue
publ i c st at i c voi d mai n( St r i ng[ ] ar gs) {
Logger l = Logger . get Logger ( Per son. cl ass. get Name( ) ) ;
i nt aa = 0;
whi l e ( aa < 3) {
i f ( aa == 1)
cont i nue;
el se
aa++;
Per son p = new Per son( " J oe Q Aut hor " , 42, 173, 82, " Br own" , " MALE" ) ;
l . i nf o( " Loop execut i ng i t er at i on# " + aa) ;
l . i nf o( " Name: " + p. get Name( ) ) ;
l . i nf o( " Age: " + p. get Age( ) ) ;
l . i nf o( " Hei ght ( cm) : " + p. get Hei ght ( ) ) ;
l . i nf o( " Wei ght ( kg) : " + p. get Wei ght ( ) ) ;
l . i nf o( " Eye Col or : " + p. get EyeCol or ( ) ) ;
l . i nf o( " Gender : " + p. get Gender ( ) ) ;
}
En el Listado 13, usted salta la segunda iteracin de un bucle pero contina con la tercera. cont i nue es de ayuda cuando est, digamos,
procesando registros y se encuentra con un registro que definitivamente no quiere procesar. Solo salte ese registro y siga con el siguiente.
Colecciones Java
La mayora de las aplicaciones del mundo real lidian con colecciones de elementos: archivos, variables, registros de archivos, conjuntos de
resultados de bases de datos, entre otros. El lenguaje J ava tiene una sofisticada Infraestructura de colecciones que le permite crear y
manejar colecciones de objetos de diversos tipos. Esta seccin no le ensear todo acerca de las Colecciones J ava pero le presentar las
clases de colecciones ms comnmente usadas y le har comenzar a usarlas.
Matrices
La mayora de los lenguajes de programacin incluyen el concepto de una matriz para tener una coleccin de elementos y el lenguaje J ava
no es ninguna excepcin. Una matriz no es nada ms que una coleccin de elementos del mismo tipo.
Puede declarar una matriz en una de dos formas:
Crearlo con un cierto tamao, que se fija por la vida de la matriz.
Crearlo con un cierto conjunto de valores iniciales. El tamao de este conjunto determina
el tamao de la matriz, ser exacta y suficientemente grande para tener todos esos
valores y su tamao se fija por la vida de la matriz.
Declaracin de una matriz
En general, usted declara una matriz del siguiente modo:
new el ement Type [ ar r aySi ze]
Existen dos formas para crear una matriz entera de elementos. Esta sentencia crea una matriz con espacio para cinco elementos pero est
vaca:
/ / cr ea una mat r i z vac a de 5 el ement os:
i nt [ ] i nt eger s = new i nt [ 5] ;
Esta sentencia crea la matriz y la inicializa, todo a la vez:
/ / cr ea una mat r i z de 5 el ement os con val or es:
i nt [ ] i nt eger s = new i nt [ ] { 1, 2, 3, 4, 5 };
Los valores iniciales van entre las llaves y se separan con comas.
Matrices, al modo difcil
Un modo ms difcil para crear una matriz sera crearla y luego codificar un bucle para inicializarlo:
i nt [ ] i nt eger s = new i nt [ 5] ;
f or ( i nt aa = 0; aa < i nt eger s. l engt h; aa++) {
i nt eger s[ aa] = aa;
}
Volver arriba
Introduccin a la programacin J ava, parte 1: Conceptos bsicos del lenguaje J ava
http://www.ibm.com/developerworks/ssa/java/tutorials/j-introtojava1/[19/09/2014 8:07:46]
Este cdigo declara la matriz entera de cinco elementos. Si usted intenta poner ms de cinco elementos en la matriz, el tiempo de ejecucin
de J ava reclamar y arrojar una excepcin. Aprender acerca de las excepciones y cmo manejarlas en la Part 2.
Carga de una matriz
Para cargar una matriz, serpentee por los enteros desde 1 a travs de la longitud de la matriz (a la cual llega al llamar . l engt h en la matriz,
ms sobre eso en un minuto). En este caso, usted se detiene cuando llegue a 5
Una vez que se carga la matriz, puede acceder a ella como antes:
Logger l = Logger . get Logger ( " Test " ) ;
f or ( i nt aa = 0; aa < i nt eger s. l engt h; aa++) {
l . i nf o( " Thi s l i t t l e i nt eger ' s val ue i s: " + i nt eger s[ aa] ) ;
}
Esta sintaxis (nueva desde el J DK 5) tambin funciona:
Logger l = Logger . get Logger ( " Test " ) ;
f or ( i nt i : i nt eger s) {
l . i nf o( " Thi s l i t t l e i nt eger ' s val ue i s: " + i ) ;
}
Encuentro la sintaxis ms nueva ms simple para trabajar y la usar a lo largo de esta seccin.
El ndice de elementos
Considere a una matriz como una serie de grupos y en cada grupo va un elemento de cierto tipo. Se gana el acceso a cada grupo al usar un
ndice:
el ement = ar r ayName [ el ement I ndex] ;
Para acceder a un elemento, necesita la referencia a la matriz (su nombre) y el ndice donde reside el elemento que usted quiere.
El mtodo l engt h
Un mtodo til, como ya ha visto, es l engt h. Es un mtodo incorporado, por lo tanto su sintaxis no incluye los parntesis habituales. Solo
escriba la palabra l engt h y devolver, cmo es de esperar, el tamao de la matriz.
Las matrices en el lenguaje J ava estn basadas en cero. Por lo tanto, para alguna matriz llamada ar r ay, el primer elemento en la matriz
reside siempre en ar r ay[ 0] y el ltimo reside en ar r ay[ ar r ay. l engt h - 1] .
Una matriz de objetos
Ha visto cmo las matrices pueden tener tipos primitivos pero vale la pena mencionar que tambin pueden tener objetos. En ese sentido, la
matriz es la coleccin ms utilitaria del lenguaje J ava.
Crear una matriz de objetos j ava. l ang. I nt eger no es muy diferente de crear una matriz de tipos primitivos. Una vez ms, tiene dos
modos de hacerlo:
/ / cr ea una mat r i z vac a de 5 el ement os:
I nt eger [ ] i nt eger s = new I nt eger [ 5] ;
/ / cr ea una mat r i z de 5 el ement os con val or es:
I nt eger [ ] i nt eger s = new I nt eger [ ] { I nt eger . val ueOf ( 1) ,
I nt eger . val ueOf ( 2)
I nt eger . val ueOf ( 3)
I nt eger . val ueOf ( 4)
I nt eger . val ueOf ( 5) ) ;
Embalaje y desembalaje
Cada tipo primitivo en el lenguaje J ava tiene una clase homloga J DK, que puede ver en la Tabla 4:
Tabla 4. Primitivos y homlogos JDK
Primitivo Homlogo JDK
bool eano j ava. l ang. Bool ean
byt e j ava. l ang. Byt e
car act . j ava. l ang. Char act er
cor t o j ava. l ang. Shor t
i nt j ava. l ang. I nt eger
l ar go j ava. l ang. Long
f l ot ant e j ava. l ang. Fl oat
dobl e j ava. l ang. Doubl e
Introduccin a la programacin J ava, parte 1: Conceptos bsicos del lenguaje J ava
http://www.ibm.com/developerworks/ssa/java/tutorials/j-introtojava1/[19/09/2014 8:07:46]
Cada clase J DK proporcionar mtodos para analizar y convertir desde su representacin interna hasta un tipo primitivo correspondiente. Por
ejemplo, este cdigo convierte el valor decimal 238 a un I nt eger :
i nt val ue = 238;
I nt eger boxedVal ue = I nt eger . val ueOf ( val ue) ;
Esta tcnica se conoce como embalaje porque est poniendo el primitivo en un envoltorio o caja.
De forma similar, para convertir la representacin de I nt eger de nuevo a su homlogo i nt , usted lo desembalara de la siguiente forma:
I nt eger boxedVal ue = I nt eger . val ueOf ( 238) ;
i nt i nt Val ue = boxedVal ue. i nt Val ue( ) ;
Embalaje automtico y desembalaje automtico
En un sentido estricto, usted no necesita embalar y desembalar los primitivos de forma explcita. En cambio, podra usar las funciones de
embalaje automtico y desembalaje automtico del lenguaje J ava, del siguiente modo:
i nt i nt Val ue = 238;
I nt eger boxedVal ue = i nt Val ue;
/ /
i nt Val ue = boxedVal ue;
Sin embargo, recomiendo que evite usar el embalaje automtico y desembalaje automtico porque puede llevar a tener problemas de
cdigos. El cdigo en los fragmentos de embalaje y desembalaje es ms evidente, y de ese modo ms legible, que el cdigo embalado
automticamente y creo que vale la pena hacer el esfuerzo extra.
Anlisis y conversin de tipos embalados
Ha visto cmo obtener un tipo embalado pero, qu tal si se analiza una St r i ng que usted sospecha que tiene un tipo embalado en la caja
misma? Las clases de envoltorio J DK tienen mtodos para eso tambin:
St r i ng char act er Numer i c = " 238" ;
I nt eger conver t edVal ue = I nt eger . par seI nt ( char act er Numer i c) ;
Tambin puede convertir los contenidos de un tipo de envoltorio J DK a St r i ng:
I nt eger boxedVal ue = I nt eger . val ueOf ( 238) ;
St r i ng char act er Numer i c = boxedVal ue. t oSt r i ng( ) ;
Observe que cuando usa el operador de concatenacin en una expresin de St r i ng (ya ha visto esto en las llamadas al Logger ), el tipo
primitivo se embala automticamente y los tipos de envoltorio tienen automticamente a t oSt r i ng( ) invocada sobre ellos. Muy til.
Listas
Una Li st a es una construccin de coleccin que, por definicin, es una coleccin ordenada, tambin conocida como una secuencia. Debido
a que una Li st a es ordenada, usted tiene completo control sobre el lugar en donde van los elementos en la Li st a. Una coleccin de
Li st a J ava solo puede tener objetos y define un contrato estricto sobre cmo se comporta.
La Li st a es una interfaz, por lo que usted no puede crear una instancia de ella directamente. Trabajar con su implementacin ms
comnmente usada, Ar r ayLi st :
Li st <Obj ect > l i st Of Obj ect s = new Ar r ayLi st <Obj ect >( ) ;
Observe que hemos asignado el objeto Ar r ayLi st a una variable de tipo Li st a. La programacin J ava le permite asignar una variable de
un tipo a otro, siempre y cuando la variable a la que se asigna sea una superclase o interfaz implementada por la variable desde la cual se
asigna. Veremos ms sobre cmo se afectan las asignaciones de variables en la Part 2 en la seccin Inheritance.
Tipo formal
Qu sucede con el <Obj ect >en el recorte anterior del cdigo? Se llama el tipo formal y le comunica al compilador que esta Li st a
contiene una coleccin de tipo Obj ect , lo que significa que puede poner prcticamente lo que quiera en la Li st a.
Si usted quisiera intensificar las restricciones sobre lo que pudiera o no ir en la Li st a, la definira de modo diferente:
Li st <Per son> l i st Of Per sons = new Ar r ayLi st <Per son>( ) ;
Ahora su Li st a solo puede tener instancias de Per son.
Uso de las Li st as
Usar las Li st as es muy fcil, como las colecciones J ava en general. Aqu hay algunas de las cosas que querr hacer con las Li st as:
Poner algo en la Li st a.
Preguntarle a la Li st a cun grande es actualmente.
Obtener algo de la Li st a.
Introduccin a la programacin J ava, parte 1: Conceptos bsicos del lenguaje J ava
http://www.ibm.com/developerworks/ssa/java/tutorials/j-introtojava1/[19/09/2014 8:07:46]
Intentemos algunas de estas. Ya ha visto cmo crear una instancia de la Li st a al crear una instancia de su tipo de implementacin de
Ar r ayLi st , por lo que comenzar desde all.
Para poner algo en una Li st a, llame al mtodo add( ) :
Li st <I nt eger > l i st Of I nt eger s = new Ar r ayLi st <I nt eger >( ) ;
l i st Of I nt eger s. add( I nt eger . val ueOf ( 238) ) ;
El mtodo add( ) agrega el elemento al final de la Li st a.
Para preguntarle a la Li st a cun grande es, llame al si ze( ) :
Li st <I nt eger > l i st Of I nt eger s = new Ar r ayLi st <I nt eger >( ) ;
l i st Of I nt eger s. add( I nt eger . val ueOf ( 238) ) ;
Logger l = Logger . get Logger ( " Test " ) ;
l . i nf o( " Cur r ent Li st si ze: " + l i st Of I nt eger s. si ze( ) ) ;
Para recuperar un elemento de la Li st a, llame al get ( ) y pase el ndice del elemento que usted quiere:
Li st <I nt eger > l i st Of I nt eger s = new Ar r ayLi st <I nt eger >( ) ;
l i st Of I nt eger s. add( I nt eger . val ueOf ( 238) ) ;
Logger l = Logger . get Logger ( " Test " ) ;
l . i nf o( " I t emat i ndex 0 i s: " l i st Of I nt eger s. get ( 0) ) ;
En una aplicacin del mundo real, una Li st a contendra registros, u objetos de negocios, y usted posiblemente querra examinarlos todos
como parte de su proceso. Cmo hace eso de un modo genrico? Tiene que iterar por la coleccin, lo cual usted puede hacer porque la
Li st a implementa la interfaz j ava. l ang. I t er abl e. (Aprender acerca de las interfaces en la Part 2).
I t er abl e
Si una coleccin implementa j ava. l ang. I t er abl e, se llama una coleccin iterable. Eso significa que usted puede comenzar por un
extremo y recorrer la coleccin elemento por elemento hasta que se le acaben los elementos.
Ya ha visto la sintaxis especial para iterar por las colecciones que implementan la interfaz I t er abl e, en la seccin Loops. Aqu est de
nuevo:
f or ( obj ect Type var Name : col l ect i onRef er ence) {
/ / St ar t usi ng obj ect Type ( vi a var Name) r i ght away. . .
}
Iteracin en una Li st a
El ejemplo anterior fue abstracto. Ahora, aqu tiene uno ms realista:
Li st <I nt eger > l i st Of I nt eger s = obt ai nSomehow( ) ;
Logger l = Logger . get Logger ( " Test " ) ;
f or ( I nt eger i : l i st Of I nt eger s) {
l . i nf o( " I nt eger val ue i s : " + i ) ;
}
Ese pequeo recorte de cdigo hace lo mismo que este ms largo:
Li st <I nt eger > l i st Of I nt eger s = obt ai nSomehow( ) ;
Logger l = Logger . get Logger ( " Test " ) ;
f or ( i nt aa = 0; aa < l i st Of I nt eger s. si ze( ) ; aa++) {
I nt eger I = l i st Of I nt eger s. get ( aa) ;
l . i nf o( " I nt eger val ue i s : " + i ) ;
}
El primer recorte usa sintaxis taquigrfico: no hay una variable de ndi ce (aa en este caso) para inicializar y ninguna llamada al mtodo
get ( ) de la Li st a.
Debido a que la Li st a extiende la j ava. ut i l . Col l ect i on, que implementa I t er abl e, usted puede usar la sintaxis taquigrfica para iterar
por cualquier Li st a.
Conjuntos
Un Conj unt o es una construccin de colecciones que por definicin contiene elementos nicos, es decir, ningn duplicado. Mientras que
una Li st a puede contener el mismo objeto cientos de veces, un Conj unt o solo puede contener cierta instancia una vez. Una coleccin de
Conj unt o J ava solo puede tener objetos y define un contrato estricto sobre cmo se comporta.
Debido a que el Conj unt o es una interfaz, usted no puede crear una instancia de l directamente, por lo tanto le mostrar una de mis
implementaciones favoritas: HashSet . HashSet es fcil de usar y es similar a la Li st a.
Aqu hay algunas cosas que querr hacer con un Conj unt o:
Poner algo en el Conj unt o.
Preguntarle al Conj unt o cun grande es actualmente.
Obtener algo del Conj unt o.
Introduccin a la programacin J ava, parte 1: Conceptos bsicos del lenguaje J ava
http://www.ibm.com/developerworks/ssa/java/tutorials/j-introtojava1/[19/09/2014 8:07:46]
Uso de los Conj unt os
Un atributo caracterstico de un Conj unt o es que garantiza la singularidad entre sus elementos pero no le interesa el orden de los
elementos. Considere el siguiente cdigo:
Set <I nt eger > set Of I nt eger s = new HashSet <I nt eger >( ) ;
set Of I nt eger s. add( I nt eger . val ueOf ( 10) ) ;
set Of I nt eger s. add( I nt eger . val ueOf ( 11) ) ;
set Of I nt eger s. add( I nt eger . val ueOf ( 10) ) ;
f or ( I nt eger i : set Of I nt eger s) {
l . i nf o( " I nt eger val ue i s: " + i ) ;
}
Puede que usted espere que el Conj unt o tenga tres elementos en l pero de hecho solo tiene dos porque el objeto I nt eger que contiene el
valor 10 solo se agregar una vez.
Tenga este comportamiento en mente cuando haga la iteracin por un Conj unt o, como en el siguiente modo:
Set <I nt eger > set Of I nt eger s = new HashSet ( ) ;
set Of I nt eger s. add( I nt eger . val ueOf ( 10) ) ;
set Of I nt eger s. add( I nt eger . val ueOf ( 20) ) ;
set Of I nt eger s. add( I nt eger . val ueOf ( 30) ) ;
set Of I nt eger s. add( I nt eger . val ueOf ( 40) ) ;
set Of I nt eger s. add( I nt eger . val ueOf ( 50) ) ;
Logger l = Logger . get Logger ( " Test " ) ;
f or ( I nt eger i : set Of I nt eger s) {
l . i nf o( " I nt eger val ue i s : " + i ) ;
}
Es posible que los objetos se impriman en un orden diferente del que usted los agreg porque un Conj unt o garantiza la singularidad, no el
orden. Ver esto por usted mismo si pega el cdigo anterior en el mtodo mai n( ) de su clase Per son y lo ejecuta.
Mapas
Un Mapa es una construccin de coleccin til porque le permite asociar un objeto (la clave) con otro (el valor). Como puede imaginar, la
clave para el Mapa debe ser nica y se usa para recuperar el valor en un momento posterior. Una coleccin de Mapa J ava solo puede tener
objetos y define un contrato estricto sobre cmo se comporta.
Debido a que el Mapa es una interfaz, usted no puede crear una instancia de l directamente, por lo tanto le mostrar una de mis
implementaciones favoritas: HashMap.
Aqu hay algunas de las cosas que querr hacer con los Mapas:
Poner algo en el Mapa.
Obtener algo del Mapa.
Obtener un Conj unt o de claves para el Mapa para hacer la iteracin en l.
Uso de los Mapas
Para poner algo en un Mapa, necesita tener un objeto que represente su clave y un objeto que represente su valor:
publ i c Map<St r i ng, I nt eger > cr eat eMapOf I nt eger s( ) {
Map<St r i ng, I nt eger > mapOf I nt eger s = new HashMap<St r i ng, I nt eger >( ) ;
mapOf I nt eger s. put ( " 1" , I nt eger . val ueOf ( 1) ) ;
mapOf I nt eger s. put ( " 2" , I nt eger . val ueOf ( 2) ) ;
mapOf I nt eger s. put ( " 3" , I nt eger . val ueOf ( 3) ) ;
/ / . . .
mapOf I nt eger s. put ( " 168" , I nt eger . val ueOf ( 168) ) ;
}
Es este ejemplo, el Mapa contiene I nt eger s, con la clave hecha por una St r i ng, que resulta ser su representacin de St r i ng. Para
recuperar un valor I nt eger particular, necesita su representacin St r i ng:
mapOf I nt eger s = cr eat eMapOf I nt eger s( ) ;
I nt eger oneHundr ed68 = mapOf I nt eger s. get ( " 168" ) ;
Uso del Conj unt o con el Mapa
En ocasiones, usted puede encontrarse con una referencia a un Mapa y simplemente quiere recorrer todo el conjunto de contenidos. En este
caso, necesitar un Conj unt o de las claves para el Mapa:
Set <St r i ng> keys = mapOf I nt eger s. keySet ( ) ;
Logger l = Logger . get Logger ( " Test " ) ;
f or ( St r i ng key : keys) {
I nt eger val ue = mapOf I nt eger s. get ( key) ;
l . i nf o( " Val ue keyed by ' " + key + " ' i s ' " + val ue + " ' " ) ;
}
Observe que el mtodo t oSt r i ng( ) del I nt eger recuperado desde el Mapa se llama automticamente cuando se usa en la llamada del
Logger . El Mapa no devuelve una Li st a de sus claves porque se hace una clave para el Mapa y cada clave es nica; la singularidad es la
Introduccin a la programacin J ava, parte 1: Conceptos bsicos del lenguaje J ava
http://www.ibm.com/developerworks/ssa/java/tutorials/j-introtojava1/[19/09/2014 8:07:46]
caracterstica distintiva de un Conj unt o.
Archivo del cdigo Java
Ahora que ha aprendido un poco sobre la escritura de aplicaciones J ava, puede que se est preguntando cmo empaquetarlas para que
otros desarrolladores puedan usarlas o cmo importar cdigos de otros desarrolladores en sus aplicaciones. Esta seccin le muestra cmo.
JAR
El J DK se enva con una herramienta llamada J AR, que significa J ava Archive (archivo J ava). Use esta herramienta para crear archivos J AR.
Una vez que haya empaquetado su cdigo en un archivo J AR, otros desarrolladores pueden simplemente dejar el archivo J AR en sus
proyectos y configurar sus proyectos para usar su cdigo.
Crear un archivo J AR en Eclipse es facilsimo. En su espacio de trabajo, haga clic derecho en el paquete com. makot ogr oup. i nt r o y
seleccione Export. Ver el dilogo que se muestra en la Ilustracin 8. Elija Java > JAR file.
Ilustracin 8. Recuadro de dilogo de exportacin.
Cuando se abra el siguiente recuadro de dilogo, navegue hasta la ubicacin donde quiere almacenar su archivo J AR y coloque el nombre
que quiera al archivo. La extensin .jar es la predeterminada, que recomiendo usar. Haga clic en Finish.
Ver su archivo J AR en la ubicacin que seleccion. Puede usar las clases en l desde su cdigo si lo pone en su ruta de desarrollo en
Eclipse. Hacer eso es facilsimo tambin, como ver a continuacin.
Uso de aplicaciones de terceros
Mientras usted se siente ms y ms cmodo al escribir aplicaciones J ava, querr usar ms y ms aplicaciones de terceros para soportar su
cdigo. A modo de ejemplo, digamos que usted quiere usar j oda- t i me, una biblioteca de sustitucin J DK para hacer manejo de
fecha/tiempo, manipulaciones y clculos.
Supongamos que ya ha descargado j oda- t i me, que se almacena en un archivo J AR. Para usar las clases, su primer paso es crear un
directorio lib en su proyecto y dejar el archivo J AR en l:
1. Haga clic derecho en la carpeta raz Intro en la vista Project Explorer.
2. Elija New > Folder y llame la carpeta lib.
3. Haga clic en Finish.
La carpeta nueva aparece al mismo nivel que sr c. Ahora copie el archivo .jar j oda- t i me en su nuevo directorio l i b. Para este ejemplo, el
archivo se llama j oda- t i me- 1. 6. j ar . (Al nombrar un archivo J AR es comn incluir el nmero de la versin).
Ahora todo lo que necesita hacer es comunicarle a Eclipse que incluya las clases del archivo j oda- t i me- 1. 6. j ar en su proyecto:
1. Haga clic derecho en el proyecto Intro en su espacio de trabajo, luego seleccione Properties.
2. En el recuadro de dilogo de Propiedades, seleccione la pestaa de Bibliotecas, como se muestra en la Ilustracin 9:
Ilustracin 9. Properties > Java Build Path
Volver arriba
Introduccin a la programacin J ava, parte 1: Conceptos bsicos del lenguaje J ava
http://www.ibm.com/developerworks/ssa/java/tutorials/j-introtojava1/[19/09/2014 8:07:46]
3. Haga clic en el botn Add External JARs, luego navegue hasta el directorio lib del proyecto, seleccione el archivo joda-time-1.6.jar y
haga clic en OK.
Una vez que Eclipse haya procesado los cdigos (es decir, los archivos de clases) en el archivo J AR, estn disponibles para hacer
referencia (importar) desde su cdigo J ava. Observe en Project Explorer que hay una carpeta nueva llamada Bibliotecas referenciadas que
contiene el archivo joda-time-1.6.jar.
Escribir un buen cdigo Java
Usted tiene suficiente sintaxis J ava acumulada en su haber para escribir programas J ava bsicos, lo que significa que la primera mitad de
este tutorial est a punto de concluir. Esta seccin final presenta algunas de las mejores prcticas que le ayudarn a escribir cdigos J ava
ms limpios y ms plausibles de ser mantenidos.
Mantenga pequeas las clases
Usted cre algunas clases en este tutorial. Luego de generar pares de getters y setters incluso para la pequea cantidad (de acuerdo a los
estndares de una clase J ava del mundo real) de atributos, la clase Per son tiene 150 lneas de cdigo. Esta es una clase pequea. No es
raro ver clases con 50 o 100 mtodos y mil lneas de origen (o ms). El punto de los mtodos es mantener solo los que necesita. Si necesita
varios mtodos ayudantes que hagan esencialmente lo mismo pero que tomen parmetros diferentes (tales como el mtodo
pr i nt Audi t ( ) ), esa es una buena eleccin. Solo asegrese de limitar la lista de mtodos a lo que necesita, no ms.
En general, las clases representan alguna entidad conceptual en su aplicacin y sus tamaos deberan reflejar solo la funcionalidad para
hacer lo que sea que la entidad necesite hacer. Deberan permanecer muy centradas para hacer una pequea cantidad de actividades y
hacerlas bien.
Nombre a los mtodos con cuidado
Un buen patrn de codificacin cuando se trata de nombres de mtodos es el patrn de nombres de mtodos revelador de intenciones. Este
patrn es ms fcil de entender con un simple ejemplo. Cul de los siguientes nombres de mtodos es ms fcil de descifrar a la vista?
a( )
comput eI nt er est ( )
La respuesta debera ser evidente, sin embargo por alguna razn, los programadores tienen una tendencia a darle a los mtodos (y
variables, para tal caso) nombres pequeos, abreviados. Sin duda, un nombre ridculamente largo puede ser poco prctico pero un nombre
que transmite lo que un mtodo hace no necesita ser ridculamente largo. Seis meses despus de que escriba un grupo de cdigos, tal vez
no recuerde lo que quiso hacer con un mtodo llamado a( ) pero es evidente que un mtodo llamado comput eI nt er est ( ) , bueno,
probablemente compute inters.
Mantenga pequeos los mtodos
Los mtodos pequeos son tan preferibles como las clases pequeas y por razones similares. Un modismo que intento seguir es mantener
el tamao de un mtodo en una pgina como lo veo en mi pantalla. Esto hace que mis clases de aplicaciones sean ms plausibles de ser
mantenidas.
Si un mtodo crece ms all de una pgina, lo refactorizo. Refactorear significa cambiar el diseo de un cdigo existente sin cambiar sus
Volver arriba
Introduccin a la programacin J ava, parte 1: Conceptos bsicos del lenguaje J ava
http://www.ibm.com/developerworks/ssa/java/tutorials/j-introtojava1/[19/09/2014 8:07:46]
resultados. Eclipse tiene un maravilloso conjunto de herramientas de refactorizacin. Normalmente, un mtodo largo contiene subgrupos de
funcionalidad agrupados. Tome esta funcionalidad y muvala a otro mtodo (nombrndola como corresponde) y pase los parmetros como
se necesite.
Limite cada mtodo a un solo trabajo. He descubierto que un mtodo que hace solo una cosa bien, normalmente no toma ms de alrededor
de 30 lneas de cdigos.
Use los comentarios
Por favor, use los comentarios. Las personas que siguen luego de usted (o incluso usted mismo, seis meses ms adelante) le agradecern.
Tal vez haya escuchado el antiguo refrn Un cdigo bien escrito es de autodocumentacin, por lo tanto, quin necesita comentarios? Le
dar dos razones por lo que esto es falso:
La mayora de los cdigos no estn bien escritos.
Su cdigo probablemente no est tan bien escrito como usted piensa.
As que haga comentarios en su cdigo. Punto.
Use un estilo consistente.
La codificacin del estilo es realmente una cuestin de preferencia personal pero me gustara ofrecer este consejo: use una sintaxis J ava
estndar para las llaves:
publ i c st at i c voi d mai n( St r i ng[ ] ar gs) {
}
No use este estilo:
publ i c st at i c voi d mai n( St r i ng[ ] ar gs)
{
}
Ni este:
publ i c st at i c voi d mai n( St r i ng[ ] ar gs)
{
}
Por qu? Bueno, es estndar, por lo tanto la mayora de los cdigos con los que usted se encuentre (como cdigos que usted no escribi
pero que se pueden pagar para mantener) muy probablemente estarn escritos de ese modo. Una vez dicho eso, Eclipse s le permite
definir estilos de cdigo y formatear su cdigo de cualquier modo que a usted le guste. Lo principal es que elija un estilo y lo mantenga.
Use un registro incorporado
Antes de que J ava 1.4 introdujera el registro incorporado, el modo cannico para descubrir lo que su programa estaba haciendo era hacer
una llamada de sistema como la siguiente:
publ i c voi d someMet hod( ) {
/ / Do some st uf f . . .
/ / Now t el l al l about i t
Syst em. out . pr i nt l n( " Tel l i ng you al l about i t : " ) ;
/ / Et c. . .
}
El recurso de registro incorporado del lenguaje J ava (consulte de nuevo Your first J ava object) es una mejor alternativa. Yo nunca uso
Syst em. out . pr i nt l n( ) en mi cdigo y sugiero que usted tampoco lo use.
Siguiendo los pasos de Fowler
El mejor libro en la industria (en mi opinin, y no lo digo solo yo) es Refactoring: Improving the Design of Existing Code de Martin Fowler et
al. (Vea Recursos). Incluso es divertido leerlo. Fowler y sus coautores hablan sobre "olores de cdigos" que piden refactorizacin y
profundizan mucho sobre las diversas tcnicas para arreglarlos.
En mi opinin, la refactorizacin y la habilidad para escribir cdigos de prueba son las aptitudes ms importantes para que los
programadores nuevos aprendan. Si todos fueran buenos en ambos aspectos, revolucionara la industria. Si usted se vuelve bueno en
ambos, en ltima instancia producir cdigos ms limpios y aplicaciones ms funcionales que muchos de sus colegas.
Conclusin para la Parte 1
En este tutorial, ha aprendido acerca de la programacin orientada a objetos, ha descubierto una sintaxis J ava que le permite crear objetos
tiles y se ha familiarizado con un IDE que le ayuda a controlar su entorno de desarrollo. Sabe cmo crear y ejecutar objetos J ava que
pueden hacer una buena cantidad actividades, que incluyen hacer cosas diferentes en base a entradas diferentes. Tambin sabe cmo
hacer que sus aplicaciones admitan archivos J AR para que los otros desarrolladores las usen en sus programas y cuenta con algunas de
las mejores prcticas bsicas de programacin J ava en su haber.
Volver arriba
Introduccin a la programacin J ava, parte 1: Conceptos bsicos del lenguaje J ava
http://www.ibm.com/developerworks/ssa/java/tutorials/j-introtojava1/[19/09/2014 8:07:46]
Recursos
Aprender
J ava technology homepage: El sitio oficial de J ava tiene enlaces a todo lo relacionado con
la plataforma J ava, incluida la especificacin del lenguaje J ava y documentacin J ava API.
J ava 6: Aprenda ms sobre J DK 6 y las herramientas que incluye.
J avadoc homepage: Aprenda los detalles del uso de J avadoc, incluido cmo usar la
herramienta de lnea de comandos y cmo escribir sus propios Doclets que le permiten
crear formatos personalizados para su documentacin.
Refactorizacin: Improving the Design of Existing Code (Martin Fowler et al., Addison-
Wesley, 1999): Este libro es un recurso excelente para aprender cmo escribir un cdigo
ms limpio y ms plausible de mantener.
New to J ava technology: Verifique este compendio de recursos de developerWorks para
desarrolladores J ava novatos.
5 things you didn't know about...: Esta serie de developerWorks proporciona introducciones
breves a consejos y tradiciones de programacin J ava menos conocidos (pero a menudo
introductorios).
"Struts, an open-source MVC implementation" (Malcolm Davis, developerWorks, febrero
del 2001): Este artculo presenta el patrn de diseo modelo-vista-controlador como se
implementa en una de las infraestructuras de desarrollo web ms antiguas de la
plataforma J ava.
"Java theory and practice: Garbage collection and performance" (Brian Goetz,
developerWorks, enero del 2004): Este artculo es una visin general de la recogida de
basura, que incluye consejos para novatos para escribir clases amigables de GC.
Eclipse IDE project resources from developerWorks: Aprenda para qu es bueno Eclipse,
por qu es importante, cmo puede comenzar a usarlo y dnde aprender ms sobre l.
The J ava Tutorials: Obtenga una introduccin detallada al lenguaje J ava.
La developerWorks J ava technology zone: Cientos de artculos acerca de cada aspecto de
la programacin J ava.
Obtener los productos y tecnologas
J DK 6: Descargue el J DK 6 desde Sun (Oracle).
Eclipse: Descargue el IDE Eclipse para desarrolladores J ava.
IBM developer kits: IBM proporciona una cantidad de kits para desarrolladores J ava para
utilizar en plataformas populares.
IBM PureSystems
La nueva familia de sistemas expertos
integrados de IBM est aqu.
La carrera ha comenzado!
Obtenga WAS para desarrolladores sin
costo.
Descarga gratuita:
Rational Team Concert for Power
Systems Software Standard Edition
Lo que sigue
En la segunda mitad de este tutorial, comenzar a aprender acerca de algunas de las construcciones ms avanzadas de la programacin
J ava, aunque el debate general todava ser de alcance introductorio. Los temas de programacin J ava que se cubren en ese tutorial
incluyen:
Herencia y abstraccin
Interfaces
Clases anidadas
Expresiones regulares
Genricos
Tipos de enumeracin
E/S
Serializacin
Lea "Introduccin a la programacin J ava, parte 2: Construcciones para aplicaciones del mundo real".
Introduccin a la programacin J ava, parte 1: Conceptos bsicos del lenguaje J ava
http://www.ibm.com/developerworks/ssa/java/tutorials/j-introtojava1/[19/09/2014 8:07:46]
Comentar
Participe en My developerWorks community. Conctese con otros usuarios de
developerWorks mientras explora los blogs, foros, grupos y wikis realizados por el
desarrollador.
Comentarios
Acerca de
Contacto
Informar abusos
Trminos de uso
Aviso de trminos legales de
terceros
Privacidad (Ingls)
Accesibilidad (Ingls)
Volver arriba
@dWEspanol