piensa en java 2da edición

Download Piensa en java 2da edición

If you can't read please download the document

Post on 03-Nov-2014

405 views

Category:

Software

25 download

Embed Size (px)

DESCRIPTION

Piensa en java 2da edición Como cualquier lenguaje humano, Java proporciona una forma de expresar conceptos. Si tiene éxito, la expresión media será significativamente más sencilla y más flexible que las alternativas, a medida que los problemas crecen en tamaño y complejidad. No podemos ver Java como una simple colección de características -algunas de las características no tienen sentido aisladas. Se puede usar la suma de partes sólo si se está pensando en diseño, y no simplemente en codificación. Y para entender Java así, hay que entender los problemas del lenguaje y de la programación en general. Este libro habla acerca de problemas de programación, por qué son problemas y el enfoque que Java sigue para solucionarlos. Por consiguiente, algunas características que explico en cada capítulo se basan en cómo yo veo que se ha solucionado algún problema en particular con el lenguaje. Así, espero conducir poco a poco al lector, hasta el punto en que Java se convierta en lengua casi materna. Durante todo el tiempo, estaré tomando la actitud de que el lector construya un modelo mental que le permita desarrollar un entendimiento profundo del lenguaje; si se encuentra un puzzle se podrá alimentar de éste al modelo para tratar de deducir la respuesta.

TRANSCRIPT

  • 1. Piensa

2. Piensa en Java Bruce Eckel Traduccin: Jorge Gonzlez Barturen Facultad de Ingeniera Universidad de Deusto Revisin tcnica: Javier Parra Fuente Ricardo Lozano Quesada Departamento de Lenguajes y Sistemas Informticos e Ingeniera de Software Universidad Pontijicia de Salamanca en Madrid Coordinacin general y revisin tcnica: Luis Joyanes Aguilar Departamento de Lenguajes y Sistemas Informticos e Ingeniera de Software Universidad Pontificia de Salamanca en Madrid Madrid Mxico Santaf de Bogot Buenos Aires Caracas Lima Montevideo San Juan San Jos Santiago Sao Paulo White Plains 3. atos de catalogacin bibliogrfica i Bruce Eckel PIENSA EN JAVA Segunda edicin PEARSON EDUCACIN, S.A. Madrid, 2002 ISBN: 84-205-3192-8 Materia: Informtica 68 1.3 Formato 195 x 250 Pginas: 960 No est permitida la reproduccin total o parcial de esta obra ni su tratamiento o transmisin por cualquier medio o mtodo sin autorizacin escrita de la Editorial. DERECHOS RESERVADOS O 2002 respecto a la segunda edicin en espaol por: PEARSON EDUCACI~N,S.A. Nez de Balboa, 120 28006 Madrid Bruce Eckel PIENSA EN JAVA, segunda edicin. ISBN: 84-205-3192-8 Depsito Legal: M.4.162-2003 ltima reimpresin, 2003 PRENTICE HALL es un sello editorial autorizado de PEARSON EDUCACIN, S.A. Traducido de: Thinking in JAVA, Second Edition by Bruce Eckel. Copyright O 2000, Al1 Rights Reserved. Published by arrangement with the original publisher, PRENTICE HALL, INC., a Pearson Education Company. ISBN: 0-13-027363-5 Edicin en espuol: Equipo editorial: Editor: Andrs Otero Asistente editorial: Ana Isabel Garca Equipo de produccin: Director: Jos A. Clares Tcnico: Diego Marn Diseo de cubierta: Mario Guindel, La Senz y Begoa Prez Compoicin: COMPOMAR. S.L. Impreso por: LAVEL, S. A. IMPRESO EN ESPANA - PRINTED IN SPAIN Este libro ha sido impreso con papel y tintas ecolgicos 4. A la persona que, incluso en este momento, est creando el prximo gran lenguaje de programacin. 5. @ Indice de contenido Prlogo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxi Prlogo a la 2." edicin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxiii Java2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxiv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .ElCDROM xxv Prlogo a la edicin en espaol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxvii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .El libro como referencia obligada a Java xxvii El libro como formacin integral de programador . . . . . . . . . . . . . . . . . . . . . . . xxvii Recursos gratuitos en lnea . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxviii Unas palabras todava ms elogiosas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxviii Comentarios de los lectores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxix Introduccin . Prerrequisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxxv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .AprendiendoJava xxxvi Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .xxxvi Documentacin en lnea . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .xxxvii ...Captulos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .xxxviii Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xlii CD ROM Multimedia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xliii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .Cdigofuente xliii Estndares de codificacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xlv Versiones de Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xlv Seminarios y mi papel como mentor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xlvi Errores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xlvi Nota sobre el diseo de la portada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xlvi . .Agradecimientos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xlvii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .Colaboradores Internet xlix 6. vi Piensa en Java 1:Introduccin a los objetos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . El progreso de la abstraccin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Todo objeto tiene una interfaz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . La implementacin oculta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Reutilizar la implementacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Herencia: reutilizar la interfaz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . La relacin es-un frente a la relacin es-como-un . . . . . . . . . . . . . . . . . . . . . . . . Objetos intercambiables con polimorfismo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .Clases base abstractas e interfaces Localizacin de objetos y longevidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Colecciones e iteradores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . La jerarqua de raz nica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Bibliotecas de colecciones y soporte al fcil manejo de colecciones . . . . . . . . . El dilema de las labores del hogar: quin limpia la casa? . . . . . . . . . . . . . . . . . Manejo de excepciones: tratar con errores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .Multihilo Persistencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .JavaeInternet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .lQueslaWeb? Programacin en el lado del cliente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Programacin en el lado del servidor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Un ruedo separado: las aplicaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Anlisisydiseo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Fase O: Elaborar un plan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Fase 1: Qu estamos construyendo? ................................. Fase 2: Cmo construirlo? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Fase 3: Construir el ncleo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Fase 4: Iterar los casos de uso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Fase5:Evolucin ................................................ Los planes merecen la pena . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .Programacin extrema Escritura de las pruebas en primer lugar .............................. Programacin a pares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .PorquJavatienexito Los sistemas son ms fciles de expresar y entender . . . . . . . . . . . . . . . . . . . . Ventajas mximas con las bibliotecas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Manejo de errores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Programacin a lo grande . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Estrategias para la transicin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Guas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Obstculosdegestin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . davafrenteaC++?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Resumen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7. ndice de contenido 2:Todoesunobjeto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .Los objetos se manipulan mediante referencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .Uno debe crear todos los objetos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .Dnde reside el almacenamiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .Un caso especial: los tipos primitivos ArraysenJava . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .Nunca es necesario destruir un objeto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .mbito . . . . . . . . . . . . . . . . . . . .