Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Manualjava STC
Manualjava STC
Pgina 1 de 267
Av. Juan de Dios Btiz s/n esq. Miguel Othn de Mendizbal, Col. Nueva Industrial Vallejo, Delegacin Gustavo A. Madero.
C.P 07738, Mxico D.F. Tel.5729-6000 Extensiones: 56529, 56596, email: ddep@cic.ipn.mx ; www.cursos.cic.ipn.mx.
JAVA BSICO
Pgina 2 de 267
Av. Juan de Dios Btiz s/n esq. Miguel Othn de Mendizbal, Col. Nueva Industrial Vallejo, Delegacin Gustavo A. Madero.
C.P 07738, Mxico D.F. Tel.5729-6000 Extensiones: 56529, 56596, email: ddep@cic.ipn.mx ; www.cursos.cic.ipn.mx.
JAVA BSICO
Contenido
1. INTRODUCCION A LA TECNOLOGIA Y PLATAFORMA JAVA ...................... 6
1.1 Historia de Java ............................................................................................... 6
1.2 Panorama actual y tipos de ediciones del lenguaje.................................. 8
1.2.1Caractersticas del Lenguaje de programacin Java .......................... 9
1.3 Instalacin de Java SE .............................................................................. 15
1.4 Elementos que integran JAVA SE ............................................................ 23
1.5 Variables de ambiente .............................................................................. 28
1.6 Prueba de instalacin ................................................................................ 31
1.7 Obtencin del IDE NetBeans 6.0 ............................................................... 36
1.8 Desarrollo de una aplicacin Java con el IDE NetBeans 6.0 .................. 39
1.9 Tipos de programas en Java .................................................................... 46
1.10 Estructura de un programa de tipo aplicacin en Java ........................ 48
1.11 Como se crean aplicaciones Java con JDK .......................................... 53
1.12 Como se crean applets Java con SDK ................................................... 55
2. ELEMENTOS BSICOS DEL LENGUAJE JAVA ............................................ 57
2.1 Comentarios ............................................................................................... 57
2.1.1 Comentarios de tipo del C y C++ ........................................................ 58
2.1.2 Comentarios para el javadoc y sus etiquetas principales ............... 59
2.2 Identificadores........................................................................................... 63
2.3 Palabras reservadas .................................................................................. 68
2.4 Tipos de datos en Java ............................................................................. 69
2.5 Literales ...................................................................................................... 71
2.6 Secuencias de escape de carcter ........................................................... 73
2.7 Sentencias y expresiones ......................................................................... 74
2.7.1 De expresin de asignacin ............................................................... 80
2.7.2 De incremento o decremento ............................................................. 81
2.7.3 De invocacin a un mtodo ................................................................ 85
Pgina 3 de 267
Av. Juan de Dios Btiz s/n esq. Miguel Othn de Mendizbal, Col. Nueva Industrial Vallejo, Delegacin Gustavo A. Madero.
C.P 07738, Mxico D.F. Tel.5729-6000 Extensiones: 56529, 56596, email: ddep@cic.ipn.mx ; www.cursos.cic.ipn.mx.
JAVA BSICO
JAVA BSICO
Pgina 5 de 267
Av. Juan de Dios Btiz s/n esq. Miguel Othn de Mendizbal, Col. Nueva Industrial Vallejo, Delegacin Gustavo A. Madero.
C.P 07738, Mxico D.F. Tel.5729-6000 Extensiones: 56529, 56596, email: ddep@cic.ipn.mx ; www.cursos.cic.ipn.mx.
JAVA BSICO
Pgina 6 de 267
Av. Juan de Dios Btiz s/n esq. Miguel Othn de Mendizbal, Col. Nueva Industrial Vallejo, Delegacin Gustavo A. Madero.
C.P 07738, Mxico D.F. Tel.5729-6000 Extensiones: 56529, 56596, email: ddep@cic.ipn.mx ; www.cursos.cic.ipn.mx.
JAVA BSICO
Navigator. En 1994 se le busca una nueva utilidad a Oak para la Web y se crea el
navegador llamado WebRunner (anteriormente renombrado HotJava) para exhibir
la reciente tecnologa de lo que terminara convirtindose en Java.
Por cierto, Oak se le cambio el nombre a Java, porque ya exista un lenguaje de
programacin denominado Oak, entonces, en una junta de emergencia donde se
tena que decidir un nuevo nombre, y en esa junta estaban tomando caf.
En algunas partes de EUA se denomina Java a un caf de buena calidad,
entonces James Gosling y sus colegas decidieron darle ese nombre.
Para hacer pblico el lenguaje, en la conferencia SunWorld, John Gage de Sun y
Marc Andreesen de Netscape presentaron Java al mundo. Netscape se
comprometi a incorporar Java en la siguiente versin de su navegador y al final
del ao empresas como IBM, Oracle, Borland, Adobe, Macromedia, Lotus,
Spyglass e Intuit haban incorporando Java a sus productos. Incluso Microsoft
autoriz Java, comprometindose a incorporar Java a sus productos, sistemas
operativos y herramientas de desarrollo.
La versin original de Java era tan pequea que caba en un disquete. El
intrprete del ncleo tena casi 100 Kb. La biblioteca matemtica sumaba otros 20
Kb. El cdigo para la integracin con bibliotecas C eran otros 50 Kb. La mayora
de las bibliotecas de clase caban en 375 Kb, dejando slo las bibliotecas de
grficos especficas de plataforma que variaban en tamao. En conjunto Java
solamente tena alrededor de 1 Mb de ROM y 1 Mb de RAM.
Pgina 7 de 267
Av. Juan de Dios Btiz s/n esq. Miguel Othn de Mendizbal, Col. Nueva Industrial Vallejo, Delegacin Gustavo A. Madero.
C.P 07738, Mxico D.F. Tel.5729-6000 Extensiones: 56529, 56596, email: ddep@cic.ipn.mx ; www.cursos.cic.ipn.mx.
JAVA BSICO
Pgina 8 de 267
Av. Juan de Dios Btiz s/n esq. Miguel Othn de Mendizbal, Col. Nueva Industrial Vallejo, Delegacin Gustavo A. Madero.
C.P 07738, Mxico D.F. Tel.5729-6000 Extensiones: 56529, 56596, email: ddep@cic.ipn.mx ; www.cursos.cic.ipn.mx.
JAVA BSICO
Pgina 9 de 267
Av. Juan de Dios Btiz s/n esq. Miguel Othn de Mendizbal, Col. Nueva Industrial Vallejo, Delegacin Gustavo A. Madero.
C.P 07738, Mxico D.F. Tel.5729-6000 Extensiones: 56529, 56596, email: ddep@cic.ipn.mx ; www.cursos.cic.ipn.mx.
JAVA BSICO
Pgina 10 de 267
Av. Juan de Dios Btiz s/n esq. Miguel Othn de Mendizbal, Col. Nueva Industrial Vallejo, Delegacin Gustavo A. Madero.
C.P 07738, Mxico D.F. Tel.5729-6000 Extensiones: 56529, 56596, email: ddep@cic.ipn.mx ; www.cursos.cic.ipn.mx.
JAVA BSICO
JAVA BSICO
JAVA BSICO
software para el producto, con tan solo agregar el JRE, a la plataforma recin
diseada puede ejecutar todos los programas de Java existentes.
Porttil: Como el cdigo compilado de Java (conocido como byte code) o que es
un cdigo de bytes de plataforma neutral, es interpretado, y un programa
compilado de Java puede ser utilizado por cualquier computadora que tenga
implementado el interprete de Java (JRE). Esto ltimo hace honor a la promesa de
sus desarrolladores sintetizado en las frases "Escribir una vez, Ejecutarse en
cualquier sitio" (EE).
De esta manera, es posible confiarse en que todas las implementaciones
numricas en tamao, orden de byte y manipulacin son generales o neutrales, y
estas
estn
definidas
en
la
documentacin
de
Java
en
Pgina 13 de 267
Av. Juan de Dios Btiz s/n esq. Miguel Othn de Mendizbal, Col. Nueva Industrial Vallejo, Delegacin Gustavo A. Madero.
C.P 07738, Mxico D.F. Tel.5729-6000 Extensiones: 56529, 56596, email: ddep@cic.ipn.mx ; www.cursos.cic.ipn.mx.
JAVA BSICO
Pgina 14 de 267
Av. Juan de Dios Btiz s/n esq. Miguel Othn de Mendizbal, Col. Nueva Industrial Vallejo, Delegacin Gustavo A. Madero.
C.P 07738, Mxico D.F. Tel.5729-6000 Extensiones: 56529, 56596, email: ddep@cic.ipn.mx ; www.cursos.cic.ipn.mx.
JAVA BSICO
El alumno obtendr el software gratuito (freeware) Java SDK 6 del sitio de Sunsoft,
transferir los archivos necesarios, los instalar y comprobar su instalacin
ejecutando un pequeo programa de Java.
Obtener JDK 1.6 y el NetBeans 6.9 (o la versin ms reciente)
La versin 1.6.X_XX de JDK (Kit de Desarrollo de Java) est disponible
actualmente para las siguientes plataformas:
Windows
Linux
Solaris
Mac OS
Descargue el SDK para estas plataformas del sitio Web de Sun, en la siguiente
direccin http://java.sun.com En esta otra direccin podrs bajarte la ltima versin
del JDK:
http://java.sun.com/javase/downloads/index.jsp
Elegir la versin ms actual del JDK 1.6.X_XX. Peridicamente, Sun publica
reparaciones de fallas que agregan un nuevo dgito al nmero, como cuando a
Java 1.1 le sigue 1.1.1, 1.1.2, 1.2.0, 1.3.0, 1.4.0, 1.4.0_01,, 1.6.0_01 etctera.
Obtener la versin ms reciente ( 4 de junio 2010 ) del JDK 1.6.0_20 disponible
para su plataforma.
Los requerimientos JDK 6 Actualizacin 20 con el NetBeans 6.9 (o la versin ms
reciente)
Pgina 15 de 267
Av. Juan de Dios Btiz s/n esq. Miguel Othn de Mendizbal, Col. Nueva Industrial Vallejo, Delegacin Gustavo A. Madero.
C.P 07738, Mxico D.F. Tel.5729-6000 Extensiones: 56529, 56596, email: ddep@cic.ipn.mx ; www.cursos.cic.ipn.mx.
JAVA BSICO
Figura 1-2. Los requerimientos estn publicados de acuerdo a la plataforma en que se va a instalar
el JDK 6.
Pgina 16 de 267
Av. Juan de Dios Btiz s/n esq. Miguel Othn de Mendizbal, Col. Nueva Industrial Vallejo, Delegacin Gustavo A. Madero.
C.P 07738, Mxico D.F. Tel.5729-6000 Extensiones: 56529, 56596, email: ddep@cic.ipn.mx ; www.cursos.cic.ipn.mx.
JAVA BSICO
Pgina 17 de 267
Av. Juan de Dios Btiz s/n esq. Miguel Othn de Mendizbal, Col. Nueva Industrial Vallejo, Delegacin Gustavo A. Madero.
C.P 07738, Mxico D.F. Tel.5729-6000 Extensiones: 56529, 56596, email: ddep@cic.ipn.mx ; www.cursos.cic.ipn.mx.
JAVA BSICO
Figura 1-3. Sitio web para descargar la versin NetBeans IDE 6.9
Pgina 18 de 267
Av. Juan de Dios Btiz s/n esq. Miguel Othn de Mendizbal, Col. Nueva Industrial Vallejo, Delegacin Gustavo A. Madero.
C.P 07738, Mxico D.F. Tel.5729-6000 Extensiones: 56529, 56596, email: ddep@cic.ipn.mx ; www.cursos.cic.ipn.mx.
JAVA BSICO
Figura 1-4. Pgina web donde se ven los requerimientos del NetBeans y otra documentacin
tcnica del NetBeans.
Pgina 19 de 267
Av. Juan de Dios Btiz s/n esq. Miguel Othn de Mendizbal, Col. Nueva Industrial Vallejo, Delegacin Gustavo A. Madero.
C.P 07738, Mxico D.F. Tel.5729-6000 Extensiones: 56529, 56596, email: ddep@cic.ipn.mx ; www.cursos.cic.ipn.mx.
JAVA BSICO
Pgina 20 de 267
Av. Juan de Dios Btiz s/n esq. Miguel Othn de Mendizbal, Col. Nueva Industrial Vallejo, Delegacin Gustavo A. Madero.
C.P 07738, Mxico D.F. Tel.5729-6000 Extensiones: 56529, 56596, email: ddep@cic.ipn.mx ; www.cursos.cic.ipn.mx.
JAVA BSICO
JAVA BSICO
la mayora con
Pgina 22 de 267
Av. Juan de Dios Btiz s/n esq. Miguel Othn de Mendizbal, Col. Nueva Industrial Vallejo, Delegacin Gustavo A. Madero.
C.P 07738, Mxico D.F. Tel.5729-6000 Extensiones: 56529, 56596, email: ddep@cic.ipn.mx ; www.cursos.cic.ipn.mx.
JAVA BSICO
Pgina 23 de 267
Av. Juan de Dios Btiz s/n esq. Miguel Othn de Mendizbal, Col. Nueva Industrial Vallejo, Delegacin Gustavo A. Madero.
C.P 07738, Mxico D.F. Tel.5729-6000 Extensiones: 56529, 56596, email: ddep@cic.ipn.mx ; www.cursos.cic.ipn.mx.
JAVA BSICO
Pgina 24 de 267
Av. Juan de Dios Btiz s/n esq. Miguel Othn de Mendizbal, Col. Nueva Industrial Vallejo, Delegacin Gustavo A. Madero.
C.P 07738, Mxico D.F. Tel.5729-6000 Extensiones: 56529, 56596, email: ddep@cic.ipn.mx ; www.cursos.cic.ipn.mx.
JAVA BSICO
En este caso simplemente se hace clic sobre un botn de compilacin, esta accin
desencadena que el ID invoque de forma transparente el comando javac que est
incluido en la MVJ para compilar dichas clases.
Cdigo Byte: el resultado de la compilacin genera archivos con extensin .class,
estos archivos contienen cdigo byte, este cdigo byte es universal, es decir no
importa con que plataforma estemos desarrollando que el cdigo de bajo nivel es
100% compatible con la MVJ
Interpretacin: a diferencia de otros lenguajes que sus aplicaciones se arrancan
directamente ejecutando un archivo con extensin normalmente .exe, para
ejecutar una aplicacin java desde la lnea de comandos se tiene que ejecutar
primeramente el comando java; este comando crea un entorno de ejecucin java
en memoria y transforma el cdigo byte de los archivos con extensin .class en
cdigo de bajo nivel propio de cada plataforma, en este caso el IDE de NetBeans
tiene un botn, que ya veremos en su momento para interpretar el cdigo byte y
ejecutar la aplicacin para que el usuario final la pueda utilizar.
Libreras estndar Java: sera impensable que todo el cdigo de una aplicacin
estuviera escrito por nosotros, java tiene una nutrida API (Application Program
Interface) que contiene libreras estndar Java, en el proceso de interpretacin el
interpretador Java invoca las Clases de la mencionada librera estndar Java y las
interpreta.
Las aplicaciones Java desde sus principios siempre se han ganado la mala fama
de ser ms lentas que otras aplicaciones convencionales. Pero hay que decir que
el tiempo corre a favor de Java debido a que los ordenadores cada vez tienen
frecuencias de reloj ms rpidas y capacidades de memoria cada vez ms
grandes tampoco se descarta que en un futuro la MVJ est implementada
directamente en un procesador. Esta es una carta que se guarda Sun y que Intel
Pgina 25 de 267
Av. Juan de Dios Btiz s/n esq. Miguel Othn de Mendizbal, Col. Nueva Industrial Vallejo, Delegacin Gustavo A. Madero.
C.P 07738, Mxico D.F. Tel.5729-6000 Extensiones: 56529, 56596, email: ddep@cic.ipn.mx ; www.cursos.cic.ipn.mx.
JAVA BSICO
JAVA BSICO
Pgina 27 de 267
Av. Juan de Dios Btiz s/n esq. Miguel Othn de Mendizbal, Col. Nueva Industrial Vallejo, Delegacin Gustavo A. Madero.
C.P 07738, Mxico D.F. Tel.5729-6000 Extensiones: 56529, 56596, email: ddep@cic.ipn.mx ; www.cursos.cic.ipn.mx.
JAVA BSICO
Son dos variables de ambiente del sistema operativo Windows que tienen que ser
configuradas, estas son PATH y CLASSPATH.
Configuracin de la variable de ambiente PATH.
La variable de ambiente PATH indica al sistema operativo donde se ubican o se
encuentran los programas ejecutables del kit de herramientas del Java 2 JDK, en
la documentacin indica que debe apuntar a la carpeta bin, que es donde se
alojan los archivos ejecutables, as por ejemplo si instalaste el Java en el disco
duro C: se tiene que poner:
SET PATH = C:\Archivos de programa\Java\jdk1.6.0_20\bin
Entonces el sistema operativo sabr dnde buscar esos archivos.
Es recomendable establecer otra variable de ambiente conocida como
JAVAHOME que apunta a donde instalaste el Java, as:
JAVAHOME = C:\Archivos de programa\Java\jdk1.6.0_20\.
Entonces puedes establecer tu variable de ambiente PATH, as:
SET PATH =%JAVAHOME%\bin
lo cual resulta ms prctico a la larga cuando instalas mas software que trabaje
con Java como el servidor de Servlets y JSP Tomcat de Apache.
Configuracin de la variable de ambiente CLASSPATH
La variable CLASSPATH indica al compilador, e intrprete de Java y a otras
aplicaciones que utilicen las API's de Java donde ubicarlas o encontrarlas para
cargarlas a Memoria y utilizarlas. En la versin Java 2 JDK 1.6.0_20 las API's
Pgina 28 de 267
Av. Juan de Dios Btiz s/n esq. Miguel Othn de Mendizbal, Col. Nueva Industrial Vallejo, Delegacin Gustavo A. Madero.
C.P 07738, Mxico D.F. Tel.5729-6000 Extensiones: 56529, 56596, email: ddep@cic.ipn.mx ; www.cursos.cic.ipn.mx.
JAVA BSICO
Pgina 29 de 267
Av. Juan de Dios Btiz s/n esq. Miguel Othn de Mendizbal, Col. Nueva Industrial Vallejo, Delegacin Gustavo A. Madero.
C.P 07738, Mxico D.F. Tel.5729-6000 Extensiones: 56529, 56596, email: ddep@cic.ipn.mx ; www.cursos.cic.ipn.mx.
JAVA BSICO
Figura 1-7. Configuracin de variables de entorno son en esencia son los mismos pasos para
sistemas Windows XP, Vista y Windows 7. Una vez instalado el JDK 6 puede instalar al NetBeans
6.9
Pgina 30 de 267
Av. Juan de Dios Btiz s/n esq. Miguel Othn de Mendizbal, Col. Nueva Industrial Vallejo, Delegacin Gustavo A. Madero.
C.P 07738, Mxico D.F. Tel.5729-6000 Extensiones: 56529, 56596, email: ddep@cic.ipn.mx ; www.cursos.cic.ipn.mx.
JAVA BSICO
Pgina 31 de 267
Av. Juan de Dios Btiz s/n esq. Miguel Othn de Mendizbal, Col. Nueva Industrial Vallejo, Delegacin Gustavo A. Madero.
C.P 07738, Mxico D.F. Tel.5729-6000 Extensiones: 56529, 56596, email: ddep@cic.ipn.mx ; www.cursos.cic.ipn.mx.
JAVA BSICO
Pgina 32 de 267
Av. Juan de Dios Btiz s/n esq. Miguel Othn de Mendizbal, Col. Nueva Industrial Vallejo, Delegacin Gustavo A. Madero.
C.P 07738, Mxico D.F. Tel.5729-6000 Extensiones: 56529, 56596, email: ddep@cic.ipn.mx ; www.cursos.cic.ipn.mx.
JAVA BSICO
Figura 1-9. Usando el NotePad como editor para cdigo fuente Java.
Pgina 33 de 267
Av. Juan de Dios Btiz s/n esq. Miguel Othn de Mendizbal, Col. Nueva Industrial Vallejo, Delegacin Gustavo A. Madero.
C.P 07738, Mxico D.F. Tel.5729-6000 Extensiones: 56529, 56596, email: ddep@cic.ipn.mx ; www.cursos.cic.ipn.mx.
JAVA BSICO
La Figura 1-10. Muestra los comandos de MS-DOS que se usaron para cambiarse a
la carpeta\j2010curso, listar los archivos de las carpetas y compilar Hola.java
Si el compilador del SDK no despliega ningn mensaje de error quiere decir que
se compil con xito. Esto quiere decir que se crear un archivo Hola.class en el
mismo directorio que contiene Hola.java.
Este archivo .class es el cdigo de bytes (bytecode) que puede ser ejecutado por
la mquina virtual
C) Una vez que tenga un archivo .class, lo puede ejecutar mediante el intrprete
de cdigo de bytes. Ejecute Hola.class escribiendo lo siguiente:
java Hola
Pgina 34 de 267
Av. Juan de Dios Btiz s/n esq. Miguel Othn de Mendizbal, Col. Nueva Industrial Vallejo, Delegacin Gustavo A. Madero.
C.P 07738, Mxico D.F. Tel.5729-6000 Extensiones: 56529, 56596, email: ddep@cic.ipn.mx ; www.cursos.cic.ipn.mx.
JAVA BSICO
La Figura 1-11. Muestra la salida apropiada de la aplicacin Hola junto con los
comandos MS-DOS que se utilizaron para llegar a ese punto.
Pgina 35 de 267
Av. Juan de Dios Btiz s/n esq. Miguel Othn de Mendizbal, Col. Nueva Industrial Vallejo, Delegacin Gustavo A. Madero.
C.P 07738, Mxico D.F. Tel.5729-6000 Extensiones: 56529, 56596, email: ddep@cic.ipn.mx ; www.cursos.cic.ipn.mx.
JAVA BSICO
6.9
visite
la
pgina
Figura 1-12. Pgina de descarga del NetBeans IDE 6.9, para lo bsico se descarga Java SE
Pgina 36 de 267
Av. Juan de Dios Btiz s/n esq. Miguel Othn de Mendizbal, Col. Nueva Industrial Vallejo, Delegacin Gustavo A. Madero.
C.P 07738, Mxico D.F. Tel.5729-6000 Extensiones: 56529, 56596, email: ddep@cic.ipn.mx ; www.cursos.cic.ipn.mx.
JAVA BSICO
Luego aparecer una ventana con la licencia, la cual deber aceptar porque es un
software libre. Le da clic al botn siguiente y aparecer una ventana donde usted
determina donde est la carpeta o directorio donde se instal el JDK 6 y en donde
se instalar el NetBeans 6.9, ver Figura 1-14.
JAVA BSICO
Pgina 38 de 267
Av. Juan de Dios Btiz s/n esq. Miguel Othn de Mendizbal, Col. Nueva Industrial Vallejo, Delegacin Gustavo A. Madero.
C.P 07738, Mxico D.F. Tel.5729-6000 Extensiones: 56529, 56596, email: ddep@cic.ipn.mx ; www.cursos.cic.ipn.mx.
JAVA BSICO
Se abre la nueva pantalla principal del NetBeans 6.9, ver Figura 1-17.
Pgina 39 de 267
Av. Juan de Dios Btiz s/n esq. Miguel Othn de Mendizbal, Col. Nueva Industrial Vallejo, Delegacin Gustavo A. Madero.
C.P 07738, Mxico D.F. Tel.5729-6000 Extensiones: 56529, 56596, email: ddep@cic.ipn.mx ; www.cursos.cic.ipn.mx.
JAVA BSICO
Para crear programas con Java se requiere primero crear un proyecto. Para crear
un proyecto de clic al men File > New Project > y aparece el cuadro New
Project y escoger en Categories Java y tipo de proyecto Java Application y darle
clic al botn Next >, ver Figura 1-18.
Pgina 40 de 267
Av. Juan de Dios Btiz s/n esq. Miguel Othn de Mendizbal, Col. Nueva Industrial Vallejo, Delegacin Gustavo A. Madero.
C.P 07738, Mxico D.F. Tel.5729-6000 Extensiones: 56529, 56596, email: ddep@cic.ipn.mx ; www.cursos.cic.ipn.mx.
JAVA BSICO
Figura 1-19. Parte donde se pone nombre al proyecto y el lugar donde se va a guardar.
Pgina 41 de 267
Av. Juan de Dios Btiz s/n esq. Miguel Othn de Mendizbal, Col. Nueva Industrial Vallejo, Delegacin Gustavo A. Madero.
C.P 07738, Mxico D.F. Tel.5729-6000 Extensiones: 56529, 56596, email: ddep@cic.ipn.mx ; www.cursos.cic.ipn.mx.
JAVA BSICO
Ahora para crear una clase Java con el mtodo main para que sea una aplicacin
de consola, de clic al con el botn derecho sobre el nodo PROY1DGSCA y escoja
New > Java Class, ver Figura 1-21.
Figura 1-21. Men contextual para crear una nueva Java Class.
Pgina 42 de 267
Av. Juan de Dios Btiz s/n esq. Miguel Othn de Mendizbal, Col. Nueva Industrial Vallejo, Delegacin Gustavo A. Madero.
C.P 07738, Mxico D.F. Tel.5729-6000 Extensiones: 56529, 56596, email: ddep@cic.ipn.mx ; www.cursos.cic.ipn.mx.
JAVA BSICO
Aparecer una nueva ventana de edicin donde usted podr capturar el cdigo
fuente de su programa, ver Figura 1-22.
Pgina 43 de 267
Av. Juan de Dios Btiz s/n esq. Miguel Othn de Mendizbal, Col. Nueva Industrial Vallejo, Delegacin Gustavo A. Madero.
C.P 07738, Mxico D.F. Tel.5729-6000 Extensiones: 56529, 56596, email: ddep@cic.ipn.mx ; www.cursos.cic.ipn.mx.
JAVA BSICO
Pgina 44 de 267
Av. Juan de Dios Btiz s/n esq. Miguel Othn de Mendizbal, Col. Nueva Industrial Vallejo, Delegacin Gustavo A. Madero.
C.P 07738, Mxico D.F. Tel.5729-6000 Extensiones: 56529, 56596, email: ddep@cic.ipn.mx ; www.cursos.cic.ipn.mx.
JAVA BSICO
Pgina 45 de 267
Av. Juan de Dios Btiz s/n esq. Miguel Othn de Mendizbal, Col. Nueva Industrial Vallejo, Delegacin Gustavo A. Madero.
C.P 07738, Mxico D.F. Tel.5729-6000 Extensiones: 56529, 56596, email: ddep@cic.ipn.mx ; www.cursos.cic.ipn.mx.
JAVA BSICO
Pgina 46 de 267
Av. Juan de Dios Btiz s/n esq. Miguel Othn de Mendizbal, Col. Nueva Industrial Vallejo, Delegacin Gustavo A. Madero.
C.P 07738, Mxico D.F. Tel.5729-6000 Extensiones: 56529, 56596, email: ddep@cic.ipn.mx ; www.cursos.cic.ipn.mx.
JAVA BSICO
Beans: se utilizan en los llamados JSP (Java Server Pages) para brindarles
funcionalidad con el uso de objetos. Estos no tienen un punto de inicio de
ejecucin como los anteriores sino que cualquier mtodo se puede llamar en
cualquier momento dentro de un JSP.
Los Java ME (Java Platform, Micro Edition) es una plataforma de aplicaciones
para dispositivos mviles o inalmbricos ubicados a lo ancho del Globo. Provee
un ambiente robusto y flexible para aplicaciones que se ejecuten sobre un amplio
rango de dispositivos, tales como telfonos mviles, PDAs, TV set-top boxes, e
impresoras. La plataforma Java ME incluye flexibles interfaces de usuario, y
modelos de seguridad robustos, para un amplio rango de protocolos de red, y un
soporte extensivo para redes y aplicaciones offline, que pueden ser descargadas
dinmicamente.
EJB: (Enterprise JavaBeans) son la base de la tecnologa J2EE (Java 2 Enterprise
Edition).Los EJB proveen una arquitectura escalable para ejecutar lgica de
negocios en ambientes computacionales distribuidos.
Java Card: nos permiten crear aplicaciones para tarjetas inteligentes de
identificacin y como llaves de acceso a lugares restringidos por ejemplo.
JavaFX: es un lenguaje script de Java que permite programacin de interfaces
grficas de usuario para estandarizar las GUIs para la mayora de dispositivos de
salida grfica.
Pgina 47 de 267
Av. Juan de Dios Btiz s/n esq. Miguel Othn de Mendizbal, Col. Nueva Industrial Vallejo, Delegacin Gustavo A. Madero.
C.P 07738, Mxico D.F. Tel.5729-6000 Extensiones: 56529, 56596, email: ddep@cic.ipn.mx ; www.cursos.cic.ipn.mx.
JAVA BSICO
Todas las clases en Java heredan por default de manera implcita atributos y
mtodos de la clase raz Object.
Pgina 48 de 267
Av. Juan de Dios Btiz s/n esq. Miguel Othn de Mendizbal, Col. Nueva Industrial Vallejo, Delegacin Gustavo A. Madero.
C.P 07738, Mxico D.F. Tel.5729-6000 Extensiones: 56529, 56596, email: ddep@cic.ipn.mx ; www.cursos.cic.ipn.mx.
JAVA BSICO
Todas las clases en Java importan por default de manera implcita la librera o
paquete java.lang.
import java.lang.*;
public class Galleta extends Object {
public static void main( String args[] ) {
}
}
Por lo tanto no es necesario escribir:
import java.lang.*; ni extends Object ya que se da
por hecho o de manera implcita.
public class Galleta {
public static void main( String args[] ) {
}
}
package nombrepaquete;
Pgina 49 de 267
Av. Juan de Dios Btiz s/n esq. Miguel Othn de Mendizbal, Col. Nueva Industrial Vallejo, Delegacin Gustavo A. Madero.
C.P 07738, Mxico D.F. Tel.5729-6000 Extensiones: 56529, 56596, email: ddep@cic.ipn.mx ; www.cursos.cic.ipn.mx.
JAVA BSICO
Y est sentencia debe ser la primera instruccin dentro del archivo fuente con
extensin .java
En la Figura 1-24. la clase Galleta pertenece al paquete unam.cafeteria.
Pgina 50 de 267
Av. Juan de Dios Btiz s/n esq. Miguel Othn de Mendizbal, Col. Nueva Industrial Vallejo, Delegacin Gustavo A. Madero.
C.P 07738, Mxico D.F. Tel.5729-6000 Extensiones: 56529, 56596, email: ddep@cic.ipn.mx ; www.cursos.cic.ipn.mx.
JAVA BSICO
package unam.cafeteria;
import javax.swing.JOptionPane;
public class Galleta {
/** Variables campo */
/** nombre de la galleta */
public String nombre;
/** sabor de la galleta por default es fresa */
String sabor = "Fresa";
/**Constantes campo */
/** forma de la galleta es Estrella */
public static final String FORMA = "Estrella";
/** Numero de picos = 5 */
public static final int PICOS = 5;
/** constructores crean instancias u objetos de la clase Galleta */
/**constructor Galleta() crea una galleta cuyo nombre por default es "Estrellita" */
public Galleta() {
nombre = "Estrellita";
} // fin del constructor
public Galleta(String nombre) {
}
public Galleta(String nombre, String sabor) {
this.nombre = nombre;
this.sabor = sabor;
}
public static void main (String args[]) {
int nogatos = 20;
for( int i = 0; i < args.length; i++)
System.out.println( "i= " + i + "\t" + args[i]);
String mensaje = new String("Programa Galleta.java");
System.out.println(mensaje);
JOptionPane.showMessageDialog(null, mensaje);
} // fin del metodo main
public String caracteristicasDeLaGalleta( ) {
String cadena = "Nombre : " + this.nombre + "\t" +
"Sabor : " + this.sabor + "\t" +
"Picos : " + this.PICOS + "\t" +
"Forma : " + this.FORMA ;
return cadena;
}
} // fin de la clase Galleta
Pgina 51 de 267
Av. Juan de Dios Btiz s/n esq. Miguel Othn de Mendizbal, Col. Nueva Industrial Vallejo, Delegacin Gustavo A. Madero.
C.P 07738, Mxico D.F. Tel.5729-6000 Extensiones: 56529, 56596, email: ddep@cic.ipn.mx ; www.cursos.cic.ipn.mx.
JAVA BSICO
Pgina 52 de 267
Av. Juan de Dios Btiz s/n esq. Miguel Othn de Mendizbal, Col. Nueva Industrial Vallejo, Delegacin Gustavo A. Madero.
C.P 07738, Mxico D.F. Tel.5729-6000 Extensiones: 56529, 56596, email: ddep@cic.ipn.mx ; www.cursos.cic.ipn.mx.
JAVA BSICO
Pgina 53 de 267
Av. Juan de Dios Btiz s/n esq. Miguel Othn de Mendizbal, Col. Nueva Industrial Vallejo, Delegacin Gustavo A. Madero.
C.P 07738, Mxico D.F. Tel.5729-6000 Extensiones: 56529, 56596, email: ddep@cic.ipn.mx ; www.cursos.cic.ipn.mx.
JAVA BSICO
Figura 1-25. Como se crean aplicaciones Java con JDK 6 (Java Development Kit )
Pgina 54 de 267
Av. Juan de Dios Btiz s/n esq. Miguel Othn de Mendizbal, Col. Nueva Industrial Vallejo, Delegacin Gustavo A. Madero.
C.P 07738, Mxico D.F. Tel.5729-6000 Extensiones: 56529, 56596, email: ddep@cic.ipn.mx ; www.cursos.cic.ipn.mx.
JAVA BSICO
Al igual que las aplicaciones, con los applets, primeramente necesita un editor
(Block
denotas,
Edit,
vi,
Gel,
TextEdit,
Med,
etc.)
para
generar
un
Pgina 55 de 267
Av. Juan de Dios Btiz s/n esq. Miguel Othn de Mendizbal, Col. Nueva Industrial Vallejo, Delegacin Gustavo A. Madero.
C.P 07738, Mxico D.F. Tel.5729-6000 Extensiones: 56529, 56596, email: ddep@cic.ipn.mx ; www.cursos.cic.ipn.mx.
JAVA BSICO
Figura 1-26. Cmo se crean applets Java con JDK (Java Development Kit)
Pgina 56 de 267
Av. Juan de Dios Btiz s/n esq. Miguel Othn de Mendizbal, Col. Nueva Industrial Vallejo, Delegacin Gustavo A. Madero.
C.P 07738, Mxico D.F. Tel.5729-6000 Extensiones: 56529, 56596, email: ddep@cic.ipn.mx ; www.cursos.cic.ipn.mx.
JAVA BSICO
Pgina 57 de 267
Av. Juan de Dios Btiz s/n esq. Miguel Othn de Mendizbal, Col. Nueva Industrial Vallejo, Delegacin Gustavo A. Madero.
C.P 07738, Mxico D.F. Tel.5729-6000 Extensiones: 56529, 56596, email: ddep@cic.ipn.mx ; www.cursos.cic.ipn.mx.
JAVA BSICO
Pgina 58 de 267
Av. Juan de Dios Btiz s/n esq. Miguel Othn de Mendizbal, Col. Nueva Industrial Vallejo, Delegacin Gustavo A. Madero.
C.P 07738, Mxico D.F. Tel.5729-6000 Extensiones: 56529, 56596, email: ddep@cic.ipn.mx ; www.cursos.cic.ipn.mx.
JAVA BSICO
Etiqueta
Descripcin
@autor nombre
@deprecated texto
@return texto
@see referencia
@since texto
@serial texto
@serialField texto con nombre de tipo
Sirve
para
documentar
serializable de una clase.
la
naturaleza
@serialData texto
@version texto
Pgina 59 de 267
Av. Juan de Dios Btiz s/n esq. Miguel Othn de Mendizbal, Col. Nueva Industrial Vallejo, Delegacin Gustavo A. Madero.
C.P 07738, Mxico D.F. Tel.5729-6000 Extensiones: 56529, 56596, email: ddep@cic.ipn.mx ; www.cursos.cic.ipn.mx.
JAVA BSICO
JAVA BSICO
/**
* El componente <code> Dato </code> es solo un ejemplo.
* Solo sirve para ensearte el javadoc.* <p>
* @version 2.0
* @author cic
*/
public class Dato {
/**
* Un tipo de Dato especfico
*/
public static final int TIPO_DATO = 0;
/**
* Otro tipo de dato especfico
*/
public static final int OTRO_TIPO_DATO = 1;
/**
* El tipo de dato actual
*/
private int tipo;
/**
* Crea un Dato
*/
public Dato() {
tipo = TIPO_DATO;
}
/**
* devuelve el tipo de dato actual
*
* @return tipo de dato actual
* @deprecated Como la versin 1.9, use {@link #getDato() getDato()} en
* su lugar
*/
public int data() {
return getDato();
}
/**
* Devuelve el tipo de dato actual
*
* @return tipo de dato actual
* @since V1.9
*/
public int getDato() {
return tipo;
}
/**
* Cambia el tipo de dato actual
*
* @param escribe el nuevo tipo de dato
* @throws IllegalArgumentException Cuando el tipo no es vlido
*/
public void setDato( int nuevoValor ) {
if ( ( nuevoValor != TIPO_DATO ) &&
( nuevoValor != OTRO_TIPO_DATO ) ) {
throw new IllegalArgumentException("Tipo malo");
}tipo = nuevoValor;
}/**
* Mtodo marcador de posicin para ver etiquetas
* @see Dato#TIPO_DATO
* @see Dato#getDato()
* @see #getDato()
* @see "Mi libro"
* @see <a href="http://www.cic.ipn.mx/ogonzalez">Web de Oscar</a>
*/public void myVoid() {}}
Pgina 61 de 267
Av. Juan de Dios Btiz s/n esq. Miguel Othn de Mendizbal, Col. Nueva Industrial Vallejo, Delegacin Gustavo A. Madero.
C.P 07738, Mxico D.F. Tel.5729-6000 Extensiones: 56529, 56596, email: ddep@cic.ipn.mx ; www.cursos.cic.ipn.mx.
JAVA BSICO
Pgina 62 de 267
Av. Juan de Dios Btiz s/n esq. Miguel Othn de Mendizbal, Col. Nueva Industrial Vallejo, Delegacin Gustavo A. Madero.
C.P 07738, Mxico D.F. Tel.5729-6000 Extensiones: 56529, 56596, email: ddep@cic.ipn.mx ; www.cursos.cic.ipn.mx.
JAVA BSICO
2.2 Identificadores
Variables de Instancia.
Variables de una clase.
Variables locales a mtodos.
Variables parmetro de mtodos
La declaracin de variables en Java se hace de forma similar al C. En adelante, un
identificador ser el nombre de una variable. As declararemos.
Tipo identificador [identificador]; donde tipo va a ser uno de los 8 tipos de datos
(primitivos) de JAVA. Estos son:
Nombre tipo
Clase
Tamao
byte
entero
8-bit
short
entero
16-biy
int
entero
32-bit
long
entero
64-bit
float
real
32-bit
double
real
64-bit
char
carcter
boolean
booleano
1-bit
Java define adems otros tipos que no estn en la anterior clasificacin, estos
tipos son instancias de alguna clase en particular, ya sea de una clase que haya
creado el programador o una clase ya existente dentro de las bibliotecas API de
Java.
El mbito de los valores de las variables de instancia se limita como su nombre lo
indica a la instancia misma.
En las variables de clase sus valores son para todas las instancias de la clase
misma, esto es, su valor es compartido por todas las instancias de la clase y su
Pgina 63 de 267
Av. Juan de Dios Btiz s/n esq. Miguel Othn de Mendizbal, Col. Nueva Industrial Vallejo, Delegacin Gustavo A. Madero.
C.P 07738, Mxico D.F. Tel.5729-6000 Extensiones: 56529, 56596, email: ddep@cic.ipn.mx ; www.cursos.cic.ipn.mx.
JAVA BSICO
/**
* Curso de Java Bsico
* @author CIC
* @version 1.0
* Archivo: Variables.java
* Clase Variables: su propsito es ensearte
* el uso de las variables en Java
*/
public class Variables {
static int clase;
int instancia;
int metodoVar ( ) {
int local = 6;
return local;
}
}
/**
* Curso de Java Bsico
* @author CIC
* @versin 1.0
* Archivo: UsaVariables.java
* Clase UsoVariables: su propsito es ensearte
* el uso de las variables en Java
*/
class UsaVariables {
Variables x = new Variables();
Variables y = new Variables();
public static void main ( String args[] )
Pgina 64 de 267
Av. Juan de Dios Btiz s/n esq. Miguel Othn de Mendizbal, Col. Nueva Industrial Vallejo, Delegacin Gustavo A. Madero.
C.P 07738, Mxico D.F. Tel.5729-6000 Extensiones: 56529, 56596, email: ddep@cic.ipn.mx ; www.cursos.cic.ipn.mx.
JAVA BSICO
{
UsaVariables u = new UsaVariables();
escribeVar( u.x ,"x" ); escribeVar( u.y , "y" );
u.y.clase = 123;
u.x.instancia = 321; u.y.instancia
= 567;
escribeVar( u.x ,"x" ); escribeVar( u.y , "y" );
System.out.println("Fin del programa");
}
static void escribeVar(Variables ejem
, String id) {
System.out.print("Valor de las variables\n" +
id + ".clase = " + ejem.clase + "\n" +
id + ".instancia = " + ejem.instancia + "\n" +
id + ".local = " +
ejem.metodoVar() + "\n" +
"=============================\n");
}
}
JAVA BSICO
Finished executing
Podemos ver que en el listado del programa Variables.java tenemos definida en la
lnea 12 una variable de clase (observe el uso de la palabra reservada static), en
la lnea 13 una de instancia y una local al mtodo en la lnea 16.Todas son de tipo
int.
El siguiente listado del programa UsaVariables.java, esta compuesta de dos
variables de instancia x , y de la clase Variables. Para poderlas utilizar
necesitamos crear una variable u de instancia de la misma clase UsaVariables en
la lnea 16. Al mandar a imprimir sus valores en la lnea 17, mediante la invocacin
del mtodo escribeVar (Variables ejem, String id) el cual recibe la variable y su
identificador en sus parmetros el resultado es:
Valor de las variables
x.clase = 0
x.instancia = 0
x.local = 6
=============================
Valor de las variables
y.clase = 0
y.instancia = 0
y.local = 6
Debido a que el intrprete de Java inicializa las variables de tipo int con 0, excepto
para la local que se inicializa con un valor de 6 en la lnea 16.
Luego se le asigna en la lnea 18, un nuevo valor (123) a la variable de clase, esto
tiene como efecto la modificacin del valor para todas las instancias (en este caso
x, y) de la clase Variables.
18.
u.y.clase = 123;
En la lnea 19, se modifican los valores de las variables de instancia para x (321) y
para y (567), lo cual solo afecta respectivamente a esas variables de instancia.
19.
Av. Juan de Dios Btiz s/n esq. Miguel Othn de Mendizbal, Col. Nueva Industrial Vallejo, Delegacin Gustavo A. Madero.
C.P 07738, Mxico D.F. Tel.5729-6000 Extensiones: 56529, 56596, email: ddep@cic.ipn.mx ; www.cursos.cic.ipn.mx.
JAVA BSICO
de
123
las
de
instancia
con
123
con
321.
=============================
Valor de las variables
x.clase = 123
x.instancia = 321
x.local = 6
=============================
Valor de las variables
y.clase = 123
y.instancia = 567
y.local = 6
=============================
Fin del programa
Pgina 67 de 267
Av. Juan de Dios Btiz s/n esq. Miguel Othn de Mendizbal, Col. Nueva Industrial Vallejo, Delegacin Gustavo A. Madero.
C.P 07738, Mxico D.F. Tel.5729-6000 Extensiones: 56529, 56596, email: ddep@cic.ipn.mx ; www.cursos.cic.ipn.mx.
JAVA BSICO
abstract
double
Int
Static
boolean
else
Interface
Super
break
extends
Long
Switch
byte
final
Native
Synchronized
case
finally
New
This
catch
float
Null
Throw
char
for
Package
Throws
class
goto *
Private
trasient *
const *
if
Protected
Try
continue
implements
Public
Void
default
import
Return
Volatile
do
instanceof
Short
While
Pgina 68 de 267
Av. Juan de Dios Btiz s/n esq. Miguel Othn de Mendizbal, Col. Nueva Industrial Vallejo, Delegacin Gustavo A. Madero.
C.P 07738, Mxico D.F. Tel.5729-6000 Extensiones: 56529, 56596, email: ddep@cic.ipn.mx ; www.cursos.cic.ipn.mx.
JAVA BSICO
Tamao/Formato Descripcin
(Nmeros enteros)
byte
8-bit complemento a 2
Entero de un Byte
short
16-bit complemento a 2
Entero corto
int
32-bit complemento a 2
Entero
long
64-bit complemento a 2
Entero largo
(Nmeros reales)
float
double
(otros tipos)
char
16-bit Caracter
Un slo carcter
boolean
true o false
Pgina 69 de 267
Av. Juan de Dios Btiz s/n esq. Miguel Othn de Mendizbal, Col. Nueva Industrial Vallejo, Delegacin Gustavo A. Madero.
C.P 07738, Mxico D.F. Tel.5729-6000 Extensiones: 56529, 56596, email: ddep@cic.ipn.mx ; www.cursos.cic.ipn.mx.
JAVA BSICO
La mayora de los tipos primitivos tienen clases Wrapper. Significa que un objeto
no primitivo en el heap puede ser creado para representar uno primitivo en el
heap. Ejemplo:
char c = x;
Character C = new Character(c);
// O tambin puede ser:
Character C = new Character(x);
Pgina 70 de 267
Av. Juan de Dios Btiz s/n esq. Miguel Othn de Mendizbal, Col. Nueva Industrial Vallejo, Delegacin Gustavo A. Madero.
C.P 07738, Mxico D.F. Tel.5729-6000 Extensiones: 56529, 56596, email: ddep@cic.ipn.mx ; www.cursos.cic.ipn.mx.
JAVA BSICO
2.5 Literales
En Java hay una forma de especificar un valor determinado a una variable o
constante, mediante una literal, que es una expresin constante utilizada para
expresar un valor. Cada tipo de dato tiene su propio formato para especificar una
literal, como se describe en la siguiente tabla:
Notaciones literales
Tipo
Formato
int
long
float
Aade f o F al final del trmino literal double y sustituye a d/D en caso de existir por
ejemplo: 3.14f , 3.14E+15F
double
Notacin cientfica como en 1.345e+10, donde el exponente puede expresarse con una
e o una E; puede encontrarse una d o D al final del elemento literal doubl
char
Un nico caracter o secuencia de escape entre comillas sencillas, por ejemplo: 'X', 'r'.
String
boolean
verdadero, falso
Null
Nulo
Notaciones literales
verdadero, falso
nulo
Pgina 71 de 267
Av. Juan de Dios Btiz s/n esq. Miguel Othn de Mendizbal, Col. Nueva Industrial Vallejo, Delegacin Gustavo A. Madero.
C.P 07738, Mxico D.F. Tel.5729-6000 Extensiones: 56529, 56596, email: ddep@cic.ipn.mx ; www.cursos.cic.ipn.mx.
JAVA BSICO
Ejemplo de literales
public class Literales {
public void representaLiterales() {
int xd= 1234; // literal entera decimal
int xo= 01234; // literal entera octal
int xh= 0x1234; // literal entera hexadecimal
// El operador (+) unin de cadenas convierte la variable entera
// A cadena String en formato numrico decimal
System.out.println ("xd= " + xd + "\txo= " + xo + "\txh= " + xh);
long xl = 0xDECADAL;
System.out.println ("xl= " + xl);
float f1 = 3.14E+15f;
System.out.printf("fl= %3.9f\n" , f1);
double d1 = 1.345e+10d;
System.out.printf("dl= %3.2f\n" , d1);
char c1 = 'a';
char c2 = '\t';
char c3 = '\u0040';
System.out.println("c1= " + c1 + "\tc2= " + c2 + "\tc3= " + c3);
String s1 = "Viva Villa Jijos del Maiz!";
System.out.println ("s1= " + s1 + "\n" +
"Mayusculas s1= " + s1.toUpperCase () + "\n" +
"Reversa s1= ".toUppercase() + new StringBuffer(s1).reverse() );
boolean si = true;
boolean no = !si;
boolean noperosi = !no;
System.out.println ("si= " + si + "\tno= " + no +
"\tnoperosi= " + noperosi );
} // fin del mtodo representaLiterales()
public static void main ( String args[] ) {
Literales lit = new Literales();
lit.representaLiterales();
} // fin del main
} // fin de la clase literales
Salida de Literales.java
run:
xd= 1234
xo= 668
xh= 4660
xl= 14600922
fl= 3140000124239872.000000000
dl= 13450000000.00
c1= a
c2=
c3= @
s1= Viva Villa Jijos del Maiz!
Mayusculas s1= VIVA VILLA JIJOS DEL MAIZ!
REVERSA S1= !ziaM led sojiJ alliV aviV
si= true
no= false
noperosi= true
BUILD SUCCESSFUL (total time: 0 seconds)
Pgina 72 de 267
Av. Juan de Dios Btiz s/n esq. Miguel Othn de Mendizbal, Col. Nueva Industrial Vallejo, Delegacin Gustavo A. Madero.
C.P 07738, Mxico D.F. Tel.5729-6000 Extensiones: 56529, 56596, email: ddep@cic.ipn.mx ; www.cursos.cic.ipn.mx.
JAVA BSICO
nueva lnea
\t
tabulador
\b
espacio en blanco
\r
retorno de carro
\f
formfeed
\\
\'
comilla simple
\"
comillas
\ddd
\xdd
\udddd
Pgina 73 de 267
Av. Juan de Dios Btiz s/n esq. Miguel Othn de Mendizbal, Col. Nueva Industrial Vallejo, Delegacin Gustavo A. Madero.
C.P 07738, Mxico D.F. Tel.5729-6000 Extensiones: 56529, 56596, email: ddep@cic.ipn.mx ; www.cursos.cic.ipn.mx.
JAVA BSICO
Computacin");
Todo depende del estilo del programador y el compilador lo dejar pasar y tratar
la(s) lnea(s) como una sola sentencia.
Pgina 74 de 267
Av. Juan de Dios Btiz s/n esq. Miguel Othn de Mendizbal, Col. Nueva Industrial Vallejo, Delegacin Gustavo A. Madero.
C.P 07738, Mxico D.F. Tel.5729-6000 Extensiones: 56529, 56596, email: ddep@cic.ipn.mx ; www.cursos.cic.ipn.mx.
JAVA BSICO
se
lenguajes
naturales.
Una sentencia forma una completa unidad para la ejecucin.
A continuacin tenemos los tipos de expresiones que pueden ser
sentencias
debido a que terminan con el punto y coma (;) que es el separador de sentencias
en el lenguaje Java.
Expresiones de asignacin (Assignment expressions)
Cualquier uso de ++ o -Invocaciones a mtodos
Expresiones de creacin de objetos.
Estas sentencias son denominadas sentencias de expresin (expression
statements)
// sentencia de incremento
Pgina 75 de 267
Av. Juan de Dios Btiz s/n esq. Miguel Othn de Mendizbal, Col. Nueva Industrial Vallejo, Delegacin Gustavo A. Madero.
C.P 07738, Mxico D.F. Tel.5729-6000 Extensiones: 56529, 56596, email: ddep@cic.ipn.mx ; www.cursos.cic.ipn.mx.
JAVA BSICO
Adems de las sentencias de expresin, hay otros dos tipos de sentencias. Las
sentencias de declaracin y las sentencias de control de flujo.
Sentencias de declaracin: Este tipo de sentencia sirve para
declarar una
// sentencia de declaracin
Los bloques: Un bloque es un grupo de cero o mas sentencias entre dos llaves
balanceadas, esto es, entre una llave que abre ( { ) y otra que cierra ( } ).
Un
bloque puede ser usado en cualquier lugar en donde una simple sentencia pueda
sea usada.
El programa BloquesEjemplo.java ilustra el uso de bloques:
Pgina 76 de 267
Av. Juan de Dios Btiz s/n esq. Miguel Othn de Mendizbal, Col. Nueva Industrial Vallejo, Delegacin Gustavo A. Madero.
C.P 07738, Mxico D.F. Tel.5729-6000 Extensiones: 56529, 56596, email: ddep@cic.ipn.mx ; www.cursos.cic.ipn.mx.
JAVA BSICO
{
int q = 120;
// Solo q esta disponible
{
int w = -761;
// Ambas q y w estn disponibles
}
// Solamente q esta disponible
// w esta fiera del mbito
}
Una variable definida en un mbito esta disponible solamente hasta el final del
mismo.
Los bloques de sentencias y el mbito (scope) de las variables primitivas.
Hay que destacar que no es posible hacer lo siguiente en el lenguaje Java,
aunque en otros lenguajes como el C y C++ es permitido.
{
int w = 12;
{
int w = 96; // No esta permitido en Java
}
}
Si lo hace el compilador le recordar que la variable w ya ha sido definida. Los
diseadores del lenguaje Java determinaron que permitirlo podra conducir a
confusiones en los programas. Los bloques de sentencias y el mbito (scope) de
las variables primitivas.
Pgina 77 de 267
Av. Juan de Dios Btiz s/n esq. Miguel Othn de Mendizbal, Col. Nueva Industrial Vallejo, Delegacin Gustavo A. Madero.
C.P 07738, Mxico D.F. Tel.5729-6000 Extensiones: 56529, 56596, email: ddep@cic.ipn.mx ; www.cursos.cic.ipn.mx.
JAVA BSICO
El tiempo de vida de las variables esta inscrito dentro del bloque en que est
definido, por ejemplo:
public static void main( String args[] ) {
{ // inicia bloque
int w = 96; //se define variable dentro del bloque
} // Finaliza bloque
System.out.println(w= + w ); // w no tiene alcance
ERROR
} // Fin del main
Pgina 78 de 267
Av. Juan de Dios Btiz s/n esq. Miguel Othn de Mendizbal, Col. Nueva Industrial Vallejo, Delegacin Gustavo A. Madero.
C.P 07738, Mxico D.F. Tel.5729-6000 Extensiones: 56529, 56596, email: ddep@cic.ipn.mx ; www.cursos.cic.ipn.mx.
JAVA BSICO
new, este vive hasta que la ejecucin pase el final del mbito.
Por ejemplo.
{
String x = new String("esto es una cadena");
} // final del mbito o bloque
Pgina 79 de 267
Av. Juan de Dios Btiz s/n esq. Miguel Othn de Mendizbal, Col. Nueva Industrial Vallejo, Delegacin Gustavo A. Madero.
C.P 07738, Mxico D.F. Tel.5729-6000 Extensiones: 56529, 56596, email: ddep@cic.ipn.mx ; www.cursos.cic.ipn.mx.
JAVA BSICO
Uso
Descripcin
+=
op1 += op2
-=
op1 -= op2
*=
op1 *= op2
/=
op1 /= op2
%=
op1 %= op2
&=
|=
op1 = op2
op1 = op1
^=
op1 ^= op2
<<=
>>=
>>>=
op2
Pgina 80 de 267
Av. Juan de Dios Btiz s/n esq. Miguel Othn de Mendizbal, Col. Nueva Industrial Vallejo, Delegacin Gustavo A. Madero.
C.P 07738, Mxico D.F. Tel.5729-6000 Extensiones: 56529, 56596, email: ddep@cic.ipn.mx ; www.cursos.cic.ipn.mx.
JAVA BSICO
Uso
Descripcin
Op1 op2
Op1 * op2
Op1 / op2
Op1
op2
+ op
- op
La negacin aritmtica de op
++
Op ++
++
++op
--
Op--
--
--op
y por
Pgina 81 de 267
Av. Juan de Dios Btiz s/n esq. Miguel Othn de Mendizbal, Col. Nueva Industrial Vallejo, Delegacin Gustavo A. Madero.
C.P 07738, Mxico D.F. Tel.5729-6000 Extensiones: 56529, 56596, email: ddep@cic.ipn.mx ; www.cursos.cic.ipn.mx.
JAVA BSICO
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
/**
Programa de Java que te ensea a utilizar los operadores
aritmticos. Observa que la clase pertenece al paquete
operadores.
@autor CIC
@versin 1.0
Archivo: OpAritmeticos.java
*/
package operadores;
public class OpAritmeticos {
double x,y;
public OpAritmeticos (double x, double y) {
this.x = x;
this.y = y;
}
public String opera1() {
String s = " x + y =" + (x + y) + "\n";
s += " x - y =" + (x - y) + "\n";
s += " x * y =" + (x * y) + "\n";
s += " x / y =" + (x / y) + "\n";
s += " +x =" + (+x) + "\n";
s += " -x =" + (-x) + "\n";
return s;
} // fin de opera1()
25.
26.
27.
28.
29.
30.
31.
\n\n");
32.
33.
34.
35.
36.
Pgina 82 de 267
Av. Juan de Dios Btiz s/n esq. Miguel Othn de Mendizbal, Col. Nueva Industrial Vallejo, Delegacin Gustavo A. Madero.
C.P 07738, Mxico D.F. Tel.5729-6000 Extensiones: 56529, 56596, email: ddep@cic.ipn.mx ; www.cursos.cic.ipn.mx.
JAVA BSICO
37.
public void opera3() {
38.
double y1, y2;
39.
y1 = y;
40.
y2 = y;
41.
System.out.println("Valores inciales de y1 y y2 son:\n" +
42.
"y1 = "+ y1 + " y2 = " + y2);
43.
System.out.println("Operadores
aritmticos
de
predecremento
posdecremento \n\n");
44.
for ( int i=1; i <= 10; i++ )
45.
System.out.println(" i = " + i +
46.
" --y1 = " + (--y1) +
47.
" y2-- = " + (y2--) );
48.
} // fin de opera3()
49.
} // fin de la clase OpAritmeticos
________________________________________
50.
/**
51.
* Programa de Java que te ensea a utilizar los operadores
52.
* aritmticos. Observa que la clase pertenece al paquete
53.
* estndar, y hace uso de la clase OpAritmeticos que se
54.
* encuentra en la clase operadores.
55.
* @autor CIC
56.
* @versin 1.0
57.
* Archivo: UsaOperadoresAritmeticos.java
58.
*/
59.
import operadores. OpAritmeticos;
60.
class UsaOperadoresAritmeticos {
61.
OpAritmeticos op = new OpAritmeticos( 10 , 20);
62.
public static void main ( String[] args ) {
63.
UsaOperadores usa = new UsaOperadores();
64.
System.out.println(" Ejemplo de operadores \n" +
65.
" Operadores aritmticos \n" +
66.
usa.op.opera1() );
67.
usa.op.opera2();
68.
usa.op.opera3();
69.
System.out.println("\n\n Fin del programa ");
70.
} // fin del main()
71.
}// fin de la clase UsaOperadoresAritmeticos72.
Pgina 83 de 267
Av. Juan de Dios Btiz s/n esq. Miguel Othn de Mendizbal, Col. Nueva Industrial Vallejo, Delegacin Gustavo A. Madero.
C.P 07738, Mxico D.F. Tel.5729-6000 Extensiones: 56529, 56596, email: ddep@cic.ipn.mx ; www.cursos.cic.ipn.mx.
JAVA BSICO
al
ejecutarlo
con
el
comando
java
Pgina 84 de 267
Av. Juan de Dios Btiz s/n esq. Miguel Othn de Mendizbal, Col. Nueva Industrial Vallejo, Delegacin Gustavo A. Madero.
C.P 07738, Mxico D.F. Tel.5729-6000 Extensiones: 56529, 56596, email: ddep@cic.ipn.mx ; www.cursos.cic.ipn.mx.
JAVA BSICO
Por ejemplo:
int resta ( int num1, int num2 ){
int result = a - b;
return result;
Mi mtodo se llama resta,} recibe como parmetros num1 y num2 y devuelve como
resultado un valor entero.
Pgina 85 de 267
Av. Juan de Dios Btiz s/n esq. Miguel Othn de Mendizbal, Col. Nueva Industrial Vallejo, Delegacin Gustavo A. Madero.
C.P 07738, Mxico D.F. Tel.5729-6000 Extensiones: 56529, 56596, email: ddep@cic.ipn.mx ; www.cursos.cic.ipn.mx.
JAVA BSICO
Pgina 86 de 267
Av. Juan de Dios Btiz s/n esq. Miguel Othn de Mendizbal, Col. Nueva Industrial Vallejo, Delegacin Gustavo A. Madero.
C.P 07738, Mxico D.F. Tel.5729-6000 Extensiones: 56529, 56596, email: ddep@cic.ipn.mx ; www.cursos.cic.ipn.mx.
JAVA BSICO
3. CLASES Y OBJETOS
3.1 Definicin de clase Estructura de una clase
Clase: Es una descripcin de atributos y comportamientos de un conjunto de
objetos similares. Los objetos de una clase o tipo determinado comparten los
mismos comportamientos y atributos. Las clases actan en forma muy parecida a
una plantilla o molde para galletas en el sentido de que una clase se utiliza para
crear o instanciar objetos.
Pgina 87 de 267
Av. Juan de Dios Btiz s/n esq. Miguel Othn de Mendizbal, Col. Nueva Industrial Vallejo, Delegacin Gustavo A. Madero.
C.P 07738, Mxico D.F. Tel.5729-6000 Extensiones: 56529, 56596, email: ddep@cic.ipn.mx ; www.cursos.cic.ipn.mx.
JAVA BSICO
Donde:
Modificadores: es opcional y puede ser uno ms de las siguientes tres palabras
reservadas:
{ public, abstract, final, synchronizable }
Class: es una palabra reservada que se utiliza para definir o declarar una clase
nombre-clase: es cualquier identificador vlido
Extends: es una palabra reservada que indica si la clase tiene herencia o es
subclase o extensin de una claseSuperior o superclase
ClaseSuperior: es un identificador o nombre de la superclase de la que hereda
atributos y comportamientos
Implements: es una palabra reservada que indica si la clase implementa una o
varias interfaces
Cuerpo:
Pgina 88 de 267
Av. Juan de Dios Btiz s/n esq. Miguel Othn de Mendizbal, Col. Nueva Industrial Vallejo, Delegacin Gustavo A. Madero.
C.P 07738, Mxico D.F. Tel.5729-6000 Extensiones: 56529, 56596, email: ddep@cic.ipn.mx ; www.cursos.cic.ipn.mx.
JAVA BSICO
Siendo
esta
Package nombre_del_paquete,
definicin
la
Todo se
ute.cic.ipn.mx.Este convenio
hace posible evitar conflictos entre los nombres de los paquetes desarrollados en
diferentes lugares, al estar garantizada la no repeticin de los nombres de
dominio.
JAVA BSICO
Esta sentencia nos sirve para no escribir toda la ruta del paquete en nuestra clase
java incluye esta sentencia para que se puedan ver ciertas clases o paquetes
enteros. La estructura de una sentencia import es la siguiente:
Import paquete1.[paquete2].(Nombre_clase I *)
El primer paquete en este caso va ser el nombre de un paquete de alto nivel el
paquete 2 es el nombre de un paquete opcional el cual va estar contenido en el
paquete exterior separndolo por un punto. Para indicar al compilador de java que
tiene que buscar el paquete completo se ingresa el nombre de la clase o un
asterisco al final de la sentencia.
Pgina 90 de 267
Av. Juan de Dios Btiz s/n esq. Miguel Othn de Mendizbal, Col. Nueva Industrial Vallejo, Delegacin Gustavo A. Madero.
C.P 07738, Mxico D.F. Tel.5729-6000 Extensiones: 56529, 56596, email: ddep@cic.ipn.mx ; www.cursos.cic.ipn.mx.
JAVA BSICO
o fields).
Los atributos
se
Tambin un tipo puede ser una de una clase especfica de objetos, aqu la clase
se comporta como si fuera un tipo de dato abstracto, por ejemplo:
Date
Persona
String
Baln
Galleta
etc.
Pgina 91 de 267
Av. Juan de Dios Btiz s/n esq. Miguel Othn de Mendizbal, Col. Nueva Industrial Vallejo, Delegacin Gustavo A. Madero.
C.P 07738, Mxico D.F. Tel.5729-6000 Extensiones: 56529, 56596, email: ddep@cic.ipn.mx ; www.cursos.cic.ipn.mx.
JAVA BSICO
Ejemplos
Pgina 92 de 267
Av. Juan de Dios Btiz s/n esq. Miguel Othn de Mendizbal, Col. Nueva Industrial Vallejo, Delegacin Gustavo A. Madero.
C.P 07738, Mxico D.F. Tel.5729-6000 Extensiones: 56529, 56596, email: ddep@cic.ipn.mx ; www.cursos.cic.ipn.mx.
JAVA BSICO
Nombre de la clase
Atributo: Tipo = valor_inicial
Metodo(lista_de_parametros: valor_de_retorno
y todos
caractersticas:
Pgina 93 de 267
Av. Juan de Dios Btiz s/n esq. Miguel Othn de Mendizbal, Col. Nueva Industrial Vallejo, Delegacin Gustavo A. Madero.
C.P 07738, Mxico D.F. Tel.5729-6000 Extensiones: 56529, 56596, email: ddep@cic.ipn.mx ; www.cursos.cic.ipn.mx.
JAVA BSICO
Ejemplo:
De un
regresa una cadena de tipo String de 0's y 1's al operar su parmetro entero
largo long lnum con corrimiento de bits << y con el operador &. Si el valor
resultante es diferente de cero se concatena un 1 a la cadena con el mtodo
append() y en caso contrario se concatena un 0.
Finalmente la cadena
Pgina 94 de 267
Av. Juan de Dios Btiz s/n esq. Miguel Othn de Mendizbal, Col. Nueva Industrial Vallejo, Delegacin Gustavo A. Madero.
C.P 07738, Mxico D.F. Tel.5729-6000 Extensiones: 56529, 56596, email: ddep@cic.ipn.mx ; www.cursos.cic.ipn.mx.
JAVA BSICO
Donde:
Modificadores: es opcional y puede ser uno ms de las siguientes ocho palabras
llave:
{static, abstract, final, native, synchronized, public, protected,
private }
Tipo-de-retorno: es cualquier nombre de clase o una de las siguientes nueve
palabras reservadas:
{void, boolean, byte, char, short, int, long, float, double }
Pgina 95 de 267
Av. Juan de Dios Btiz s/n esq. Miguel Othn de Mendizbal, Col. Nueva Industrial Vallejo, Delegacin Gustavo A. Madero.
C.P 07738, Mxico D.F. Tel.5729-6000 Extensiones: 56529, 56596, email: ddep@cic.ipn.mx ; www.cursos.cic.ipn.mx.
JAVA BSICO
Pgina 96 de 267
Av. Juan de Dios Btiz s/n esq. Miguel Othn de Mendizbal, Col. Nueva Industrial Vallejo, Delegacin Gustavo A. Madero.
C.P 07738, Mxico D.F. Tel.5729-6000 Extensiones: 56529, 56596, email: ddep@cic.ipn.mx ; www.cursos.cic.ipn.mx.
JAVA BSICO
compilacin.
transient: Es una variable declarada transitoria y no forma parte del estado
permanente o estado persistente de un objeto.
volatile: Es una variable que se modifica en forma asincrnica, o sea se
recarga y almacena en memoria cada vez que se recarga. Puede ser
modificado por hilos asincrnicos
final: Es una variable final. Por lo tanto solo podr tener un valor y ste no
lo podr cambiar o no podr modificarse. Este modificador se utiliza para
especificar una constante. Las constantes se especifican, por lo general,
como finales, estticas y pblicas.
friendly: Es el acceso por omisin o acceso de paquete.
private protected: Es una variable privada y protegida. Mezcla de las dos
cosas, por tanto, cuando declaramos una variable de este tipo dentro de
una clase slo podrn acceder a ella los mtodos de las subclases que la
deriven y no podrn acceder a ella otras clases del mismo paquete.
Pgina 97 de 267
Av. Juan de Dios Btiz s/n esq. Miguel Othn de Mendizbal, Col. Nueva Industrial Vallejo, Delegacin Gustavo A. Madero.
C.P 07738, Mxico D.F. Tel.5729-6000 Extensiones: 56529, 56596, email: ddep@cic.ipn.mx ; www.cursos.cic.ipn.mx.
JAVA BSICO
Pgina 98 de 267
Av. Juan de Dios Btiz s/n esq. Miguel Othn de Mendizbal, Col. Nueva Industrial Vallejo, Delegacin Gustavo A. Madero.
C.P 07738, Mxico D.F. Tel.5729-6000 Extensiones: 56529, 56596, email: ddep@cic.ipn.mx ; www.cursos.cic.ipn.mx.
JAVA BSICO
Para conectar un handle o referencia a un objeto se usa la palabra llave new que
es un operador de Java y significa ms o menos lo siguiente crame un nuevo
objeto de ste tipo o, " crame una nueva instancia o ejemplar de ste tipo"
Ejemplo:
String s = new String (Curso de Java);
Recuerde lector que cuando se crea un objeto a eso se le conoce como
instanciacin de una clase o ejemplificacin de una clase.
El caso de objetos de la clase String es especial, porque puede crearse o
instanciarse un objeto de esta clase sin el operador new, porque es una clase muy
utilizada.
El efecto de crear un objeto con el operador new se traduce en la asignacin de
memoria para ese objeto en el heap de la RAM y como veremos ms adelante, en
la invocacin o llamada al constructor de la clase a la que pertenece el objeto.
Pgina 99 de 267
Av. Juan de Dios Btiz s/n esq. Miguel Othn de Mendizbal, Col. Nueva Industrial Vallejo, Delegacin Gustavo A. Madero.
C.P 07738, Mxico D.F. Tel.5729-6000 Extensiones: 56529, 56596, email: ddep@cic.ipn.mx ; www.cursos.cic.ipn.mx.
JAVA BSICO
JAVA BSICO
JAVA BSICO
proporcionar el cdigo fuente, tal vez tenga que establecer todo como protegido de
manera predeterminada tonel propsito de que sus clientes puedan usar la
herencia para extender sus clases.
De hecho, habr ocasiones en que tendr que disear una subclase pensando en
la herencia. En tales casos es conveniente establecer un protocolo de herencia,
que es una estructura abstracta visible solamente a travs de los elementos
protegidos de la clase. La clase madre llamar a estos mtodos, y la clase hija
puede redefinirlos para modifica su comportamiento. En la siguiente leccin ver
un ejemplo.
Con estas definiciones y reglas, es sencillo comprender que los mtodos y
atributos protegidos y pblicos son los ms importantes para la herencia.
JAVA BSICO
Este acceso se utiliza solo para declarar miembros que van a ser utilizados por la
clase incluyendo cada uno de sus miembros. La estructura de una clase privada
es la siguiente.
class ejemplo {
prvate int varible_privada;
prvate void metodoprivado(){
System.out.println(Metodo privado);
}
JAVA BSICO
JAVA BSICO
3.8 Recursividad
Los mtodos y atributos recursivos se definen en la clase madre o en cualquier
otro antepasado, pero no en la clase hija. Al acceder al mtodo o al atributo, el
mensaje se enva hacia arriba en la jerarqua hasta que se encuentra una
definicin de mtodo. El mecanismo es el mismo que el que vimos en la seccin
sobre los mtodos y atributos redefinidos.
Los mtodos redefinidos tambin podran comportarse de manera recursiva.
Aunque un mtodo redefinido aparecer en la clase hija, la mayora de los
lenguajes orientados a objetos proporcionan un mecanismo que permite a un
mtodo redefinido llamado a la versin del mismo que se encuentra en la clase
madre (o en algn antepasado). Esta capacidad da la oportunidad de aprovechar
la versin de la superclase y definir nuevos comportamientos en la versin de la
subclase. En Java, la palabra reservada super permite tener acceso a la
implementacin de la clase madre. En la seccin siguiente tendr oportunidad de
utilizar super.
JAVA BSICO
JAVA BSICO
En los tres casos todos son private double cubo pero cambian en cuanto a la
lista de parmetros, ya que uno recibe un double y, otro recibe una referencia a
Sobrecarga z, y los ltimos dos parmetros doble base, doble potencia. En las
lneas 34 a la 36 del cdigo se muestra como se invoca a cada uno de estos
mtodos sobrecargados, variando el tipo de argumentos que le son enviados, as
para el primero se invoca con s.cubo(10), el segundo con s.cubo( s) y el ltimo
con dos argumentos de tipo double s.cubo( 10, 3. Por ltimo en la salida de la
invocacin del tercer mtodo da "10 al cubo es: 1000.0000000000007", la razn
es el error de precisin que tienen los mtodos Math.exp() y Math.log(), que se
debe tomar en cuenta cuando hagamos programas de alta precisin. La siguiente
figura muestra el diagrama de UML con JBuilder 9 versin de prueba:
JAVA BSICO
JAVA BSICO
4. PAQUETES
4.1 Definicin y uso de paquetes.
Qu es un paquete?
Siempre que se desea crear un paquete de clases empleamos la palabra
reservada package con la siguiente sintaxis:
Package nombre_del_paquete;
especifican,
en
jerarqua.
sentido
descendente,
la
posicin
del
paquete
en
la
Todo se
JAVA BSICO
Este convenio hace posible evitar conflictos entre los nombres de los paquetes
desarrollados en diferentes lugares, al estar garantizada la no repeticin de los
nombres de dominio.
Import
nombre_del_paquete.Nombre_de_la_clase:
del paquete
JAVA BSICO
import MX.ipn.cic.ute.cursojava.utilerias.*;
Esto hace que todas las clases e interfaces pblicas del paquete especificado
sean importados al paquete actual.
El siguiente ejemplo es ilustrativo:
Tenemos las dos clases pblicas A y P en la carpeta:
C:\cursojava\mascarones\alumnitos
Estas forman parte del paquete de clases package mascarones.alumnitos; se
compilan
D.class y
generan
las
unidades
de
compilacin
A.class,
C.class,
P.class.
JAVA BSICO
CLASSPATH=.;C:\jdk1.3\bin;C:\jdk1.3\lib\tools.jar;C:\jdk1.3\lib\dt.jar;C:\j
dk1.3\lib;C:\cursojava
As tanto el compilador javac.exe y el intrprete java.exe pueden localizar las
clases definidas por el usuario en el paquete mencionado. Al compilar todos los
programas y ejecutarlos produce
/**
* Programa de Java que te ensea a construir
* mediante la palabra reservada package un paquete de clases.
* Solo las clases e interfaces pblicas sern miembros del
* paquete. En ste ejemplo solo la clase A es miembro del
* paquete mascarones.alumnitos. Las clases C y D no son miembros
* del paquete mascarones.alumnitos.
* @version 1.0
* Archivo: A.java
*/
package mascarones.alumnitos;
public class A {
public A() {
System.out.println("constructor mascarones.alumnitos.A() ");
C xc= new C();
D xd= new D();
}
}// fin de A
class C {
C() {
System.out.println("constructor mascarones.alumnitos.C() ");
}
}//fin de C
class D {
D() {
System.out.println("constructor mascarones.alumnitos.D() ");
}
}//fin de D
JAVA BSICO
JAVA BSICO
/**
* Programa de Java que te ensea a utilizar
* mediante la palabra reservada import un paquete de clases.
* Solo las clases e interfaces pblicas sern miembros del
* paquete y son las que puedes utilizar en tu programa.
* En ste ejemplo solo la clase A y P son miembro del
* paquete mascarones.alumnitos, y las importamos con el
* caracter comodn asterisco. El archivo B.class puede
* ubicarse en cualquier directorio o carpeta de tu computadora.
* @version 1.0
* Archivo: B.java
*/
import mascarones.alumnitos.*;
public class B extends A {
B() {
System.out.println("Hola soy constructor B() ");
}
static void main(String args[]) {
B x = new B();
P y = new P();
y.escribe("saludo 1: Hola ");
P.escribe("saludo 2: Amigos.");
System.out.println("Fin del programa");
}
}// fin de la clase B
La salida del programa al ejecutar el comando java B es la siguiente:
constructor mascarones.alumnitos.A()
constructor mascarones.alumnitos.C()
constructor mascarones.alumnitos.D()
Hola soy constructor B()
constructor mascarones.alumnitos.P()
saludo 1: Hola
saludo 2: Amigos.
Fin del programa
JAVA BSICO
Paquetes
lgicos
Clases
Paquetes lgicos que a su vez cada paquete contiene clases, relacionadas entre
s. Existen muchas APIs, pero a continuacin mencionar las ms conocidas:
JAXP
Servlets
Hibernate
API
JAVA BSICO
Runnable,
InheritableThreadLocal.
ThreadGRoup,
ThreadLocal
matemticas
trigonomtricas
(seno,
para
coseno,
generar
nmeros
tangente,
etc.),
aleatorios,
funciones
funciones
logartmicas
producir los mismos resultados en todas las plataformas, como ciertos algoritmos
publicados.
JAVA BSICO
Tambin
JAVA BSICO
a[2] = C
a[3] = D
a[4] = E
a[5] = F
a[6] = G
JAVA BSICO
Ejemplo 1
Haga el programa en Java tal, que dada una cadena con las letras del alfabeto
romano, "ABCDEFGHIJKLMNOPQRSTUVWXYZ, diga cuantas letras tiene la
cadena, que carcter se encuentra en la posicin 4, de el ndice de la letra Z , e
informe el cdigo hash de dicha cadena.
JAVA BSICO
Una cadena o string puede tambin manejarse con la clase StringBuffer. Estos
objetos a diferencia de los de la clase String, si pueden cambiarse, esto es, una
cadena de la clase StringBuffer es susceptible a ser modificada, esto es, es
mutable. En los siguientes programas el participante manejar las cadenas con
algunos de los mtodos de la clase StringBuffer.
En los siguientes ejercicios el participante manejar las cadenas con los mtodos
de la clase StringBuffer.
Ejemplo 2. Haga el programa en Java que demuestre los mtodos length() y
capacity() de la clase StringBuffer.
JAVA BSICO
Ejemplo 3
Haga el programa en Java que demuestre los mtodos append() de la clase
StringBuffer.
//solucin al Ejemplo 9.0 de modificacin de cadenas con la clase StringBuffer
// Curso de Java Bsico
// Fecha: 22 agosto 2001
JAVA BSICO
Ejemplo 4
Haga el programa en Java que ilustre como se pueden modificar los contenidos de
una variable de la clase StringBuffer con los mtodos append(), setCharAt(), e
insert().
//solucin al Ejemplo 10 de modificacin de cadenas con la clase StringBuffer
// Curso de Java Bsico
// Fecha: 22 agosto 2001
public class Remplazandobuf
{
public static void main(String[] args)
{ StringBuffer buf = new StringBuffer(50);
buf.append("El C fue el mejor de los lenguajes.");
System.out.println("buf = " + buf);
System.out.println("buf.length() = " + buf.length());
System.out.println("buf.capacity() = " + buf.capacity());
buf.setCharAt(12, 'P');
System.out.println("buf = " + buf);
buf.setCharAt(14, 'o');
System.out.println("buf = " + buf);
buf.insert(15, "r");
System.out.println("buf = " + buf);
buf.setCharAt(16,' ');
System.out.println("buf = " + buf);
buf.setCharAt(17,' ');
System.out.println("buf = " + buf);
} // fin del main
} // fin de la clase Remplazandobuf
La salida es:
buf = El C fue el mejor de los lenguajes.
buf.length() = 35
buf.capacity() = 50
buf = El C fue el Pejor de los lenguajes.
buf = El C fue el Peoor de los lenguajes.
buf = El C fue el Peoror de los lenguajes.
buf = El C fue el Peor r de los lenguajes.
buf = El C fue el Peor de los lenguajes.
JAVA BSICO
JAVA BSICO
Math.tan( double )
Math.sin( double )
Math.asin( double )
Math.cos( double )
Math.acos( double )
Math.atan( double )
Math.atan2( double,double )
Math.exp( double )
Math.log( double )
Math.sqrt( double )
Math.ceil( double )
Math.floor( double )
Math.max( a,b )
Math.pow( a,b )
Math.round( x )
Math.rint( double )
Math.random()
Math.min( a,b )
Math.E
devuelve un double
para la base exponencial
float y double
Math.PI
para PI
JAVA BSICO
.abs
.tan
.sin
.cos
.atan
.exp
.sqrt
.floor
.pow
.rint
.min
.PI
.tan
.asin
.acos
.atan2
.log
.ceil
.max
.round
.random
JAVA BSICO
Los paquetes java.util y java.math contienen clases con utilidades generales, las
cuales aparecen descritas en la documentacin de Sun. En el paquete java.util,
encontrar ayudas para la compatibilidad con tipos de datos abstractos (ADT)
llamada Collection Framework, para fechas y calendarios y algunas clases para
ayudar a la internacionalizacin de sus programas. Con el paquete java.math, hay
ayudas para las operaciones aritmticas con precisin arbitraria.
Adems hay varios subpaquetes de java.util, como:
java.util.jar
java.util.zip
Que ofrecen compatibilidad con archivos JAR (Java Archive), GZIP y ZIP.
java.util.logging la utilidad de registro bsica.
java.util.regex la biblioteca de expresiones regulares para comparar patrones.
java.util.pref que proporciona almacenamiento de las preferencias del usuario y la
aplicacin. En plataformas basadas en Microsoft Windows,
el
paquete
JAVA BSICO
Creacin de arrays
Cuando creamos arrays en Java, necesitamos utilizar el operador new , para
reservar espacio en memoria para almacenar todos los elementos. As , de esta
manera se indica el nmero de elementos que tendr en cada dimensin. Se
crean los arrays de la siguiente forma:
Identificador = new tipo [ tamao ];
Identificador = new tipo [ tamao] ... [ tamao ];
Es necesario sealar que el primer elemento de un array tiene un ndice cero,
y el ltimo tiene un ndice (tamao - 1).
Tamao de un array.
System.out.println(El array a1 tiene + a1.length + elementos.);
JAVA BSICO
JAVA BSICO
a1
null
Length
length
a1[0]
a1[1]
..
a1[4]
12
0
0
0
Figura 4-1: Tras declarar el array a1 se reserva espacio en la memoria stack para la referencia del
array.
Despus de usar el operador new para colocar espacio, se reserva memora heap
para el contenido del array. Los valores son inicializados automticamente a 0, si
no es que los inicializamos de forma explcita. Ver la Figura 4-2: del modelo de
memoria cuando tras colocar el espacio int[] a1 = new int[5].
a1
length
a1[0]
a1[1]
..
a1[4]
5
0
0
0
Figura 4-2: Modelo de memoria tras colocar espacio para el arreglo a1.
JAVA BSICO
Por otra parte, para un array de objetos el espacio colocado es para contener una
referencia al objeto, no el objeto en s. Por ejemplo, veamos que al definir una
clase Calendario que contenga el nombre del mes y un nmero de das.
public class Calendario {
String mes;
int nodias;
Calendario (String mes, int nodias)
{
this.mes = mes;
this.nodias = nodias;
} // fin del costructor
}// fin de la clase calendario
12
c[0]
Null
c[1]
null
..
c[11]
null
JAVA BSICO
JAVA BSICO
Para crear un array de dos dimensiones hay que indicar los tamaos de las dos
dimensiones. Por ejemplo, para declarar una tabla de 4 por 7 elementos se
utilizar la sentencia de Java:
int [][] tabla = new int[4][7]; // declaracin y creacin del
//array bidimensional de 4 por 7
Los arrays pueden tener ms de dos dimensiones. Por ejemplo para declarar un
array de tres dimensiones se hara:
int [][][] libro = new int[4][7][6];
Tamao de arrays multidimensionales.
El atributo length permite conocer el tamao de un array. Si un array tiene ms de
una dimensin cada dimensin tiene su propio tamao y se puede utilizar este
atributo length de la siguiente forma:
int [][][] libro = new int[4][7][6];
tamao = libro.length; // tamao de la primera dimensin, osea 4
tamao2 = libro[0].length; // tamao de la primera fila, es decir 7
tamao3 = libro[0][0].length; // tamao de la primera fila, primera
columna, osea 6
JAVA BSICO
Acceso
Para acceder a cualquier variable del array de dos dimensiones hay que indicar en
qu posicin de cada una de las dimensiones se encuentra la variable a la que se
desea acceder, p. ej.:
tabla[1][3] = 46;
Ejemplo de arreglos bidimensionales y unidimensionales con inicializacin esttica
de un algoritmo que suma el total de los votos electorales, para cada uno de los de
cuatro partidos diferentes en cuatro estados diferentes, en base a la siguiente
tabla.
VOTOS
PARTIDO
VERACRUZ PUEBLA
DISTRITO
FEDERAL
ESTADO DE
MXICO
RIP
789
425
576
355
BOLILLO
734
765
733
543
SOLECITO
567
354
234
435
PAJARITO
454
546
345
523
JAVA BSICO
JAVA BSICO
Todos estos mtodos estn sobrecargados para los distintos tipos de datos
primitivos
para
objetos.
Adicionalmente
se
tiene
un
mtodo
simple asList() que hace que un array se convierta en un contenedor List, que
es una clase para manejar colecciones de objetos como un contenedor, lo cual es
tema para un curso avanzado de Java.
El siguiente ejemplo (ver figura abajo) hace uso de algunos de estos mtodos y
consta de las siguientes clases que manejan un arreglo de objetos, los ordena y
obtiene promedio, varianza, etc., contiene:
-
equals()
fill()
sort()
binarySearch()
JAVA BSICO
JAVA BSICO
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
import java.util.*;
import java.util.Collections;
/**
* <p>Archivo: usaEstudiante.java </p>
* <p>Descripcin: Te ensea a usar el ordenamiento de arreglos
* mediante el uso de colecciones de la clase List</p>
* <p>Copyright: Totalmente libre</p>
* <p>Empresa: El patito Feo Inc.</p>
* @author Gerardo Gonzlez ( alumno del curso de Java )
* amplio y reviso: Oscar Alejandro Gonzlez Bustamante.
* @version 1.0
*/
public class usaEstudiante {
public static Estudiante[] est = new Estudiante[10];
public static void main(String[] args) {
//Inicializa y asigna el Arreglo
est[0]= new Estudiante("Gerardo","Gonzalez ",27,10.0);
est[1]= new Estudiante("Ramon ","Fernandez",30,9.99);
est[2]= new Estudiante("Rocio ","Espejo ",29,8.5);
est[3]= new Estudiante("Octavio","Garces ",29,10.0);
est[4]= new Estudiante("Mariana","Rosas ",33,6.9);
est[5]= new Estudiante("Ricardo","Lopez ",33,9.50);
est[6]= new Estudiante("Ernesto","Ramirez ",26,8.0);
est[7]= new Estudiante("Maribel","Juarez ",26,6.8);
est[8]= new Estudiante("Pedro ","Sandoval ",31,5.5);
est[9]= new Estudiante("Ricardo","Cedillo ",30,10.0);
//Crea una lista con el arreglo existente y asigna valores
List list = new ArrayList(Arrays.asList(est));
System.out.println("\n\t\tARREGLO ORIGINAL\n"); //Imprime arreglo original
System.out.print(" NOMBRE APELLIDO EDAD CALIFICACION\n\n");
for(int i=0; i<10; i++)
System.out.println(list.get(i));
//Manda llamar a clase Mascarones para ordenar
Mascarones nc = new Mascarones();
Collections.sort(list, nc);
//Ordenacion por nombre
//Imprime los elementos de la lista
System.out.println("\n\n\t\tARREGLO ORDENADO POR: NOMBRE\n");
for(int i=0; i<10; i++)
System.out.println(list.get(i));
Mascarones2 cc = new Mascarones2(est); //Nueva clase Mascarones2
cc.insertionSort();
//Llama a metodo insercion
System.out.println("\n\n\t\tARREGLO ORDENADO POR: CALIFICACION\n");
cc.display();
//Muestra el arreglo en clase Mascarones2
double promedio=0.0;
//Sobrecarga constructor para calculo de promedio, varianza, MaxCalif, MinCalif
cc.Mascarones2(promedio);
cc.displayFinal();
//Muestra los valores del calculo
} //Fin main()
} //Fin clase usaEstudiante
JAVA BSICO
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
import java.util.*;
/**
* <p>Archivo: Mascarones.java </p>
* <p>Descripcin: Te ensea a usar el ordenamiento de arreglos
* mediante el uso de la interface Comparator que implementa el
* mtodo compare(). La clase Mascarones2 que esta dentro de este
* archivo, realiza el cculo de los estadsticos y el ordenamiento </p>
* <p>Copyright: Totalmente libre</p>
* <p>Empresa: El patito Feo Inc.</p>
* @author Gerardo Gonzlez ( alumno del curso de Java )
* amplio y reviso: Oscar Alejandro Gonzlez Bustamante.
* @version 1.0
*/
/*Ordena por NOMBRE */
class Mascarones implements Comparator {
public int compare(Object o1, Object o2) {
Estudiante u1 = (Estudiante) o1;
Estudiante u2 = (Estudiante) o2;
return u1.getNombre().compareTo(u2.getNombre());
}
public boolean equals(Object o) {
return this == o;
}
} //Fin clase Mascarones
/*Ordena por CALIFICACION */
class Mascarones2 {
private Estudiante[] a;
Mascarones2(Estudiante[] arreglo) { //1er constructor
a = arreglo;
}
// Fin constructor Mascarones2
public void display() {
// Muestra el arreglo
for(int j=0; j<a.length; j++)
System.out.println(""+a[j].toString());
}
public void insertionSort()
{
//Ordenacion por insercion
int in, out;
for(out=1; out<a.length; out++) {
Estudiante temp = a[out];
in = out;
while(in>0 && a[in-1].getCalif() -(temp.getCalif())>0) {
JAVA BSICO
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
a[in] = a[in-1];
--in;
}
a[in] = temp;
}
} // Fin ordenacion
//Declaracion de variables
public double promedioGral, varianza, MinValor, MaxValor;
public double Mascarones2(double prom){
//2o constructor
/*Calculo del promedio: Suma de todos los valores entre
*el No. de elementos */
for(int i=0; i<a.length; i++)
promedioGral+=a[i].getCalif();
promedioGral/=a.length;
/*Calculo de la varianza: Suma de todos los elementos al
*cuadrado entre el promedio al cuadrado */
for(int j=0; j<a.length;j++) {
varianza+=Math.pow( (a[j].getCalif()),2);
}
//El total de la suma manos el promedio al cuadrado
varianza=(varianza/10)-(Math.pow(promedioGral,2));
/*Calculo de valores minimos y maximos, usando el arreglo ya
ordenado */
MinValor= a[0].getCalif();
MaxValor= a[(a.length-1)].getCalif();
return varianza;
} //Fin constructor Mascarones2
/*Muestra valores promedio, varianza, Valor minimo y maximo*/
public void displayFinal() {
System.out.println("\n\t Promedio: "+promedioGral+
"\n\t Varianza: "+varianza+
"\n\t Calificacion Minima: "+MinValor+
"\n\t
Calificacion
Maxima:
"+MaxValor);
75.
}
} //Fin clase Mascarones2import java.util.*;
JAVA BSICO
JAVA BSICO
6.
7.
8.
9.
10.
11.
15.
16.
17.
18.
19.
20.
21.
22.
JAVA BSICO
JAVA BSICO
Qu es un Flujo?
Un flujo es un sistema de comunicacin implementado en el paquete java.io cuyo
fin es guardar y recuperar la informacin en cada uno de los diversos dispositivos
de almacenamiento.
Podemos imaginar un flujo como un tubo donde podemos leer o escribir
bytes. No nos importa lo que pueda haber en el otro extremo del tubo: Puede ser
un teclado, un monitor, un archivo, un proceso, una conexin TCP/IP o un objeto
de Java.
Todos los flujos que aparecen en Java englobados en el paquete java.io,
pertenecen a dos clases abstractas comunes: java.io.InputStream para los flujos
de Entrada (aquellos de los que podemos leer) y java.io.OutputStream para os
flujos de salida (aquellos en los que podemos escribir).
Estos flujos, pueden tener orgenes diversos (un archivo, un socket TCP, etc.),
pero una vez que tenemos una referencia a ellos, podemos trabajar siempre de la
misma forma: leyendo datos mediante los mtodos de la familia read() o
escribiendo datos con los mtodos write().
Hay flujos de:
Flujos de bytes
Flujos de caracteres
Hay flujos de entrada y salida:
Un flujo de entrada enva datos de una fuente a un programa
Un flujo de salida enva datos de un programa hacia un destino
JAVA BSICO
JAVA BSICO
En la siguiente figura vemos el proceso de tomar los datos del flujo estndar de
entrada System.in asociado al teclado con la creacin del objeto lector de la
clase InputStreamReader.
System.out que est asociado al flujo estndar de salida para presentar los datos
por la consola o monitor.
JAVA BSICO
los
ejemplos
siguientes,
usamos
el
flujo
estndar
de
entrada
JAVA BSICO
JAVA BSICO
5. HERENCIA Y POLIFORMISMO
5.1 Herencia
En esta seccin veremos como la relacin entre clases llamada herencia, o
relacin is-a (es-un), es una estrategia de la POO para la reutilizacin de cdigo y
para la especializacin y extensin de cdigo existente en algo nuevo y mejor.
De hecho todas las clases en Java heredan de la clase Object todos sus mtodos
y atributos de manera implcita, pero el programador puede crear sus clases e
implementar la herencia de manera explcita con la palabra reservada extends y
as construir un sub - rbol dentro de la jerarqua de clases que tiene Java.
Herencia: es un mecanismo que permite crear una clase nueva en base a la
definicin de una clase existente. Con la herencia la clase nueva hereda de la
clase base, todos los mtodos y atributos que se encuentran en la interfaz de la
clase existente y aparecern automticamente en la interfaz de la clase nueva.
Jerarqua de clases, o alcance de las clases
En los lenguajes de POO una jerarqua de clases o alcance de las clases esta
conformada por un conjunto de clases que forman un rbol de nodos (rbol
invertido).
Estos nodos son clases y este rbol tiene en su parte superior una clase
denominada clase raz.
Este rbol termina en una(s) clase(s) denominadas hoja.
JAVA BSICO
JAVA BSICO
Mecnica de la herencia:
un
mtodo o un atributo.
JAVA BSICO
La superclase se
Luego la subclase rbol con constructor por default, finalmente la clase Pino con
su constructor por default.
Luego una clase Bosque que tenga un arreglo pinitos de objetos de la clase Pino
con por lo menos un objeto como se ve en el diagrama.
JAVA BSICO
Ejemplo Planta.java
JAVA BSICO
JAVA BSICO
Clase Bosque.java
Clase Bosque.java la cual tiene un arreglo de objetos pinitos de la clase Pino.java
JAVA BSICO
JAVA BSICO
Las variables de instancia pueden ser referenciadas con la palabra this, donde this
significa de esta clase , as por ejemplo supongamos que tiene una clase
Persona con un campo public String nombre, entonces para hacer referencia a
ella se hace as;
class Persona {
public String nombre;
public void setNombre(String nombre ) {
this.nombre = nombre;
}
}
JAVA BSICO
super( [lista_de_argumentos ] )
super.metodo( [ lista_de_argumentos ] )
super.variable
Ejemplo:
// invoca al constructor de la superclase
super( diametrotronco, altura, anillos, nombre);
super.imprime(); // invoca al mtodo imprime de la superclase
super.velocidad= 60; // invoca al la variable velocidad la superclase
JAVA BSICO
JAVA BSICO
JAVA BSICO
La destruccin de los
recolector de basura detecta que el objeto no esta siendo usado, es decir no esta
conectado a ninguna referencia.
JAVA BSICO
Privado
Protegido
Default o de paquete
Publico
Default o de paquete
Default o de paquete
Protegido
Publico
Protegido
Publico
Protegido
Publico
Publico
JAVA BSICO
Declaracin:
abstract class NombreClase
{
..............
}
JAVA BSICO
persona
-nombre
-edad
+toString() : String
+cambiarEdad()
alumno
-curso
-nivelAcademico
+cambiarCurso()
+toString() : String
+pagoMensual() : double
+mostrarAsignaturas()
profesor
-asignatura
+toString() : String
libre
presencial
-listaAsignaturas
-precioPorHora
-noHorasDiarias
-pedirAsignaturas()
+pagoMensual() : double
+mostrarAsignaturas()
-matriculaCurso
-noConvocatoria
-plusPorConvocatoria
+pagoMensual() : double
+mostrarAsignaturas()
JAVA BSICO
return t;
}
JAVA BSICO
5.9 Polimorfismo
El polimorfismo (poli = muchas, morfismo = formas) es una de las propiedades
importantes de la Programacin Orientada a Objetos. Para entender el
polimorfismo debemos entender primeramente la herencia porque ste concepto
esta muy relacionado con el polimorfismo.
El polimorfismo es una de las tcnicas ms importantes que permiten al
programador "Separar las cosas que cambian de las cosas que deben permanecer
igual", as se puede reutilizar cdigo existente para las cosas que quedan sin
cambios y crear cdigo nuevo para las cosas que cambian.
JAVA BSICO
5.10 Interfaces
La palabra reservada interface toma el concepto de abstract un paso mas
adelante. Usted puede pensar que una interface como un clase abstracta
"pura". Una interface solo provee la forma, pero no la implementacin.
Las interfaces nacen ah donde la jerarqua de clases hasta ahora tratada se
queda corta para el diseo de complejos programas. Entonces entra una nueva
jerarqua que es la jerarqua de interfaces. La idea es algo parecida a la herencia
mltiple pero no es tal.
JAVA BSICO
como clases internas haya, incluso con las clases internas annimas que se
generan cuando se le dan eventos a las GUIS. p. ejemplo la clase Direccin
es
Este mtodo
JAVA BSICO
Figura 1-29. Diagrama de UML de las clases Persona y UsaLaPersona, donde se aprecia la
relacin de asociacin entre las clases, representada con una flecha que las conecta.
JAVA BSICO
JAVA BSICO
JAVA BSICO
JAVA BSICO
JAVA BSICO
6. MANEJO DE EXCEPCIONES
6.1 Modelo del manejo de excepciones
Las excepciones son situaciones excepcionales que producen errores en los
programas en tiempo de ejecucin. Una condicin excepcional es un problema
que evita la continuacin de un mtodo o mbito, esto es, se sale del contexto
actual para relegar ese problema un un contexto mayor, como en una lnea de
comando de ordenes. Esto es lo que sucede cuando usted lanza una excepcin:
Cuando se lanza una excepcin ocurren varias cosas:
Primero: un objeto es creado o instanciado con new como cualquier otro
objeto.
Segundo: la ruta actual de ejecucin es interrumpida y la referencia de el
objeto de excepcin es abortada del contexto actual.
Tercero: un mecanismo de manejo de excepcin se hace cargo y comienza
a buscar un lugar apropiado para continuar ejecutando el programa. Este
lugar apropiado es el manejador de excepcin cuyo trabajo es manejar el
error para que el programa pueda continuar.
Lanzando excepciones try / catch.
Cuando queremos que nuestro programa pueda capturar una excepcin utilizamos: el
bloque try - catch
try {
// cdigo que puede
generar excepciones o
// regin salvaguardada
donde se puede producir
una excepcin
}
JAVA BSICO
Manejadores de Excepcin.
En nuestro cdigo cuando dentro del bloque try se lanza una excepcin, hay que
capturarla con catch y manejarla segn su tipo con el manejador de excepcin
adecuado, ya que podemos poner varios catch para los diferentes tipos de errores
que sucedan:
try {
// Codigo que puede genera excepciones
} catch(Tipo1 id1) {
// Manejo de excepciones del Tipo1
} catch(Tipo2 id2) {
// Manejo de excepciones del Tipo2
} catch(Tipo3 id3) {
// Manejo de excepciones del Tipo3
}
// etc...
Ejemplos try/catch
Primeramente veamos que sucede cuando no hay un bloque try - catch para
proteger nuestro cdigo y capturar una posible excepcin, el ejemplo de divisin
por cero es intencional para
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
/**
* Programa de Java que te ensea que pasa cuando
* no manejas una excepcin.
* @autor Oscar A. Gonzlez Bustamante
* @version 1.0
* Archivo: EjemploExcepcion.java
*/
public class EjemploExcepcion
{
public static void main(String args[])
{
int divisor = 0;
int cociente = 1234/divisor;
}
}
JAVA BSICO
at
EjemploExcepcion.main(EjemploExcepcion.java:14)
Exception in thread "main" Finished executing
Como vemos el proceso que maneja las excepciones en Java y que es un thread
que corre en paralelo junto con el intrprete de Java detecta el error en la lnea 14
y reporta el error como una excepcin, adems imprime el mensaje "/ by zero"
para indicarnos el problema luego el programa termina abruptamente ya que no
puede continuar porque no puede manejar esa divisin por cero.
Ahora veamos que pasa si decidimos poner el cdigo que produce la divisin por
cero dentro de un mtodo:
/**
* Programa de Java que te ensea que pasa cuando
* no manejas una excepcin dentro de un mtodo.
* @autor Oscar A. Gonzlez Bustamante
* @version 1.0
* Archivo: EjemploExcepcion2.java
*/
public class EjemploExcepcion2
{
static void excepcional()
{
int divisor = 0;
int cociente = 1234/divisor;
}
public static void main(String args[])
{
EjemploExcepcion2.excepcional();
}
}
Pgina 175 de 267
Av. Juan de Dios Btiz s/n esq. Miguel Othn de Mendizbal, Col. Nueva Industrial Vallejo, Delegacin Gustavo A. Madero.
C.P 07738, Mxico D.F. Tel.5729-6000 Extensiones: 56529, 56596, email: ddep@cic.ipn.mx ; www.cursos.cic.ipn.mx.
JAVA BSICO
JAVA BSICO
La
salida
de
ste
programa
al
ejecutarlo
con
el
comando
java
JAVA BSICO
import java.io.*;
public class VariasExcepciones{
public static void main(String args[]){
BufferedReader teclado = new BufferedReader(
new InputStreamReader(System.in));
boolean error=false;
do{
try{
error=false;
System.out.print("\nTeclea un numero: ");
String texto= teclado.readLine();
int i = Integer.parseInt(texto);
System.out.print("Teclea otro numero: ");
texto= teclado.readLine();
int j = Integer.parseInt(texto);
System.out.printf("La divisin %d/%d = %d\n",i,j,i/j);
}catch (NumberFormatException e){
System.out.println("Error: en la conversin");
error=true;
}catch (IOException e) {
System.out.println("Error en la lectura");
error=true;
}catch (ArithmeticException e){
System.out.println("\nDivisin por cero");
error=true;
}catch (Exception e){
System.out.println("Excepcin desconocida");
error=true;
}
}while(error);
}// fin del main
} // fin de la clase variasExcepciones
JAVA BSICO
try {
//aqui va cdigo que puede lanzar una excepcin
}
catch (Tipo1 e) {
// aqu va el cdigo para tratar la excepcin del Tipo 1
}
finally {
// Aqu en el bloque finally es donde se ejecutan
// las sentencias que se quieran siempre ejecutar
// haya o no excepcin
}
JAVA BSICO
try{
sentencias;
}
catch( LaExcepcin ex ) {
// ejecutando operaciones antes de salir
throw ex;
}
Algunas
veces, usted necesite lanzar una nueva excepcin ( con informacin adicional ) a
travs de la excepcin original. A esto ltimo se le conoce como excepciones
encadenadas.
El siguiente programa ExcepcinEncadenadaEjemplo.java
demuestra como
JAVA BSICO
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
package excepciones;
/**
* Programa ExcepcionesEncadenadasEjemplo.java
* Demuestra como crear excepciones encadenadas.
* @author Oscar Alejandro Gnzlez Bustamante
* @version 1.0
*/
public class ExcepcionesEncadenadasEjemplo {
public static void main(String[] args) {
try {
m1();
}
catch (Exception ex) {
ex.printStackTrace();
}
}// fin del mtodo main()
JAVA BSICO
El mtodo main() invoca al mtodo m1(), y este invoca al mtodo m2() que lanza
con throw una excepcin.
La salida
JAVA BSICO
JAVA BSICO
JAVA BSICO
salida
del
programa
al
ejecutarlo
con
el
comando
java
ExcepcionesConstruidas es el siguiente:
Lanzando MiExcepcion de f()
Capturando excepcin de tipo MiExcepcion Mensaje: null
Lanzando MiExcepcion de g()
Capturando excepcin de tipo MiExcepcion: " Originada en g() " Mensaje: "
Originada en g() "
Lanzando MiExcepcion de h()
Capturando excepcin de Tipo: MiExcepcion: Error garrafal No: 123 " Originada en
h() " Mensaje: Error garrafal No: 123 " Originada en h() "
JAVA BSICO
Presentaciones
JAVA BSICO
JAVA BSICO
JAVA BSICO
JAVA BSICO
JAVA BSICO
JAVA BSICO
JAVA BSICO
JAVA BSICO
JAVA BSICO
JAVA BSICO
JAVA BSICO
JAVA BSICO
JAVA BSICO
JAVA BSICO
JAVA BSICO
JAVA BSICO
JAVA BSICO
JAVA BSICO
JAVA BSICO
JAVA BSICO
JAVA BSICO
JAVA BSICO
JAVA BSICO
PRACTICAS
PRACTICA 1
Nombre: ________________________________________________________Fecha:________
Apellido Paterno
Apellido Materno
Nombre(s)
Objetivo: El participante utilizara el IDE NetBeans 6.9 para crear una aplicacin
de Java.
JAVA BSICO
package unam;
Agregue la lnea de cdigo: import javax.swing.JOptionPane ;
Abajo de la sentencia: System.out.println("Bienvenidos a su curso de Java
Bsico en Lnea") ;
Agregue las lneas de cdigo: JOptionPane.showMessageDialog(null,
"Oscar Alejandro",
"Mi nombre es",
JOptionPane.INFORMATION_MESSAGE);
Donde dice Oscar Alejandro escriba su nombre por favor y borre el mo (su
nombre debe estar entre comillas).
5. Guarde las modificaciones con el comando File | Save
JAVA BSICO
JAVA BSICO
PRACTICA 2
Nombre:________________________________________________________Fecha:_______
Apellido Paterno
Apellido Materno
Nombre(s)
que esta
JAVA BSICO
JAVA BSICO
/*
* Galleta.java
*
* Created on 30 de enero de 2007, 05:53 PM
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/
package unam.oagb;
import javax.swing.JOptionPane;
/**
*
* @author Oscar
*/
public class Galleta {
/** variables */
public String nombre;
String sabor = "Fresa";
/** constantes */
public static final String FORMA = "Estrella";
public static final int PICOS = 5;
/** Crea una nueva instancia de Galleta */
public Galleta() {
nombre = "Estrellita";
}
/** Crea una nueva instancia de Galleta( String nombre ) */
public Galleta(String nombre) {
this.nombre = nombre;
}
/** Crea una nueva instancia de Galleta( String nombre, String sabor ) */
public Galleta(String nombre, String sabor) {
this( nombre );
this.sabor = sabor;
}
/**
* metodo caracteristicasDeLaGalleta()
* @return String
*/
public String caracteristicasDeLaGalleta() {
String cadena = "Galleta: " + this.nombre +
"\tSabor : " + this.sabor +
"\tForma : " + this.FORMA +
"\tPicos : " + this.PICOS ;
return cadena; // regresa cadena
JAVA BSICO
JAVA BSICO
PRACTICA 3
Nombre:________________________________________________________Fecha:_______
Apellido Paterno
Apellido Materno
Nombre(s)
Objetivo: El participante utilizara el IDE NetBeans 6.9 para crear un applet que
ejemplifique el ciclo de vida de los mismos y luego escribir un applet que reciba
parmetros y que convierta esos parmetros en valores reales para realizar un
calculo aritmtico y desplegar una sencilla figura geomtrica.
Instrucciones: Lea con atencin y realice lo que se le pide en cada punto
Desarrollo:
1. Haga doble clic en el acceso directo al archivo jnetbeans.exe que est en el
escritorio para abrir el IDE.
2. Dentro del proyecto PROYECTOUNO. Cree un paquete con el nombre de
uno y dentro del paquete uno cree el archivo de tipo Java | Applet
CicloVida.java , se abrir la ventana de edicin de dicho archivo, y teclee
el siguiente cdigo:
package uno;
import java.applet.Applet;
/**
* Programa que muestra las etapas de la vida de un applet.
* Ejemplifica los mtodos mas comunes de un applet.
* @autor Oscar A. Gonzlez Bustamante
* @version 1.0
* Archivo: CicloVida.java
*/
import java.applet.Applet;
import java.awt.Graphics;
public class CicloVida extends Applet
{
private String pais, instituto, caddiametro;
/**
* Mtodo constructor del applet. Tiene el mismo nombre de la clase
*/
JAVA BSICO
public CicloVida()
{
System.out.println("El constructor se esta ejecutando....");
} // fin constructor por default
/**
* Mtodo init del applet. Inicializa el applet.
*/
public void init()
{
System.out.println("Este es el mtodo init().\n");
this.pais = "Mxico";
this.instituto = "Universidad Nacional Autnoma de Mxico";
this.caddiametro = "100";
} // fin mtodo init
/**
* Mtodo start. Arranca o comienza el applet.
*/
public void start()
{
System.out.println("Este es el mtodo start(). \n");
} // fin mtodo start
/**
* Mtodo paint. Dibuja o pinta el applet.
*/
public void paint(Graphics g)
{
double dmt = Double.parseDouble(this.caddiametro); // conversin de cadena a double
g.drawString("Hola , a todos mis pupilos!", 10,40); // dibuja cadenas
g.drawString( pais, 10, 150);
g.drawString(instituto, 10, 170);
g.drawRect(5, 20, 300, 170); // dibuja rectangulo
g.drawOval(100, 50,(int) dmt,(int) dmt); // circulo de la cara
g.drawOval(110, 70, (int) (dmt/4), (int)( dmt/4)); // ojo izq
g.drawOval(150, 70, (int) (dmt/4), (int)( dmt/4)); // ojo der
g.drawArc(130, 100, 10, 15, 0, 180); // nariz
g.drawArc(120, 120, 30, 15, -180, 180); // boca
System.out.println("El applet acaba de ser dibujado con paint() \n");
} // fin del mtodo paint
JAVA BSICO
/**
* Mtodo stop. Para el applet.
*/
public void stop()
{
System.out.println("Este es el mtodo stop(), para el applet. \n");
} // fin del mtodo stop
/**
* Mtodo destroy. Destructor del applet.
*/
public void destroy()
{
System.out.println("Este es el mtodo destroy(), destruye el applet.\n");
} // fin del mtodo destroy
}// fin de la clase CicloVida
JAVA BSICO
package uno;
import java.applet.Applet;
import java.awt.Graphics;
import java.awt.Color;
/**
* Programa de Java que te ensea a hacer applets
* con la librera java.swing.* que reciban parametros
* y utiliza para ello el mtodo getParameter()
* Dependiendo del valor del parametro dibujar un
* circulo o un cuadrado.
* @autor Oscar A. Gonzlez Bustamante
* @version 1.0
* Archivo: AppletParametros.java
*/
public class AppletParametros extends Applet
{
public void paint( Graphics g )
{
String figura;
float radio;
float lado;
double areacirculo, areacuadrado;
// LEE LOS PARAMETROS DE HTML name Y value
figura = getParameter("figura");
if ( figura.equals("circulo") ) {
radio = new Float( getParameter("radio") ).floatValue();
areacirculo = Math.PI * radio * radio;
g.drawString("El area de un "+ figura +
" de radio " + radio + " = " + areacirculo,
15, 20 );
g.setColor( Color.RED );
g.drawOval( 100, 30, (int)radio, (int)radio );
g.setColor( Color.CYAN );
g.fillOval(100, 30, (int)radio - 1, (int)radio - 1 );
}
else if ( figura.equals("cuadrado") ) {
lado = new Float( getParameter("lado") ).floatValue();
areacuadrado = lado * lado;
JAVA BSICO
JAVA BSICO
JAVA BSICO
PRACTICA 4
Nombre: ________________________________________________________Fecha:_______
Apellido Paterno
Apellido Materno
Nombre(s)
Objetivo: El participante utilizar el IDE NetBeans 6.9 para crear un applet que
ejemplifique el ciclo de vida de los mismos y luego escribir un applet que reciba
parmetros y que convierta esos parmetros en valores reales para realizar un
calculo aritmtico y desplegar una sencilla figura geomtrica.
Instrucciones: Lea con atencin y realice lo que se le pide en cada punto
Desarrollo:
1. Haga doble clic en el acceso directo al archivo jnetbeans.exe que est en el
escritorio para abrir el IDE.
2. Dentro del proyecto PROYECTOUNO. Cree un paquete con el nombre de
uno y dentro del paquete uno cree el archivo de tipo Java | Applet
CicloVida.java , se abrir la ventana de edicin de dicho archivo, y teclee
el siguiente cdigo:
package uno;
import java.applet.Applet;
/**
* Programa que muestra las etapas de la vida de un applet.
* Ejemplifica los mtodos mas comunes de un applet.
* @autor Oscar A. Gonzlez Bustamante
* @version 1.0
* Archivo: CicloVida.java
*/
import java.applet.Applet;
import java.awt.Graphics;
public class CicloVida extends Applet
{
private String pais, instituto, caddiametro;
/**
* Mtodo constructor del applet. Tiene el mismo nombre de la clase
*/
public CicloVida()
{
JAVA BSICO
JAVA BSICO
package uno;
import java.applet.Applet;
import java.awt.Graphics;
import java.awt.Color;
/**
* Programa de Java que te ensea a hacer applets
* con la librera java.swing.* que reciban parametros
* y utiliza para ello el mtodo getParameter()
* Dependiendo del valor del parametro dibujar un
* circulo o un cuadrado.
* @autor Oscar A. Gonzlez Bustamante
* @version 1.0
* Archivo: AppletParametros.java
*/
public class AppletParametros extends Applet
{
public void paint( Graphics g )
{
JAVA BSICO
String figura;
float radio;
float lado;
double areacirculo, areacuadrado;
// LEE LOS PARAMETROS DE HTML name Y value
figura = getParameter("figura");
if ( figura.equals("circulo") ) {
radio = new Float( getParameter("radio") ).floatValue();
areacirculo = Math.PI * radio * radio;
g.drawString("El area de un "+ figura +
" de radio " + radio + " = " + areacirculo,
15, 20 );
g.setColor( Color.RED );
g.drawOval( 100, 30, (int)radio, (int)radio );
g.setColor( Color.CYAN );
g.fillOval(100, 30, (int)radio - 1, (int)radio - 1 );
}
else if ( figura.equals("cuadrado") ) {
lado = new Float( getParameter("lado") ).floatValue();
areacuadrado = lado * lado;
g.drawString("El area de un "+ figura +
" de lado " + lado + " = " + areacuadrado,
15, 20 );
g.setColor( Color.RED );
g.drawRect(100, 30, (int)lado, (int)lado );
g.setColor(new Color(00,21,00));/* establece color verde muy obscuro */
g.fillRect(100+1,30+1,(int)lado-1,(int)lado-1); /* dibuja borde */
}
else {
g.drawString("Lo siento no hay ninguna figura",15, 20 );
}
} // fin del paint()
} // fin de la clase AppletParametros
JAVA BSICO
JAVA BSICO
PRACTICA 5
Nombre: ________________________________________________________Fecha:_______
Apellido Paterno
Apellido Materno
Nombre(s)
Suma
Resta
Multiplicacin
Divisin
Residuo
Potencia
El programa pedir por teclado dos nmeros reales para efectuar con ellos la
operacin aritmtica seleccionada y calcular el resultado:
JAVA BSICO
De el primer nmero:
De el segundo nmero:
El programa solicitar al usuario continuar calculando una nueva operacin o
salir para terminar el proceso:
4. Cree una nueva clase dentro del proyecto PROYECTODOS con el nombre
ejemplos, y
JAVA BSICO
se resolver con las estructuras de control de decisin mtiple Case EndCase y utilizar alguno de los ciclos while, do while o for.
package ejemplos;
import javax.swing.JOptionPane;
public class Calculadora {
public double p,q,r; // variables reales
String cad; // cadena
char n; // variable para el selector
String menu;
public Calculadora() {
menu = "Operacion a realizar:\n " +
"+ : suma \n" +
"- : resta \n" +
"* : multiplicacion \n" +
"/ : divicion \n" +
Pgina 229 de 267
Av. Juan de Dios Btiz s/n esq. Miguel Othn de Mendizbal, Col. Nueva Industrial Vallejo, Delegacin Gustavo A. Madero.
C.P 07738, Mxico D.F. Tel.5729-6000 Extensiones: 56529, 56596, email: ddep@cic.ipn.mx ; www.cursos.cic.ipn.mx.
JAVA BSICO
JAVA BSICO
JAVA BSICO
PRACTICA 6
Nombre: ________________________________________________________Fecha:_______
Apellido Paterno
Apellido Materno
Nombre(s)
JAVA BSICO
boolean si = true;
boolean no = !si;
boolean noperosi = !no;
System.out.println("si= " + si + "\tno= " + no +
"\tnoperosi= " + noperosi );
/*
cadena+="\n\nMuestra una serie de diversos tipos de variables:\n";
cadena+="decimal\toctal\thexadecimal\n";
cadena+="xd= " + xd + "\txo= " + xo + "\txh= " + xh+"\n";
cadena+="long\n";
cadena+="xl= " + xl+"\n";
cadena+="float\n";
cadena+="f1="+f1 +"\n";
cadena+="double\n";
cadena+="d="+f1+ "\n";
cadena+="char\n";
cadena+="c1= " + c1 + "\tc2= " + c2 + "\tc3= " + c3+"\n";
cadena+="String\n";
cadena+="s1="+s1+ "\n";
cadena+="String to uppercase\n";
cadena+="Mayusculas s1="+s1.toUpperCase()+ "\n";
cadena+="String to reverse\n";
cadena+="Reversa s1="+new StringBuffer(s1).reverse()+ "\n";
cadena+="Booleanos\n";
cadena+="si= " + si + "\tno= " + !si + "\tnoperosi= " + !no+"\n";
*/
} // fin del main
} // fin de la clase literales
3.
4.
5.
6.
JAVA BSICO
PRACTICA 7
Nombre: ________________________________________________________Fecha:_______
Apellido Paterno
Apellido Materno
Nombre(s)
JAVA BSICO
package ejemplos;
import javax.swing.JOptionPane;
public class Calificacion {
double ex1,ex2,ex3,cal;
public Calificacion() {
String cadena1 = JOptionPane.showInputDialog(null,"De 1er.examen:");
String cadena2 = JOptionPane.showInputDialog(null,"De 2do.examen:");
String cadena3 = JOptionPane.showInputDialog(null,"De 3er.examen:");
/* Conversion de String a double*/
ex1= new Double(cadena1).doubleValue();
ex2= new Double(cadena2).doubleValue();
ex3= new Double(cadena3).doubleValue();
} // fin del constructor
public static void main(String[] args) {
Calificacin c = new Calificacion();
c.cal = (c.ex1 + c.ex2 + c.ex3)/3.0;
if(c.cal >=7.5)
JOptionPane.showMessageDialog(null,"Aprobado con : " + c.cal);
else
JOptionPane.showMessageDialog(null,"Reprobado con:" + c.cal);
System.exit(0);
}//fin del main()
}//fin de la clase Calificacion
JAVA BSICO
JAVA BSICO
PRACTICA 8
Nombre: ________________________________________________________Fecha:_______
Apellido Paterno
Apellido Materno
Nombre(s)
DESARROLLO:
1. Haga doble clic en el acceso directo al archivo jdevw.exe que esta en el
escritorio para abrir el IDE netbeans 5.5.
2. Vamos a trabajar dentro de la carpeta C:\PracticasJava y cree el proyecto
ESTRUCTURAS.
3. Escribiremos un programa que resuelva el siguiente Ejemplo 4, en base al
diagrama de flujo y pseudocdigo, vea la figura 1.
Ejemplo 4. Elabore un algoritmo con diagrama de flujo y pseudocdigo tal que,
dado como dato una temperatura en grados Centgrados, calcule los grados
Fahrenheit y determine el deporte que es apropiado practicar a esa temperatura,
teniendo en cuenta lo siguiente tabla 1
DEPORTE
Natacin
>85
Tenis
70 <TEMP<= 85
Golf
32 <TEMP<= 70
Esqu
10 <TEMP<= 32
Marcha
<=10
Tabla 1. Que deporte practicar segn la temperatura.
JAVA BSICO
4. Cree una nueva clase dentro del proyecto ESTRUCTURAS con el nombre de
Deporte con mbito pblico, dentro del paquete ejemplos , y con mtodo
main.
5. Capture con el editor el cdigo fuente siguiente en lenguaje Java para resolver
el Ejemplo 4.
package ejemplos;
import javax.swing.JOptionPane;
public class Deporte {
double c, f; // declaracin de variables
public Deporte() {
String cadena =JOptionPane.showInputDialog(null, "De temperatura en Centgrados:");
//Conversin de String a double
c = Double.parseDouble(cadena);
f = c * (9.0/5.0) + 32; // Conversin de grados centgrados a Fahrenheit
} //fin del instructor
public static void main(String[] args) {
Deporte d = new Deporte();
String cad= "El deporte a practicar con: + d.f + " F es : ";
if( d.f > 85 )
cad += " Natacin";
else if ( d.f > 70 )
cad += " Tenis";
else if ( d.f > 35 )
cad += " Golf";
else if ( d.f > 32 )
cad += " Esqui";
else
cad += " Marcha";
JOptionPane.showMessageDialog(null,cad);
System.exit(0);
}//fin del main()
}//fin de la clase Deporte
JAVA BSICO
6. Complelo.
7. Si hay errores, deprelo y corrija los errores con el editor.
8. Ejectelo
9. Coloque un punto de ruptura y vea los valores de las variables en la
ventana de Watch.
10. Evaluacin: Ejecute de nuevo el programa y de un valor diferente para los
grados centgrados as:
De temperatura en Centgrados = 25.5
Capture la pantalla de salida y envesela por correo a su profesor.
JAVA BSICO
PRACTICA 9
Nombre: ________________________________________________________Fecha:_______
Apellido Paterno
Apellido Materno
Nombre(s)
Desarrollo
Haga doble clic en el acceso directo al archivo jdevw.exe
el escritorio para abrir el IDE netbeans 5.5.
Vamos a trabajar dentro de la carpeta C:\PracticasJava
proyecto ESTRUCTURAS.
que esta en
y cree el
JAVA BSICO
package ejemplos;
import javax.swing.JOptionPane;
public class Sumatorias {
int i,n;
double s;
public Sumatorias() {
String cadena = JOptionPane.showInputDialog(null,"Dar N=");
n= Integer.parseInt(cadena); // convertimos la cadena a un valor de tipo int
} //fin del constructor
public static void main(String[] args) {
Sumatorias x = new Sumatorias(); //creamos un objeto x de la clase Sumatorias
x.i = 1; // inciamos i con 1
while ( x.i <= x.n ) {
x.s = x.s + x.i; // acumulamos la suma en s
x.i =x.i + 1; // incrementamos el contador i
} //fin de while
System.out.println ("La suma de los primeros" + x.n );
System.out.println ("nmeros enteros positivos es =" + x.s );
//Ahora con ciclo do - while
//Hay que reiniciar de nuevo las variables, para esto creamos otro objeto
Sumatorias y = new Sumatorias (); // creamos objeto y de la clase Sumatorias
y.i = 1; // iniciamos i con 1
do {
y.s = y.s + y.i; // acumulamos la suma en s
y.i = y.i + 1; // incrementamos el contador i
}while ( y.i <= y.n );
System.out.println ("La suma de los primeros" + y.n );
System.out.println ("nmeros enteros positivos es=" + y.s );
//ahora con el ciclo for hay que crear otro objeto para inicializar
Sumatorias z = new Sumatorias(); // creamos el objeto z de la clase Sumatorias
for ( z.i=1; z.i <= z.n; z.i++ ) // la variable i se incrementa en el for
z.s= z.s + z.i; // acumulamos la suma en s
System.out.println ("La suma de los primeros" + z.n );
System.out.println ("nmeros enteros positivos es =" + z.s );
System.exit (0);
}//fin del main()
}//fin de la clase sumatorias
JAVA BSICO
Figura 1-a. Diagrama de flujo del ejemplo 5, con ciclo while (mientras).
Figura 1-b. Diagrama de flujo del ejemplo 5, con ciclo do-while (repetir-hasta).
Pgina 242 de 267
Av. Juan de Dios Btiz s/n esq. Miguel Othn de Mendizbal, Col. Nueva Industrial Vallejo, Delegacin Gustavo A. Madero.
C.P 07738, Mxico D.F. Tel.5729-6000 Extensiones: 56529, 56596, email: ddep@cic.ipn.mx ; www.cursos.cic.ipn.mx.
JAVA BSICO
Complelo.
Si hay errores, deprelo y corrija los errores con el editor.
Ejectelo
Coloque un punto de ruptura y vea los valores de las variables en la
ventana de Watch.
Evaluacin: Ejecute de nuevo el programa y de un valor diferente para N:
Dar N= 250
Capture la pantalla de salida y envesela por correo a su profesor.
No olvide incluir su nombre en la portada.
JAVA BSICO
PRACTICA 10
Nombre: ________________________________________________________Fecha:_______
Apellido Paterno
Apellido Materno
Nombre(s)
Instrucciones:
1. Abra el IDE NetBeans 5.5.
2. Cree un proyecto de Java y pngale el nombre Arreglos a su nuevo
proyecto.
3. Escribiremos un programa que resuelva el siguiente Ejemplo 40.
Ejemplo 40: Crear una Java Class de nombre Galleta.java a la cual le
gregaremos un atributo precio de tipo double. Luego crearemos un arreglo
arrGalletas de objetos de la clase Galleta.java y con un comparador
ComparadorPrecioGalleta ordenaremos los objetos por el precio y con el
comparador ComparadorNombrePrecioGalleta ordenaremos por precio y
nombre. Finalmente rellenar la primera mitad del arreglo arrGalletas con un
objeto de la clase Galleta.java.
4. Cree una nueva clase dentro del proyecto Arreglos
con el nombre de
JAVA BSICO
/package apimanejoarrays;
/**
*@author Oscar Alejandro Gonzlez B.
@version 1.0
*/
public class Galleta {
/** variables */
String nombre;
public String sabor = "Fresa";
public double precio = 0.0d;
/** constantes */
public static final int PICOS = 5;
public static final String FORMA = "Estrella";
/** Creates a new instance of Galleta */
public Galleta() {
nombre = "Estrellita";
}// fin del constructor
/** Crea una nueva instancia de Galleta( String nombre ) */
public Galleta(String nombre) {
this.nombre = nombre;
}// fin del constructor
/** Crea una nueva instancia de Galleta( String nombre, String sabor ) */
public Galleta(String nombre, String sabor) {
this( nombre );
this.sabor = sabor;
}// fin del constructor
/** Crea una nueva instancia de Galleta( String nombre,
* String sabor,double precio ) */
public Galleta(String nombre, String sabor, double precio) {
this( nombre, sabor );
this.precio = precio;
}// fin del constructor
/**
* metodo toString() sirve para convertir los valores de
* las variables miembro de la clase Galleta a cadenas y
* esto es convertir el objeto a un String para ver su estado
* @return String
*/
public String toString() {
return "[ " + this.nombre +
",\t" + this.sabor +
",\t" + this.precio +
",\t" + this.FORMA +
",\t: " + this.PICOS +
"]";
} // fin del metodo caracteristicasDeLaGalleta
} // fin de la clase Galleta
JAVA BSICO
7. Complelo.
8. Cree una nueva clase dentro del proyecto Arreglos con el nombre de
ComparadorNombrePrecioGalleta
con mbito
pblico, dentro del
paquete apimanejoarrays, y capture el cdigo siguiente:
JAVA BSICO
/*
* ComparadorNombrePrecioGalleta.java
*
* Created on 14 de junio de 2007, 07:40 PM
* @author Oscar A. Gonzlez B.
* Clase para obtener comparacin de dos objetos Galleta en
* en base a su atributo precio
*/
package apimanejoarrays;
import apimanejoarrays.Galleta;
import java.util.Comparator;
public class ComparadorNombrePrecioGalleta implements Comparator<Galleta> {
/** Creates a new instance of ComparadorCadLongitud */
public ComparadorNombrePrecioGalleta() {
}// fin del constructor
/** metodo redefinido para implementar comparacin
* de dos objetos Galleta en base a su precio. Se
* multiplican por 100 para evitar los decimales ya
* que las galletas valen centavos
*/
public int compare( Galleta a, Galleta b) {
// si las dos galletas tienen el mismo precio
if ( (int)( b.precio*100 ) - (int) ( a.precio*100 ) == 0 )
// compara lexicograficamente los nombres de las galletas
return a.nombre.compareTo( b.nombre );
else
return (int)( b.precio*100 - a.precio*100 );
}// fin del mtodo compare
}// fin de la clase ComparadorNombrePrecioGalleta
JAVA BSICO
package apimanejoarrays;
import apimanejoarrays.Galleta;
import apimanejoarrays.ComparadorPrecioGalleta;
import apimanejoarrays.ComparadorNombrePrecioGalleta;
import java.util.Arrays;
/**
* @author Oscar A. Gonzlez Bustamante.
*Muestra arrays de objetos Galleta y su ordenacin
*sort(), su relleno con fill() y busqueda binaria
*con binarySearch() utilizando comparadores
*con su atributo precio.
*/
public class ManejoArraysTres {
/** Creates a new instance of ManejoArraysTres */
public ManejoArraysTres() {
}// fin del constructor
public static void main(String args[] ) {
Galleta[] arrGalletas = { // definicin y declaracin esttica
new Galleta("Estrella de chocolate ", "Chocolate", 50),
new Galleta("Estrella de coco
", "Coco ", 56),
new Galleta("Estrellita del rio ", "Vainilla ", 76),
new Galleta("Estrellita del norte ", "Miel ", 76),
new Galleta("Estrellita del mar ", "Moca ", 76),
new Galleta("Estrellita del oceano ", "Fresa ", 76),
new Galleta("Estrellita del cielo ", "Nuez ", 76),
new Galleta("Estrella fugaz meteoro", "Vainilla ", 90),
new Galleta("Estrella fugaz cometa ", "Coco ", 90)
};
// Orden natural de las galletas
System.out.println("\nArreglo de Galletas orden natural");
imprimeArray( arrGalletas );
// ordena con el comparador precio de las Galletas
Arrays.sort( arrGalletas, new ComparadorPrecioGalleta());
System.out.println("\nArreglo de Galletas orden por precio");
imprimeArray( arrGalletas );
// ordena con el comparador de nombre y precio de las Galletas
Arrays.sort( arrGalletas, new ComparadorNombrePrecioGalleta());
System.out.println("\nArreglo de Galletas orden por nombre de la +
" galleta y su precio");
imprimeArray( arrGalletas );
// orden natural con el comparador como requisito
// previo para la busqueda binaria
System.out.println("\nBusqueda de un dato dentro del arreglo " +
" de Galletas con bynarySearch");
int indice = Arrays.binarySearch( // regresa indice del elemento buscado
arrGalletas, //array donde buscar
new Galleta("Estrellita del cielo ", "Nuez ", 76), //elemento a buscar
new ComparadorNombrePrecioGalleta() // comparador
);
System.out.println("\narrGalletas[ " + indice + " ]= " + arrGalletas[ indice ] );
JAVA BSICO
JAVA BSICO
JAVA BSICO
Capture las pantallas de salida de ejecucin del programa junto y enveselas por
correo a su profesor en un archivo compactado. No olvide incluir su nombre en la
portada.
JAVA BSICO
PRACTICA 11
Nombre: ________________________________________________________Fecha:_______
Apellido Paterno
Apellido Materno
Nombre(s)
JAVA BSICO
Archivo Arbol.java
package ecologia;
public class Arbol extends Planta {
public Arbol() {
System.out.println("Hola soy un Arbol");
}// fin del constructor
}// fin de la clase Arbol
Archivo Pino.java
package ecologia;
public class Pino extends Arbol {
public Pino() {
System.out.println("Hola soy un Arbol");
}// fin del constructor
}// fin de la clase Pino
Archivo Bosque.java
package ecologia;
public class Bosque {
public Pino pinitos; // composicin o asociacin fuerte
public Bosque() {
pinitos = new Pino();
System.out.println("Hola soy un Bosque");
}// fin del constructor
public static void main( String args[] ) {
Bosque ajusco = new Bosque();
}// fin del main
}// fin de la clase Bosque
JAVA BSICO
JAVA BSICO
Archivo Arbol.java
package ecologia;
public class Arbol extends Planta {
protected double diametrotronco;
protected double altura;
protected int noanillos;
public Arbol() {
System.out.println("soy un Arbol");
}
public Arbol( double diametrotronco ) {
this.diametrotronco = diametrotronco;
}
public Arbol(double diametrotronco, double altura ) {
this( diametrotronco );
this.altura = altura;
}
public Arbol(double diametrotronco, double altura,
int anillos, String nombre ) {
super ( nombre ); // invocando al constructor de la superclase
this.diametrotronco = diametrotronco;
this.altura = altura;
this.setAos( this.dameaos( anillos ) ); // calculando aos
}
public int dameaos(int noanillos) {
this.setAos( noanillos * 2 ); // por cada anillo hay 2 aos
return this.getAos() ;
}
/* sobreescribe al mtodo toString() de la superclase */
public String toString() {
StringBuffer cad = new StringBuffer( super.toString());
cad.append("\tDimetro tronco: " + this.diametrotronco );
cad.append("\tAltura: " + this.altura );
cad.append( "\tAos: " + this.getAos() );
return cad.toString();
} // fin del mtodo toString
}// fin de la clase Arbol
JAVA BSICO
Archivo Pino.java
package ecologia;
public class Pino extends Arbol {
protected String especie;
public Pino() {
System.out.println( "Soy un Pino");
}
public Pino( String especie ) {
this.especie = especie;
System.out.println("Soy un Pino de especie: "
+ this.especie );
}
public Pino( String especie, double diametrotronco, double altura,
int anillos, String nombre ) {
super( diametrotronco, altura, anillos, nombre);
this.especie = especie;
} // fin de constructor
public String toString(){
StringBuffer cadena = new StringBuffer( super.toString() );
cadena.append("\tEspecie : " + this.especie );
return cadena.toString();
} // fin del mtodo toString()
} // fin de la clase Pino
Archivo Bosque.java
package ecologia;
public class Bosque {
public Pino[] pinitos; // definicin de un arreglo de Pino
public Bosque() {
this.pinitos = new Pino[3]; // construccin de 3 referencias
// instanciacin de cada Pino para el array pinitos
pinitos[0]= new Pino("Pino Abeto", 150.0, 18.6 , 40, "Arbol" );
pinitos[1]= new Pino("Pino Piero", 18.0, 3.6 , 6, "Arbol" );
pinitos[2]= new Pino("Pino Japones", 150.0, 4.6 , 10, "Arbol" );
// salida a pantalla en un ciclo
for (int i=0; i < pinitos.length; i++ )
System.out.println( pinitos[ i ] ); // pintitos[i].toString()
} // fin del constructor
public static void main( String args[] ) {
Bosque ajusco = new Bosque(); // instancio un Bosque
System.out.println("Fin del programa Bosque.java");
} // fin del main
} // fin de la clase Bosque
JAVA BSICO
JAVA BSICO
PRACTICA 12
Nombre: ________________________________________________________Fecha:_______
Apellido Paterno
Apellido Materno
Nombre(s)
Instrucciones:
1. Abra el IDE NetBeans 5.5.
2. Cree un proyecto de Java y pngale el nombre Polimorfismo a su nuevo
proyecto.
3. Escribiremos un programa que resuelva el siguiente Ejemplo 11.
Ejemplo 11: Supongamos que queremos hacer un software que maneje figuras
geomtricas. Nuestro software tendr como caracterstica principal, calcular sus
reas correspondientes, etc. Podemos partir de una definicin abstracta de figura,
entonces partimos de la definicin de una clase abstracta.
4. Cree una nueva clase abstracta dentro del proyecto Polimorfismo con el
nombre de Figura, con mbito pblico, dentro del paquete dgsca.unam. ,
y capture el cdigo siguiente:
JAVA BSICO
package dgsca.unam;
// esta es la clase abstracta
public abstract class Figura
{
private double area; // variable miembro privada
// constructores
public Figura() // constructor por default
{
System.out.println("soy el constructor de la clase abstracta Figura() ");
} // fin del constructor
public Figura(String tipo) // constructor con un argumento String
{
System.out.println("soy el constructor de la clase abstracta Figura() " +
" y voy a crear un " + tipo );
} // fin del constructor
// mtodos abstractos
public abstract void dibuja();
public abstract void borra();
public abstract void calculaArea();
public abstract String escribeArea();
// mtodos accesores
// observe que una clase abstracta puede tener metodos concretos
public double getArea()
{
return this.area;
}
public void setArea( double area )
{
this.area = area;
}
} // Fin de la clase abstracta Figura
5. Complelo.
6. Si hay errores, depure y corrija los errores con el editor.
7. Cree una nueva clase dentro del proyecto Polimorfismo con el nombre de
Triangulo y que sea subclase de la clase abstracta Figura, con mbito
pblico, dentro del paquete dgsca.unam, y capture el cdigo siguiente:
JAVA BSICO
package dgsca.unam;
public class Triangulo extends Figura
{
protected double base, altura;
//Constructores
public Triangulo( double base, double altura )
{
super ( "Tringulo");
this.base = base; this.altura = altura;
} // fin del constructor
// mtodos redefinidos o sobreescritos.
public void borra()
{
System.out.println("borro tringulo" );
}
public void dibuja()
{
System.out.println("dibujo tringulo");
}
public void calculaArea()
{
this.setArea( this.base * this.altura / 2.0d ) ;
}
public String escribeArea()
{
this.calculaArea();
return "\nEl area de un tringulo de base: " + this.base + " y altura : " +
this.altura + " es igual a : " + getArea() ;
}
} // fin de la clase Triangulo
8. Complelo.
9. Si hay errores, depure y corrija los errores con el editor.
10. Cree una nueva clase dentro del proyecto Polimorfismo con el nombre de
Rectangulo y que sea subclase de la clase abstracta Figura, con mbito
pblico, dentro del paquete dgsca.unam, y capture el cdigo siguiente:
JAVA BSICO
package dgsca.unam;
public class Rectangulo extends Figura
{
protected double alto , ancho;
public Rectangulo( double alto , double ancho )
{
super( "Rectngulo" );
this.alto = alto; this.ancho = ancho;
} // fin del constructor
// mtodos redefinidos o sobreescritos.
public void borra()
{
System.out.println("borro rectngulo" );
}
public void dibuja()
{
System.out.println("dibujo rectngulo");
}
public void calculaArea()
{
this.setArea( this.ancho * this.alto ) ;
}
public String escribeArea()
{
this.calculaArea();
return "\nEl area de un rectngulo de ancho: " + this.ancho + " y altura : " +
this.alto + " es igual a : " + getArea() ;
}
}// fin de la clase Rectangulo
11. Complelo.
12. Si hay errores, depure y corrija los errores con el editor.
13. Cree una nueva clase dentro del proyecto Polimorfismo con el nombre de
Circulo y que sea subclase de la clase abstracta Figura, con mbito
pblico, dentro del paquete dgsca.unam, y capture el cdigo siguiente:
JAVA BSICO
package dgsca.unam;
public class Circulo extends Figura
{
protected double radio;
protected Circulo( double radio )
{
super( "Circulo") ; // invoco al constructor de la superclase abstracta
// Figura con un argumento String
this.radio = radio;
} // fin del constructor
// mtodos redefinidos o sobreescritos.
public void borra()
{
System.out.println("borro circulo" );
}
public void dibuja()
{
System.out.println("dibujo circulo");
}
public void calculaArea()
{
this.setArea( Math.PI * radio * radio ) ;
}
public String escribeArea()
{
this.calculaArea();
return "\nEl area de un circulo de radio: " + this.radio + " es igual a : " + getArea() ;
}
} // fin de la clase Circulo
14. Cree una nueva clase dentro del proyecto Polimorfismo con el nombre de
UsaFiguras, con mbito publico, dentro del paquete dgsca.unam y con
mtodo main, y capture el cdigo siguiente:
JAVA BSICO
package dgsca.unam;
public class UsaFiguras
{
public static void main( String[] args )
{
Figura f1 = new Circulo( 30.0d ); // upcasting
Figura f2 = new Triangulo( 30.0d , 40.0d ); // upcasting
Figura f3 = new Rectangulo( 40.0d , 30.0d ); // upcasting
f1.dibuja(); f1.borra();
f2.dibuja(); f2.borra();
f3.dibuja(); f3.borra();
System.out.println( f1.escribeArea() +
f2.escribeArea() +
f3.escribeArea() );
System.out.println("Fin del programa");
System.exit( 0 ); // fin del proceso
} // fin del mtodo main()
} // fin de UsaFiguras
15. Complelo.
16. Si hay errores, depure y corrija los errores con el editor.
17. Ejectelo. Al ejecutar este programa nos da el siguiente resultado:
soy el constructor de la clase abstracta Figura() y voy a crear un Circulosoy el
constructor de la clase abstracta Figura() y voy a crear un Tringulosoy el
constructor de la clase abstracta Figura() y voy a crear un Rectngulodibujo
circuloborro circulodibujo tringuloborro tringulodibujo rectnguloborro rectngulo
El area de un circulo de radio: 30.0 es igual a : 2827.4333882308138
El area de un tringulo de base: 30.0 y altura : 40.0 es igual a : 600.0
El area de un rectngulo de ancho: 30.0 y altura : 40.0 es igual a : 1200.0Fin del
programa
Process exited with exit code 0
18. Para ejercitar el polimorfismo dinmico, cree una nueva clase dentro del
proyecto Polimorfismo con el nombre de UsaFigurasDos, con mbito
publico, dentro del paquete dgsca.unam y con mtodo public static void
main( String args[] ) , y capture el cdigo siguiente:
JAVA BSICO
/**
* Programa de java que ejemplifica el uso
* de las clases que heredan mtodos
* de una clase base para as poder
* implementar polimorfismo y el enlazamiento
* tardio o enlazamiento dinmico
* que ocurre en tiempo de ejecucin.
* @autor Oscar A. Gonzlez Bustamante
* @version 1.0
* Archivo: UsaFigurasDos.java
*/
package dgsca.unam;
19. Complelo.
20. Si hay errores, depure y corrija los errores con el editor.
JAVA BSICO
21. Ejectelo. Al ejecutar este programa nos puede dar un resultado como el
siguiente ya que cambia debido al polimorfismo dinmico, porque la figura
que regresa el mtodo figuraalAzar() es aleatorio:
soy el constructor de la clase abstracta Figura() y voy a crear un Circulosoy el
constructor de la clase abstracta Figura() y voy a crear un Circulosoy el constructor
de la clase abstracta Figura() y voy a crear un Circulosoy el constructor de la clase
abstracta Figura() y voy a crear un Tringulosoy el constructor de la clase
abstracta Figura() y voy a crear un Rectngulosoy el constructor de la clase
abstracta Figura() y voy a crear un Circulosoy el constructor de la clase abstracta
Figura() y voy a crear un Rectngulosoy el constructor de la clase abstracta
Figura() y voy a crear un Circulosoy el constructor de la clase abstracta Figura() y
voy a crear un Tringulo
El rea de un circulo de radio: 30.0 es igual a : 2827.4333882308138
El rea de un circulo de radio: 30.0 es igual a : 2827.4333882308138
El rea de un circulo de radio: 30.0 es igual a : 2827.4333882308138
El rea de un tringulo de base: 30.0 y altura : 40.0 es igual a : 600.0
El rea de un rectngulo de ancho: 30.0 y altura : 40.0 es igual a : 1200.0
El rea de un circulo de radio: 30.0 es igual a : 2827.4333882308138
El rea de un rectngulo de ancho: 30.0 y altura : 40.0 es igual a : 1200.0
El rea de un circulo de radio: 30.0 es igual a : 2827.4333882308138
El rea de un tringulo de base: 30.0 y altura : 40.0 es igual a : 600.0Fin del
programaProcess exited with exit code 0.
Evaluacin: Ejecute de nuevo el programa del ejemplo 11, agregando una nueva
figura, por ejemplo el pentgono. Implemente los mtodos abstractos de la clase
abstracta Figura para la nueva subclase Pentgono:
// mtodos abstractos
public abstract void dibuja();
public abstract void borra();
public abstract void calculaArea();
public abstract String escribeArea();
JAVA BSICO
JAVA BSICO