Download as pdf
Download as pdf
You are on page 1of 638
G) B® @® ii Fs ___ ~Fundamentos de 7 Tercera edicién Resumen del contenido 1 Fundamentos de Java Introduccién a los tipos de datos y los operadores Instrucciones de control del programa Introduccién a clases, objetos y métodos Mis tipos de datos y operadores 2 3 4 5 6 Unanilisis detallado de métodos y clases. 7 Herencia 8 Paquetes e interfaces 9 Manejo de excepciones ° 10 Uso de B/S 11 Programacién con varios subprocesos. 12 Enumeraciones, autoencuadre e importacién de miembros estiticos 13 Elementos genéricos 14 Applets, eventos y temas diversos. 35 n 115 151 201 251 301 - 333 365 407 447 - 481 525 viii Fundamentos de Java A. Respuestas a las comprobaciones de dominio B Uso de comentarios de documentacién de Java indice $87 603 613, 1 Fundamentos de Java ......+ Los origenes de Java : Como se relaciona Java con C y CH} (Cémo se relaciona Java con Cit La conteibucién de Java a Internet. Los applets de tava. Seguridad Portabilidad : La magia de Java: el eédigo de bytes Terminologia de Java. Programacién orientada a objetos Eneapsulamiento Polimorfismo Herencia Obiencidn del kit de desarrollo de Java Un primer programa de ejemplo Ingreso del programa Compilacién del programa... E} ptimer programa de ejemplo, linea por x Fundamentos de Java Manejo de errores de sintaxis, 7 Un segundo programa simple . . . ceeees ce lT Otro tipo de datos 20 Proyecto 1-1 Conversion de galones a litros 2 Dos instruceiones de control 2B La instrucei6n if, 2B El bucle for 25 Cree bloques de cédigo 27 Punto y coma y posicionamiento. 29 Précticas de sangrado. ° 29 Proyecto 1-2 Mejoramiento del convertidor de galones en litros. 30 Las palabras clave de Java. 32 Identificadores en Java. 32 Las bibliotecas de clases de Java. 33 Comprobacién de dominio del médulo 1 34 2 Introduccién a los tipos de datos y operadores 4Por qué los tipos de datos son importantes? Tipos primitivos de Java Enteros Tipos de punto otante Caracteres El tipo boolean Proyecto 2.1 ,A qué distancia esta un trueno? Literales. Constantes hexadecimales y octales Secuencias de escape de caracteres, Literales de cadena. Una revisién detallada de las variables Inicializacién de una variable. Inicializacion dinémica, El alcance y la vida de las variables... : : 49 Operadores. : : 2 52 Operadores aritméticos : . 52 Incremento y decremento. . 34 Operadores relacionales y légicos : : cette teeeee eres SS Operadores lgicos de cortocircuito. : 31 E] operador de asignacién cette : 58 Asignaciones de método abreviado...... cee 60 Conversién de tipos en asignaciones. . . cee . cee ve 61 Moldeado de tipos incompatibles ...... cece 2 Precedencia de operadores. ...... : 64 Proyecto 2.2 Despliegue una tabla de verdad pata los operadores ldgicos 65 Contenido Expresiones 66 Conversién de tipos en expresiones 66 Espaciado y paréntesis Comprobacién de dominio del médulo 2 Instrucciones de control del programa. Entrada de caracteres desde el teclado La instruccién if, Ifanidados La escalera if-else-if La instruccién switch. Instrucciones switch anidadas . -¢ a construir un sistema de ayuda de Java 83 Proyecto 3.1 Empi El bucle for 86 ‘Algunas variaciones del bucle for . : 87 Piezas faltantes . 88 El bucle infinito 90 Bucles sin cuerpo 90 Declaracin de las variables de control del bucle dentro del bucle for. - a a1 El bucle for mejorado. 2 El bucle while 2 El bucle do-while 94 Proyecto 3.2 Mejore el sistema de ayuda de Java 7 Uso de break para salir de un bucle 100 Use break como una forma de goto 102 Uso de continue 106 Proyecto 3.3 Termine el sistema de ayuds de Fava 109 Bucles anidados. : 112 Comprobacién de dominio del médulo 3 . 113 Introduccién a clases, objetos y métodos . 1s Fundamentos de las clases... 116 La forma general de una clase 116 Definicién de una clase... . . 7 Cémo se crean los objetos 121 Variables de referencia y asignacién 21 Métodos 122 ‘Adicién de un método ala clase Automotor 123, Regreso de un método 125 Devolucién de un valor 126 Uso de parémetros 129 Adicién de un método con parimetros 2 un automotor 130 Proyecto 4.1 Creacién de una clase Ayuda 133 Constructores, feces 139 Constructores con parimetros 140 ‘icin de un constructor a la clase Automotor 141 xi xii 5 Mas tipos de datos y operadores........ Fundamentos de Java ‘Nueva visita al operador new Recoleccién de basura y finalizadores. E] método finalize() Proyecto 4,2 Demostracién de la finalizacién La palabra clave this Comprobacin de dominio del médulo 4 Matrices : Matrices de una dimensién. Proyeeto $.1 Ordenamiento de una matriz Matric Matrices de dos dimensiones Matrices imegulares, Matrices de tres 0 mas dimensiones s de varias dimensiones. Inicializacién de matrices de varias dimensiones. Sintaxis alterna de dectaracién de matrices. . Asignacién de referencias a matrices Uso del miemibro lenght Proyecto 5.2 Una clase Cola El bucle for de estilo for-each Iteracién en matsices de varias dimensiones, Aplicacién del for mejorado. Cadenas Construccién de cadenas Operaciones con cadenas Matrices de cadenas Las cadenas son inmutables Uso de argumentos de linea de comandos. Los operadores de bitwise Los operadores Y, O, XO y NO de bitwise Los operadores de desplazamiento, Asignaciones de método abreviado de bitwise. Proyecto 5.3 Una clase MostrarBits El operador ? Comprobacién de dominio del médulo 5 Un anilisis detallado de métodos y clases. Control de acceso a miembros de clases. Especificadores de acceso de Java Proyecto 6.1 Mejoramiento de la clase Cola Paso de objetos Cémo se pasan los argumentos. Regreso de objetos . métodos 142 443 144 145 147 149 151 152 152 156 158. 158 160 161 161 163 164 165 168 In 115 7 178 178 179 Ist 182, 183 185 186 191 193 193 196 198 -201 202 202 208 209 2u 214 Contenido Sobrecarga de métodos 216 Sobrecarga de constructores : 2m Proyecto 6.2 Sobrecarga del constructor Cola 225 Recursion. 228 Comprension de static 230 Blogues static 233 Proyecto 6.3 El ordenamiento ripido 235 Introduccidn a clases anidadas e internas 238 Varargs: arguments de longitud variable 242 Fundamentos de varar 242 Sobrecarga de métodos varargs 246 Varotgs y ambigtedad 247 ‘Comprobacién de dominio del médulo 6 249 Herencia. . . : 251 Fundamentos de Ja herencia 252 Acceso a miembros y herencia 255 Constructores y herencia 258 Uso de siiper para Ilamnar a constructores de una siperclase 260 Uso de super para accesar a miembros de una superclase. 266 Proyecto 7.1 Exiensién de la clase Automotor 267 Creacion de una jerarquia de varios niveles . 270 ¢Cuindo se llama a los constructores? 23 Referencias a siiperclases y objetos de subclases 274 Sobreseritura de métodos. 280 Los métodos sobrescritos soportan polimorfismo 283 {Por queé los métodos se sobrescriben? 285 Aplicacién de la sobrescritura de métodos a FormaDosD 285 Uso de clases abstractas. 290 Uso de final 295 Final evita la sobreseritura 295 Final evita la herencia 295 Uso de final con miembros de datos. 296 La clase Object : 298 Comprobacién de dominio del médulo 7 299 Paquetes e interfaces .....++ seer +304 Paquetes: 302 Definicin de un paquete 302 Buisqueda de paquetes y CLASSPATH, 304 Un ejemplo corto de paquete 304 Acceso a paquets y miembros 306 Un ejemplo de acceso a paquete. 307 Los miembros protegidos 309 Importacién de paquetes 31 xi xiv Fundamentos de Java Las bibliotecas de clases de Java se encuentran en paquetes .... 314 Interfaces 315 Implementacién de interfaces 316 Uso de referencias a interfaces 320 Proyecto 8.1 Creacién de una interfaz de cola 322 Variables en interface: 328 Las interfaces pueden extenderse 329 Comprobacién de dominio det médulo 8 330 9 Manejo de excepciones........ sees +5533 La jerarquia de excepciones . : 334 Fundamentos del mangjo de excepeiones 334 Uso de try y catch 335 Un ejemplo simple de excepcién : 336 Las consecuencias de una excepcin no capturada......... 339 Las excepciones le permiten manejar con elegancia los errores cee 340 ‘Uso de varias instrucciones catch : 342 Captura de excepciones de subclases : 343 Es posible anidar bloques try. : 344 Lanzamiento de una excepeién : 346 Relanzamiento de una excepeién 346 Analisis detallado de Throwable 348 Uso de finally 350 Uso de throws : 382 Las excepciones integradas de Java. cee 354 Creacién de subclases de excepciones. . 356 Proyecto 9.1 Adicién de excepciones a la clase Cola : 359 Comprobacién de dominio del médulo 9 362 10 Uso de B/S .......+- ceseeeeees tteseeeeees coer 365 La B/S de Java esta construida sobre fiujos 366 Flujos de bytes y de caracteres cee 366 Las clases de flujos de bytes 367 Las clases de flujo de caracteres . 367 Los flujos predefinidos 367 Uso de los flujos de bytes . 370 Lectura de la entrada de la consola 370 Escritura de salida en la consola. . 372 Lectura y escritura de archivo empleando flujes de byte coe 373 Obtencién de entrada de un archivo. cee 374 Escritura en un archivo, . 376 Lectura y escritura de datos binarios 378 Proyecto 10.1 Una utileria de comparacién de archivos : 382 Archivos de acceso directo . 384 1 12 Uso de los flujos de caracteres de Java Entrada de consola empleando flujos de caracteres, lida de consola empleando flujos de caracteres EIS de archivo empleando flujos de caracteres Uso de File Writer Uso de FileReader Uso de los envolventes de tipo de Java para convertir cadenas numéricas, Proyecto 10.2 Creacién de un sistema de ayuda en disco Comprobacién de dominio del médulo 10 Programacién con varios subprocesos . « Fundamentos de los subprocesos miltipts. La clase Thread y la interfaz Runnable Creacién de un subproceso ‘Algunas mejoras simples Proyecto 11.1 Extensién de Thread Creacién de subprocesos miiltiples Cémo determinar cusindo termina un suaproceso Prioridades en subprocesos Sincronizacién Uso de métodos sineronizados La instruccién synchronized Comiiicacién ene subprocesos empleando notty(), wait() ynotifyANNO Un ejemplo que utiliza waitt) y notify(). Suspensién, reanudacién y detencidn de subprocesos. Proyecto 11.2 Uso del subproceso principal Comprobacién de dominio del médulo 11 Enumeraciones, autoencuadre e importacién de ntiembros estiticos .. Enumeraciones, Fundamentos de las enumeraciones... Las enumeraciones de Java son tipos de clases Los métodos values() y valueOft) . Constructores, métodos, variables de instancia y enumeraciones Dos restricciones importantes Las enumeraciones beredan Enum Proyecto 12.1 Un semaforo controlado por computadora Autoencuadte. Envolventes de tipo Fundamentos del autoencuadre Autoencuadre y métodos El autoencuadre/desencuadre ocurre en expresiones, Una palabra de advertencia Importacién de miembros estiticos Contenido 387 388 391 393 393 394 396 399 406 407 408 409 410 43 41s 418 421 424 428 428 431 434 435 440 444 » 446 2447 448, 449, 452 452 454 456 456 458 464 465 467 468 470 ani 472 xv xvi 13 14 Fundamentos de Java Metadatos, Comprobacién de dominio del médulo 12 Elementos genéricos . Fundamentos de los elementos genéricos Un ejemplo simple de elementos genéricos Los elementos genéricos s6lo funcionan con objetos Los tipos genéricos difieren con base en sus argumentos de tipo Una clase genérica con dos parémetros de tipo La forma general de una clase genérica Tipos limitados Uso de argumentos comodin Comodines limitados Métodos genéricos Constructores genéricos. Interfaces genéricas Proyecto 13.1 Cree una cola genética, Tipos brutos y eédigo heredado. Borrado Errores de ambigiiedad ‘Algunas restricciones genéricas, No pueden crearse inslancias de pardmettos de tipo Restticciones en miembros estiticos Restricciones genéricas de matriz. Restriccién de excepciones genéricas Continuacién del estudio de tos elementos genéricos, Comprobacién de dominio del médulo 13 Applets, eventos y temas diversos Fundamentos de los applets Organizacién del applet y elementos esenciales La arquitectura del applet Esqueleto completo de un applet Inicializacién y terminacién de applets Solicitud de repintado E] método update) Proyecto 14.1 Un applet simple de leteero Uso de fa ventana de estado Paso de parimetros a applets. Laclase Applet Manejo de eventos El modelo de evento de delegacién. Eventos Origenes de eventos 476 479 = 481 482 483 487 487 488 490 490 494 498 501 504 505 508. S13 516 57 519 519 520 520 522 522 522 = 525 526 530 530 531 532 533 534 535 939 540 542 544 544 544 545 Contenido xvii Bscuchas de eventos 545 Clases de eventos : 545 Interfaces de escuchas de eventos : 546 Uso del modelo de evento de delegacién 548 Manejo de eventos del raton, sevens 548 Un applet simple de evento de ratén . . 549 Mis palabras clave de Java . 552 ‘Los modificadores transient y volatile : 552 instanceof. 553 strictfp, : 553 assert o 553 Métodos nativos.. : 554 {Qué sucede a continuacién?, 555 Comprobacién de dominio del médulo 14 536 A. Respuestas a las comprobaciones de dominio . +857 Uso de comentarios de documentacién de Java. serene 603 Las etiquetas de javadoc : - 604 @author 605 {@code}... 60s @deprecated. . 60S {@docRoot} : : 606 @exception.. .. . . 606 {@inheritDoc} 606 {@link} .. . ceo 606 {@linkplain} 606 (@literal} 606 @param . cece tees = 607 @retum, vee : 607 @see cece 607 @serial . . : 607 @serialData 608 @serialFicld : 608 @since : 608 @throws...... : 608 {@value} 608 @version. : 609 La forma general de un comentario de documentaciOn.......60ceecveeeecseee = 609 {GA qué da salida javadoc? . bee 609 Un ejemplo que usa comentarios de documentacién. : 610 dice sete 613 Prefacio Jn: el lenguaje més importante de Internet. Més aiin, es el lenguaje universal de los programadores Web en todo el mundo, Para ser un desarrollador Web profesional es necesario ddominar Java, Por lo tanto, si su futuro se encuentra en ia programacién en Internet, ha clegido el fenguaje correcto; y ese libro le ayudard a aprenderlo, El objetivo es ensefarle los fundamentos de la programacién en Java. En est libro encontrar tin método que se desarrolla paso a paso, junto con numerosos ejemplos, pruebas de autocvaluacién ¥ proyectos. Debido a que se parte de la premisa de que usted mo cusnta con experiencia previa en programacién, ef libro inicia con los fundamentos, €s decir, con la manera, por ejemplo, de compilar y cjecutar un programa en Java. Luego se analiza cada palabra clave en este lenguaje y se coneluye con algunas de ls caracteristicas mis avanzadas de Java, como la programacidn con varios subprocesos, las opciones genéricas y los applets. Hacia el final de libro, usted tendré un fine conocimiento de los elementos esenciales dela programacién en Java Es importante establecer desde el principio que este libro sélo representa un punto de partida Java va mis alld de los elementos que definen el Lenguaje pues incluye también amplias bibliotecas y herramientas que ayudan al desarrollo de programas. Mas ain, Java proporciona un conjunto Sofisticado de bibliotecas que manejan (a interfaz de usuario del explorador. Para ser un programador profesional en Java. se require también el dominio de estas éreas. Al finalizar este libro, usted tendré los conocimientos para dar seguimiento a cualquier otro aspecto de Java, xix XK Fundamentos de lava La evolucién de Java Solo unos cuantos Jenguajes han cambiado de manera importante la esencia de la programacién. En este selecto grupo, uno de ellos se destaca debido a que st impacto fue rapido y de gran alcance. Este lenguaje es, por supuesto, Java, No resulta exagerado afirmar que el lanzamiento original de Java 1.0 en 1995 por parte de Sun Microsystems caus6 una revolucién en ta programacién que trasforms dde manera radical Web y lo convirtié en un entorno enotmemente interactivo. En el proceso, Java establecio un nuevo estandar en el disefio de lenguajes para computadoras. Con los afios, lava sigui creciendo, evolucionando y redefinigndose en distintas formas. A diferencia de muchos otros lenguajes que se muestraa lentos para incorporar nuevas caracteristicas, Java ha estado de manera continua al frente del diserto de Lenguaje pare computadoras, Una razén de ello es la cultura de innovacién y cambio que lo ha rodeado. Como resultado, este lenguaje recorrido varias actualizaciones (algunas relativamente pequeiias y otras de mayor importancia), La primera actualizacién importante de Java fue la version 1.1. Las funciones agregadas en Java 1.1 fueron mas sustanciales de lo que se pensaria a partir del pequefio aumento en el numero de versi6n. Por ejemplo, Java 1.1 agregé muchos elementos nuevos de biblioteca, redefinié la manera en que se manejaban los eventos y reconfiguré muchas caracteristcas de ta bibliateca original de la versién 1.0. La siguiente versidn importante de Java fue Java 2, donde el 2 indicaba “segunda generacién” La ereacisn de Java 2 constituy un parteaguas y marcé et inicio de la “era moderna” de Java. La primera versién de Java 2 Nevo el nimero de version 1.2, Resulta extrafio que la primera versién de Java 2 utilizara el niimero de version 1.2. El nimero aludia originalmente a la version interna de las bibliotecas de Java, pero luego se generalizé para aludir a toda la versién, Con Sava 2, Sun reempaguetd el producto Java como J2SE (Java 2 Platform Standard Edition) y el miimero de versién empez6 a aplicarse a ese producto, La siguiente actualizacion de Java fue 2 importante de la versién original de Java 2, pues, en su mayor parte, contenia adiciones a las Funciones, existentes y le “apreté las tuercas” al entomo de desarrollo, La versin de J2SE 1.4 mejoré Java ain is, Fsta version contena nuevas e importantes funciones, incluidas las excepciones encadenadas, la E/S de canal y la palabra clave assert. La iltima version de Java es la J2SE 5. Aunque cada uns de las actualizaciones anteriores de Java ha sido importante, ninguna se compara en escala, tamafio y aleance con la J2SE 5. jEsta ha cambiado cde manera fundamental el mundo de Java! 1.3. Esta versién de Java fue la primera actualizacién Prefacio xxi J2SE 5: la segunda revolucién de Java Java 2 Pitform Standard Edition version 5 (J2SE 5) marca el inicio de la segunda revolucién de Sava JOSE 5 agrega muchas funciones nuevas a Java que cambian de manera fundamental el carécter del lenguaje aumentando su capacidad y su aleance. Estas adiciones son tan profundas que modificarén para siempre la manera en que se escribe el cédigo de Java, No se puede pasar por alto la fuerza revolucionaria de J2SE 5. Para darle una idea del alcance de los cambios originados por J2SE 5, be aqui una lista de las nuevas caracteristicas importantes que se cubren en este libro. + Elementos genéricos + Autoencuadre/desencuadre + Enumeraciones + El bucle mejorado for del estilo “for-each” + Argumentos de longitud variable (varargs) + Importacién estitica + Metadatos (anotaciones) No se trata de una lista de cambios menores o actualizaciones incrementales. Cada element de la lista representa una adicién importante al lenguaje Java. Algunos, como los elementos genéricos, e4 for mejorado y los varargs introducen nuevos elementos de sintaxis. Otros, como el auitoencuadre y el autodesencuadre, modifican la semantica del lenguaje. Los metadatos agregan una dimension completamente nueva a la programacién, En todos los casos, se han agregado funciones nuevas y sustanciales La importancia de estas nuevas funciones se refieja en el uso de la versién ntimero 5, Normalmente, el niimero de version siguiente para Java habria sido 1.5; sin embargo, los cambios y Jas nuevas funciones resultan tan importantes que un cambio de 1.4 a 1.5 no expresaria la magnitud de éste. En lugar de ello, Sun decidié Hlevar el nimero de version a 5, como wna manera de destacar que un evento importante se estaba gencrando. Asi, el producto actual es el denominado J2SE 5 y el kit para el desarrollador es el JDK 5. Sin embargo, con el fin de mantener la consistencia, Sun decidid usar 1.5 como miimero interno de la versién. De ahi que 5 sea el niimero externo de la versién y 1.5 sea el interno, xxii Fundamentos de Java Debido a que Sun usa el 1.5 como niimero intemo de Ia versién, cuando le pida al compilador su versién, éste responderd con 1.5 en lugar de 5. Ademis, la documentacién en linea proporcionada por Sun utiliza 1.5 para aludir a las funciones agregadas en el J2SE 5. En general, cada vez que vea 1.5, simplemente significa 5, Se ha actualizado por completo este libro a fin de que incluya las nuevas funciones agregadas en JOSE 5. Para manejar todos los nuevos materiales, se agregaron dos médulos completamente nuevos ‘esta edicién, En el médulo 12 se analizan las enumeraciones, el autoencuadre, ta importacién estitica y los metadatos, mientras que en el médulo 13 se examinan los elementos genéricos. Las descripciones del bucle for del estilo “for-each” Jos médulos existentes. los argumentos de longitud variable se integraron en Cémo esté organizado este libro En este libro se presenta un tutorial en el que los avances se producen a un ritmo constante y en el que cada seccién parte de lo aprendido en la anterior. Contiene 14 médulos, y en cada uno de ellos se analiza un aspecto de Java, Este libro es jinico porque incluye varios elementos especiales que refuerzan lo que usted ha aprendido. Habilidades fundamentales Cada médulo empieza con un conjunto de las habilidades fundamentales que usted aprendera y se indica, ademas, la ubicacion de cada habilidad Revision de habilidades dominadas ‘Cada médulo concluye con una revisién del dominio de las habilidades, es decir, con una prueba de autoevaluacién que le permite probat sus conocimientos. Las respuestas se presentan en el apéndice A. Revision de los avances Al final de cada seecion importante, se presenta una revisién de los avances mediante la cual probara su comprensién de los puntos clave de la seccién anterior. Las respuestas a estas preguntas se encuentran en la parte inferior de la pagina Pregunte al experto Dias porto io se eeuentanrecaios expec de Preguntalexent contienen informacién adieional o comentarios importantes acerca de ur tema, y emplean un formato deren y esp Estos Prefaclo xxiii Proyectos Cada médulo contiene uno o mas proyectos que le muestran cémo aplicar lo aprendido. Se trata de ejemplos realistas que podré usar como puntos de partida para sus propios programas. No se necesita experiencia previa en programacién En este Iibro no se parte de la premisa de que usted cuenta con experiencia previa en programacién. Por lo tanto, podra consultar este libro aunque nunca antes haya programado, Sin embargo, si cuenta con cierta experiencia en programacién, avanzara un poco mis rapido. Asimismo, tenga en cuenta que Java es diferente, en varios sentidos, a otros lenguajes populares de programacién, asi que es importante que no vaya directamente a las conclusiones. Por consiguiente se le aconseja, aun a los, programadores experimentados, una lectura cuidadosa. Software necesario Para ejecutar y compilar los programas de este libro, necesitard la versién mas reciente del kit de desarrollo de Java (Java Development Kit, JDK) de Sun que, al momento de la publicacion del presente libro, era Java 2 Platform Standard Edition, versién 5 (J2SE 5). En el médulo I se proporcionan las instrucciones para obtenerlo, Siesté usando una version anterior de Java, como J2SE 1.4, podré usar aii este libro, pero no podré compilar y ejecutar los programas que usan las nuevas funciones agregadas en J2SE 5, No lo olvide: el cédigo esti en Web Recuerde, el cddigo fuente de todos los ejemplos y proyectos de este libro estan disponibles, sin costo, |-edueacion.com. en el sitio Web www.megraw-t xxiv Fundamentos de Javo Para conocer aun mds Fundamentos de Java es su puerta a la serie de libros de programacién de Herb Schildt. He aqui algunos otros libros que podrian resultarle de interés. Para aprender més acerca de la programacién en Java, recomendamos los siguientes titulos: + Java: The Complete Reference, J2SE $ Edition + The Art of Java Para aprender acerca de C++, estos libros le resultardn especialmente tiles: + Cts The Complete Reference + Teach Yourself C+ + C++ from the Ground Up + STL Programming from the Ground Up + The Art of C++ Para aprender acerca de Ci, sugerimos: + Ch: A Beginner's Guide + CH: The Complete Reference Si quiere aprender més acerca del lenguaje C, entonces los siguientes titulos le interesaran’ + C: The Complete Reference + Teach Yourself C Cuando necesite de respuestas sélidas, consulte a Herbert Schildt, Ia autoridad més reconocida en programacién. Modulo 1 Fundamentos de Java TTT SS Wd 1.2 1.3 1.4 1.5 1.6 1.7 18 19 1.10 111 1.12 Conozca la historia y filosofia de Java Comprenda la contribucién de Java a Internet Comprenda la importancia del cédigo de bytes Conozca la terminologia de Java Comprenda los principios fundamentales de la programacién orientada a objetos Cree, compile y ejecute un programa simple de Java Use variables Use las instrucciones de control if y for Cree bloques de eédigo Comprenda la manera en la que se posicionan, sangran y terminan las Instrucciones Conozca las palabras clave de Jova Comprenda las reglas para los identificadores de Java Sdulo 1: Fundamentos de Java E | erecimiento de Internet y World Wide Web cambiaron de manera fundamental fa forma de la computacién. En el pasado el ciber paisaje estaba dominado por las PC independientes y aisladas. Hoy dia, casi todas las PC estin conectadas con Internet que, por si mismo, se ha transformado pues al principio ofrecia una manera conveniente de compartir archivos ¢ informacion y en la actualidad se ha convertido en un universo computacional enorme y distribuido. Con estos cambios, una nueva ‘manera de programar surgi: Java Java es mas que un lenguaje importante de Internet: revolucioné la programacién cambiando la manera en Ja que pensamos acerca de la forma y la funcién de un programa. Hoy dia, para ser un programador profesional se requiere la capacidad de programar en Java: asi de importante es, A medida que avance en la lectura de este libro, aprenderd las habilidades necesarias para dominarlo, El objetivo de este médulo es proporcionar una introduccién a Java, inctuyendo su historia, su diseio, su filosofia y varias de sus caracteristicas mas importantes. Por mucho, lo més dificil acerca del aprendizaje de un lenguaje de programacién es el hecho de que no existen elementos aislados, sino que Jos componentes del lenguaje funcionan de manera conjunta. Esta interrelacién resulta especialmente significativa en Java, En realidad, es dificil analizar un aspecto de Java sin incluir o'ros aspectos. Para ayudar a superar este problema, en este médulo se proporciona una breve presentacion general de las Funciones de Java como, por ejemplo, la forma general de un programa, algunas estructuras bésicas de control y los operadores. Aunque no se profundizaré mucho, enfatizarén los conceptos generales que le son comunes a cualquier programa de Java tuna Fut HEB] Los origenes de Java La innovacién en los lenguajes computacionales est determinada por dos factores: mejoras en el arte de la programacién y cambios en el entomo del cémputo. Java no es la excepcién, Aprovechando la rica herencia de Cy C+, Java oftece un mayor refinamiento y funciones que reflejan el estado actual del arte de la programacién. Respondiendo al surgimiento del entomo en linea, Java ofrece funciones que moderizan la programacion con el fin de desarrollar una arquitectura altamente distrbuida, James Gosling, Patrick Naughton, Chris Warth, Ed Frank y Mike Sheridan concibieron Java en Sun Microsystems en 1991. A este lenguaje se le lam inicialmente “Oak” peto se le renombré “Java” cen 1995, Sorpresivamente, jInternet no fue el objetivo original de Java! La motivacién principal, cen cambio, fue la necesidad de un lenguaje que fuer independiente de la plataforma y que pudiera cemplearse para crear un software que estuviera incrustado en varios dispositivos electrénicos para uso del consumidor, como tostadoras, hornos de microondas y controles remotos. Como usted ya probablemente adiviné, se usan muchos tipos diferentes de CPU como controladores. El problema es que la mayor parte de Jos lenguajes de cémputo estan diseiados para compilarse con un destino especifico, Pensemos, por ejemplo, en C+ Aunque es posible compilar una pagina de C+ para cualquier tipo de CPU, para ello se requiere un compilador completo de C+ orientado a ese CPU. Sin embargo, el problema es que los compiladores son caros y su creacién requiere mucho tiempo. En el intento de encontrar una mejor solucin, Gosling y sus demas compafieros trabajaron en un lenguaje portable, de plataforma cruzada que pudiera producir un eédigo que se ejecutara en diversos CPU bajo entornos diferentes. Este esfuerzo culminé en la ereacion de Java, ndamentos de Java Por la época en la que se trabajaba en los detales de Java, surgié un segundo factor que resulté més importante y que desempefiaria un papel crucial en el futuro de Java. Por supuesto, esta segunda fuerza fue World Wide Web, En el caso de que Web no hubiera tomado forma casi al mismo tiempo en que se dio Ja implementacién de Java, ést ditinno habria conservado su uilidad pero se habria mantenido como un Tenguaje oscuro para la programacién de los aparatos electrénico antes meneionados. Sin embargo, con el surgimiento de Web, Java fue impulsado al primer plano det disefio de lenguajes de cémputo, debido a que Web exigia tambien programas portables. La mayoria de los programtadores aprenden al principio de su carrera que los programas portables son fai evasivos como deseables. Mientras que el desafio de hallar una manera de crear programas eficientes y portables (independientes de la plataforma) es casi tan antiguo como Ia propia disciplina de la programacién, dicho desafio habia pasado a un segundo plano en relacién con otros problemas mas relevantes. Sin embargo, con el surgimiento de Internet y Web, el viejo problema de la portabilidad volvi6 para tomar revancks. Después de todo, Internet es un universo diverso, distribuido ¥y poblado con muchos tipos de computadoras, sistemas operativos y CPU, Hacia 1993 resulté obvio para los miembros del equipo de disefo de Java que los problemas de portabilidad que comiinmente surgen cuando se erea un cédigo para controladores incrustados, surgen también al momento de tratar de ctear un eédigo para Internet. Este descubrimiento logré que el centro de atencién de Java cambiara de los aparatos electrSnicos para el consumidor ala programacién para Internet, De este modo, aunque e deseo de desarrollar un lenguaje de programacién de arquitectura neutral constituyé le chispa inicial, Internet Fue el que finalmente condujo al éxito de Java a gran escala Cémo se relaciona Java con C y C++ Java esta relacionado directamente con Cy C++. Hereda su sintaxis de C y su modelo de objeto esti adaptado a partir de C++, La relacién de Java con C y C+ es importante por varias razones. En primer lugar, muchos programadores estan familiarizados con la sintaxis de C, C++, o ambus. Este hecho le facilita a un programador de C 0 C++ aprender Java y, de igual manera, a un programador de Java aprender C 0 C++. En segundo lugar, los disefiadores de Java no “reinventaron Ia rueda”, sino que refinaron alin mas ‘un paradigma de programacién que habia tenido mucho éxito. La época moderna de la programacién ‘empez6 con C. Cambis a C++ y ahora a Java. Al heredar y basarse en esa rica herencia, Java proporciona un entomo de programacién poderoso y légicamente consistente que tome 0 mejor del pasado y agrega nuevas funciones que el entomo en linea requiere. Tal vez io més importante sea que, debido a sus similitudes, C, C+ y Java definen un macco de trabajo conceptual comiin para el programador profesional. Los programadores ao enfrentan mayores fisuras cuando cambian de un lenguaje a otro Una de las fifosofias centrales de C y C+ en cuanto al diseito es que el programador es la persona que tiene el control. Java hereda también dicha filosofia. Con excepeién de fas restricciones impuestas por el entomo de Internet, Java le proporciona a usted, es decir, el programador, un control total, Si usted programa bien, sus programas asi lo eflejaran. Si programa de manera deficiente, sus programas igualmente lo reflejarin. En otras palabras, Java no es un lenguaje para aprender: €s un lenguaje para programadares profesionsles, 3 de avs ndamento: 4 Médulo 1: Fundamentos de Java Java cuenta con otro atributo en comiin con C y C++: fue disefiado, probado y afinado por programadores reales y en activo. Es un lenguaje surgido de las necesidades y la experiencia de la gente que lo concibi6, En este semtido, no existe una mejor manera de producir un lenguaje profesional de altos vuelos. Debido a las similitudes entre Java y C++, sobre todo en el soporte que brindan a la programacién orientada a objetos, resulta tentador pensar en Java como la simple “versién de C++ para Internet”. Sin embargo, ello seria un error pues Java tiene importantes diferencias pricticas y filoséficas, Aunque fue influido por C+, no es una versién mejorads de éste (por ejemplo, no es compatible ni hacia arriba ni hacia abajo con C++). Por supnesto, las similitudes con C++ son significativas; por lo tanto, si usted 5 un programader de C++, se sentité como en casa con Java. Otro punto: Java no fue disefiado para reemplazar a C++: fue diseiado para resolver wn cierta conjunto de problemas, mientras que C++ fue diseRado para resolver otro conjunto diferente. Ambos coexistirin durante muchos afies ms, Cémo se relaciona Java con C# Recientemente ha llegado a escena tin nuevo lenguaje llamado Ci, Creado por Microsoft para dar soporte a su NET Framework, C# esti intimatnente relacionado con Java. En realidad, muchas de las funciones de C# se adaptaron directamente de Java, Tanto Java como C# compasten una mista sintaxis general semejante a C++, soporta la programacién distribuida y utilizan el mismo modelo de objeto. Por supuesto, hay diferencias entre lava y CH, pero el aspecto y el manejo de estos lenguajes es muy similar. Esto significa que si ya conoce C#, le serd especialmente facit aprender Java, De manera que si va a utilizar C# en el futuro, entonces su conocimiento de Java le sed itil Dada fa similitud entre Java y CH, parece natural preguntar, ";C# reemplazara a Java?” La respuesta es No. Java ¥ Ci estan optimizados para des tipos diferentes de entomos de cémputo. Asi como C++ y Java coexistitén por mucho tiempo, también lo hardin C# y Java, Comprobacién de avance 1. Java es itil para Internet porque puede producir programas 2. De eniles lenguaies desciende directamente Java? Fundamentos de Java 5 HABILDAD 1 ‘wou BE! | contribucién de Java a Internet Intemet ayude a eatapultar a Java al primer plano de la programacién, y Java, a su vez, ha tenido un profundo efecto en Internet, La razén es muy simple: Java expande el universo de los objetos que pueden desplazarse libremente por el ciberespacio. Fn una red hay dos categorias muy amplias de objetos que se transmiten entre el servidor y sx computadora personal: informacién pasiva y programas dinamicos y pasivos. Aunque descargue un programa, el cédigo de éste sélo contendra datos pasivos hasta que lo ejecute. Sin embargo, es posible transmitir a su computadora un segundo tipo de objeto: wn programa dindmico, que se autoejecute. Este tipo de programa constituye un agente activo en la computadora cliente, pero es iniciado por el servidor. Por ejemplo, el servidor podria proporcionar un programa para desplegar apropiadamente los datos que esté enviando. Aunque los programas en red son deseables y dindmicos, también presentan problemas serios en las reas de seguridad y portabilidad. Antes de Java, el ciberespacio estaba totalmente cerrado para Ja mitad de las entidades que ahora viven alli, Como vers, Java atiende estas preocupaciones y, al hacerlo, ha definido una nueva forma de programa: el applet. tivos. Por ejemplo, cuando lee su correo electrénico esté viendo datos Los applets de Java Un applet es un tipo especial de programa de Java que esti disefindo para transmitirse en Inter que se ejecuta automaticamente en un explorador Web compatib. descarga bajo dernanda, como cualquier imagen, archivo de sonido o clip de video. La diferencia mas importante es que un applet es un programa inteligente, no s6lo una animacion o un archivo multimedia y ‘on Java, Mas atin, un applet se En otras palabras, un applet es un programa que puede reaccionar a las entradas del usuario y cambiar dindmicamente (no s6lo ejecutar la animacién y el sonido una y otra vez). Sibien los applets de Java son excitantes, slo serian ideas deseables si Java no atendiera dos problemas fundamentales asociados con ellos: la seguridad y la portabilidad, Antes de seguir adelante, definamos lo que estos dos términos significan en relacién con Intemet, Seguridad ‘Como seguramente ya lo sabe, cada vez que descarga un programa “normal”, se pane en riesgo de una infeccién por virus. Antes de Java, la mayoria de fos usuarios no descargaban programas ejecutables con frecuencia y, quienes lo hacian, revisaban que éstos no tuvieran virus antes de su gjecucton. Atin asi, la mayoria de los usuarios se preocupaban todavia por la posibilidad de la n de sus sistemas con un virus 0 por permitir que programas malintencionados se ejecutaran libremente en sus sistemas. (Un programa malintencionado puede recolectar informacién privada, infos como nimeros de tarjetas de crédito, saldos de cuentas bancarias y contrasefias al revisar el contenido del sistema de archivos de su computadora.) Java responde a estas preocupaciones al proporcionar un “firewall entre una aplicacién en red y su computadora, Médulo 1: Fundamentos de Java Cuando asa un explorador Web compatible con Java, es posible descargar applets de Java de ‘manera segura, sin miedo a una infeecién por virus. La manera en la que Java lo logra es mediante la confinacién de un programa de Java al entomo de ejecucién de Java y el impedimento que impone de acceder a otras partes de la computadora, (En breve vera eémo se logra esto.) Francamente, la spacidad de descargar applets con la confianza de que no dafiara la computadora cliente consttuye el aspecto mis significativo de Java Portabilidad Como se analizé antes, muchos tipos de computadoras y sistemas operativos estén conectados con Internet. Para que los programas se descarguen dinémicamente a todos los tipos distintos de plataformas, se necesitan algunos medios para generar un cédigo ejecutable que sea portable. Como verd pronto, el mismo mecanismo que aytida a establecer la seguridad también ayuda a crear la portabilidad. Por supuesto, la solucidn de Java a estos dos problemas resulta refinada y eficiente. suo AND, La magia de Java: el cédigo de bytes La clave que permite a Java resolver los problemas de seguridad y portabilidad que se acaban de deseribir es que la salida de un compilador de Java no es un cédigo ejecutable, sino un cédigo de bytes. El cddigo de bytes es un conjunto altamente optimizado de instrucciones disefiado para que sea ejecutado por el sistema de Java en tiempo de ejecucién. A dicho sistema se le denomina maquina virtual de Java (Java Virtual Machina, JVM), es decir, la méquina virtual de Java es un intéxprete de cédigo de bytes Esto puede resultarle un poco sorprenidente. Como sabe, la mayor parte de los lenguajes modemos, como C+, estn disefiados para la compilacién, no la interpretacidn (sobre todo debido a problemas de desempetio). Sin embargo, el hecho de que un programs de Java se ejecute en la JVM ayuda a resolver Jos principales problemas relacionados con fos programas descargados én Internet. He aqui por que. La traduecidn de un programa de Java en cédigo de bytes facilita la ejecucién de un programa en una gren variedad de entomos. La razén es sencilla: solo la maquina virtual de Java necesita implementarse en eada plataforma. Una vez que existe el paquete en tiempo de ejecucién para un sistema dado, cualquier programa de Java puede ejecutarse en él. Recuerde que, a pesar de que los detalles de la JVM seran diferentes entte plataformas, todas las JVM comprenden el mismo cédigo de bytes de Java, Si se compilara un programa de Java en eddigo nativo, entonces tendrian que existir diferentes versiones del mismo programa para cada tipo de CPU conectado a internet. Claro esté que ésta no es una solucién factible. Por lo tanto, la interpretacidr def eddigo de bytes es la manera mas facil de crear programas realmente portables. El hecho de que un programa de Java sea interpretado ayuda también a que sea seguro. Debido a que la ejecucién de todos tos programas de Java esté bajo el control de la JVM, ésta puede contener al programa y evitar que genere efectos colaterales fuera del sistema. La seguridad se mejora también con ciertas restricciones del lenguaie. Por lo general, cuando se interpreta un programa, éste se ¢jecuta de manera sustancialmente més lenta de lo que lo que se ejecutaria si se compilara en cédigo ejecutable. Sin embargo, con Java la diferencia suo Fue Fundamentos de Java entre ambos cédigos no es muy grande: el uso de un eédigo de bytes permite que el sistema de Java en. tiempo de ejecuciémejecute el programa mucho mis répido de lo que se esperaria ‘Aunque Java se disefd paca la interpretacién, técnicamentte nada impide que compile al vuelo et cédigo de bytes en cédigo nativo. Por ‘el motivo, Sun empez6 proporcionando su tecnologia HotSpot ppoco después del anzamiento inicial de Java, HotSpot proporciona un compilador JIT (Just In Time justo tiempo) para el eédigo de bytes. Cuando un compilador JIT es parte de la. JVM compila, en tiempo real, el cédigo de bytes en codigo ejecutable, parte por parte, de acuerdo con la demanda. Es importante comprender que no es posible Compilar todo un programa de Java en cédigo ejecutable de una sola vez debido a que Java realiza varias comprobaciones que s6lo pueden realizarse 2 tiempo de ejecuciion. En cambio, el JIT compila el cédigo conforme se requiera durante la ejecucién, Mas ai ro todas las secuencias del cédigo de bytes estén compiladas (s6lo aquellas que se beneficiarén con la compilacién). El cédigo restante simplemente se interpreta, Sin embargo, el método de justo a tiempo proporciona, de cualquier modo, una importante sejora en el desemperio. Aunque la eompitacién dinmica se aplica al cédigo de bytes, las caracteristicas de portabilidad y seguridad todavia aplicaran, pues el sistema en tiempo de ejecucién (el cual realiza la compilacién} estard aiin a cargo del entomo de = sjecucién, i Terminologia de Java Ninguna revisién general de Java estaria compieta sin que antes se diera un vistazo a la terminologia de Java, Aunque las fuerzas fundamentales que se necesitaton para la invencién de Java son la : portabilidad y la seguridad, otros factores desempeiiaron wn papel importante en el modelado de la forma final del lenguaje. E] equipo de diseiio de Java resumié las consideraciones clave, estén en la siguiente lista de términos. Simple Java tiene un Conjunto conciso y cohesivo de funciones que focilitan su aprendizaie y vsa Seguro Javo propoiciona un medio seguro de crear aplicaciones de Iniernet _ Portable los programas de Java pueden ejecutarse en cuclauier enlorno para el cual haya un sistema de Jovo en tiempo de ejecvcién Orientado @ objetos Java encorna Io flosofia mederna de programacién orientada @ objetos Rebusto Java aliento una. programacién libre de errores, pues requere una escritvreestricta y realizar comprobaciones en tiempo de ejecucién, Subprocesos milliples_lava proporciona un soporte inlegrado pate la progremacién de aubprocesos miliples, ‘Arquitectura nevira Java no est unido a una maquina 0 una arquiteciura especificas de sistema operative Interpretado Java soporta un cédigo de plataforma cruzada mediante el uso de un cédigo de bytes de Jove: _ ‘Alto desempeio_Elcdigo de bytes de Jova esté aliamente optimizado para que se elecule rapidamente, Distibuido Java fue disefiado tomando en consideracién el entomno distibuido de Internet Dindmico Los programas de java incluyen importantes cantidades de informacion que son del tipo-de tiempo de ejecucién. Esta informacién se usa pora verificar y resolver el acceso a objetos al momento de realizar la ejecucién, 8 Médulo 1: Fundamentos de Java Pregunte al experto P: Para atender los temas de la portabilidad y la seguridad, gpor qué fue necesario crear un nuevo lenguaje de computacién como Java, zpor qué no se adapt6 un lenguaje como C++? En otras palabras, zno podria crearse un compilador de C++ que dé salida a un cédigo de bytes? Aunque serfa posible que un compilador de C++ generara un cédigo de bytes en lugar de un cédigo ejecutable, C++ tiene funciones que no recomiendan utilizarlo para la creacion de applets; la més importante de ellas es el soporte a apuntadores de C++. Un apuntador es la direccién de algin objeto almacenado en la memoria. Con el uso de un apuntador, seria posible acceder a recursos fuera del propio programa, lo que daria como resultado una brecha de seguridad. Java no soporta apuntadores, con fo cual se elimina dicho problema. Comprobacién de avance 1. {Qué es un applet? 2. {Qué es el eddigo de bytes de Java? 3. {Cuiles son los dos problemas que el uso de cédigo de bytes ayuda a resolver? una pen Programacién orientada a objetos En el corazén de Java se encuentra la progeam: n orientada a objetos (programacién orientada a objetos, Object Oriented Programming). La metodologia orientada a objetos es inseparable de Java, y todos los programas de Java son, hasta cierto punto, orientados @ objetos. Debido a la importancia de la programacién orientada a objetos, resulta itil comprender los principios basicos de ésta antes de escribir incluso el més simple prograina de Java. La programacién orientada a objetos es una manera poderosa de aftontar el trabajo de programacién. Las metodologias de programacién han cambiado de manera importante desde la invencion de la computadora, principalmente para adecuarse a Ia creciente complejidad de los programas, Por ejemplo, cuando se inventaron las computadoras, la progtamacién se hacia al mover interruptores para ingresar las instrucciones binarias empleando el panel frontal de la computadora, Un applet es un pequeto programa que se descarga dindmicamente de Web 2, Un conjuntoaltamente optimizado de instrucciones que pueden ejecutarse en el intérprete de Java, 3, Portabilidad y seguridad Fundamentos de Jova Siempre y cuando los programas tuvieran unos cuantos cientos de instrucciones, este método funcionaba. A medida que los programas erecieron, se invent6 e} lenguaie ensamblador para que tun programador pudiera tratar con programas més grandes y de complejidad creciente empteando representaciones simbélicas de las instrucciones de la maquina. A medida que los programas siguieron creciendo, se introdujeron lenguajes de nivel superior que proporcionaron al programador mas ‘berramientas con las cuales manejar la complejidad. El primer lenguaje de amplia difusin fue, por supuesto, FORTRAN, Aunque éste representé un primer paso impresionante, FORTRAN dificilmente es un lengua La década de 1960 vio nacer la programacién estructurada. Es et métndo estimulado por lenguajes como C y Pascal. Bl uso de lenguajes estructurados permitié escribir con mucho mayor facitided programas de complejidad moderada. Los lenguajes estructurados se caracterizan por su soporte de subrutinas independientes, variables locales y constructs de control, asi como por st falta de dependencia de GOTO. Aunque los lenguajes estructurados constituyen una herramienta poderosa,, alcanzan su limite coanda un proyecto se vuelve demasiado grande. ‘Tome en consideracién lo siguiente: en cada momento clave del desarrollo de la programacién, se crearon técnicas y herramientas que permitieron al programador tratar con una complejidad creciente. ‘A.cada paso, el nuevo método tomé los mejores elementos de los métodos anteriores y los hizo avanzar. ‘Antes de Ia invencién de la programacién orientada a objetos, muchos proyectos estuvieron cerca del punto en que el método estructurado ya no funcionaba (0 lo rebasaron), Los métodos orientados a objetos ‘se crearon para ayudar a los programadores a rebasar estos limites, La programacion orientada a objetos retomé las mejores ideas de la programacidn estructurada y las combiné con varios conceptos nuevos. Et resultado fue una nueva manera de organizar un programa. En el sentido més general, un programa puede organizarse mediante una de as siguientes dos maneras: alrededor de st cédigo (lo que esta sucediendo) 0 alrededor de sus datos (lo que se esté afectando). Con et uso exclusivo de las téenicas de programacién estructurada, los programas Se encuentran tipicamente organizados alrededor del c6digo. A este método puede considerarsele como “an e6digo que actia sobre los datos” Los programas orientados a objetos funcionan de manera diferente: estin organizados alrededor de los datos y el principio clave es que “los datos controtan el acceso al c6digo”. En un lenguaje orientado a objetos, usted define los datos y las rtinas a las que se les permite actuar sobre los datos, Por lo tanto, un tipo de datos define de manera precisa el tipo de operaciones que puede aplicarse a esos datos. Para soportar los principios de la programacién orientada a objetos, todos los lenguajes orientados « objetos, incluido Java, tienen tres rasgos en comtin: encapsulamiento, polimorfismo y herencia, ‘Examiinemos cada uno de ellos. ‘que estimula la creacién de programas claros y ficiles de comprender. Encapsulamiento El encapsulamiento es un mecanismo de programacién que une al cédigo y a los datos que manipula y que los mantiene @ salvo de interferencias y de un mal uso externo. En un lenguaje orientado a objetos, el c6digo y los datos pueden unirse de tal manera que pueda crearse una caja negra de contenido independiente. Dentro de la caja estén todos los datos y el eédigo necesarios. Cuando el cddigo y los datos estin vinculados de esta manera, se crea un objeto, En otras palabras, un objeto es el dispositivo que Soporta el encapsulamiento. 10 Médulo 1: Fundamentos de Java Dentro de un objeto, el cédigo, os datos, o ambos, pueden ser privados, 0 piiblicos, en relacién con dicho objeto. Fl cédigo 0 los datos privados son conocidos para la otra parte del objeto, y sélo ésta puede tener acceso a ellos. Es decir, una parte del programa que se encuentra fuera del objeto no puede acceder al cédigo 0 los datos privados, Cuando el cédigo 0 los datos son piiblicas, otras partes de su programa pueden acceder a ellos aunque estén definidos dentro del objeto. Por lo general, las partes pulicas de un ‘objeto se usan para proporcionar tna interfaz controlada a los elementos privados de un objeto. La unidad bisica de encapsulamiento de Java es la clase. Si bien se examinardn las elases con mayor detalle en las paginas posteriores de este libro, el siguiente andlisis breve le serd de ayuda ahora. Una clase define la forma de tn objeto; especifica los datos y el eédigo que operarin sobre los, datos, Java usa una especificacidn de clase para construir objetos. Los objetos son instancias de una clase. Por consiguiente, una clase es, en esencia, un conjunto de planos que especifican la manera de construir un objeto, Al c6digo y los datos que constituyen una clase se les denomina miembros de la clase. De manera specifica, los datos definidos por la clase son denominados variables de miembro o variables de instancia, Método es el término que usa Java para una subrutina, Siesta familiarizado con Cl, C++, 0 ambos, le seri de ayuda saber que lo que un programador de Java denomina método, un programador de CICH+ lo denomina funcién. Polimorfismo Polimo fimo (del griego “muchas formas”) es la cualidad que permite que una interfaz acceda a tuna clase general de acciones. La accién especifica esta determinada por la naturaleza exacta de la situacién. El volante de un automévil representa un ejemplo simple de polimorfismo. El volante (es decir, la interfaz) es el mismo sin importar el tipo de mecanismo de conduccidn real que se emplee. En otras palabras, el volante funcionara de manera igual si su automévil tiene direccién manual, direccién hidriulica 0 de engranes. Por lo tanto, una vez que sepa cémo operar el volante, podra rmanejar cualquier tipo de automévil EI mismo principio se puede aplicar también a la programacién. Por ejemplo, tome en consideracién una pila (Ia cual es una lista del tipo primero en entrar y ltimo en salir). Podria tener tun programa que requiera tres tipos diferentes de pilas: una pila se usa para valores enteros, otta para valores de punto flotante y otra mas para caracteres, En este caso, el algoritmo que implemente cada pila sera el mismo, aunque los datos que se almacenen sean diferentes. En un lenguaje orientado a objetos necesitaria crear tres conjuntos diferentes de rutinas de pilas, y cada conjunto tendria que cemplear nombres diferentes. Sin embargo, debido al polimorfismo, en Java puede crear un conjunto ‘general de rutinas de pilas que funcione para las tres situaciones especificas. De esta manera, una vez que usted sabe cémo usar una pila, podra usarlas todas. De manera mas general, el concepto de polimorfismo suele expresarse con la frase “una interfaz varios métodos”. Esto significa que es posible disefiar una interfaz. genérica para un grupo de actividades relacionadas. £1 polimorfismo ayuda a reducir la complejidad al permitir que la misma interfaz sea usada para especificar una clase general de accién. Usted, el programador, no necesita llevar a cabo esta selecciér manualmente; s6lo necesita recordar y utilizar la interfaz general Fundamentos de Java «17 . 1 Herencia bo Herencia es el proceso mediante el cual un objeto puede adquirir as propiedades de otro objeto, Esto. resulta importante porque sopora el concepto de cusfiacion jerdrquica.En este sentido, la mayor: parte del conocimiento se puede manejar mediante clasificaviones jerérquicas (es decir, de arriba a abajo). Por ejemplo, una manzana roja es parte de la clasificacién marcana, que a su vez.es parte de la clase fruta, la cual se encuentra bajo la clase mas grande de alimento. Es decir, ia clase alimento posee ciertas cualidades (comestible, nutrtiva, et.) que también aplican, ldgicamente, ala subclase frura Ademas de estas cualidades, la clase fina tiene caracteristicas especificas (ugosa, dulce, ete.) que? la distinguen de otros alimentos, La clase manzana define las cualidades especificas de una manzana (crece en arboles, no es tropical, ete). Asi, una manzana roja heredarfa a su vez todas las cvalidades de todas las clases anteriores y s6lo definiria las cualidades que la hacen tnica, Sin el uso de jerarquias, cada objeto tendria que definirexplicitamente todas sus caracteristcas. Si utiliza la herencia, un objeto solo necesitaré defini esas cualidades que lo hacen tinico dentro de su cla De esta forma, el objeto puede heredar sus atributos generales a partir de su ascendiente y, por consiguiente, el mecanismo de la herencia hace posible que un objeto Sea una instancia especifica de un caso més general Comprobacién de avance : 1, Nombre los principios de la programacién orientada a objetos, 2. {Cual es la unidad bisica de encapsulamiento en Java? Pregunte al experto Ps Usted establecié que la programaci6n orientada a objetos es una manera efectiva de manejar programas largos. Sin embargo, al parecer dicha programacién podria afiadir una carga adicional a los programas pequefios, Debido a que usted mencioné que todos tos programas de Java estan, en cierta medida, orientados a objetos, ,esto impone una penaiidad a los programas mis pequefios? 3 No, Como vera, en el caso de programas pequefios, las funciones orientadas a objetos. de Java son casi transparentes. Aunque es verdad que Java sigue un modelo estricto de objeto, usted cuenta con un amplio poder de decision sobre el grado en el que lo emplea, Para el caso de programas mas pequeiios, sus caracleristicas orientadas a objetos apenas son perceptibles. A medida que sus programas crezcan, usted integrara mas caracteristicas orientadas a objetos sin mayor esfuerzo. Encapsulamiento, plimoyfismo y herencia, 2, Laclase

You might also like