Professional Documents
Culture Documents
Activity Guide
D61748CS10
Edition 1.0
D64148
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Copyright © 2008, 2009, Oracle and/or its affiliates. All rights reserved.
Disclaimer
This document contains proprietary information, is provided under a license agreement containing restrictions on use and
disclosure, and is protected by copyright and other intellectual property laws. You may copy and print this document solely for
your own use in an Oracle training course. The document may not be modified or altered in any way. Except as expressly
permitted in your license agreement or allowed by law, you may not use, share, download, upload, copy, print, display,
perform, reproduce, publish, license, post, transmit, or distribute this document in whole or in part without the express
authorization of Oracle.
The information contained in this document is subject to change without notice. If you find any problems in the document,
please report them in writing to: Oracle University, 500 Oracle Parkway, Redwood Shores, California 94065 USA. This
document is not warranted to be error-free.
This training manual may include references to materials, offerings, or products that were previously offered by Sun
Microsystems, Inc. Certain materials, offerings, services, or products may no longer be offered or provided.Oracle and its
affiliates cannot be held responsible for any such references should they appear in the text provided.
Trademark Notice
Oracle and Java are registered trademarks of Oracle and/or its affiliates. Other names may be trademarks of their respective
owners.
AMD, Opteron, the AMD logo, and the AMD Opteron logo are trademarks or registered trademarks of Advanced Micro
Devices. Intel and Intel Xeon are trademarks or registered trademarks of Intel Corporation. All SPARC trademarks are used
under license and are trademarks or registered trademarks of SPARC International, Inc. UNIX is a registered trademark
licensed through X/Open Company, Ltd.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
This page intentionally left blank.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
This page intentionally left blank.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Contenido
Acerca de este libro ......................................................... Prólogo-xvii
Objetivos de las prácticas................................................. Prólogo-xvii
Realización de los ejercicios.............................................Prólogo-xviii
Convenciones....................................................................... Prólogo-xix
Convenciones tipográficas........................................ Prólogo-xix
Otras convenciones..................................................... Prólogo-xx
Introducción......................................................................................1-1
Objetivos............................................................................................. 1-1
Ejercicio 1: Exploración de errores de programa Java™ .............. 1-2
Preparación ................................................................................ 1-2
Tarea: Corrección de errores de compilación y tiempo
ejecución .................................................................................. 1-3
Ejercicio 2: Creación de un programa de prueba (nivel 1)........... 1-4
Preparación ................................................................................ 1-4
Tarea 1: Copia de la clase Account ........................................ 1-5
Tarea 2: Creación de la clase TestAccount .......................... 1-6
Tarea 3: Compilación de la clase TestAccount ................... 1-6
Tarea 4: Ejecución del programa TestAccount ................... 1-6
Ejercicio 2: Creación de un programa de prueba (nivel 2)........... 1-7
Preparación ................................................................................ 1-7
Tarea 1: Copia de la clase Account ........................................ 1-8
Tarea 2: Creación de la clase TestAccount .......................... 1-8
Tarea 3: Compilación de la clase TestAccount ................... 1-9
Tarea 4: Ejecución del programa TestAccount ................... 1-9
Ejercicio 2: Creación de un programa de prueba (nivel 3)......... 1-10
Preparación .............................................................................. 1-10
Tarea 1: Copia de la clase Account ...................................... 1-11
Tarea 2: Creación de la clase TestAccount ........................ 1-11
Tarea 3: Compilación de la clase TestAccount ................. 1-12
Tarea 4: Ejecución del programa TestAccount ................. 1-12
Resumen del ejercicio ...................................................................... 1-13
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates. v
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Programación orientada a objetos................................................. 2-1
Objetivos............................................................................................. 2-1
Ejercicio 1: Uso de la documentación de API de Java .................. 2-2
Preparación ................................................................................ 2-2
Tarea: Uso de la documentación de API de Java ................. 2-2
Ejercicio 2: Exploración de la encapsulación, versión 1
(nivel 1) ............................................................................................. 2-3
Preparación ................................................................................ 2-4
Tarea 1: Eliminación de la clase Account.............................. 2-4
Tarea 2: Creación de la clase Account ................................... 2-4
Tarea 3: Creación de la clase TestAccount2 ........................ 2-5
Tarea 4: Compilación de la clase TestAccount2 ................. 2-5
Tarea 5: Ejecución del programa TestAccount2 ................. 2-5
Ejercicio 2: Exploración de la encapsulación, versión 1
(nivel 2) ............................................................................................. 2-6
Preparación ................................................................................ 2-6
Tarea 1: Eliminación de la clase Account.............................. 2-7
Tarea 2: Creación de la clase Account ................................... 2-7
Tarea 3: Creación de la clase TestAccount2 ........................ 2-7
Tarea 4: Compilación de la clase TestAccount2 ................. 2-8
Tarea 5: Ejecución del programa TestAccount2 ................. 2-8
Ejercicio 2: Exploración de la encapsulación, versión 1
(nivel 3) ............................................................................................. 2-9
Preparación ................................................................................ 2-9
Tarea 1: Eliminación de la clase Account............................ 2-10
Tarea 2: Creación de la clase Account ................................. 2-10
Tarea 3: Creación de la clase TestAccount2 ...................... 2-10
Tarea 4: Compilación de la clase TestAccount2 ............... 2-11
Tarea 5: Ejecución del programa TestAccount2 ............... 2-11
Ejercicio 3: Exploración de la encapsulación, versión 2
(nivel 1) ........................................................................................... 2-12
Preparación .............................................................................. 2-13
Tarea 1: Modificación de la clase Account.......................... 2-13
Tarea 2: Modificación de la clase TestAccount................. 2-13
Tarea 3: Compilación de la clase TestAccount.................. 2-13
Tarea 4: Ejecución del programa TestAccount ................. 2-14
Ejercicio 3: Exploración de la encapsulación, versión 2
(nivel 2) ........................................................................................... 2-15
Preparación .............................................................................. 2-15
Tarea 1: Modificación de la clase Account.......................... 2-16
Tarea 2: Modificación de la clase TestAccount................. 2-16
Tarea 3: Compilación de la clase TestAccount.................. 2-16
Tarea 4: Ejecución del programa TestAccount ................. 2-16
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates. vii
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Expresiones y control del flujo....................................................... 4-1
Objetivos............................................................................................. 4-1
Ejercicio 1: Uso de bucles y sentencias de ramificación ............... 4-2
Preparación ................................................................................ 4-3
Tarea 1: Creación de la clase FooBarBaz............................... 4-3
Tarea 2: Compilación de la clase FooBarBaz........................ 4-4
Tarea 3: Ejecución del programa FooBarBaz........................ 4-4
Sugerencias ................................................................................ 4-4
Ejercicio 2: Uso de sentencias condicionales en la clase
Account (nivel 1)............................................................................. 4-5
Preparación ................................................................................ 4-6
Tarea 1: Modificación de la clase Account ............................ 4-6
Tarea 2: Eliminación de la clase TestBanking actual ........... 4-6
Tarea 3: Copia de la clase TestBanking................................ 4-6
Tarea 4: Compilación de la clase TestBanking.................... 4-7
Tarea 5: Ejecución del programa TestBanking ................... 4-7
Ejercicio 2: Uso de sentencias condicionales en la clase
Account (nivel 2)............................................................................. 4-8
Preparación ................................................................................ 4-8
Tarea 1: Modificación de la clase Account............................ 4-9
Tarea 2: Eliminación de la clase TestBanking actual ........... 4-9
Tarea 3: Copia de la clase TestBanking................................ 4-9
Tarea 4: Compilación de la clase TestBanking.................... 4-9
Tarea 5: Ejecución del programa TestBanking ................... 4-9
Ejercicio 2: Uso de sentencias condicionales en la clase
Account (nivel 3)........................................................................... 4-10
Preparación .............................................................................. 4-10
Tarea 1: Modificación de la clase Account.......................... 4-11
Tarea 2: Eliminación de la clase TestBanking actual ......... 4-11
Tarea 3: Copia de la clase TestBanking.............................. 4-11
Tarea 4: Compilación de la clase TestBanking.................. 4-11
Tarea 5: Ejecución del programa TestBanking ................. 4-12
Ejercicio 3: Uso de bucles anidados (avanzado).......................... 4-13
Preparación .............................................................................. 4-13
Tarea 1: Creación del método isSubString ...................... 4-14
Tarea 2: Compilación de la clase TestIsSubString......... 4-14
Tarea 3: Ejecución del programa TestIsSubString......... 4-14
Sugerencias ............................................................................. 4-15
Resumen del ejercicio ...................................................................... 4-16
Matrices ............................................................................................ 5-1
Objetivos............................................................................................. 5-1
Ejercicio 1: Uso de matrices primitivas (nivel 2) ........................... 5-2
Preparación ................................................................................ 5-2
Tarea 1: Creación de la clase TestArrays............................. 5-3
Tarea 2: Compilación de la clase TestArrays...................... 5-3
viii
Unauthorized reproduction orLenguaje
distribution de programación
prohibited. Java™
Copyright© 2010, Oracle and/or its affiliates.
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Tarea 3: Ejecución del programa TestArrays...................... 5-3
Sugerencia .................................................................................. 5-4
Ejercicio 1: Uso de matrices primitivas (nivel 3) ........................... 5-5
Preparación ................................................................................ 5-5
Tarea 1: Creación de la clase TestArrays............................. 5-6
Tarea 2: Compilación de la clase TestArrays...................... 5-7
Tarea 3: Ejecución del programa TestArrays...................... 5-7
Ejercicio 2: Uso de matrices para representar asociaciones
de uno a varios (nivel 1)................................................................. 5-8
Preparación ................................................................................ 5-9
Tarea 1: Creación de la clase Bank.......................................... 5-9
Tarea 2: Eliminación de la clase TestBanking actual ......... 5-9
Tarea 3: Copia de la clase TestBanking.............................. 5-10
Tarea 4: Compilación de la clase TestBanking ................. 5-10
Tarea 5: Ejecución del programa TestBanking ................. 5-10
Ejercicio 2: Uso de matrices para representar asociaciones
de uno a varios (nivel 2)............................................................... 5-11
Tarea 1: Creación de la clase Bank........................................ 5-12
Tarea 2: Eliminación de la clase TestBanking actual ....... 5-12
Tarea 3: Copia de la clase TestBanking.............................. 5-12
Tarea 4: Compilación de la clase TestBanking ................. 5-12
Tarea 5: Ejecución del programa TestBanking ................. 5-13
Ejercicio 2: Uso de matrices para representar asociaciones
de uno a varios (nivel 3)............................................................... 5-14
Tarea 1: Creación de la clase Bank........................................ 5-15
Tarea 2: Eliminación de la clase TestBanking actual ....... 5-16
Tarea 3: Copia de la clase TestBanking.............................. 5-16
Tarea 4: Compilación de la clase TestBanking ................. 5-16
Tarea 5: Ejecución del programa TestBanking ................. 5-16
Resumen del ejercicio ...................................................................... 5-17
Diseño de clases ..............................................................................6-1
Objetivos............................................................................................. 6-1
Ejercicio 1: Creación de subclases de cuenta bancaria (nivel 1) .. 6-2
Preparación ................................................................................ 6-3
Tarea 1: Modificación de la clase Account............................ 6-4
Tarea 2: Creación de la clase SavingsAccount.................... 6-4
Tarea 3: Creación de la clase CheckingAccount.................. 6-4
Tarea 4: Eliminación de la clase TestBanking actual ......... 6-5
Tarea 5: Copia de la clase TestBanking................................ 6-5
Tarea 6: Compilación de la clase TestBanking ................... 6-5
Tarea 7: Ejecución del programa TestBanking ................... 6-5
Ejercicio 1: Creación de subclases de cuenta bancaria (nivel 2) .. 6-7
Preparación ................................................................................ 6-7
Tarea 1: Modificación de la clase Account............................ 6-8
Tarea 2: Creación de la clase SavingsAccount.................... 6-8
Tarea 3: Creación de la clase CheckingAccount.................. 6-9
Tarea 4: Eliminación de la clase TestBanking actual ....... 6-10
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates. ix
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Tarea 5: Copia de la clase TestBanking.............................. 6-10
Tarea 6: Compilación de la clase TestBanking.................. 6-10
Tarea 7: Ejecución del programa TestBanking ................. 6-10
Ejercicio 1: Creación de subclases de cuenta bancaria
(nivel 3) ........................................................................................... 6-12
Preparación .............................................................................. 6-12
Tarea 1: Modificación de la clase Account.......................... 6-13
Tarea 2: Creación de la clase SavingsAccount.................. 6-13
Tarea 3: Creación de la clase CheckingAccount................ 6-14
Tarea 4: Eliminación de la clase TestBanking actual ....... 6-15
Tarea 5: Copia de la clase TestBanking.............................. 6-15
Tarea 6: Compilación de la clase TestBanking.................. 6-15
Tarea 7: Ejecución del programa TestBanking ................. 6-16
Ejercicio 2: Creación de una colección heterogénea de
cuentas de cliente (nivel 1)........................................................... 6-17
Preparación .............................................................................. 6-18
Tarea 1: Modificación de la clase Customer........................ 6-18
Tarea 2: Copia y rellenado de la clase CustomerReport .. 6-18
Tarea 3: Copia de la clase TestReport................................ 6-19
Tarea 4: Compilación de la clase TestReport.................... 6-19
Tarea 5: Ejecución del programa TestReport.................... 6-19
Ejercicio 2: Creación de una colección heterogénea de
cuentas de cliente (nivel 2)........................................................... 6-20
Tarea 1: Modificación de la clase Customer........................ 6-21
Tarea 2: Copia y rellenado de la clase CustomerReport .. 6-21
Tarea 3: Copia de la clase TestReport................................ 6-22
Tarea 4: Compilación de la clase TestReport.................... 6-22
Tarea 5: Ejecución del programa TestReport.................... 6-22
Ejercicio 2: Creación de una colección heterogénea de
cuentas de cliente (nivel 3)........................................................... 6-23
Tarea 1: Modificación de la clase Customer........................ 6-24
Tarea 2: Copia y rellenado de la clase CustomerReport .. 6-25
Tarea 3: Copia de la clase TestReport................................ 6-25
Tarea 4: Compilación de la clase TestReport.................... 6-25
Tarea 5: Ejecución del programa TestReport.................... 6-25
Ejercicio 3: Creación de un programa por lotes (avanzado)...... 6-26
Preparación .............................................................................. 6-27
Tarea 1: Modificación de la clase SavingsAccount .......... 6-27
Tarea 2: Creación de la clase AccumulateSavingsBatch 6-27
Tarea 3: Copia de la clase TestBanking.............................. 6-28
Tarea 4: Compilación de la clase TestBatch...................... 6-28
Tarea 5: Ejecución del programa TestBatch...................... 6-28
Resumen del ejercicio ...................................................................... 6-30
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates. xi
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Tarea 4: Compilación de la clase TestAnimals.................. 7-26
Tarea 5: Ejecución del programa TestAnimals ................. 7-26
Resumen del ejercicio ...................................................................... 7-27
Excepciones y aserciones .............................................................. 8-1
Objetivos............................................................................................. 8-1
Ejercicio: Creación de excepciones propias (nivel 1) .................... 8-2
Tarea 1: Creación de la clase OverdraftException........... 8-4
Tarea 2: Modificación de la clase Account............................ 8-4
Tarea 3: Modificación de la clase CheckingAccount .......... 8-4
Tarea 4: Eliminación de la clase TestBanking actual ......... 8-4
Tarea 5: Copia de la clase TestBanking................................ 8-5
Tarea 6: Compilación de la clase TestBanking.................... 8-5
Tarea 7: Ejecución del programa TestBanking ................... 8-5
Ejercicio: Creación de excepciones propias (nivel 2) .................... 8-6
Tarea 1: Creación de la clase OverdraftException........... 8-7
Tarea 2: Modificación de la clase Account............................ 8-7
Tarea 3: Modificación de la clase CheckingAccount .......... 8-8
Tarea 4: Eliminación de la clase TestBanking actual ......... 8-8
Tarea 5: Copia de la clase TestBanking................................ 8-8
Tarea 6: Compilación de la clase TestBanking.................... 8-8
Tarea 7: Ejecución del programa TestBanking ................... 8-8
Ejercicio: Creación de excepciones propias (nivel 3) .................... 8-9
Tarea 1: Creación de la clase OverdraftException......... 8-10
Tarea 2: Modificación de la clase Account.......................... 8-11
Tarea 3: Modificación de la clase CheckingAccount ........ 8-11
Tarea 4: Eliminación de la clase TestBanking actual ....... 8-12
Tarea 5: Copia de la clase TestBanking.............................. 8-12
Tarea 6: Compilación de la clase TestBanking.................. 8-12
Tarea 7: Ejecución del programa TestBanking ................. 8-12
Resumen del ejercicio ...................................................................... 8-13
Uso de colecciones y tipos genéricos........................................... 9-1
Objetivos............................................................................................. 9-1
Ejercicio 1: Uso de colecciones para representar asociaciones
(nivel 1) ............................................................................................. 9-2
Preparación ................................................................................ 9-3
Tarea 1: Modificación de la clase Bank .................................. 9-3
Tarea 2: Modificación de la clase Customer.......................... 9-3
Tarea 3: Compilación de la clase TestReport...................... 9-4
Tarea 4: Ejecución del programa TestReport...................... 9-4
Ejercicio 1: Uso de colecciones para representar asociaciones
(nivel 2) ............................................................................................. 9-5
Preparación ................................................................................ 9-5
Tarea 1: Modificación de la clase Bank .................................. 9-6
Tarea 2: Modificación de la clase Customer.......................... 9-6
Tarea 3: Compilación de la clase TestReport...................... 9-6
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates. xiii
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Tarea 2: Compilación de la clase ChatClient.................... 12-4
Tarea 3: Ejecución del programa ChatClient.................... 12-4
Tarea 3: Terminación del programa ChatClient
en ejecución........................................................................... 12-4
Ejercicio 1: Creación de la GUI ChatClient - Parte 1
(nivel 2) ........................................................................................... 12-5
Preparación .............................................................................. 12-5
Tarea 1: Creación de la clase ChatClient........................... 12-6
Tarea 2: Compilación de la clase ChatClient.................... 12-7
Tarea 3: Ejecución del programa ChatClient.................... 12-7
Tarea 3: Terminación del programa ChatClient
en ejecución........................................................................... 12-7
Ejercicio 1: Creación de la GUI ChatClient - Parte 1
(nivel 3) ........................................................................................... 12-8
Preparación .............................................................................. 12-8
Tarea 1: Creación de la clase ChatClient........................... 12-9
Tarea 2: Compilación de la clase ChatClient.................. 12-11
Tarea 3: Ejecución del programa ChatClient.................. 12-11
Tarea 4: Terminación del programa ChatClient
en ejecución......................................................................... 12-11
Ejercicio 2: Creación de la GUI Bank ATM - Parte 1
(avanzado).................................................................................... 12-12
Preparación ............................................................................ 12-13
Tarea 1: Copia de la clase ATMClient................................ 12-13
Tarea 2: Modificación de la clase ATMClient ................... 12-14
Tarea 3: Compilación de la clase ATMClient.................... 12-14
Tarea 4: Ejecución del programa ATMClient.................... 12-14
Sugerencias ............................................................................ 12-15
Resumen del ejercicio .................................................................... 12-16
Control de los eventos generados por la interfaz gráfica.......... 13-1
Objetivos........................................................................................... 13-1
Ejercicio 1: Creación de la GUI ChatClient - Parte 2
(nivel 1) ........................................................................................... 13-2
Preparación .............................................................................. 13-2
Tarea 1: Modificación de la clase ChatClient ................... 13-3
Tarea 2: Compilación de la clase ChatClient.................... 13-3
Tarea 3: Ejecución del programa ChatClient.................... 13-3
Sugerencias .............................................................................. 13-3
Ejercicio 1: Creación de la GUI ChatClient - Parte 2
(nivel 2) ........................................................................................... 13-4
Preparación .............................................................................. 13-4
Tarea 1: Modificación de la clase ChatClient ................... 13-5
Tarea 2: Compilación de la clase ChatClient.................... 13-5
Tarea 3: Ejecución del programa ChatClient.................... 13-5
xiv
Unauthorized reproduction orLenguaje
distribution de programación
prohibited. Java™
Copyright© 2010, Oracle and/or its affiliates.
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Ejercicio 1: Creación de la GUI ChatClient - Parte 2
(nivel 3) ........................................................................................... 13-6
Preparación .............................................................................. 13-6
Tarea 1: Modificación de la clase ChatClient ................... 13-7
Tarea 2: Compilación de la clase ChatClient.................... 13-8
Tarea 3: Ejecución del programa ChatClient.................... 13-8
Ejercicio 2: Creación de la GUI Bank ATM - Parte 2
(avanzado)...................................................................................... 13-9
Preparación ............................................................................ 13-10
Tarea 1: Modificación de la clase ATMClient ................... 13-10
Tarea 2: Compilación de la clase ATMClient.................... 13-10
Tarea 3: Ejecución del proyecto BankPrj.......................... 13-10
Resumen del ejercicio .................................................................... 13-12
Aplicaciones basadas en la interfaz gráfica ................................14-1
Objetivos........................................................................................... 14-1
Ejercicio: Creación de la GUI ChatClient - Parte 3 (nivel 1).... 14-2
Preparación .............................................................................. 14-3
Tarea 1: Modificación de la clase ChatClient ................... 14-3
Tarea 2: Compilación de la clase ChatClient.................... 14-3
Tarea 3: Ejecución del programa ChatClient.................... 14-3
Ejercicio: Creación de la GUI ChatClient - Parte 3 (nivel 2).... 14-4
Preparación .............................................................................. 14-4
Tarea 1: Modificación de la clase ChatClient ................... 14-5
Tarea 2: Compilación de la clase ChatClient.................... 14-5
Tarea 3: Ejecución del programa ChatClient.................... 14-5
Ejercicio: Creación de la GUI ChatClient - Parte 3 (nivel 3).... 14-6
Preparación .............................................................................. 14-6
Tarea 1: Modificación de la clase ChatClient ................... 14-7
Tarea 2: Compilación de la clase ChatClient.................. 14-10
Tarea 3: Ejecución del programa ChatClient.................. 14-10
Resumen del ejercicio .................................................................... 14-11
Subprocesos...................................................................................15-1
Objetivos........................................................................................... 15-1
Ejercicio: Programación multisubproceso (nivel 1) .................... 15-2
Preparación .............................................................................. 15-2
Tarea 1: Creación de la clase PrintMe ................................. 15-3
Tarea 2: Creación de la clase TestThreeThreads ............. 15-3
Tarea 3: Compilación de la clase TestThreeThreads ...... 15-3
Tarea 4: Ejecución del programa TestThreeThreads ...... 15-4
Ejercicio: Programación multisubproceso (nivel 2) .................... 15-5
Preparación .............................................................................. 15-5
Tarea 1: Creación de la clase PrintMe ................................. 15-6
Tarea 2: Creación de la clase TestThreeThreads ............. 15-6
Tarea 3: Compilación de la clase TestThreeThreads ...... 15-7
Tarea 4: Ejecución del programa TestThreeThreads ...... 15-7
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates. xv
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Ejercicio: Programación multisubproceso (nivel 3) .................... 15-8
Preparación .............................................................................. 15-8
Tarea 1: Creación de la clase PrintMe ................................. 15-9
Tarea 2: Creación de la clase TestThreeThreads ........... 15-10
Tarea 3: Compilación de la clase TestThreeThreads..... 15-11
Tarea 4: Ejecución del programa TestThreeThreads .... 15-11
Resumen del ejercicio .................................................................... 15-12
Funciones de red ........................................................................... 16-1
Objetivos........................................................................................... 16-1
Ejercicio: Creación de un cliente de socket (nivel 1) ................... 16-2
Preparación .............................................................................. 16-4
Tarea 1: Modificación de la clase ChatClient ................... 16-4
Tarea 2: Compilación de la clase ChatClient.................... 16-4
Tarea 3: Ejecución del proyecto ChatRoomPrj ................... 16-5
Ejercicio: Creación de un cliente de socket (nivel 2) ................... 16-6
Preparación .............................................................................. 16-6
Tarea 1: Modificación de la clase ChatClient ................... 16-7
Tarea 2: Compilación de la clase ChatClient.................... 16-7
Tarea 3: Ejecución del proyecto ChatRoomPrj ................... 16-8
Ejercicio: Creación de un cliente de socket (nivel 3) ................... 16-9
Preparación .............................................................................. 16-9
Tarea 1: Modificación de la clase ChatClient ................. 16-10
Tarea 2: Compilación de la clase ChatClient.................. 16-12
Tarea 3: Ejecución del proyecto ChatRoomPrj ................. 16-12
Resumen del ejercicio .................................................................... 16-13
xvi
Unauthorized reproduction orLenguaje
distribution de programación
prohibited. Java™
Copyright© 2010, Oracle and/or its affiliates.
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Prólogo de prácticas
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Acerca de este libro
Prólogo de prácticas-xvii
Unauthorized reproduction orCopyright 2008
distribution Sun Microsystems,
prohibited. Copyright©Inc. Todos
2010, los derechos
Oracle and/or its reservados.
affiliates. Sun Services, Revisión G.2
Realización de los ejercicios
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Realización de los ejercicios
Puede realizar cualquiera de las tres versiones de una práctica.
Para determinar cuál le interesa, consulte las siguientes descripciones
de los niveles:
● Nivel 1: versión de la práctica que tiene menos ayuda. Cada tarea se
describe en el párrafo correspondiente, pero el alumno debe decidir
cómo efectúa la tarea.
● Nivel 2: versión de la práctica con un poco más de ayuda.
Aunque en cada paso se describe lo que debe hacer, el alumno
debe determinar qué comandos y opciones utiliza.
● Nivel 3: versión más fácil de la práctica, porque en cada paso se
indica exactamente lo que debe introducir en el sistema. Este nivel
también incluye las soluciones de las tareas para los tres niveles.
Además, hay varios módulos con prácticas avanzadas. Estas prácticas son
opcionales. Son prácticas concebidas para alumnos más avanzados que
pueden realizar fácilmente las prácticas básicas.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Prólogo de prácticas-xviii Lenguaje de programación Java™
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Convenciones
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Convenciones
En este curso se usan convenciones para representar varios elementos y
recursos de formación alternativos.
Convenciones tipográficas
Se utiliza Courier para indicar nombres de comandos, archivos, código
de programación y mensajes del sistema que aparecen en la pantalla,
por ejemplo:
Utilice ls-a para ver la lista de todos los archivos.
system% Tiene correo.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Acerca de este libro Prólogo de prácticas-xix
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Convenciones
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Se usa Courier en cursiva y negrita para representar variables
cuyos valores debe introducir el alumno durante un ejercicio, por ejemplo:
Escriba chmod a+rwx nombre de archivo para conceder derechos
de lectura, escritura y ejecución sobre nombre de archivo a todos,
grupos y usuarios.
Otras convenciones
En los ejemplos del lenguaje Java se emplean estas otras convenciones:
● Los nombres de método no van seguidos de paréntesis, salvo cuando
se incluye una lista de parámetros oficiales o reales, por ejemplo:
“El método doIt...” designa cualquier método denominado doIt.
“El método doIt()...” indica un método doIt que no admite
argumentos.
● Sólo se producen saltos de línea cuando hay separaciones (comas),
conjunciones (operadores) o espacios en blanco en el código.
El código interrumpido se sangra cuatro espacios bajo el código
inicial.
● Cuando en el sistema operativo Solaris™ (SO Solaris) se utiliza un
comando distinto al empleado en la plataforma Microsoft Windows,
se muestran ambos comandos, por ejemplo:
En Solaris:
$ cd $SERVER_ROOT/bin
En Windows:
C:\> cd %SERVER_ROOT%\bin
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Prólogo de prácticas-xx Lenguaje de programación Java™
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Práctica 1
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Introducción
Objetivos
Las personas que realicen la práctica aprenderán a:
● Diagnosticar errores simples de compilación y tiempo de ejecución
● Crear un programa de prueba para una clase existente
Práctica 1-1
Unauthorized reproduction orCopyright 2008
distribution Sun Microsystems,
prohibited. Copyright©Inc. Todos
2010, los derechos
Oracle and/or its reservados.
affiliates. Sun Services, Revisión G.2
Ejercicio 1: Exploración de errores de programa Java™
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Ejercicio 1: Exploración de errores de programa Java™
En este ejercicio verá la fuente de varios programas Java sencillos y
corregirá sus errores de compilación y tiempo de ejecución.
Preparación
No se precisa preparación para este ejercicio.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Práctica 1-2 Lenguaje de programación Java™
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 1: Exploración de errores de programa Java™
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Tarea: Corrección de errores de compilación y tiempo
ejecución
En esta tarea hay cuatro programas Java que contienen errores. Pueden ser
errores de compilación o de tiempo de ejecución. La tarea consiste en
diagnosticar y solucionar estos errores para que los programas se ejecuten.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Introducción Práctica 1-3
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 2: Creación de un programa de prueba (nivel 1)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Ejercicio 2: Creación de un programa de prueba (nivel 1)
En este ejercicio va a crear un programa de prueba (también denominado
test harness) para practicar con una clase suministrada. Las instrucciones
son de nivel 1 e incluyen más indicaciones.
Account
«constructores»
+Account(initBalance:double)
«métodos»
+getBalance():double
+deposit(amt:double):void
+withdraw(amt:double):void
Preparación
No se precisa preparación para este ejercicio.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Práctica 1-4 Lenguaje de programación Java™
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 2: Creación de un programa de prueba (nivel 1)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
● Desarrollo en Java: Clases de Java: Modificación de clases de Java:
Ejecución de programas de Java
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Introducción Práctica 1-5
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 2: Creación de un programa de prueba (nivel 1)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Tarea 2: Creación de la clase TestAccount
En esta tarea seguirá los pasos indicados a continuación para crear una
nueva clase de Java TestAccount.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Práctica 1-6 Lenguaje de programación Java™
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 2: Creación de un programa de prueba (nivel 2)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Ejercicio 2: Creación de un programa de prueba (nivel 2)
En este ejercicio va a crear un programa de prueba (clase de prueba) para
practicar con una clase suministrada. Las instrucciones son de nivel 1 e
incluyen más indicaciones.
Preparación
No se precisa preparación para este ejercicio.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Introducción Práctica 1-7
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 2: Creación de un programa de prueba (nivel 2)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Tarea 1: Copia de la clase Account
En esta tarea, va a crear el proyecto BankPrj y a copiar la clase Account
ya suministrada al proyecto.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Práctica 1-8 Lenguaje de programación Java™
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 2: Creación de un programa de prueba (nivel 2)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
3. Declare una variable en el método main. La variable tiene el tipo
Account y el nombre acct. Inicialice la variable creando una
instancia de la clase Account con un saldo inicial de 100.
4. Utilice el método deposit para añadir 50 a la cuenta.
5. Utilice el método withdraw para restar 147 a la cuenta.
6. Utilice el método getBalance para recuperar el nuevo saldo de la
cuenta y use el método System.out.println para mostrar el saldo
en el flujo de salida estándar.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Introducción Práctica 1-9
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 2: Creación de un programa de prueba (nivel 3)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Ejercicio 2: Creación de un programa de prueba (nivel 3)
En este ejercicio va a crear un programa de prueba (clase de prueba) para
practicar con una clase suministrada. Las instrucciones son de nivel 3 e
incluyen más indicaciones con fragmentos de código.
Preparación
No se precisa preparación para este ejercicio.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Práctica 1-10 Lenguaje de programación Java™
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 2: Creación de un programa de prueba (nivel 3)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Tarea 1: Copia de la clase Account
En esta tarea, va a crear el proyecto BankPrj y a copiar la clase Account
ya suministrada al proyecto.
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
3. Declare una variable de tipo Account e inicialícela creando una
instancia de la clase Account con un saldo inicial de 100.
Account acct = new Account(100.0);
4. Utilice el método deposit para añadir 50 a la cuenta.
acct.deposit(50.0);
5. Utilice el método withdraw para restar 147 a la cuenta.
acct.withdraw(147.0);
6. Utilice el método getBalance para recuperar el nuevo saldo de la
cuenta y use el método System.out.println para mostrar el saldo
en el flujo de salida estándar.
System.out.println(“Final account balance is ” + acct.getBalance());
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Práctica 1-12 Lenguaje de programación Java™
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Resumen del ejercicio
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Resumen del ejercicio
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Introducción Práctica 1-13
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Práctica 2
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Programación orientada a objetos
Objetivos
Las personas que realicen la práctica aprenderán a:
● Usar la documentación de API de Java para investigar una clase
● Explorar la ocultación y encapsulación de la información
● Usar paquetes para organizar las clases
Práctica 2-1
Unauthorized reproduction orCopyright 2008
distribution Sun Microsystems,
prohibited. Copyright©Inc. Todos
2010, los derechos
Oracle and/or its reservados.
affiliates. Sun Services, Revisión G.2
Ejercicio 1: Uso de la documentación de API de Java
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Ejercicio 1: Uso de la documentación de API de Java
En este ejercicio va a explorar la documentación de API de la plataforma
Java™, Standard Edition 6 (Java SE 6) para explorar los métodos de una
clase.
Preparación
Debe tener abierta una ventana del navegador de web.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Práctica 2-2 Lenguaje de programación Java™
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 2: Exploración de la encapsulación, versión 1 (nivel 1)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Ejercicio 2: Exploración de la encapsulación, versión 1
(nivel 1)
En este ejercicio va a explorar la finalidad de la encapsulación de objetos
apropiada. Creará una clase en dos pasos para demostrar el uso de la
ocultación de información. En esta versión va a crear una clase Account
con miembros de datos públicos. Después va a crear un programa de
prueba que demuestra el riesgo de usar directamente los datos públicos.
Account
+balance : double
«constructores»
+Account(initBalance:double)
Sólo hay una regla de negocio que se aplica a la clase Account: El saldo de
la cuenta bancaria nunca debe descender por debajo de cero. En este ejercicio, va
a descubrir que la clase Account no puede asegurar esta regla de negocio.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Programación orientada a objetos Práctica 2-3
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 2: Exploración de la encapsulación, versión 1 (nivel 1)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Preparación
No se precisa preparación para este ejercicio.
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Tarea 3: Creación de la clase TestAccount2
En esta tarea va a crear la clase TestAccount2 con las características
siguientes:
Nombre de clase: TestAccount2
Proyecto: BankPrj
Ubicación: Source Packages
Paquete: default package
Esta clase actúa como un programa para crear un objeto Account con un
saldo inicial de 100. El programa de prueba añade 47 y después resta 150.
Por último, el programa de prueba debe imprimir el saldo del objeto en el
flujo de salida estándar.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Programación orientada a objetos Práctica 2-5
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 2: Exploración de la encapsulación, versión 1 (nivel 2)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Ejercicio 2: Exploración de la encapsulación, versión 1
(nivel 2)
En este ejercicio va a explorar la finalidad de la encapsulación de objetos
apropiada. Las instrucciones son de nivel 2 e incluyen más indicaciones.
Preparación
No se precisa preparación para este ejercicio.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Práctica 2-6 Lenguaje de programación Java™
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 2: Exploración de la encapsulación, versión 1 (nivel 2)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Tarea 1: Eliminación de la clase Account
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
c. Utilice el operador de resta para restar 150 al saldo del objeto de
cuenta.
d. Utilice el método System.out.println para mostrar el saldo
en el flujo de salida estándar.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Práctica 2-8 Lenguaje de programación Java™
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 2: Exploración de la encapsulación, versión 1 (nivel 3)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Ejercicio 2: Exploración de la encapsulación, versión 1
(nivel 3)
En este ejercicio va a explorar la finalidad de la encapsulación de objetos
apropiada. Las instrucciones son de nivel 3 e incluyen más indicaciones
con fragmentos de código.
Preparación
No se precisa preparación para este ejercicio.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Programación orientada a objetos Práctica 2-9
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 2: Exploración de la encapsulación, versión 1 (nivel 3)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Tarea 1: Eliminación de la clase Account
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Práctica 2-10 Lenguaje de programación Java™
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 2: Exploración de la encapsulación, versión 1 (nivel 3)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
2. Añada el método main:
public static void main(String[] args) {
// código aquí
}
3. Declare una variable dentro del método main con el tipo Account y
el nombre acct. Además, en la misma sentencia, inicialice la variable
acct como una nueva instancia de Account pasando 100.00 al
constructor como saldo inicial.
Account acct = new Account(100.0);
4. Utilice el operador de suma para añadir 47 al saldo del objeto de
cuenta.
acct.balance = acct.balance + 47.0;
5. Utilice el operador de resta para restar 150 al saldo del objeto de
cuenta.
acct.balance = acct.balance - 150.0;
6. Utilice el método System.out.println para mostrar el saldo en el
flujo de salida estándar.
System.out.println(“Final account balance is ” + acct.balance);
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Programación orientada a objetos Práctica 2-11
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 3: Exploración de la encapsulación, versión 2 (nivel 1)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Ejercicio 3: Exploración de la encapsulación, versión 2
(nivel 1)
En este ejercicio va a explorar la finalidad de la encapsulación de objetos
apropiada. Va a modificar la clase Account para ocultar su miembro
de datos y suministrar métodos públicos para manipular el saldo.
Después, utilizará el programa de prueba que ha creado en la práctica 1
para comprobar si se cumple la regla de negocio (el saldo no debe descender
por debajo de cero).
Account
-balance : double
«constructores»
+Account(initBalance:double)
«métodos»
+getBalance():double
+deposit(amt:double):void
+withdraw(amt:double):void
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Práctica 2-12 Lenguaje de programación Java™
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 3: Exploración de la encapsulación, versión 2 (nivel 1)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Preparación
No se precisa preparación para este ejercicio.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Programación orientada a objetos Práctica 2-13
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 3: Exploración de la encapsulación, versión 2 (nivel 1)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Tarea 4: Ejecución del programa TestAccount
En esta tarea va a ejecutar el programa TestAccount. La salida debe ser
similar a la siguiente:
Final account balance is 147.0
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Práctica 2-14 Lenguaje de programación Java™
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 3: Exploración de la encapsulación, versión 2 (nivel 2)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Ejercicio 3: Exploración de la encapsulación, versión 2
(nivel 2)
En este ejercicio va a explorar la finalidad de la encapsulación de objetos
apropiada. Las instrucciones son de nivel 2 e incluyen más indicaciones.
Preparación
No se precisa preparación para este ejercicio.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Programación orientada a objetos Práctica 2-15
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 3: Exploración de la encapsulación, versión 2 (nivel 2)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Tarea 1: Modificación de la clase Account
En esta tarea seguirá los pasos indicados a continuación para modificar la
clase Account.
1. Cambie la variable de instancia balance de public a private.
2. Añada el método deposit que toma una cantidad (del tipo double)
y la añade al saldo. Guarde el nuevo saldo en la variable de
instancia.
3. Añada el método withdraw que toma una cantidad (del tipo double)
y la resta al saldo. Guarde el nuevo saldo en la variable de instancia.
Esta operación puede definir el saldo en un valor inferior a cero si
la cantidad retirada es superior al saldo actual. Debe utilizar una
sentencia condicional para verificar que la cantidad no sea superior
al saldo antes de efectuar la resta. La sentencia condicional tiene este
aspecto:
if ( <boolean_test> ) {
<statement_when_true>*
} else {
<statement_when_false>*
}
4. Añada el método getBalance para devolver la variable de instancia
balance.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Práctica 2-16 Lenguaje de programación Java™
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 3: Exploración de la encapsulación, versión 2 (nivel 3)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Ejercicio 3: Exploración de la encapsulación, versión 2
(nivel 3)
En este ejercicio va a explorar la finalidad de la encapsulación de objetos
apropiada. Las instrucciones son de nivel 3 e incluyen más indicaciones
con fragmentos de código.
Preparación
No se precisa preparación para este ejercicio.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Programación orientada a objetos Práctica 2-17
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 3: Exploración de la encapsulación, versión 2 (nivel 3)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Tarea 1: Modificación de la clase Account
En esta tarea seguirá los pasos indicados a continuación para modificar la
clase Account.
1. Cambie la variable de instancia balance de public a private.
private double balance;
2. Añada el método deposit que toma una cantidad (del tipo double)
y la añade al saldo. Guarde el nuevo saldo en la variable de instancia
balance.
public void deposit(double amt) {
balance = balance + amt;
}
3. Añada el método withdraw que toma una cantidad (del tipo double)
y la resta al saldo. Guarde el nuevo saldo en la variable de instancia
balance.
public void withdraw(double amt) {
if ( amt <= balance ) {
balance = balance - amt;
}
}
4. Añada el método getBalance para devolver la variable de instancia
balance.
public double getBalance() {
return balance;
}
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Práctica 2-18 Lenguaje de programación Java™
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 3: Exploración de la encapsulación, versión 2 (nivel 3)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Tarea 3: Compilación de la clase TestAccount
En esta tarea va a compilar las clases TestAccount y Account.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Programación orientada a objetos Práctica 2-19
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 4: Creación de paquetes de Java
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Ejercicio 4: Creación de paquetes de Java
En este ejercicio va a situar las clases Account y TestAccount en
paquetes distintos.
com.mybank
prueba dominio
TestAccount Account
-balance : double
+main(args:String[])
«constructores»
+Account(initBalance:double)
«métodos»
+getBalance():double
+deposit(amt:double):void
+withdraw(amt:double):void
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Práctica 2-20 Lenguaje de programación Java™
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 4: Creación de paquetes de Java
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Preparación
No se precisa preparación para este ejercicio.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Programación orientada a objetos Práctica 2-21
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Tarea 2: Desplazamiento y modificación de la clase
Account
En esta tarea, va a realizar los pasos siguientes para desplazar la clase
Account y añadir la sentencia de paquete correspondiente a la clase:
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Resumen del ejercicio
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Resumen del ejercicio
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Programación orientada a objetos Práctica 2-23
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Resumen del ejercicio
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Práctica 2-24 Lenguaje de programación Java™
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Práctica 3
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Identificadores, palabras clave y tipos
Objetivos
Las personas que realicen la práctica aprenderán a:
● Explorar la asignación de variables de referencia
● Usar una variable de referencia para codificar una asociación de
objetos
Práctica 3-1
Unauthorized reproduction orCopyright 2008
distribution Sun Microsystems,
prohibited. Copyright©Inc. Todos
2010, los derechos
Oracle and/or its reservados.
affiliates. Sun Services, Revisión G.2
Ejercicio 1: Investigación de asignación de referencias
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Ejercicio 1: Investigación de asignación de referencias
En este ejercicio va a investigar las variables de referencia, la creación de
objetos y la asignación de variables de referencia.
MyPoint
+x : int
+y : int
+toString() : String
Preparación
No se precisa preparación para este ejercicio.
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Para este ejercicio va a trabajar en el proyecto PointProject del
directorio exercises/03_types/exercise1.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Identificadores, palabras clave y tipos Práctica 3-3
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 1: Investigación de asignación de referencias
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
e. Declare una nueva variable del tipo MyPoint y llámela stray.
Asigne a stray el valor de referencia de la variable existente
end.
f. Imprima stray y end.
g. Asigne nuevos valores a los miembros x (como 47) e y
(como 50) de la variable stray.
h. Imprima stray, end y start.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Práctica 3-4 Lenguaje de programación Java™
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 2: Creación de cuentas de cliente (nivel 1)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Ejercicio 2: Creación de cuentas de cliente (nivel 1)
En este ejercicio va a ampliar el proyecto bancario con la clase Customer.
com.mybank.domain
has-a 1
Customer Account
-firstName : String -balance : double
-lastName : String
«constructores»
-account : Account
+Account(initBalance:double)
«constructores»
«métodos»
+Customer(f:String, l:String)
+getBalance():double
«métodos» +deposit(amt:double):void
+getFirstName():String +withdraw(amt:double):void
+getLastName():String
+getAccount():Account
+setAccount(acct:Account):void
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Identificadores, palabras clave y tipos Práctica 3-5
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 2: Creación de cuentas de cliente (nivel 1)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Preparación
No se precisa preparación para este ejercicio.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Práctica 3-6 Lenguaje de programación Java™
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 2: Creación de cuentas de cliente (nivel 1)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Tarea 2: Copia de la clase TestBanking
En esta tarea va a copiar el archivo TestBanking.java del directorio
resources/03_types/exercise2 al paquete de origen
com.mybank.test del proyecto BankPrj.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Identificadores, palabras clave y tipos Práctica 3-7
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 2: Creación de cuentas de cliente (nivel 2)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Ejercicio 2: Creación de cuentas de cliente (nivel 2)
En este ejercicio va a ampliar el proyecto bancario con la clase Customer.
Las instrucciones son de nivel 2 e incluyen más indicaciones.
Preparación
No se precisa preparación para este ejercicio.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Práctica 3-8 Lenguaje de programación Java™
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 2: Creación de cuentas de cliente (nivel 2)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Tarea 1: Creación de la clase Customer
En esta tarea va a crear la clase Customer.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Identificadores, palabras clave y tipos Práctica 3-9
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 2: Creación de cuentas de cliente (nivel 2)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Tarea 4: Ejecución del programa TestBanking
En esta tarea va a ejecutar el programa TestBanking. La salida debe ser
similar a la siguiente:
Creating the customer Jane Smith.
Creating her account with a 500.00 balance.
Withdraw 150.00
Deposit 22.50
Withdraw 47.62
Customer [Smith, Jane] has a balance of 324.88
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Práctica 3-10 Lenguaje de programación Java™
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 2: Creación de cuentas de cliente (nivel 3)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Ejercicio 2: Creación de cuentas de cliente (nivel 3)
En este ejercicio va a ampliar el proyecto bancario con la clase Customer.
Las instrucciones son de nivel 3 e incluyen más indicaciones con
fragmentos de código.
Preparación
No se precisa preparación para este ejercicio.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Identificadores, palabras clave y tipos Práctica 3-11
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 2: Creación de cuentas de cliente (nivel 3)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Tarea 1: Creación de la clase Customer
En esta tarea va a crear la clase Customer.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Práctica 3-12 Lenguaje de programación Java™
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 2: Creación de cuentas de cliente (nivel 3)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Tarea 2: Copia de la clase TestBanking
En esta tarea va a copiar el archivo TestBanking.java del directorio
resources/03_types/exercise2 al paquete de origen
com.mybank.test del proyecto BankPrj.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Identificadores, palabras clave y tipos Práctica 3-13
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Resumen del ejercicio
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Resumen del ejercicio
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Práctica 3-14 Lenguaje de programación Java™
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Práctica 4
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Expresiones y control del flujo
Objetivos
Las personas que realicen la práctica aprenderán a:
● Usar un sencillo bucle for
● Usar sentencias condicionales en lógica de negocio
● (Opcional) Usar bucles anidados para implementar una operación de
búsqueda de cadenas
Práctica 4-1
Unauthorized reproduction orCopyright 2008
distribution Sun Microsystems,
prohibited. Copyright©Inc. Todos
2010, los derechos
Oracle and/or its reservados.
affiliates. Sun Services, Revisión G.2
Ejercicio 1: Uso de bucles y sentencias de ramificación
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Ejercicio 1: Uso de bucles y sentencias de ramificación
En este ejercicio va a utilizar un sencillo bucle entero y sentencias de
ramificación para jugar un juego ficticio de foo bar baz.
y así sucesivamente.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Práctica 4-2 Lenguaje de programación Java™
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 1: Uso de bucles y sentencias de ramificación
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Preparación
No se precisa preparación para este ejercicio.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Expresiones y control del flujo Práctica 4-3
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 1: Uso de bucles y sentencias de ramificación
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
4. Utilice un bucle for para iterar de 1 a 50 en el método main.
a. Imprima el número actual.
b. Utilice tres sentencias if para probar si el número actual es
divisible por tres, cinco o siete; en caso afirmativo, imprima
foo, bar y baz según corresponda.
Sugerencias
Estas indicaciones pueden ayudarle a resolver el ejercicio:
● Utilice el método System.out.print para imprimir una cadena o
un valor sin necesidad de imprimir un carácter de nueva línea.
Puede utilizar múltiples métodos print para imprimir una única
línea de texto. Puede utilizar un único método println, sin
argumentos, para imprimir un carácter de nueva línea.
● El operador % calcula un resto entero.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Práctica 4-4 Lenguaje de programación Java™
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 2: Uso de sentencias condicionales en la clase Account (nivel 1)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Ejercicio 2: Uso de sentencias condicionales en la clase
Account (nivel 1)
En este ejercicio va a modificar el método withdraw para que devuelva
un valor booleano especificando si la operación ha tenido éxito.
com.mybank.domain
has-a 1
Customer Account
-firstName : String -balance : double
-lastName : String
«constructores»
-account : Account
+Account(initBalance:double)
«constructores»
«métodos»
+Customer(f:String, l:String)
+getBalance():double
«métodos» +deposit(amt:double):boolean
+getFirstName():String +withdraw(amt:double):boolean
+getLastName():String
+getAccount():Account
+setAccount(acct:Account):void
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Expresiones y control del flujo Práctica 4-5
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 2: Uso de sentencias condicionales en la clase Account (nivel 1)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Preparación
No se precisa preparación para este ejercicio.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Práctica 4-6 Lenguaje de programación Java™
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 2: Uso de sentencias condicionales en la clase Account (nivel 1)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Tarea 4: Compilación de la clase TestBanking
En esta tarea va a compilar la clase TestBanking.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Expresiones y control del flujo Práctica 4-7
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 2: Uso de sentencias condicionales en la clase Account (nivel 2)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Ejercicio 2: Uso de sentencias condicionales en la clase
Account (nivel 2)
En este ejercicio va a modificar el método withdraw para que devuelva un
valor booleano especificando si la operación ha tenido éxito.
Preparación
No se precisa preparación para este ejercicio.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Práctica 4-8 Lenguaje de programación Java™
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 2: Uso de sentencias condicionales en la clase Account (nivel 2)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Tarea 1: Modificación de la clase Account
En esta tarea seguirá los pasos indicados a continuación para modificar
la clase Account.
1. Modifique el método deposit. Como las cuentas no tienen límite
superior, este método siempre debe devolver true para indicar que
siempre tiene éxito.
2. Modifique el método withdraw. Como las cuentas no pueden tener
un valor inferior a cero, el método debe verificar si la cantidad
retirada es inferior al saldo actual. En ese caso, la operación
de retirada tiene éxito y debe devolver true; de lo contrario,
la operación falla y el método debe devolver false.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Expresiones y control del flujo Práctica 4-9
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 2: Uso de sentencias condicionales en la clase Account (nivel 3)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Ejercicio 2: Uso de sentencias condicionales en la clase
Account (nivel 3)
En este ejercicio va a modificar el método withdraw para que devuelva un
valor booleano especificando si la operación ha tenido éxito.
Preparación
No se precisa preparación para este ejercicio.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Práctica 4-10 Lenguaje de programación Java™
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 2: Uso de sentencias condicionales en la clase Account (nivel 3)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Tarea 1: Modificación de la clase Account
En esta tarea seguirá los pasos indicados a continuación para modificar la
clase Account.
1. Modifique el método deposit. Como las cuentas no tienen límite
superior, este método siempre debe devolver true para indicar que
siempre tiene éxito.
public boolean deposit(double amt) {
balance = balance + amt;
return true;
}
2. Modifique el método withdraw. Como las cuentas no pueden tener
un valor inferior a cero, el método debe verificar si la cantidad
retirada es inferior al saldo actual. En ese caso, la operación
de retirada tiene éxito y debe devolver true; de lo contrario,
la operación falla y el método debe devolver false.
public boolean withdraw(double amt) {
boolean result = false; // supone fallo de la operación
if ( amt <= balance ) {
balance = balance - amt;
result = true; // éxito de la operación
}
return result;
}
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Expresiones y control del flujo Práctica 4-11
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 2: Uso de sentencias condicionales en la clase Account (nivel 3)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Tarea 5: Ejecución del programa TestBanking
En esta tarea va a ejecutar el programa TestBanking. La salida debe ser
similar a la siguiente:
Creating the customer Jane Smith.
Creating her account with a 500.00 balance.
Withdraw 150.00: true
Deposit 22.50: true
Withdraw 47.62: true
Withdraw 400.00: false
Customer [Smith, Jane] has a balance of 324.88
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Práctica 4-12 Lenguaje de programación Java™
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 3: Uso de bucles anidados (avanzado)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Ejercicio 3: Uso de bucles anidados (avanzado)
En este ejercicio va a usar bucles anidados para implementar una
operación de búsqueda de cadenas.
Nota – Esta clase incluye varios ejercicios avanzados, que son optativos
y sólo debe realizarlos si ha terminado todos los ejercicios anteriores de
este módulo.
Preparación
No se precisa preparación para este ejercicio.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Expresiones y control del flujo Práctica 4-13
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 3: Uso de bucles anidados (avanzado)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Tarea 1: Creación del método isSubString
En esta tarea abrirá el proyecto AdvancedLoopProject del directorio
exercises/04_stmts/exercise3, abrirá la clase TestIsSubString
y creará el método isSubString. El método busca una cadena específica
dentro de otra cadena, y debe devolver true si la primera cadena se halla
en la segunda. Por ejemplo: isSubString("cat", "The cat in the
hat.") es true, pero isSubString("bat", "The cat in the hat.")
es false.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Práctica 4-14 Lenguaje de programación Java™
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 3: Uso de bucles anidados (avanzado)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Sugerencias
Estas indicaciones pueden ayudarle a resolver el ejercicio.
● Utilice el método charAt(int index) de la clase String para
recuperar un carácter específico de una cadena; el índice empieza
por cero. Por ejemplo: "cat".charAt(0) es c, "cat".charAt(1)
es a y "cat".charAt(2) es t.
● El método length devuelve el número de caracteres de la cadena;
por ejemplo, "cat".length() es 3.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Expresiones y control del flujo Práctica 4-15
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Resumen del ejercicio
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Resumen del ejercicio
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Práctica 4-16 Lenguaje de programación Java™
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Práctica 5
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Matrices
Objetivos
Las personas que realicen la práctica aprenderán a:
● Declarar, crear y manipular matrices primitivas unidimensionales
● Usar una matriz para representar una relación de uno a varios
objetos
Práctica 5-1
Unauthorized reproduction orCopyright 2008
distribution Sun Microsystems,
prohibited. Copyright©Inc. Todos
2010, los derechos
Oracle and/or its reservados.
affiliates. Sun Services, Revisión G.2
Ejercicio 1: Uso de matrices primitivas (nivel 2)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Ejercicio 1: Uso de matrices primitivas (nivel 2)
En este ejercicio va a declarar, crear y manipular matrices unidimensionales
de tipos primitivos.
Preparación
No se precisa preparación para este ejercicio.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Práctica 5-2 Lenguaje de programación Java™
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 1: Uso de matrices primitivas (nivel 2)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Tarea 1: Creación de la clase TestArrays
Lleve a cabo los pasos siguientes:
1. Abra el proyecto ArrayProject del directorio
exercises/05_arrays/exercise1.
2. Cree la clase TestArrays con las características siguientes:
Nombre de clase: TestArrays
Proyecto: ArrayProject
Ubicación: Source Packages
Paquete: default package
3. Añada el método main. En el método main, declare dos variables
llamadas array1 y array2. Deben ser del tipo int[] (matriz de
int).
4. Empleando la notación de llaves, {}, inicialice array1 como los ocho
primeros números primos: 2, 3, 5, 7, 11, 13, 17 y 19.
5. Muestre el contenido de array1. Quizá prefiera usar el método
printArray (véase ‘‘Sugerencia’’ en la página L5-4) para mostrar
estas matrices de enteros.
6. Asigne la variable array2 igual a la variable array1. Modifique el
elemento indizado par de array2 para que sea igual al valor del
índice (por ejemplo, array2[0] = 0; array2[2] = 2; y así
sucesivamente). Imprima array1.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Matrices Práctica 5-3
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 1: Uso de matrices primitivas (nivel 2)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Sugerencia
El método printArray puede ayudarle a resolver este ejercicio:
public static void printArray(int[] array) {
System.out.print(’<’);
for ( int i = 0; i < array.length; i++ ) {
// imprimir un elemento
System.out.print(array[i]);
// imprimir una coma delimitadora si no es el último
elemento
if ( (i + 1) < array.length ) {
System.out.print(", ");
}
}
System.out.print(’>’);
}
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Práctica 5-4 Lenguaje de programación Java™
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 1: Uso de matrices primitivas (nivel 3)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Ejercicio 1: Uso de matrices primitivas (nivel 3)
En este ejercicio va a declarar, crear y manipular matrices unidimensionales
de tipos primitivos.
Preparación
No se precisa preparación para este ejercicio.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Matrices Práctica 5-5
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 1: Uso de matrices primitivas (nivel 3)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Tarea 1: Creación de la clase TestArrays
Lleve a cabo los pasos siguientes:
1. Abra el proyecto ArrayProject del directorio
exercises/05_arrays/exercise1.
2. Cree la clase TestArrays con las características siguientes:
Nombre de clase: TestArrays
Proyecto: ArrayProject
Ubicación: Source Packages
Paquete: default package
3. Añada el método main. En el método main(), declare dos variables
llamadas array1 y array2. Deben ser del tipo int[] (matriz de int).
public class TestArrays {
public static void main(String[] args) {
int[] array1;
int[] array2;
// insertar código aquí
}
}
4. Empleando la notación de llaves, {}, inicialice array1 como los ocho
primeros números primos: 2, 3, 5, 7, 11, 13, 17 y 19.
int[] array1 = { 2, 3, 5, 7, 11, 13, 17, 19 };
int[] array2;
5. Muestre el contenido de array1. Quizá prefiera usar el método
printArray (véase ‘‘Sugerencia’’ en la página L5-4) para mostrar
estas arrays de enteros.
System.out.print("array1 is ");
printArray(array1);
System.out.println();
6. Asigne la variable array2 igual a la variable array1. Modifique el
elemento indizado par de array2 para que sea igual al valor del
índice (por ejemplo, array2[0] = 0; array2[2] = 2; y así
sucesivamente). Imprima array1.
array2 = array1;
// modify array2
array2[0] = 0;
array2[2] = 2;
array2[4] = 4;
array2[6] = 6;
// imprimir array 1
System.out.print("array1 is ");
printArray(array1);
System.out.println();
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Práctica 5-6 Lenguaje de programación Java™
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 1: Uso de matrices primitivas (nivel 3)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Tarea 2: Compilación de la clase TestArrays
En esta tarea va a compilar la clase TestArrays.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Matrices Práctica 5-7
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 2: Uso de matrices para representar asociaciones de uno a varios (nivel 1)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Ejercicio 2: Uso de matrices para representar asociaciones
de uno a varios (nivel 1)
En este ejercicio va a usar matrices para implementar la asociación entre
un banco y sus múltiples clientes.
com.mybank.domain
Bank
-customers : Customer[]
-numberOfCustomers : int
«constructores»
+Bank()
«métodos»
+addCustomer(f:String, l:String)
+getNumOfCustomers():int
+getCustomer(index:int):Customer
serves
has-a 1
Customer Account
0..*
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Práctica 5-8 Lenguaje de programación Java™
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 2: Uso de matrices para representar asociaciones de uno a varios (nivel 1)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Preparación
No se precisa preparación para este ejercicio.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Matrices Práctica 5-9
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 2: Uso de matrices para representar asociaciones de uno a varios (nivel 1)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Tarea 3: Copia de la clase TestBanking
En esta tarea va a copiar el archivo TestBanking.java del directorio
resources/05_arrays al paquete de origen com.mybank.test del
proyecto BankPrj.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Práctica 5-10 Lenguaje de programación Java™
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 2: Uso de matrices para representar asociaciones de uno a varios (nivel 2)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Ejercicio 2: Uso de matrices para representar asociaciones
de uno a varios (nivel 2)
En este ejercicio va a usar matrices para implementar la asociación entre
un banco y sus múltiples clientes.
Preparación
No se precisa preparación para este ejercicio.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Matrices Práctica 5-11
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 2: Uso de matrices para representar asociaciones de uno a varios (nivel 2)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Tarea 1: Creación de la clase Bank
Lleve a cabo los pasos siguientes:
1. Cree la clase Bank con las características siguientes:
Nombre de clase: Bank
Proyecto: BankPrj
Ubicación: Source Packages
Paquete: com.mybank.domain
2. Añada dos variables de instancia a la clase Bank: customers (una
matriz de objetos Customer) y numberOfCustomers (un entero que
lleva un seguimiento del próximo índice de matriz de customers).
3. Añada un constructor público que inicialice la matriz customers con
un tamaño máximo apropiado (al menos superior a cinco).
4. Añada el método addCustomer. Este método debe construir un
nuevo objeto Customer a partir de los parámetros (nombre y
apellido) y colocarlo en la matriz customers. También debe
incrementar la variable de instancia numberOfCustomers.
5. Añada el método accedente getNumOfCustomers, que devuelve la
variable de instancia numberOfCustomers.
6. Añada el método getCustomer. Este método devuelve el cliente
asociado con el parámetro index especificado.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Práctica 5-12 Lenguaje de programación Java™
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 2: Uso de matrices para representar asociaciones de uno a varios (nivel 2)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Tarea 5: Ejecución del programa TestBanking
En esta tarea va a ejecutar el programa TestBanking. La salida debe ser
similar a la siguiente:
Customer [1] is Simms, Jane
Customer [2] is Bryant, Owen
Customer [3] is Soley, Tim
Customer [4] is Soley, Maria
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Matrices Práctica 5-13
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 2: Uso de matrices para representar asociaciones de uno a varios (nivel 3)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Ejercicio 2: Uso de matrices para representar asociaciones
de uno a varios (nivel 3)
En este ejercicio va a usar matrices para implementar la asociación entre
un banco y sus múltiples clientes.
Preparación
No se precisa preparación para este ejercicio.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Práctica 5-14 Lenguaje de programación Java™
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 2: Uso de matrices para representar asociaciones de uno a varios (nivel 3)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Tarea 1: Creación de la clase Bank
Lleve a cabo los pasos siguientes:
1. Cree la clase Bank con las características siguientes:
Nombre de clase: Bank
Proyecto: BankPrj
Ubicación: Source Packages
Paquete: com.mybank.domain
package com.mybank.domain;
public class Bank {
// insertar código aquí
}
2. Añada dos variables de instancia a la clase Bank: customers (una
matriz de objetos Customer) y numberOfCustomers (un entero que
lleva un seguimiento del próximo índice de matriz de customers).
public class Bank {
private Customer[] customers;
private int numberOfCustomers;
// insertar métodos aquí
}
3. Añada un constructor público que inicialice la matriz customers con
un tamaño máximo apropiado (al menos superior a cinco).
public Bank() {
customers = new Customer[10];
numberOfCustomers = 0;
}
4. Añada el método addCustomer. Este método debe construir un
nuevo objeto Customer a partir de los parámetros (nombre y
apellido) y colocarlo en la matriz customers. También debe
incrementar la variable de instancia numberOfCustomers.
public void addCustomer(String f, String l) {
int i = numberOfCustomers++;
customers[i] = new Customer(f, l);
}
5. Añada el método accedente getNumOfCustomers, que devuelve la
variable de instancia numberOfCustomers.
public int getNumOfCustomers() {
return numberOfCustomers;
}
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Matrices Práctica 5-15
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 2: Uso de matrices para representar asociaciones de uno a varios (nivel 3)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
6. Añada el método getCustomer. Este método devuelve el cliente
asociado con el parámetro index especificado.
public Customer getCustomer(int customer_index) {
return customers[customer_index];
}
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Práctica 5-16 Lenguaje de programación Java™
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Resumen del ejercicio
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Resumen del ejercicio
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Matrices Práctica 5-17
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Práctica 6
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Diseño de clases
Objetivos
Las personas que realicen la práctica aprenderán a:
● Crear subclases con herencia y sobrescritura de métodos
● Crear una colección heterogénea y usar polimorfismo
Práctica 6-1
Unauthorized reproduction orCopyright 2008
distribution Sun Microsystems,
prohibited. Copyright©Inc. Todos
2010, los derechos
Oracle and/or its reservados.
affiliates. Sun Services, Revisión G.2
Ejercicio 1: Creación de subclases de cuenta bancaria (nivel 1)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Ejercicio 1: Creación de subclases de cuenta bancaria
(nivel 1)
En este ejercicio va a crear dos subclases de la clase Account en el
proyecto bancario: SavingsAccount y CheckingAccount. Estos tipos de
cuentas tienen las siguientes reglas de negocio:
● La cuenta de ahorro (savings) obtiene intereses. El banco permite a
los clientes guardar dinero en una cuenta de ahorro que acumula
intereses mensuales aplicando la fórmula siguiente: saldo = saldo +
(tipo de interés * saldo)
● La cuenta corriente (checking) permite al cliente realizar cuantos
ingresos y reembolsos desee. Para proteger a sus clientes, el banco les
permite una cantidad fija de protección de descubierto. Esta protección
permite que el saldo de un cliente descienda a menos de cero, pero no
por debajo de la protección de descubierto. La protección de
descubierto de la cuenta va reduciéndose conforme se utiliza.
com.mybank.domain
Account
#balance : double
«constructores»
#Account(initBalance:double)
«métodos»
+getBalance():double
+deposit(amt:double):boolean
+withdraw(amt:double):boolean
SavingsAccount CheckingAccount
-interestRate : double -overdraftAmount : double
«constructores» «constructores»
+SavingsAccount(initBalance:double, +CheckingAccount(initBalance:double,
interestRate:double) overdraft:double)
+CheckingAccount(initBalance:double)
«métodos»
+withdraw(amt:double):boolean
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Práctica 6-2 Lenguaje de programación Java™
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 1: Creación de subclases de cuenta bancaria (nivel 1)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Este ejercicio contiene las siguientes secciones:
● “Tarea 1: Modificación de la clase Account”
● “Tarea 2: Creación de la clase SavingsAccount”
● “Tarea 3: Creación de la clase CheckingAccount”
● “Tarea 4: Eliminación de la clase TestBanking actual”
● “Tarea 5: Copia de la clase TestBanking”
● “Tarea 6: Compilación de la clase TestBanking”
● “Tarea 7: Ejecución del programa TestBanking”
Preparación
No se precisa preparación para este ejercicio.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Diseño de clases Práctica 6-3
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 1: Creación de subclases de cuenta bancaria (nivel 1)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Tarea 1: Modificación de la clase Account
En esta tarea va a modificar la clase Account del paquete de origen
com.mybank.domain del proyecto BankPrj. Esta clase debe respetar
el diagrama UML de la Figura 6-1 en la página L6-2; en particular,
la variable de instancia balance y el constructor de clase Account ahora
están protegidos (como indica el carácter # que sustituye al carácter -).
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Práctica 6-4 Lenguaje de programación Java™
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 1: Creación de subclases de cuenta bancaria (nivel 1)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Tarea 4: Eliminación de la clase TestBanking actual
En esta tarea va a eliminar la clase TestBanking actual del paquete de
origen com.mybank.test del proyecto BankPrj.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Diseño de clases Práctica 6-5
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 1: Creación de subclases de cuenta bancaria (nivel 1)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Retrieving the customer Owen Bryant with his checking account with no
overdraft protection.
Withdraw 150.00: true
Deposit 22.50: true
Withdraw 47.62: true
Withdraw 400.00: false
Customer [Bryant, Owen] has a balance of 324.88
Retrieving the customer Tim Soley with his checking account that has
overdraft protection.
Withdraw 150.00: true
Deposit 22.50: true
Withdraw 47.62: true
Withdraw 400.00: true
Customer [Soley, Tim] has a balance of 0.0
Retrieving the customer Maria Soley with her joint checking account with
husband Tim.
Deposit 150.00: true
Withdraw 750.00: false
Customer [Soley, Maria] has a balance of 150.0
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Práctica 6-6 Lenguaje de programación Java™
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 1: Creación de subclases de cuenta bancaria (nivel 2)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Ejercicio 1: Creación de subclases de cuenta bancaria
(nivel 2)
En este ejercicio va a crear dos subclases de la clase Account en el
proyecto bancario: SavingsAccount y CheckingAccount.
Preparación
No se precisa preparación para este ejercicio.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Diseño de clases Práctica 6-7
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 1: Creación de subclases de cuenta bancaria (nivel 2)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Tarea 1: Modificación de la clase Account
En esta tarea va a modificar la clase Account del paquete de origen
com.mybank.domain del proyecto BankPrj.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Práctica 6-8 Lenguaje de programación Java™
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 1: Creación de subclases de cuenta bancaria (nivel 2)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Tarea 3: Creación de la clase CheckingAccount
En esta tarea va a crear el archivo fuente de la clase CheckingAccount
en el paquete de origen com.mybank.domain del proyecto BankPrj.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Diseño de clases Práctica 6-9
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 1: Creación de subclases de cuenta bancaria (nivel 2)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Tarea 4: Eliminación de la clase TestBanking actual
En esta tarea va a eliminar la clase TestBanking actual del paquete de
origen com.mybank.test del proyecto BankPrj.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Práctica 6-10 Lenguaje de programación Java™
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 1: Creación de subclases de cuenta bancaria (nivel 2)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Retrieving the customer Owen Bryant with his checking account with no
overdraft protection.
Withdraw 150.00: true
Deposit 22.50: true
Withdraw 47.62: true
Withdraw 400.00: false
Customer [Bryant, Owen] has a balance of 324.88
Retrieving the customer Tim Soley with his checking account that has
overdraft protection.
Withdraw 150.00: true
Deposit 22.50: true
Withdraw 47.62: true
Withdraw 400.00: true
Customer [Soley, Tim] has a balance of 0.0
Retrieving the customer Maria Soley with her joint checking account with
husband Tim.
Deposit 150.00: true
Withdraw 750.00: false
Customer [Soley, Maria] has a balance of 150.0
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Diseño de clases Práctica 6-11
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 1: Creación de subclases de cuenta bancaria (nivel 3)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Ejercicio 1: Creación de subclases de cuenta bancaria
(nivel 3)
En este ejercicio va a crear dos subclases de la clase Account en el
proyecto bancario: SavingsAccount y CheckingAccount.
Preparación
No se precisa preparación para este ejercicio.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Práctica 6-12 Lenguaje de programación Java™
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 1: Creación de subclases de cuenta bancaria (nivel 3)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Tarea 1: Modificación de la clase Account
En esta tarea va a modificar la clase Account del paquete de origen
com.mybank.domain del proyecto BankPrj.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Diseño de clases Práctica 6-13
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 1: Creación de subclases de cuenta bancaria (nivel 3)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
3. Añada un constructor público que reciba dos argumentos:
initBalance y interestRate. Pase el parámetro initBalance al
constructor super. Guarde el parámetro interestRate en la variable
de instancia.
public SavingsAccount(double initBalance, double interestRate) {
super(initBalance);
this.interestRate = interestRate;
}
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Práctica 6-14 Lenguaje de programación Java™
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 1: Creación de subclases de cuenta bancaria (nivel 3)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
4. Añada un constructor público que reciba sólo un argumento:
initBalance. Llame al primer constructor con el parámetro
initBalance y utilice el valor predeterminado 0.0 para el
parámetro overdraftAmount.
public CheckingAccount(double initBalance) {
this(initBalance, 0.0);
}
5. Sobrescriba el método withdraw para usar la variable
overdraftAmount.
public boolean withdraw(double amount) {
boolean result = true;
if ( balance < amount ) {
double overdraftNeeded = amount - balance;
if ( overdraftAmount < overdraftNeeded ) {
result = false;
} else {
balance = 0.0;
overdraftAmount -= overdraftNeeded;
}
} else {
balance -= amount;
}
return result;
}
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Diseño de clases Práctica 6-15
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 1: Creación de subclases de cuenta bancaria (nivel 3)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Tarea 7: Ejecución del programa TestBanking
En esta tarea va a ejecutar el programa TestBanking. La salida debe ser
similar a la siguiente:
Creating the customer Jane Smith.
Creating her Savings Account with a 500.00 balance and 3% interest.
Creating the customer Owen Bryant.
Creating his Checking Account with a 500.00 balance and no overdraft
protection.
Creating the customer Tim Soley.
Creating his Checking Account with a 500.00 balance and 500.00 in
overdraft protection.
Creating the customer Maria Soley.
Maria shares her Checking Account with her husband Tim.
Retrieving the customer Owen Bryant with his checking account with no
overdraft protection.
Withdraw 150.00: true
Deposit 22.50: true
Withdraw 47.62: true
Withdraw 400.00: false
Customer [Bryant, Owen] has a balance of 324.88
Retrieving the customer Tim Soley with his checking account that has
overdraft protection.
Withdraw 150.00: true
Deposit 22.50: true
Withdraw 47.62: true
Withdraw 400.00: true
Customer [Soley, Tim] has a balance of 0.0
Retrieving the customer Maria Soley with her joint checking account with
husband Tim.
Deposit 150.00: true
Withdraw 750.00: false
Customer [Soley, Maria] has a balance of 150.0
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Práctica 6-16 Lenguaje de programación Java™
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 2: Creación de una colección heterogénea de cuentas de cliente (nivel 1)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Ejercicio 2: Creación de una colección heterogénea de
cuentas de cliente (nivel 1)
En este ejercicio va a crear una matriz heterogénea para representar la
agregación de clientes a cuentas. Es decir, un cliente determinado puede
tener varias cuentas de distintos tipos.
com.mybank.domain
SavingsAccount CheckingAccount
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Diseño de clases Práctica 6-17
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 2: Creación de una colección heterogénea de cuentas de cliente (nivel 1)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Preparación
No se precisa preparación para este ejercicio.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Práctica 6-18 Lenguaje de programación Java™
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 2: Creación de una colección heterogénea de cuentas de cliente (nivel 1)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
3. Rellene el código CustomerReport.java. Encontrará bloques
de comentarios que empiezan y terminan con /*** ... ***/.
Estos comentarios indican la ubicación del código que debe
suministrar.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Diseño de clases Práctica 6-19
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 2: Creación de una colección heterogénea de cuentas de cliente (nivel 2)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Ejercicio 2: Creación de una colección heterogénea de
cuentas de cliente (nivel 2)
En este ejercicio va a crear una matriz heterogénea para representar la
agregación de clientes a cuentas. Es decir, un cliente determinado puede
tener varias cuentas de distintos tipos.
Preparación
No se precisa preparación para este ejercicio.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Práctica 6-20 Lenguaje de programación Java™
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 2: Creación de una colección heterogénea de cuentas de cliente (nivel 2)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Tarea 1: Modificación de la clase Customer
En esta tarea va a modificar la clase Customer del paquete de origen
com.mybank.domain del proyecto BankPrj. Modifique la clase
Customer para manipular la asociación con múltiples cuentas, igual que
en el ejercicio 2 de la práctica 5. Ha de incluir los métodos públicos:
addAccount(Account), getAccount(int) y getNumOfAccounts().
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Diseño de clases Práctica 6-21
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 2: Creación de una colección heterogénea de cuentas de cliente (nivel 2)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
3. Rellene el código CustomerReport.java. Encontrará bloques
de comentarios que empiezan y terminan con /*** ... ***/.
Estos comentarios indican la ubicación del código que debe
suministrar.
a. Utilice el operador instanceof para probar qué tipo de
cuenta es y definir account_type en un valor apropiado,
como Savings Account o Checking Account.
b. Imprima el tipo de cuenta y el saldo.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Práctica 6-22 Lenguaje de programación Java™
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 2: Creación de una colección heterogénea de cuentas de cliente (nivel 3)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Ejercicio 2: Creación de una colección heterogénea de
cuentas de cliente (nivel 3)
En este ejercicio va a crear una matriz heterogénea para representar la
agregación de clientes a cuentas. Es decir, un cliente determinado puede
tener varias cuentas de distintos tipos.
Preparación
No se precisa preparación para este ejercicio.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Diseño de clases Práctica 6-23
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 2: Creación de una colección heterogénea de cuentas de cliente (nivel 3)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Tarea 1: Modificación de la clase Customer
En esta tarea va a modificar la clase Customer del paquete de origen
com.mybank.domain del proyecto BankPrj. Modifique la clase
Customer para manipular la asociación con múltiples cuentas, igual que
en el ejercicio 2 de la práctica 5. Ha de incluir los métodos públicos:
addAccount(Account), getAccount(int) y getNumOfAccounts().
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Tarea 2: Copia y rellenado de la clase CustomerReport
Lleve a cabo los pasos siguientes:
1. Cree el paquete de origen com.mybank.report en el proyecto
BankPrj.
2. Copie el archivo CustomerReport.java del directorio
resources/06_class1 al paquete de origen com.mybank.report
del proyecto BankPrj.
3. Rellene el código CustomerReport.java. Encontrará bloques
de comentarios que empiezan y terminan con /*** ... ***/.
Estos comentarios indican la ubicación del código que debe
suministrar.
a. Utilice el operador instanceof para probar qué tipo de cuenta
es y definir account_type en un valor apropiado, como
Savings Account o Checking Account.
if ( account instanceof SavingsAccount ) {
account_type = "Savings Account";
} else if ( account instanceof CheckingAccount ) {
account_type = "Checking Account";
} else {
account_type = "Unknown Account Type";
}
b. Imprima el tipo de cuenta y el saldo.
System.out.println(" " + account_type + ": current balance is "
+ account.getBalance());
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Ejercicio 3: Creación de un programa por lotes (avanzado)
En este ejercicio, va a crear un programa por lotes para acumular interés
en cada cuenta de ahorro de forma mensual.
TestBatch
AccumulateSavingsBatch CustomerReport
-bank : Bank -bank : Bank
«métodos» «métodos»
+doBatch():void +generateReport():void
+setBank(bank:Bank):void +setBank(bank:Bank):void
SavingsAccount
-interestRate : double
«constructores»
+SavingsAccount(initBalance:double,
interestRate:double)
«métodos»
+accumulateInterest():void
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Práctica 6-26 Lenguaje de programación Java™
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 3: Creación de un programa por lotes (avanzado)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Preparación
No se precisa preparación para este ejercicio.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Diseño de clases Práctica 6-27
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 3: Creación de un programa por lotes (avanzado)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
2. Añada la variable de instancia bank del tipo Bank.
3. Añada un método setBank para definir el parámetro del método en
la variable de instancia bank.
4. Añada el método doBatch siguiendo estas indicaciones:
for each Customer in the Bank do
for each Account in the Customer do
if the Account is a SavingsAccount,
then call the accumulateInterest method
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Práctica 6-28 Lenguaje de programación Java™
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 3: Creación de un programa por lotes (avanzado)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
ACCUMULATE SAVINGS BATCH EXECUTED
CUSTOMERS REPORT
================
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Diseño de clases Práctica 6-29
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Resumen del ejercicio
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Resumen del ejercicio
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Práctica 6-30 Lenguaje de programación Java™
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Práctica 7
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Conceptos avanzados sobre las clases
Objetivos
Las personas que realicen la práctica aprenderán a:
● Aplicar miembros de clase estática para resolver una decisión de
diseño
● Crear clases abstractas e interfaces, y explorar las propiedades
polimórficas de estos tipos de componentes
Práctica 7-1
Unauthorized reproduction orCopyright 2008
distribution Sun Microsystems,
prohibited. Copyright©Inc. Todos
2010, los derechos
Oracle and/or its reservados.
affiliates. Sun Services, Revisión G.2
Ejercicio 1: Aplicación de miembros estáticos a un diseño (nivel 1)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Ejercicio 1: Aplicación de miembros estáticos a un diseño
(nivel 1)
En este ejercicio va a aplicar miembros de clase estática para resolver una
decisión de diseño. El proyecto bancario utiliza actualmente una clase
concreta para representar el concepto de banco, que contiene el conjunto
de clientes del banco. El equipo del proyecto considera que es un diseño
arriesgado, porque se podría instanciar múltiples objetos Bank con la
posibilidad de contener diferentes conjuntos de clientes.
com.mybank.domain
Bank
-customers : Customer[]
-numberOfCustomers : int
«constructores»
-Bank()
«métodos»
+addCustomer(f:String, l:String)
+getNumOfCustomers():int
+getCustomer(index:int):Customer
serves
has-a 1
Customer Account
0..*
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Práctica 7-2 Lenguaje de programación Java™
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 1: Aplicación de miembros estáticos a un diseño (nivel 1)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Preparación
No se precisa preparación para este ejercicio.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Conceptos avanzados sobre las clases Práctica 7-3
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 1: Aplicación de miembros estáticos a un diseño (nivel 1)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Tarea 3: Eliminación de la clase TestReport actual
En esta tarea va a eliminar la clase TestReport actual del paquete de
origen com.mybank.test del proyecto BankPrj.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Práctica 7-4 Lenguaje de programación Java™
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 1: Aplicación de miembros estáticos a un diseño (nivel 2)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Ejercicio 1: Aplicación de miembros estáticos a un diseño
(nivel 2)
En este ejercicio va a aplicar miembros de clase estática para resolver una
decisión de diseño. El proyecto bancario utiliza actualmente una clase
concreta para representar el concepto de banco, que contiene el conjunto
de clientes del banco. El equipo del proyecto considera que es un diseño
arriesgado, porque se podría instanciar múltiples objetos Bank con la
posibilidad de contener diferentes conjuntos de clientes.
Preparación
No se precisa preparación para este ejercicio.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Conceptos avanzados sobre las clases Práctica 7-5
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 1: Aplicación de miembros estáticos a un diseño (nivel 2)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
● Desarrollo en Java: Clases de Java: Modificación de clases de Java:
Ejecución de programas de Java
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Práctica 7-6 Lenguaje de programación Java™
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 1: Aplicación de miembros estáticos a un diseño (nivel 2)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Tarea 2: Modificación de la clase CustomerReport
En esta tarea va a crear el archivo fuente de la clase CustomerReport en
el paquete de origen com.mybank.report del proyecto BankPrj. La clase
CustomerReport actualizada utiliza la clase Bank como clase de utilidad.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Conceptos avanzados sobre las clases Práctica 7-7
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 1: Aplicación de miembros estáticos a un diseño (nivel 3)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Ejercicio 1: Aplicación de miembros estáticos a un diseño
(nivel 3)
En este ejercicio va a aplicar miembros de clase estática para resolver una
decisión de diseño. El proyecto bancario utiliza actualmente una clase
concreta para representar el concepto de banco, que contiene el conjunto
de clientes del banco. El equipo del proyecto considera que es un diseño
arriesgado, porque se podría instanciar múltiples objetos Bank con la
posibilidad de contener diferentes conjuntos de clientes.
Preparación
No se precisa preparación para este ejercicio.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Práctica 7-8 Lenguaje de programación Java™
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 1: Aplicación de miembros estáticos a un diseño (nivel 3)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
● Desarrollo en Java: Clases de Java: Modificación de clases de Java:
Ejecución de programas de Java
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Conceptos avanzados sobre las clases Práctica 7-9
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 1: Aplicación de miembros estáticos a un diseño (nivel 3)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
6. Cambie todos los métodos a estáticos.
public static void addCustomer(String f, String l) {
int i = numberOfCustomers++;
customers[i] = new Customer(f, l);
}
public static int getNumOfCustomers() {
return numberOfCustomers;
}
public static Customer getCustomer(int customer_index) {
return customers[customer_index];
}
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Práctica 7-10 Lenguaje de programación Java™
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 1: Aplicación de miembros estáticos a un diseño (nivel 3)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Tarea 3: Eliminación de la clase TestReport actual
En esta tarea va a eliminar la clase TestReport actual del paquete de
origen com.mybank.test del proyecto BankPrj.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Conceptos avanzados sobre las clases Práctica 7-11
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 2: Uso de interfaces y clases abstractas (nivel 1)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Ejercicio 2: Uso de interfaces y clases abstractas (nivel 1)
En este ejercicio va a crear clases abstractas e interfaces, y a explorar las
propiedades polimórficas de estos tipos de componentes. Creará una
jerarquía de animales que tienen como raíz la clase abstracta Animal.
Varias clases de animales implementan una interfaz llamada Pet.
La Figura 7-2 muestra el diagrama UML de las clases de animales que va
a crear.
Animal
{abstract} «interfaz»
Pet
#legs : int
«constructores» +getName():String
#Animal(legs:int) +setName(n:String):void
+play()
«métodos»
+walk():void
+eat():void
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Práctica 7-12 Lenguaje de programación Java™
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 2: Uso de interfaces y clases abstractas (nivel 1)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Preparación
No se precisa preparación para este ejercicio.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Conceptos avanzados sobre las clases Práctica 7-13
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 2: Uso de interfaces y clases abstractas (nivel 1)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Tarea 2: Creación de las clases de Animal
Lleve a cabo los pasos siguientes:
1. Cree la clase Animal con las características siguientes:
Nombre de clase: Animal
Proyecto: InterfaceProject
Ubicación: Source Packages
Paquete: default package
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Práctica 7-14 Lenguaje de programación Java™
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 2: Uso de interfaces y clases abstractas (nivel 1)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Experimente con:
● Llamadas a los métodos de cada objeto
● Conversión de objetos
● Uso de polimorfismo
● Uso de super para llamar a todos los métodos de superclase
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Conceptos avanzados sobre las clases Práctica 7-15
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 2: Uso de interfaces y clases abstractas (nivel 2)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Ejercicio 2: Uso de interfaces y clases abstractas (nivel 2)
En este ejercicio va a crear clases abstractas e interfaces, y a explorar las
propiedades polimórficas de estos tipos de componentes. Creará una
jerarquía de animales que tienen como raíz la clase abstracta Animal.
Varias clases de animales implementarán una interfaz llamada Pet.
Utilice la Figura 7-2 en la página L7-12 como referencia. Experimentará
con variaciones de estos animales, sus métodos y polimorfismo.
Preparación
No se precisa preparación para este ejercicio.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Práctica 7-16 Lenguaje de programación Java™
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 2: Uso de interfaces y clases abstractas (nivel 2)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Tarea 1: Creación de la interfaz Pet
Lleve a cabo los pasos siguientes:
1. Abra el proyecto InterfaceProject del directorio
exercises/07_class2/exercise2.
2. Cree la interfaz Pet con las características siguientes:
Nombre de clase: Pet
Proyecto: InterfaceProject
Ubicación: Source Packages
Paquete: default package
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Conceptos avanzados sobre las clases Práctica 7-17
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 2: Uso de interfaces y clases abstractas (nivel 2)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
2. Cree la clase Spider.
a. Cree la clase Spider con las características siguientes:
Nombre de clase: Spider
Proyecto: InterfaceProject
Amplía: Animal
Ubicación: Source Packages
Paquete: default package
b. Defina un constructor no-arg que llame al constructor de
superclase para especificar que todas las arañas tienen ocho
patas.
c. Implemente el método eat.
3. Cree la clase Cat.
a. Cree la clase Cat con las características siguientes:
Nombre de clase: Cat
Proyecto: InterfaceProject
Amplía: Animal
Implementa: Pet
Ubicación: Source Packages
Paquete: default package
b. Esta clase debe incluir una variable de instancia String para
almacenar el hombre de la mascota.
c. Defina un constructor que reciba un parámetro String que
especifique el nombre del gato. Este constructor también debe
llamar al constructor de superclase para especificar que todos
los gatos tienen cuatro patas.
d. Defina otro constructor que no reciba parámetros.
Este constructor debe llamar al constructor anterior
(utilizando la palabra clave this) y pasar una cadena vacía
como argumento.
e. Implemente los métodos de interfaz Pet.
f. Implemente el método eat.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Práctica 7-18 Lenguaje de programación Java™
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 2: Uso de interfaces y clases abstractas (nivel 2)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
4. Cree la clase Fish.
a. Cree la clase Fish con las características siguientes:
Nombre de clase: Fish
Proyecto: InterfaceProject
Amplía: Animal
Implementa: Pet
Ubicación: Source Packages
Paquete: default package
b. Esta clase debe incluir una variable de instancia String para
almacenar el hombre de la mascota.
c. Defina un constructor no-arg que llame al constructor de
superclase para especificar que los peces no tienen patas.
d. Implemente los métodos de interfaz Pet.
e. Sobrescriba el método walk. Este método debe llamar al método
super y ambos imprimir el mensaje de que los peces no andan.
f. Implemente el método eat.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Conceptos avanzados sobre las clases Práctica 7-19
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 2: Uso de interfaces y clases abstractas (nivel 2)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Experimente con:
● Llamadas a los métodos de cada objeto
● Conversión de objetos
● Uso de polimorfismo
● Uso de super para llamar a todos los métodos de superclase
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Práctica 7-20 Lenguaje de programación Java™
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 2: Uso de interfaces y clases abstractas (nivel 3)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Ejercicio 2: Uso de interfaces y clases abstractas (nivel 3)
Va a crear una jerarquía de animales que tienen como raíz la clase
abstracta Animal. Varias clases de animales implementan una interfaz
llamada Pet. Utilice la Figura 7-2 en la página L7-12 como referencia.
Experimentará con variaciones de estos animales, sus métodos y
polimorfismo.
Preparación
No se precisa preparación para este ejercicio.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Conceptos avanzados sobre las clases Práctica 7-21
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 2: Uso de interfaces y clases abstractas (nivel 3)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Tarea 1: Creación de la interfaz Pet
Lleve a cabo los pasos siguientes:
1. Abra el proyecto InterfaceProject del directorio
exercises/07_class2/exercise2.
2. Cree la interfaz Pet con las características siguientes:
Nombre de clase: Pet
Proyecto: InterfaceProject
Ubicación: Source Packages
Paquete: default package
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Práctica 7-22 Lenguaje de programación Java™
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 2: Uso de interfaces y clases abstractas (nivel 3)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
c. Declare un método abstracto eat.
public abstract void eat();
d. Declare un método concreto walk que imprima algo sobre el
modo de caminar de los animales (incluya el número de patas).
public void walk() {
System.out.println("This animal walks on " + legs + " legs.");
}
2. Cree la clase Spider.
a. Cree la clase Spider con las características siguientes:
Nombre de clase: Spider
Proyecto: InterfaceProject
Amplía: Animal
Ubicación: Source Packages
Paquete: default package
a. La clase Spider amplía la clase Animal.
public class Spider extends Animal {
// más código aquí
}
b. Defina un constructor no-arg que llame al constructor de
superclase para especificar que todas las arañas tienen ocho
patas.
public Spider() {
super(8);
}
c. Implemente el método eat.
public void eat() {
System.out.println("The spider eats a fly.");
}
3. Cree la clase Cat.
a. Cree la clase Cat con las características siguientes:
Nombre de clase: Cat
Proyecto: InterfaceProject
Amplía: Animal
Implementa: Pet
Ubicación: Source Packages
Paquete: default package
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Conceptos avanzados sobre las clases Práctica 7-23
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 2: Uso de interfaces y clases abstractas (nivel 3)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
b. Esta clase debe incluir una variable de instancia String para
almacenar el hombre de la mascota.
private String nombre;
c. Defina un constructor que reciba un parámetro String que
especifique el nombre del gato. Este constructor también debe
llamar al constructor de superclase para especificar que todos
los gatos tienen cuatro patas.
public Cat(String n) {
super(4);
name = n;
}
d. Defina otro constructor que no reciba parámetros.
Este constructor debe llamar al constructor anterior
(utilizando la palabra clave this) y pasar una cadena vacía
como argumento.
public Cat() {
this("");
}
e. Implemente los métodos de interfaz Pet.
public String getName() {
return name;
}
public void setName(String n) {
name = n;
}
public void play() {
System.out.println(name + " likes to play with string.");
}
f. Implemente el método eat.
public void eat() {
System.out.println("Cats like to eat spiders and mice.");
}
4. Cree la clase Fish.
a. Cree la clase Fish con las características siguientes:
Nombre de clase: Fish
Proyecto: InterfaceProject
Amplía: Animal
Implementa: Pet
Ubicación: Source Packages
Paquete: default package
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Práctica 7-24 Lenguaje de programación Java™
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 2: Uso de interfaces y clases abstractas (nivel 3)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
b. Esta clase debe incluir una variable de instancia String para
almacenar el hombre de la mascota.
private String nombre;
c. Defina un constructor no-arg que llame al constructor de
superclase para especificar que los peces no tienen patas.
public Fish() {
super(0); // esta línea debe ir aquí
}
d. Implemente los métodos de interfaz Pet.
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void play() {
System.out.println("Fish swim in their tanks all day.");
}
e. Sobrescriba el método walk. Este método debe llamar al método
super y ambos imprimir el mensaje de que los peces no andan.
public void walk() {
super.walk();
System.out.println("Fish, of course, can’t walk; they swim.");
}
f. Implemente el método eat.
public void eat() {
System.out.println("Fish eat pond scum.");
}
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Conceptos avanzados sobre las clases Práctica 7-25
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 2: Uso de interfaces y clases abstractas (nivel 3)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
2. Añada el método main para crear y manipular instancias de las
clases antes creadas.
He aquí un ejemplo de programa de prueba:
public class TestAnimals {
public static void main(String[] args) {
Fish f = new Fish();
Cat c = new Cat("Fluffy");
Animal a = new Fish();
Animal e = new Spider();
Pet p = new Cat();
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Práctica 7-26 Lenguaje de programación Java™
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Resumen del ejercicio
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Resumen del ejercicio
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Conceptos avanzados sobre las clases Práctica 7-27
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Práctica 8
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Excepciones y aserciones
Objetivos
Las personas que realicen esta práctica podrán crear una excepción de
aplicación y aplicar la regla de declarar o gestionar a las clases de cuenta.
Práctica 8-1
Unauthorized reproduction orCopyright 2008
distribution Sun Microsystems,
prohibited. Copyright©Inc. Todos
2010, los derechos
Oracle and/or its reservados.
affiliates. Sun Services, Revisión G.2
Ejercicio: Creación de excepciones propias (nivel 1)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Ejercicio: Creación de excepciones propias (nivel 1)
En este ejercicio va a crear una excepción de descubierto denominada
OverdraftException que lanza el método withdraw de la clase
Account. En el diseño anterior, los métodos deposit y withdraw
devuelven un indicador booleano para señalar si la operación ha tenido
éxito o no. Este diseño tiene varios fallos, uno de los cuales es que el valor
de retorno false no devuelve al cliente que hace la llamada ninguna
indicación del motivo por el que la operación no ha tenido éxito. En el
nuevo diseño utilizará excepciones para indicar el fallo de la operación.
com.mybank.domain
Account
«excepción»
#balance : double Exception
{from java.lang}
«constructores»
#Account(initBalance:double)
«constructores»
«métodos» +Exception(msg:String)
+getBalance():double
+deposit(amt:double):void «métodos»
+withdraw(amt:double):void +getMessage():String
«enviar»
«excepción»
CheckingAccount
OverdraftException
-overdraftAmount : double
-deficit : double
«constructores»
«constructores»
+CheckingAccount(initBalance:double,
overdraft:double) +OverdraftException(msg:String,
deficit:double)
+CheckingAccount(initBalance:double)
«métodos»
«métodos»
+withdraw(amt:double):boid «enviar» +getDeficit():double
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Práctica 8-2 Lenguaje de programación Java™
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio: Creación de excepciones propias (nivel 1)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Este ejercicio contiene las siguientes secciones:
● “Tarea 1: Creación de la clase OverdraftException”
● “Tarea 2: Modificación de la clase Account”
● “Tarea 3: Modificación de la clase CheckingAccount”
● “Tarea 4: Eliminación de la clase TestBanking actual”
● “Tarea 5: Copia de la clase TestBanking”
● “Tarea 6: Compilación de la clase TestBanking”
● “Tarea 7: Ejecución del programa TestBanking”
Preparación
No se precisa preparación para este ejercicio.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Excepciones y aserciones Práctica 8-3
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio: Creación de excepciones propias (nivel 1)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Tarea 1: Creación de la clase OverdraftException
En esta tarea va a crear la clase OverdraftException en el paquete de
origen com.mybank.domain del proyecto BankPrj con las
características siguientes:
Nombre de clase: OverdraftException
Proyecto: BankPrj
Amplía: Exception
Ubicación: Source Packages
Paquete: com.mybank.domain
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Práctica 8-4 Lenguaje de programación Java™
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio: Creación de excepciones propias (nivel 1)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Tarea 5: Copia de la clase TestBanking
En esta tarea va a copiar el archivo TestBanking.java del directorio
resources/08_except al paquete de origen com.mybank.test del
proyecto BankPrj.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Excepciones y aserciones Práctica 8-5
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio: Creación de excepciones propias (nivel 2)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Ejercicio: Creación de excepciones propias (nivel 2)
En este ejercicio va a crear una excepción de descubierto denominada
OverdraftException que lanza el método withdraw de la clase
Account.
Preparación
No se precisa preparación para este ejercicio.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Práctica 8-6 Lenguaje de programación Java™
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio: Creación de excepciones propias (nivel 2)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Tarea 1: Creación de la clase OverdraftException
Lleve a cabo los pasos siguientes:
1. Cree la clase OverdraftException en el paquete de origen
com.mybank.domain del proyecto BankPrj con las características
siguientes:
Nombre de clase: OverdraftException
Proyecto: BankPrj
Amplía: Exception
Ubicación: Source Packages
Paquete: com.mybank.domain
2. Añada una variable de instancia privada llamada deficit que
mantenga double.
3. Añada un constructor público que reciba dos argumentos: mensaje y
deficit. El parámetro de mensaje debe pasarse al constructor de
superclase. El parámetro deficit inicializa la variable de instancia
deficit.
4. Añada un accedente público llamado getDeficit.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Excepciones y aserciones Práctica 8-7
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio: Creación de excepciones propias (nivel 2)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Tarea 3: Modificación de la clase CheckingAccount
En esta tarea va a modificar el archivo fuente de la clase
CheckingAccount del paquete de origen com.mybank.domain
del proyecto BankPrj. Modifique el método withdraw para que no
devuelva un valor (es decir, void). Declare que este método lanza
OverdraftException. Modifique el código para lanzar una excepción
cuando la cantidad de overdraftProtection no baste para cubrir el
déficit; utilice el mensaje Insufficient funds for overdraft
protection para esta excepción.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Práctica 8-8 Lenguaje de programación Java™
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio: Creación de excepciones propias (nivel 3)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Ejercicio: Creación de excepciones propias (nivel 3)
En este ejercicio va a crear una excepción de descubierto denominada
OverdraftException que lanza el método withdraw de la clase
Account.
Preparación
No se precisa preparación para este ejercicio.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Excepciones y aserciones Práctica 8-9
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio: Creación de excepciones propias (nivel 3)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Tarea 1: Creación de la clase OverdraftException
Lleve a cabo los pasos siguientes:
1. Cree la clase OverdraftException en el paquete de origen
com.mybank.domain del proyecto BankPrj con las características
siguientes:
Nombre de clase: OverdraftException
Proyecto: BankPrj
Amplía: Exception
Ubicación: Source Packages
Paquete: com.mybank.domain
package com.mybank.domain;
public class OverdraftException extends Exception {
// insertar código aquí
}
2. Añada una variable de instancia privada llamada deficit que
mantenga double.
private final double deficit;
3. Añada un constructor público que reciba dos argumentos: mensaje y
deficit. El parámetro de mensaje debe pasarse al constructor de
superclase. El parámetro deficit inicializa la variable de instancia
deficit.
public OverdraftException(String msg, double deficit) {
super(msg);
this.deficit = deficit;
}
4. Añada un accedente público llamado getDeficit.
public double getDeficit() {
return deficit;
}
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Práctica 8-10 Lenguaje de programación Java™
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio: Creación de excepciones propias (nivel 3)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Tarea 2: Modificación de la clase Account
En esta tarea va a modificar el archivo fuente de la clase Account en el
paquete de origen com.mybank.domain del proyecto BankPrj.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Excepciones y aserciones Práctica 8-11
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio: Creación de excepciones propias (nivel 3)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
public void withdraw(double amount) throws OverdraftException {
if ( balance < amount ) {
double overdraftNeeded = amount - balance;
if ( overdraftAmount < overdraftNeeded ) {
throw new OverdraftException("Insufficient funds for overdraft
protection",
overdraftNeeded);
} else {
balance = 0.0;
overdraftAmount -= overdraftNeeded;
}
} else {
balance = balance - amount;
}
}
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Práctica 8-12 Lenguaje de programación Java™
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Resumen del ejercicio
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Resumen del ejercicio
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Excepciones y aserciones Práctica 8-13
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Práctica 9
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Uso de colecciones y tipos genéricos
Objetivos
Las personas que realicen la práctica aprenderán a:
● Usar una colección genérica para administrar una asociación de uno
a varios
Práctica 9-1
Unauthorized reproduction orCopyright 2008
distribution Sun Microsystems,
prohibited. Copyright©Inc. Todos
2010, los derechos
Oracle and/or its reservados.
affiliates. Sun Services, Revisión G.2
Ejercicio 1: Uso de colecciones para representar asociaciones (nivel 1)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Ejercicio 1: Uso de colecciones para representar
asociaciones (nivel 1)
En este ejercicio va a usar colecciones genéricas para representar
asociaciones de clases en el modelo de dominio del proyecto bancario.
La Figura 9-1 muestra el modelo de dominio del proyecto bancario con las
asociaciones de clases: un banco presta servicio a muchos clientes y un
cliente tiene muchas cuentas. La Figura 9-1 también muestra el diseño
detallado de las clases Bank y Customer que utilizan una lista List
genérica para mantener estos vínculos.
com.mybank.domain
SavingsAccount CheckingAccount
Bank Customer
-customers : List<Customer> -accounts : List<Account>
-firstName : String
«constructores»
-lastName : String
-Bank()
«métodos» «constructores»
+addCustomer(f:String, l:String) +Customer(f:String, l:String)
+getNumOfCustomers():int «métodos»
+getCustomer(index:int):Customer +addAccount(acct:Account)
+getNumOfAccounts():int
+getAccount(index:int):Account
Figura 9-1 Modelo de dominio del proyecto bancario con detalles de las
clases Bank y Customer
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Práctica 9-2 Lenguaje de programación Java™
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 1: Uso de colecciones para representar asociaciones (nivel 1)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Este ejercicio contiene las siguientes secciones:
● “Tarea 1: Modificación de la clase Bank”
● “Tarea 2: Modificación de la clase Customer”
● “Tarea 3: Compilación de la clase TestReport”
● “Tarea 4: Ejecución del programa TestReport”
Preparación
No se precisa preparación para este ejercicio.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Uso de colecciones y tipos genéricos Práctica 9-3
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 1: Uso de colecciones para representar asociaciones (nivel 1)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Tarea 3: Compilación de la clase TestReport
En esta tarea va a compilar la clase TestReport.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Práctica 9-4 Lenguaje de programación Java™
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 1: Uso de colecciones para representar asociaciones (nivel 2)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Ejercicio 1: Uso de colecciones para representar
asociaciones (nivel 2)
En este ejercicio va a usar colecciones genéricas para representar
asociaciones de clases en el modelo de dominio del proyecto bancario.
Preparación
No se precisa preparación para este ejercicio. Referencia a herramientas: Referencias a herramientas usadas en este
ejercicio:
● Desarrollo en Java: Clases de Java: Modificación de clases de Java:
Compilación de clases de Java
● Desarrollo en Java: Clases de Java: Modificación de clases de Java:
Ejecución de programas de Java
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Uso de colecciones y tipos genéricos Práctica 9-5
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 1: Uso de colecciones para representar asociaciones (nivel 2)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Tarea 1: Modificación de la clase Bank
En esta tarea va a modificar el archivo fuente de la clase Bank en el
paquete de origen com.mybank.domain del proyecto BankPrj.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Práctica 9-6 Lenguaje de programación Java™
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 1: Uso de colecciones para representar asociaciones (nivel 2)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Tarea 4: Ejecución del programa TestReport
En esta tarea va a ejecutar el programa TestReport. La salida debe ser
similar a la siguiente:
CUSTOMERS REPORT
================
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Uso de colecciones y tipos genéricos Práctica 9-7
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 1: Uso de colecciones para representar asociaciones (nivel 3)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Ejercicio 1: Uso de colecciones para representar
asociaciones (nivel 3)
En este ejercicio va a usar colecciones genéricas para representar
asociaciones de clases en el modelo de dominio del proyecto bancario.
Preparación
No se precisa preparación para este ejercicio.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Práctica 9-8 Lenguaje de programación Java™
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 1: Uso de colecciones para representar asociaciones (nivel 3)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Tarea 1: Modificación de la clase Bank
En esta tarea va a modificar el archivo fuente de la clase Bank en el
paquete de origen com.mybank.domain del proyecto BankPrj.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Uso de colecciones y tipos genéricos Práctica 9-9
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 1: Uso de colecciones para representar asociaciones (nivel 3)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Tarea 2: Modificación de la clase Customer
En esta tarea va a modificar el archivo fuente de la clase Customer del
paquete de origen com.mybank.domain del proyecto BankPrj.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Práctica 9-10 Lenguaje de programación Java™
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 1: Uso de colecciones para representar asociaciones (nivel 3)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Tarea 4: Ejecución del programa TestReport
En esta tarea va a ejecutar el programa TestReport. La salida debe ser
similar a la siguiente:
CUSTOMERS REPORT
================
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Uso de colecciones y tipos genéricos Práctica 9-11
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Resumen del ejercicio
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Resumen del ejercicio
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Práctica 9-12 Lenguaje de programación Java™
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Práctica 10
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Principios básicos de E/S
Práctica 10-1
Unauthorized reproduction orCopyright 2008
distribution Sun Microsystems,
prohibited. Copyright©Inc. Todos
2010, los derechos
Oracle and/or its reservados.
affiliates. Sun Services, Revisión G.2
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Práctica 11
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
E/S de consola y E/S de archivos
Objetivos
Las personas que realicen la práctica aprenderán a:
● Leer un archivo de datos mediante la API Scanner
● Usar una colección genérica para administrar una asociación de uno
a varios
Práctica 11-1
Unauthorized reproduction orCopyright 2008
distribution Sun Microsystems,
prohibited. Copyright©Inc. Todos
2010, los derechos
Oracle and/or its reservados.
affiliates. Sun Services, Revisión G.2
Ejercicio 1: Lectura de un archivo de datos (nivel 1)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Ejercicio 1: Lectura de un archivo de datos (nivel 1)
En este ejercicio va a crear una clase que lee datos de cliente y de cuenta
en un archivo plano.
TestReport
DataSource CustomerReport
{from com.mybank.data}
-dataFile : Archivo
«constructores»
+DataSource(dataFilePath:String)
«excepción»
«métodos» IOException
«enviar»
+loadData():void {from java.io}
«leer»
test.dat
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Práctica 11-2 Lenguaje de programación Java™
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 1: Lectura de un archivo de datos (nivel 1)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
El Código 11-2 muestra un ejemplo del formato del archivo de datos
de cliente. Este archivo de datos contiene cuatro registros de cliente.
El primero corresponde a Jane Simms, que tiene dos cuentas bancarias.
La segunda es una cuenta de ahorro, con un saldo inicial de 500.00 y un
tipo de interés del 5% (0.05). La segunda es una cuenta corriente, con un
saldo inicial de 200.00 y una protección de descubierto de 400.00.
Jane Simms 2
S 500.00 0.05
C 200.00 400.00
Owen Bryant 1
C 200.00 0.00
Tim Soley 2
S 1500.00 0.05
C 200.00 0.00
Maria Soley 1
S 150.00 0.05
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
E/S de consola y E/S de archivos Práctica 11-3
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 1: Lectura de un archivo de datos (nivel 1)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Preparación
No se precisa preparación para este ejercicio.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Práctica 11-4 Lenguaje de programación Java™
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 1: Lectura de un archivo de datos (nivel 1)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Tarea 2: Copia del archivo de recursos
En esta tarea va a copiar el archivo test.dat del directorio
resources/11_fileio al directorio data.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
E/S de consola y E/S de archivos Práctica 11-5
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 1: Lectura de un archivo de datos (nivel 1)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Tarea 6: Compilación de la clase TestReport
En esta tarea va a compilar la clase TestReport. Si hay errores de
compilación, realice los cambios necesarios en la clase y recompílela.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Práctica 11-6 Lenguaje de programación Java™
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 1: Lectura de un archivo de datos (nivel 2)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Ejercicio 1: Lectura de un archivo de datos (nivel 2)
En este ejercicio va a crear una clase que lee datos de cliente y de cuenta
en un archivo plano.
Preparación
No se precisa preparación para este ejercicio.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
E/S de consola y E/S de archivos Práctica 11-7
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 1: Lectura de un archivo de datos (nivel 2)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Para este ejercicio va a trabajar en el proyecto BankPrj del directorio
projects.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Práctica 11-8 Lenguaje de programación Java™
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 1: Lectura de un archivo de datos (nivel 2)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
4. Añada un método público, loadData, que rellene los objetos de
cliente de Bank y los objetos de cuenta de cada cliente. Este es el
seudocódigo para este método:
read <number-of-customers>
for each customer record
read <first-name> and <last-name>
add customer to Bank
read <number-of-accounts>
for each account
read <account-type-code>
switch on <account-type-code>
Savings:
read <initial-balance> and <interest-rate)
create account and add account to customer
Checking:
read <initial-balance> and <overdraft-amount)
create account and add account to customer
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
E/S de consola y E/S de archivos Práctica 11-9
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 1: Lectura de un archivo de datos (nivel 2)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Tarea 7: Ejecución del proyecto BankPrj
En esta tarea va a definir la clase TestReport como clase principal del
proyecto BankPrj y a ejecutar el proyecto BankPrj con un argumento
data/test.dat.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Práctica 11-10 Lenguaje de programación Java™
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 1: Lectura de un archivo de datos (nivel 3)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Ejercicio 1: Lectura de un archivo de datos (nivel 3)
En este ejercicio va a crear una clase que lee datos de cliente y de cuenta
en un archivo plano.
Preparación
No se precisa preparación para este ejercicio.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
E/S de consola y E/S de archivos Práctica 11-11
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 1: Lectura de un archivo de datos (nivel 3)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Para este ejercicio va a trabajar en el proyecto BankPrj del directorio
projects.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Práctica 11-12 Lenguaje de programación Java™
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 1: Lectura de un archivo de datos (nivel 3)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Tarea 3: Creación de la clase DataSource
Lleve a cabo los pasos siguientes:
1. Cree la clase DataSource en el paquete de origen
com.mybank.data del proyecto BankPrj con las características
siguientes:
Nombre de clase: DataSource
Proyecto: BankPrj
Ubicación: Source Packages
Paquete: com.mybank.data
package com.mybank.data;
// insertar aquí sentencias de importación
public class DataSource {
// insertar código aquí
}
2. Añada una sentencia de importación para importar los nombres de
clase necesarios:
import com.mybank.domain.*;
import java.io.File;
import java.io.IOException;
import java.util.Scanner;
3. Añada la variable de instancia dataFile a la clase DataSource.
private File dataFile;
4. Añada un constructor público que reciba un argumento de cadena
dataFilePath e inicialice la variable de instancia dataFile.
public DataSource(String dataFilePath) {
this.dataFile = new File(dataFilePath);
}
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
E/S de consola y E/S de archivos Práctica 11-13
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 1: Lectura de un archivo de datos (nivel 3)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
5. Añada un método público, loadData, que rellene los objetos de
cliente de Bank y los objetos de cuenta de cada cliente, como sigue:
public void loadData() throws IOException {
// Variables de fuente de datos
Scanner input = new Scanner(dataFile);
// Variables de dominio
Customer customer;
int numOfCustomers = input.nextInt();
for ( int idx = 0; idx < numOfCustomers; idx++ ) {
// Crear objeto de cliente
String firstName = input.next();
String lastName = input.next();
Bank.addCustomer(firstName, lastName);
customer = Bank.getCustomer(idx);
// Crear cuentas de cliente
int numOfAccounts = input.nextInt();
while ( numOfAccounts-- > 0 ) {
// Crear un tipo de cuenta específico
char accountType = input.next().charAt(0);
switch ( accountType ) {
// Cuenta de ahorro
case ’S’: {
float initBalance = input.nextFloat();
float interestRate = input.nextFloat();
customer.addAccount(new SavingsAccount(initBalance,
interestRate));
break;
}
// Checking account
case ’C’: {
float initBalance = input.nextFloat();
float overdraftProtection = input.nextFloat();
customer.addAccount(new CheckingAccount(initBalance,
overdraftProtection));
break;
}
} // FIN de cambio
} // FIN de bucle de creación de cuentas
} // FIN de bucle de creación de clientes
}
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Práctica 11-14 Lenguaje de programación Java™
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 1: Lectura de un archivo de datos (nivel 3)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Tarea 4: Eliminación de clases innecesarias
En esta tarea va a eliminar las siguientes clases de Java que ya no se utilizan:
TestReport
TestAccount
TestAccount2
TestBatch
TestBanking
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
E/S de consola y E/S de archivos Práctica 11-15
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 1: Lectura de un archivo de datos (nivel 3)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
3. Ejecute el proyecto BankPrj. La salida debe ser similar a la
siguiente:
Lectura del archivo de datos: ../data/test.dat
CUSTOMERS REPORT
================
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Práctica 11-16 Lenguaje de programación Java™
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Resumen del ejercicio
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Resumen del ejercicio
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
E/S de consola y E/S de archivos Práctica 11-17
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Práctica 12
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Creación de interfaces gráficas con la API Swing
Objetivos
Las personas que realicen la práctica aprenderán a:
● Crear una interfaz gráfica de usuario (GUI) para el proyecto
ChatRoom
● (Opcional ) Crear una interfaz gráfica de usuario (GUI) para el
proyecto bancario
Práctica 12-1
Unauthorized reproduction orCopyright 2008
distribution Sun Microsystems,
prohibited. Copyright©Inc. Todos
2010, los derechos
Oracle and/or its reservados.
affiliates. Sun Services, Revisión G.2
Ejercicio 1: Creación de la GUI ChatClient - Parte 1 (nivel 1)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Ejercicio 1: Creación de la GUI ChatClient - Parte 1
(nivel 1)
En este ejercicio creará una GUI para una aplicación de charla virtual
llamada chat room. Utilizará un diseño complejo para colocar
correctamente en el marco diversos componentes de la GUI.
La Figura 12-1 muestra el diseño que debe intentar conseguir para la GUI.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Práctica 12-2 Lenguaje de programación Java™
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 1: Creación de la GUI ChatClient - Parte 1 (nivel 1)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Preparación
No se precisa preparación para este ejercicio.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Creación de interfaces gráficas con la API Swing Práctica 12-3
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 1: Creación de la GUI ChatClient - Parte 1 (nivel 1)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
2. Cree la clase ChatClient en el paquete de origen del proyecto
ChatRoomPrj con las características siguientes:
Nombre de clase: ChatClient
Proyecto: ChatRoomPrj
Ubicación: Source Packages
Paquete: default package
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Práctica 12-4 Lenguaje de programación Java™
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 1: Creación de la GUI ChatClient - Parte 1 (nivel 2)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Ejercicio 1: Creación de la GUI ChatClient - Parte 1
(nivel 2)
En este ejercicio creará una GUI para una aplicación de charla virtual
llamada chat room. Utilizará un diseño complejo para colocar correctamente
en el marco diversos componentes de la GUI.
Preparación
No se precisa preparación para este ejercicio.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Creación de interfaces gráficas con la API Swing Práctica 12-5
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 1: Creación de la GUI ChatClient - Parte 1 (nivel 2)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Tarea 1: Creación de la clase ChatClient
En esta tarea va a crear la clase ChatClient en el paquete de origen del
proyecto ChatRoomPrj para implementar el diseño de GUI de la
Figura 12-1 en la página 12-2.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Práctica 12-6 Lenguaje de programación Java™
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 1: Creación de la GUI ChatClient - Parte 1 (nivel 2)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Tarea 2: Compilación de la clase ChatClient
En esta tarea va a compilar la clase ChatClient.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Creación de interfaces gráficas con la API Swing Práctica 12-7
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 1: Creación de la GUI ChatClient - Parte 1 (nivel 3)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Ejercicio 1: Creación de la GUI ChatClient - Parte 1
(nivel 3)
En este ejercicio creará una GUI para una aplicación de charla virtual
llamada chat room. Utilizará un diseño complejo para colocar correctamente
en el marco diversos componentes de la GUI.
Preparación
No se precisa preparación para este ejercicio.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Práctica 12-8 Lenguaje de programación Java™
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 1: Creación de la GUI ChatClient - Parte 1 (nivel 3)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Tarea 1: Creación de la clase ChatClient
En esta tarea va a crear la clase ChatClient en el paquete de origen del
proyecto ChatRoomPrj para implementar el diseño de GUI de la
Figura 12-1 en la página 12-2.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Creación de interfaces gráficas con la API Swing Práctica 12-9
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 1: Creación de la GUI ChatClient - Parte 1 (nivel 3)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
5. Añada un constructor público que inicialice cada una de las cuatro
variables de instancia de componente de la GUI: El área de texto
debe tener 10 filas de alto y 50 columnas de ancho; el campo de texto
debe tener 50 columnas de ancho; el botón de envío debe mostrar la
palabra Send en la pantalla, y el botón de salida debe mostrar la
palabra Quit.
public ChatClient() {
output = new JTextArea(10,50);
input = new JTextField(50);
sendButton = new JButton("Send");
quitButton = new JButton("Quit");
}
6. Cree un método launchFrame que construya el diseño de los
componentes. No dude en utilizar paneles anidados y cualquier
administrador de diseño que le ayude a crear el diseño de la GUI
antes ilustrado.
public void launchFrame() {
JFrame frame = new JFrame("Chat Room");
frame.add(output, BorderLayout.WEST);
frame.add(input, BorderLayout.SOUTH);
frame.pack();
frame.setVisible(true);
}
7. Cree el método main. Este método instancia un nuevo objeto
ChatClient y después llama al método launchFrame.
public static void main(String[] args) {
ChatClient c = new ChatClient();
c.launchFrame();
}
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Práctica 12-10 Lenguaje de programación Java™
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 1: Creación de la GUI ChatClient - Parte 1 (nivel 3)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Tarea 2: Compilación de la clase ChatClient
En esta tarea va a compilar la clase ChatClient.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Creación de interfaces gráficas con la API Swing Práctica 12-11
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 2: Creación de la GUI Bank ATM - Parte 1 (avanzado)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Ejercicio 2: Creación de la GUI Bank ATM - Parte 1
(avanzado)
En este ejercicio va a crear una GUI de cajero automático (ATM) para el
proyecto bancario. Utilizará un diseño complejo para colocar
correctamente en el marco diversos componentes de la GUI.
La Figura 12-2 muestra el diseño que debe intentar conseguir para la GUI.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Práctica 12-12 Lenguaje de programación Java™
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 2: Creación de la GUI Bank ATM - Parte 1 (avanzado)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Preparación
No se precisa preparación para este ejercicio.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Creación de interfaces gráficas con la API Swing Práctica 12-13
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 2: Creación de la GUI Bank ATM - Parte 1 (avanzado)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Tarea 2: Modificación de la clase ATMClient
En esta tarea va a modificar la clase ATMClient para implementar la
pantalla de la GUI ATM, ilustrada en la Figura 12-2 en la página 12-12.
Los componentes de la GUI deben tener las características siguientes:
● El campo de texto de mensajes debe tener 75 caracteres de ancho
(denominado columnas en la documentación de la API) y ser de sólo
lectura, lo que significa que el usuario no puede escribir en el campo.
● El campo de texto de entrada de datos debe tener 10 caracteres
de ancho y ser de sólo lectura. Los botones del teclado numérico
servirán al usuario para introducir los datos que aparecerán en el
campo de entrada de datos. Esta acción se codificará en el próximo
módulo.
● El área de salida de texto debe tener 75 caracteres de ancho y 10 de
alto (denominado filas en la documentación de la API) y ser de sólo
lectura.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Práctica 12-14 Lenguaje de programación Java™
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 2: Creación de la GUI Bank ATM - Parte 1 (avanzado)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Sugerencias
Estas indicaciones pueden ayudarle a resolver el ejercicio.
● Para que un componente sea de sólo lectura, use el método
setEnabled(false).
● Puede utilizar un diseño de cuadrícula para crear un diseño vertical
incluyendo un 1 en los parámetros rows del constructor
GridLayout(int rows, int columns).
● Puede utilizar un diseño de cuadrícula para crear un diseño
horizontal incluyendo un 1 en los parámetros columns del
constructor GridLayout(int columns, int columns).
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Creación de interfaces gráficas con la API Swing Práctica 12-15
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Resumen del ejercicio
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Resumen del ejercicio
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Práctica 12-16 Lenguaje de programación Java™
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Práctica 13
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Control de los eventos generados por la
interfaz gráfica
Objetivos
Las personas que realicen la práctica aprenderán a:
● Crear los controladores de eventos de la interfaz gráfica (GUI) para
el proyecto ChatRoom
● (Opcional) Crear los controladores de eventos de la interfaz gráfica
para el proyecto bancario
Práctica 13-1
Unauthorized reproduction orCopyright 2008
distribution Sun Microsystems,
prohibited. Copyright©Inc. Todos
2010, los derechos
Oracle and/or its reservados.
affiliates. Sun Services, Revisión G.2
Ejercicio 1: Creación de la GUI ChatClient - Parte 2 (nivel 1)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Ejercicio 1: Creación de la GUI ChatClient - Parte 2
(nivel 1)
En este ejercicio implementará los controladores de eventos básicos para
la aplicación chat room. En esta fase de desarrollo de la GUI ChatClient
debe crear los siguientes receptores de eventos:
● Un receptor ActionListener que copie el texto del campo de
introducción de texto en el área de salida de texto cuando se pulse
el botón Send.
● Un receptor ActionListener que copie el texto del campo de
introducción de texto en el área de salida de texto cuando se pulse
el botón Intro en el campo de introducción de texto.
● Un receptor ActionListener que cierre el programa cuando se
pulse el botón Quit. (Sugerencia: use System.exit(0).)
● Un receptor WindowListener que cierre el programa cuando se
pulse el objeto de cierre en el marco.
Preparación
No se precisa preparación para este ejercicio.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Práctica 13-2 Lenguaje de programación Java™
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 1: Creación de la GUI ChatClient - Parte 2 (nivel 1)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Tarea 1: Modificación de la clase ChatClient
En esta tarea va a modificar la clase ChatClient del paquete de origen
del proyecto ChatRoomPrj. Esta clase debe implementar los receptores
de eventos indicados en la introducción a este ejercicio.
Sugerencias
Siga estas indicaciones en este ejercicio:
● Los receptores (clases internas) deben acceder a las variables de
instancia de la clase que los contiene para hacer referencia a
componentes como el área de salida de texto y el campo de
introducción de texto. Recuerde que en la práctica anterior convirtió
los componentes en variables de instancia.
● No olvide importar el paquete java.awt.event.
● Para obtener el texto de un área JTextArea o un campo
JTextField, puede utilizar el método getText; para definir el texto,
use el método setText o append.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Control de los eventos generados por la interfaz gráfica Práctica 13-3
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 1: Creación de la GUI ChatClient - Parte 2 (nivel 2)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Ejercicio 1: Creación de la GUI ChatClient - Parte 2
(nivel 2)
En este ejercicio implementará los controladores de eventos básicos para
la aplicación chat room. En esta fase de desarrollo de la GUI ChatClient
debe crear los receptores de eventos indicados en el ‘‘Ejercicio 1: Creación
de la GUI ChatClient - Parte 2 (nivel 1)’’ en la página L13-2:
Preparación
No se precisa preparación para este ejercicio.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Práctica 13-4 Lenguaje de programación Java™
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 1: Creación de la GUI ChatClient - Parte 2 (nivel 2)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Tarea 1: Modificación de la clase ChatClient
En esta tarea va a modificar la clase ChatClient del paquete de origen
del proyecto ChatRoomPrj. Esta clase debe implementar los receptores
de eventos indicados en la introducción al ‘‘Ejercicio 1: Creación de la GUI
ChatClient - Parte 2 (nivel 1)’’ en la página L13-2.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Control de los eventos generados por la interfaz gráfica Práctica 13-5
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 1: Creación de la GUI ChatClient - Parte 2 (nivel 3)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Ejercicio 1: Creación de la GUI ChatClient - Parte 2
(nivel 3)
En este ejercicio implementará los controladores de eventos básicos para
la aplicación chat room. En esta fase de desarrollo de la GUI ChatClient
debe crear los receptores de eventos indicados en el ‘‘Ejercicio 1: Creación
de la GUI ChatClient - Parte 2 (nivel 1)’’ en la página L13-2:
Preparación
No se precisa preparación para este ejercicio.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Práctica 13-6 Lenguaje de programación Java™
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 1: Creación de la GUI ChatClient - Parte 2 (nivel 3)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Tarea 1: Modificación de la clase ChatClient
En esta tarea va a modificar la clase ChatClient del paquete de origen
del proyecto ChatRoomPrj. Esta clase debe implementar los receptores
de eventos indicados en la introducción al ‘‘Ejercicio 1: Creación de la GUI
ChatClient - Parte 2 (nivel 1)’’ en la página L13-2.
1. Importe el paquete java.awt.event.
import java.awt.event.*;
public class ChatClient {
// su código aquí
}
2. Añada el receptor ActionListener para el botón Send. Este receptor
debe extraer el texto del campo de texto y mostrar dicho texto en el
área de texto. Utilice una clase interna para este receptor.
private void launchFrame() {
// aquí código de inicialización de componente de GUI
sendButton.addActionListener(new SendHandler());
// más código
}
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Control de los eventos generados por la interfaz gráfica Práctica 13-7
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 1: Creación de la GUI ChatClient - Parte 2 (nivel 3)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
4. Añada el método WindowListener al marco de la GUI. Este receptor
debe cerrar el programa ChatClient. Utilice una clase interna para
este receptor.
private void launchFrame() {
// aquí código de inicialización de componente de GUI
frame.addWindowListener(new CloseHandler());
// más código
}
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Práctica 13-8 Lenguaje de programación Java™
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 2: Creación de la GUI Bank ATM - Parte 2 (avanzado)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Ejercicio 2: Creación de la GUI Bank ATM - Parte 2
(avanzado)
En este ejercicio va a modificar la clase ATMClient del proyecto
BankPrj agregando las funciones de control de eventos necesarias.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Control de los eventos generados por la interfaz gráfica Práctica 13-9
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 2: Creación de la GUI Bank ATM - Parte 2 (avanzado)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Preparación
No se precisa preparación para este ejercicio.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Práctica 13-10 Lenguaje de programación Java™
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio 2: Creación de la GUI Bank ATM - Parte 2 (avanzado)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
A continuación se muestra un ejemplo de transacción en cajero
automático para Owen Bryant:
Enter your customer ID into the key pad and press the ENTER button
(Introduzca su ID de cliente con el teclado y pulse el botón Intro).
Welcome Owen Bryant
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Control de los eventos generados por la interfaz gráfica Práctica 13-11
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Resumen del ejercicio
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Resumen del ejercicio
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Práctica 13-12 Lenguaje de programación Java™
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Práctica 14
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Aplicaciones basadas en la interfaz gráfica
Objetivos
Las personas que realicen la práctica aprenderán a agregar menús a la
GUI del proyecto ChatRoom.
Práctica 14-1
Unauthorized reproduction orCopyright 2008
distribution Sun Microsystems,
prohibited. Copyright©Inc. Todos
2010, los derechos
Oracle and/or its reservados.
affiliates. Sun Services, Revisión G.2
Ejercicio: Creación de la GUI ChatClient - Parte 3 (nivel 1)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Ejercicio: Creación de la GUI ChatClient - Parte 3
(nivel 1)
En este ejercicio ampliará la GUI para una aplicación de charla virtual
llamada chat room. La GUI de ChatClient se completa con un
componente JComboBox, otro JScrollPane y dos menús.
La Figura 14-1 muestra el diseño que debe intentar conseguir para la GUI.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Práctica 14-2 Lenguaje de programación Java™
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio: Creación de la GUI ChatClient - Parte 3 (nivel 1)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Preparación
No se precisa preparación para este ejercicio.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Aplicaciones basadas en la interfaz gráfica Práctica 14-3
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio: Creación de la GUI ChatClient - Parte 3 (nivel 2)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Ejercicio: Creación de la GUI ChatClient - Parte 3
(nivel 2)
En este ejercicio ampliará la GUI para una aplicación de charla virtual
llamada chat room. La GUI de ChatClient se completa con un
componente JComboBox y dos menús.
Preparación
No se precisa preparación para este ejercicio.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Práctica 14-4 Lenguaje de programación Java™
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio: Creación de la GUI ChatClient - Parte 3 (nivel 2)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Tarea 1: Modificación de la clase ChatClient
En esta tarea va a modificar la clase ChatClient del paquete de origen
del proyecto ChatRoomPrj. La clase debe implementar el diseño de la
GUI de la Figura 14-1 en la página L14-2.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Aplicaciones basadas en la interfaz gráfica Práctica 14-5
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio: Creación de la GUI ChatClient - Parte 3 (nivel 3)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Ejercicio: Creación de la GUI ChatClient - Parte 3
(nivel 3)
En este ejercicio ampliará la GUI para una aplicación de charla virtual
llamada chat room. La GUI de ChatClient se completa con un
componente JComboBox y dos menús.
Preparación
No se precisa preparación para este ejercicio.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Práctica 14-6 Lenguaje de programación Java™
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio: Creación de la GUI ChatClient - Parte 3 (nivel 3)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Tarea 1: Modificación de la clase ChatClient
En esta tarea va a modificar la clase ChatClient del paquete de origen
del proyecto ChatRoomPrj. La clase debe implementar el diseño de la
GUI de la Figura 14-1 en la página L14-2.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Aplicaciones basadas en la interfaz gráfica Práctica 14-7
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio: Creación de la GUI ChatClient - Parte 3 (nivel 3)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
6. Añada un componente JScrollPane al proyecto y el componente
JTextArea a JScrollPane. Añada una barra de desplazamiento
vertical, pero ninguna horizontal.
// Agregar declaración
private JScrollPane textPane;
// código anterior aquí
8. Añada el menú File. Este menú debe incluir un menú Quit que cierre
el programa.
public void launchFrame() {
// código anterior aquí
// Crear barra de menús y menú File
JMenuBar mb = new JMenuBar();
JMenu file = new JMenu("File");
JMenuItem quitMenuItem = new JMenuItem("Quit");
quitMenuItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});
file.add(quitMenuItem);
mb.add(file);
frame.setJMenuBar(mb);
// código anterior aquí
}
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Práctica 14-8 Lenguaje de programación Java™
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio: Creación de la GUI ChatClient - Parte 3 (nivel 3)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
9. Añada el menú Help. Este menú debe incluir una opción de menú
About que abra un cuadro de diálogo sencillo, con un comentario
sobre el programa y sobre el desarrollador, usted.
public void launchFrame() {
// aquí código de barra de menús anterior
// Agregar menú Help a barra de menús
JMenu help = new JMenu("Help");
JMenuItem aboutMenuItem = new JMenuItem("About");
aboutMenuItem.addActionListener(new AboutHandler());
help.add(aboutMenuItem);
mb.add(help);
// código anterior aquí
}
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Aplicaciones basadas en la interfaz gráfica Práctica 14-9
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio: Creación de la GUI ChatClient - Parte 3 (nivel 3)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Tarea 2: Compilación de la clase ChatClient
En esta tarea va a compilar la clase ChatClient.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Práctica 14-10 Lenguaje de programación Java™
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Resumen del ejercicio
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Resumen del ejercicio
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Aplicaciones basadas en la interfaz gráfica Práctica 14-11
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Práctica 15
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Subprocesos
Objetivos
Las personas que realicen la práctica aprenderán a crear una aplicación
multisubproceso sencilla.
Práctica 15-1
Unauthorized reproduction orCopyright 2008
distribution Sun Microsystems,
prohibited. Copyright©Inc. Todos
2010, los derechos
Oracle and/or its reservados.
affiliates. Sun Services, Revisión G.2
Ejercicio: Programación multisubproceso (nivel 1)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Ejercicio: Programación multisubproceso (nivel 1)
En este ejercicio creará un programa mulithilo para familiarizarse con los
conceptos del procesamiento multisubproceso.
Preparación
No se precisa preparación para este ejercicio.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Práctica 15-2 Lenguaje de programación Java™
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio: Programación multisubproceso (nivel 1)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Tarea 1: Creación de la clase PrintMe
Lleve a cabo los pasos siguientes:
1. Abra el proyecto ThreadProject del directorio
exercises/15_threads.
2. Cree una clase PrintMe en el paquete de origen del proyecto
ThreadProject con las características siguientes:
Nombre de clase: PrintMe
Proyecto: ThreadProject
Implementa: Ejecutable
Ubicación: Source Packages
Paquete: default package
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Subprocesos Práctica 15-3
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio: Programación multisubproceso (nivel 1)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Tarea 4: Ejecución del programa TestThreeThreads
En esta tarea va a ejecutar el programa TestThreeThreads. Debería ver
un resultado similar al siguiente:
T3 - Moe
T2 - Curly
T1 - Larry
T1 - Larry
T3 - Moe
T2 - Curly
T1 - Larry
T3 - Moe
T2 - Curly
T1 - Larry
T3 - Moe
T2 - Curly
T1 - Larry
T3 - Moe
T2 - Curly
T1 - Larry
T3 - Moe
T2 - Curly
T1 - Larry
T3 - Moe
T2 - Curly
T1 - Larry
T3 - Moe
T2 - Curly
T1 - Larry
T3 - Moe
T2 - Curly
T1 - Larry
T3 - Moe
T2 - Curly
Ejecute varias veces este programa. Con cada ejecución puede ver
distintos resultados.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Práctica 15-4 Lenguaje de programación Java™
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio: Programación multisubproceso (nivel 2)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Ejercicio: Programación multisubproceso (nivel 2)
En este ejercicio creará un programa mulithilo para familiarizarse con los
conceptos del procesamiento multisubproceso.
Preparación
No se precisa preparación para este ejercicio.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Subprocesos Práctica 15-5
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio: Programación multisubproceso (nivel 2)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Tarea 1: Creación de la clase PrintMe
Lleve a cabo los pasos siguientes:
1. Abra el proyecto ThreadProject del directorio
exercises/15_threads.
2. Cree la clase PrintMe con las características siguientes:
Nombre de clase: PrintMe
Proyecto: ThreadProject
Implementa: Ejecutable
Ubicación: Source Packages
Paquete: default package
Esta clase debe implementar la interfaz Runnable.
3. Cree el método run para ejecutar en bucle las acciones siguientes
10 veces: imprimir el nombre del subproceso actual y después
esperar 2 segundos.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Práctica 15-6 Lenguaje de programación Java™
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio: Programación multisubproceso (nivel 2)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Tarea 3: Compilación de la clase TestThreeThreads
En esta tarea va a compilar la clase TestThreeThreads.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Subprocesos Práctica 15-7
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio: Programación multisubproceso (nivel 3)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Ejercicio: Programación multisubproceso (nivel 3)
En este ejercicio creará un programa mulithilo para familiarizarse con los
conceptos del procesamiento multisubproceso.
Preparación
No se precisa preparación para este ejercicio.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Práctica 15-8 Lenguaje de programación Java™
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio: Programación multisubproceso (nivel 3)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Tarea 1: Creación de la clase PrintMe
Lleve a cabo los pasos siguientes:
1. Abra el proyecto ThreadProject del directorio
exercises/15_threads.
2. Cree la clase PrintMe con las características siguientes:
Nombre de clase: PrintMe
Proyecto: ThreadProject
Implementa: Ejecutable
Ubicación: Source Packages
Paquete: default package
Esta clase debe implementar la interfaz Runnable.
class PrintMe implements Runnable {
// más código aquí
}
3. Cree el método run para ejecutar en bucle las acciones siguientes
10 veces: imprimir el nombre del subproceso actual y después
esperar 2 segundos.
public void run() {
for(int x = 0; x < 10; x++) {
System.out.println(Thread.currentThread().getName());
try {
Thread.sleep(2000);
} catch(Exception e) {}
}
}
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Subprocesos Práctica 15-9
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio: Programación multisubproceso (nivel 3)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Tarea 2: Creación de la clase TestThreeThreads
En esta tarea va a crear una clase TestThreeThreads en el paquete de
origen del proyecto ThreadProject.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Práctica 15-10 Lenguaje de programación Java™
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio: Programación multisubproceso (nivel 3)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Tarea 3: Compilación de la clase TestThreeThreads
En esta tarea va a compilar la clase TestThreeThreads.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Subprocesos Práctica 15-11
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Resumen del ejercicio
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Práctica 16
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Funciones de red
Objetivos
Las personas que realicen la práctica aprenderán a crear un cliente de GUI
para conectar a un servidor remoto mediante el protocolo TCP/IP
(Protocolo de control de transmisión/Protocolo de Internet).
Práctica 16-1
Unauthorized reproduction orCopyright 2008
distribution Sun Microsystems,
prohibited. Copyright©Inc. Todos
2010, los derechos
Oracle and/or its reservados.
affiliates. Sun Services, Revisión G.2
Ejercicio: Creación de un cliente de socket (nivel 1)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Ejercicio: Creación de un cliente de socket (nivel 1)
En este ejercicio creará código para conectar el cliente de chat room al
servidor de charla.
cliente: PC/Win95
1 "Alfredo: Es genial"
ChatClient
3 "Alfredo: Es genial"
Alfredo
servidor
cliente: SparcSol9
ChatServer
cliente: PC/WinXP
4 "Alfredo: Es genial"
ChatClient
Ana
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Práctica 16-2 Lenguaje de programación Java™
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio: Creación de un cliente de socket (nivel 1)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
El cliente de charla (su aplicación) se debe modificar para efectuar dos
comportamientos: Debe enviar los mensajes del usuario al servidor y
mostrar los mensajes que reciba del servidor en el componente de salida
JTextArea. La Figura 16-2 ilustra un diseño detallado de los elementos de
la aplicación ChatClient. Va a agregar el método doConnect a la clase
ChatClient para iniciar la conexión de socket con el servidor de charla.
«interfaz»
Runnable
RemoteReader es una clase anidada
que lee mensajes de la variable de
instancia serverIn en ChatClient. +run():void
RemoteReader servidor
ChatClient
-serverIn : BufferedReader
-serverOut : PrintWriter ChatServer
«métodos»
-doConnect():void
SendHandler
«métodos»
+actionPerformed(e:ActionEvent):void
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Funciones de red Práctica 16-3
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio: Creación de un cliente de socket (nivel 1)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Preparación
No se precisa preparación para este ejercicio.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Práctica 16-4 Lenguaje de programación Java™
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio: Creación de un cliente de socket (nivel 1)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Tarea 3: Ejecución del proyecto ChatRoomPrj
Lleve a cabo los pasos siguientes:
1. Defina la clase principal del proyecto ChatRoomPrj en
ChatClient.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Funciones de red Práctica 16-5
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio: Creación de un cliente de socket (nivel 2)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Ejercicio: Creación de un cliente de socket (nivel 2)
En este ejercicio creará código para conectar el cliente de chat room al
servidor de charla.
Preparación
No se precisa preparación para este ejercicio.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Práctica 16-6 Lenguaje de programación Java™
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio: Creación de un cliente de socket (nivel 2)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Tarea 1: Modificación de la clase ChatClient
En esta tarea va a modificar la clase ChatClient del paquete de origen
del proyecto ChatRoomPrj. Implemente la comunicación cliente-servidor
basada en el diseño detallado de la Figura 16-2 en la página L16-3.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Funciones de red Práctica 16-7
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio: Creación de un cliente de socket (nivel 2)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Tarea 3: Ejecución del proyecto ChatRoomPrj
Lleve a cabo los pasos siguientes:
1. Defina la clase principal del proyecto ChatRoomPrj en
ChatClient.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Práctica 16-8 Lenguaje de programación Java™
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio: Creación de un cliente de socket (nivel 3)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Ejercicio: Creación de un cliente de socket (nivel 3)
En este ejercicio creará código para conectar el cliente de chat room al
servidor de charla.
Preparación
No se precisa preparación para este ejercicio.
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Funciones de red Práctica 16-9
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio: Creación de un cliente de socket (nivel 3)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Tarea 1: Modificación de la clase ChatClient
En esta tarea va a modificar la clase ChatClient del paquete de origen
del proyecto ChatRoomPrj. Implemente la comunicación cliente-servidor
basada en el diseño detallado de la Figura 16-2 en la página L16-3.
java -DserverIP=myhost.example.com
-DserverPort=47 ChatClient
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Práctica 16-10 Lenguaje de programación Java™
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio: Creación de un cliente de socket (nivel 3)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
b. Cree la conexión con el servidor de charla.
try {
connection = new Socket(serverIP, Integer.parseInt(serverPort));
c. Prepare el flujo de entrada y almacénelo en una variable de
instancia.
InputStream is = connection.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
serverIn = new BufferedReader(isr);
d. Prepare el flujo de salida y almacénelo en una variable de
instancia.
serverOut = new PrintStream(connection.getOutputStream());
e. Ejecute el subproceso de lectura.
Thread t = new Thread(new RemoteReader());
t.start();
f. Use una cláusula catch para capturar las excepciones.
} catch (Exception e) {
System.err.println("Unable to connect to server!");
e.printStackTrace ();
} // FIN del bloque try-catch
} // FIN del método doConnect
4. Modifique el método launchFrame para llamar al método
doConnect.
private void launchFrame() {
// código anterior aquí
doConnect();
}
5. Modifique la clase anidada SendHandler para enviar el texto
del mensaje (y el nombre del usuario) al flujo de salida del socket.
Borre el código que mostraba el mensaje en el área de salida de texto.
private class SendHandler implements ActionListener {
public void actionPerformed(ActionEvent e) {
String text = input.getText();
text = usernames.getSelectedItem() + ": " + text + "\n";
serverOut.print(text);
input.setText("");
} // FIN del método actionPerformed
} // FIN de la clase anidada SendHandler
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Funciones de red Práctica 16-11
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Ejercicio: Creación de un cliente de socket (nivel 3)
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
6. Cree la clase anidada RemoteReader que implementa la interfaz
Runnable. El método run debe leer línea a línea el flujo de entrada
del socket en un bucle infinito.
private class RemoteReader implements Runnable {
public void run() {
try {
while (true) {
String nextLine = serverIn.readLine();
output.append(nextLine + "\n");
output.setCaretPosition(output.getDocument().getLength()-1);
}
} catch (Exception e) {
System.err.println("Error while reading from server.");
e.printStackTrace ();
}
} // FIN del método run
} // FIN de la clase anidada RemoteReader
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Resumen del ejercicio
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Funciones de red Práctica 16-13
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2
Resumen del ejercicio
FUNDACION PROYDESA (FUNDACION@PROYDESAฺORG) has a non-transferable license to use this Student Guideฺ
Unauthorized reproduction or distribution prohibited. Copyright© 2010, Oracle and/or its affiliates.
Práctica 16-14 Lenguaje de programación Java™
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisión G.2