Introdución Al Desarrollo de Programas Con Java Prácticas by Amparo López Gaona

November 22, 2022 | Author: Anonymous | Category: N/A
Share Embed Donate


Short Description

Download Introdución Al Desarrollo de Programas Con Java Prácticas by Amparo López Gaona...

Description

 

INT NTRO RODU DUCC CCIIÓN AL AL DE DESA SARROL RROLLO LO DE PROGRAMAS CON

 JA  J AVA  PRÁCTICAS

Amparo López Gaona     n      o     i       c      a     t     u      p     m       o       c      e     d       s       a     m      e     T

 

 MP  M P RO LÓP Z G ON

IN I TRO D U CCIÓN IÓ N AL L D E S ARROLL RRO LLO NTRODU NTR ODUCCI ÓN DESARR DES OLLO O D E P RO GR M S ON DE PROG PR OGRA RAMA MAS S CO CON N

J V JAVA

PR P Á TI S RÁCTICAS

FACULT FAC ULTAD AD DE CIE CIENCI NCIAS AS 2012

 

López Gaona, Amparo Introducción al desarrollo de: programas con javade: prácticas  Amparo López Gaona -- México UNAM, Facultad Ciencias,/2012. xviii, 132 páginas ; 24 cm. -- (Las prensas de ciencias) (Temas de computación) ISBN 978-607-02-3170-4 1. Java (Lenguaje (Lenguaje de programación). programación). 2. Programació Programación n orientada a objetoss (Cienci objeto (Cienciaa de la compu computación) tación).. I. Universidad Nacional Autónoma Autónoma de México. Facultad de Ciencias. II. título. III. Serie. IV. Serie: Temas de computación. 005. 00 5.13 1333-sc scdd dd21 21

Bibl Bi blio iote teca ca Na Naci cio ona nall de Mé Méxi xico co

Introducción al desarrollo de programación con Java. Prácticas 1º edición, 20 de marzo de 2012. 1a reimpresión, 2014

© D.R. 2012 Universidad Nacional Autónoma de México. Facultad de Ciencias. Ciudad Universitaria. Delegación Coyoacán, C. P. 04510, México, Distrito Federal. [email protected] ISBN: 978-607-02-3170-4 Diseño de portada: Laura Uribe Hernández Composición tipográfica: Salvador López Mendoza Prohibida la reproducción parcial o total de la obra por cualquier medio, sin la autorización por escrito del titular de los derechos patrimoniales. Impreso y hecho en México.

 

A Andrea y Salvador 

 

Agradecimientos

Agradezco a todas las personas que colaboraron, de una o de otra forma, en la materializaci´oon n de este pro proyec yecto. to. A Sonia y Gerar Gerardo do con quien quienes es desar desarroll roll´´e la prime primera ra ver versi´ si´ oon n de algunas de las pr´aacticas cticas aqu´ı presentadas. A Salvador Salvador p por or su apoyo incondicional en este y todos los proyectos que emprendo y especialmente por realizar el trabajo relacionado con la tipograf tipog raf´´ıa del libro. Tambi´een n agradezco a Andrea por su apoyo, compa compa˜ n ˜´ıa y su contr contribu ibuci´ ci´oon n con la obra de arte que aparece en esta p´aagina. gina. La imagen que aparece en esta p´aagina gina es una “pr´aactica ctica con objetos” realizada por Andrea en 1998; en ella utiliz´o objetos de diferentes clases para lograr el producto final.

 

´ Indice general Introducci´ on on 

xv 

1 Env´ıo de mensa jes al usuario

1.1. James 1.1.1. 1.1.2. 1.1 .2. 1.1.3. 1.1.4.

Bond . . . . . . . . Ob jetivo . . . . . . Des Descri cripci´ pci´ on general Material . . . . . . Desarrollo . . . . .

. . . . .

1

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

2 Elementos de Java

2 2 3 3 3 5

2.1.. 2.1

Ide Ident ntific ificaci aci´´on de palabras no-reservadas 2.1.1. Ob jetivo . . . . . . . . . . . . . . 2.1.2. 2.1 .2. Des Descri cripci´ pci´ on general . . . . . . . . 2.1.3. Material . . . . . . . . . . . . . . 2.1.4. Desarrollo . . . . . . . . . . . . . 2.2. Ope perradores aritm´eticos . . . . . . . . . . 2.2.1. Ob jetivo . . . . . . . . . . . . . . 2.2.2. 2.2 .2. Des Descri cripci´ pci´ on general . . . . . . . . 2.2.3. Material . . . . . . . . . . . . . . 2.2.4. Desarrollo . . . . . . . . . . . . . 2.3.. Dec 2.3 Declar laraci aci´´on de variables . . . . . . . . . 2.3.1. Ob jetivo . . . . . . . . . . . . . . 2.3.2. 2.3 .2. Des Descri cripci´ pci´ on general . . . . . . . . 2.3.3. Material . . . . . . . . . . . . . . 2.3.4. Desarrollo . . . . . . . . . . . . . 2.4. 2.4. F´ ormulas . . . . . . . . . . . . . . . . . . 2.4.1. Ob jetivo . . . . . . . . . . . . . . 2.4.2. 2.4 .2. Des Descri cripci´ pci´ on general . . . . . . . . 2.4.3. Material . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

6 6 6 6 7 7 7 7 8 8 9 9 9 9 9 11 11 11 11

2.4.4. Desarrollo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

11

 vii

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

 

 

 viii

´ INDICE GENERAL

3 La clase   String

 

13

3.1. Una mosca parada en la pared 3.1.1. Ob jetivo . . . . . . . . 3.1.2. 3.1 .2. Des Descri cripci´ pci´ on general . . 3.1.3. Material . . . . . . . . 3.1.4. Desarrollo . . . . . . . 3.2. 3.2. Ps Psic ic´´ologo . . . . . . . . . . . . 3.2.1. Ob jetivo . . . . . . . . 3.2.2. 3.2 .2. Des Descri cripci´ pci´ on general . . 3.2.3. Material . . . . . . . . 3.2.4. Desarrollo . . . . . . . 3.3. RFC . . . . . . . . . . . . . . 3.3.1. Ob jetivo . . . . . . . . 3.3.2. 3.3 .2. Des Descri cripci´ pci´ on general . . 3.3.3. Material . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

14 14 14 15 15 16 16 16 16 16 17 17 17 17

3.4. 3T.e3l.e4g.raD meassarr.ol.lo. .. .. .. .. .. 3.4.1. Ob jetivo . . . . . . 3.4.2. 3.4 .2. Des Descri cripci´ pci´ on general 3.4.3. Material . . . . . . 3.4.4. Desarrollo . . . . .

.. . . . .

.. . . . .

.. . . . .

.. . . . .

.. . . . .

.. . . . .

.. . . . .

.. . . . .

.. . . . .

.. . . . .

.. . . . .

.. . . . .

.. . . . .

.. . . . .

.. . . . .

.. . . . .

.. . . . .

.. . . . .

.. . . . .

.. . . . .

.. . . . .

.. . . . .

.. . . . .

.. . . . .

.. . . . .

.. . . . .

1187 18 18 19 20

.. . . . .

.. . . . .

4 Crea Creaci ci´ on y uso de ob jetos ´

4.1. Horas 4.1.1. 4.1.2. 4.1.3. 4.1 .3.

21

del mundo . . . . . Ob jetivo . . . . . . Material . . . . . . Des Descri cripci´ pci´ on general

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

23 23 23 23

4.1.4. Desarrollo . . . . . 4.2. Juego de dados . . . . . . 4.2.1. Ob jetivo . . . . . . 4.2.2. 4.2 .2. Des Descri cripci´ pci´ on general 4.2.3. Material . . . . . . 4.2.4. Desarrollo . . . . . 4. 4.33. M´ ultiplos con dados . . . 4.3.1. Ob jetivo . . . . . . 4.3.2. 4.3 .2. Des Descri cripci´ pci´ on general 4.3.3. Material . . . . . . 4.3.4. Desarrollo . . . . . 4.4.. Cum 4.4 Cumple plea˜ a˜ nos . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

23 24 24 24 24 25 26 26 26 26 27 28

 

´INDICE GENERAL

4.4.1. 4.4.2. 4.4 .2. 4.4.3. 4.4.4.

Ob jetivo . . . . . . Des Descri cripci´ pci´ on general Material . . . . . . Desarrollo . . . . .

  . . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

ix . . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

5 Crea Creaci ci´ on y uso de clases ´

5.1. Racionales . . . . . . . . . 5.1.1. Ob jetivo . . . . . . 5.1.2. 5.1 .2. Des Descri cripci´ pci´ on general 5.1.3. Material . . . . . . 5.1.4. Desarrollo . . . . . 5.2. Cuentas bancarias . . . . . 5.2.1. Ob jetivo . . . . . . 5.2.2. 5.2 .2. Des Descri cripci´ pci´ on general 5.2.3. Material . . . . . .

28 28 28 28 31

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

33 33 33 33 34 35 35 35 36

5.3. 5C.o2n.4v.ertDideosar rdroe lltoem.p.er.at.ur. a. 5.3.1. Ob jetivo . . . . . . . 5.3.2. 5.3 .2. Des Descri cripci´ pci´ on general . 5.3.3. Material . . . . . . . 5.3.4. Desarrollo . . . . . . 5.4. Rob ot . . . . . . . . . . . . 5.4.1. Ob jetivo . . . . . . . 5.4.2. 5.4 .2. Des Descri cripci´ pci´ on general . 5.4.3. Material . . . . . . . 5.4.4. Desarrollo . . . . . .

.. . . . . . . . . .

.. . . . . . . . . .

.. . . . . . . . . .

.. . . . . . . . . .

.. . . . . . . . . .

.. . . . . . . . . .

.. . . . . . . . . .

.. . . . . . . . . .

.. . . . . . . . . .

.. . . . . . . . . .

.. . . . . . . . . .

.. . . . . . . . . .

.. . . . . . . . . .

.. . . . . . . . . .

.. . . . . . . . . .

.. . . . . . . . . .

.. . . . . . . . . .

.. . . . . . . . . .

.. . . . . . . . . .

.. . . . . . . . . .

.. . . . . . . . . .

.. . . . . . . . . .

.. . . . . . . . . .

.. . . . . . . . . .

.. . . . . . . . . .

.. . . . . . . . . .

.. . . . . . . . . .

3376 37 37 37 38 39 39 39 39 39

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

6 Ob jetos como atributos

6.1.. Tri´ 6.1 angulos . . . . . . . . . 6.1.1. Ob jetivo . . . . . . 6.1.2. 6.1 .2. Des Descri cripci´ pci´ on general 6.1.3. Material . . . . . . 6.1.4. Desarrollo . . . . . 6.2. 6.2. Re Rect ct´´angulos . . . . . . . . 6.2.1. Ob jetivo . . . . . . 6.2.2. 6.2 .2. Des Descri cripci´ pci´ on general 6.2.3. Material . . . . . . 6.2.4. Desarrollo . . . . . 6.3. Estacionamiento . . . . . .

. . . . . . . . . . .

41

42 42 42 42 42 44 44 44 44 45 46

 

 

x

6.3.1. Ob jetivo . . . . . . 6.3.2. 6.3 .2. Des Descri cripci´ pci´ on general 6.3.3. Material . . . . . . 6.3.4. Desarrollo . . . . . 6.4. Etiquetas . . . . . . . . . 6.4.1. Ob jetivo . . . . . . 6.4.2. 6.4 .2. Des Descri cripci´ pci´ on general 6.4.3. Material . . . . . . 6.4.4. Desarrollo . . . . .

´ INDICE GENERAL

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

7 Arreglos

46 46 47 48 51 51 51 51 52 55

7.1. Conjuntos . . . . . . . . . 7.1.1. Ob jetivo . . . . . . 7.1.2. 7.1 .2. Des Descri cripci´ pci´ on general 7.1.3. Material . . . . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

57 57 57 57

7.2. 7E.s1t.a4d. ´ıstDiceasas rr.ol.lo. .. .. .. .. .. 7.2.1. Ob jetivo . . . . . . 7.2.2. 7.2 .2. Des Descri cripci´ pci´ on general 7.2.3. Material . . . . . . 7.2.4. Desarrollo . . . . . 7.3. Contestadora . . . . . . . 7.3.1. Ob jetivo . . . . . . 7.3.2. 7.3 .2. Des Descri cripci´ pci´ on general 7.3.3. Material . . . . . . 7.3.4. Desarrollo . . . . . 7.4. Juego de cartas . . . . . .

.. . . . . . . . . . .

.. . . . . . . . . . .

.. . . . . . . . . . .

.. . . . . . . . . . .

.. . . . . . . . . . .

.. . . . . . . . . . .

.. . . . . . . . . . .

.. . . . . . . . . . .

.. . . . . . . . . . .

.. . . . . . . . . . .

.. . . . . . . . . . .

.. . . . . . . . . . .

.. . . . . . . . . . .

.. . . . . . . . . . .

.. . . . . . . . . . .

.. . . . . . . . . . .

.. . . . . . . . . . .

.. . . . . . . . . . .

.. . . . . . . . . . .

.. . . . . . . . . . .

.. . . . . . . . . . .

.. . . . . . . . . . .

.. . . . . . . . . . .

.. . . . . . . . . . .

.. . . . . . . . . . .

.. . . . . . . . . . .

.. . . . . . . . . . .

.. . . . . . . . . . .

5589 59 59 60 60 62 62 62 62 62 65

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

65 65 66 66

7.4.1. 7.4.2. 7.4 .2. 7.4.3. 7.4.4.

Ob jetivo . . . . . . Des Descri cripci´ pci´ on general Material . . . . . . Desarrollo . . . . .

8 Paso de par´ ametros

8.1. 8.1. Par´ ar´aametros metros con la clase  Punto   . . . . 8.1.1. Ob jetivo . . . . . . . . . . . . 8.1.2. 8.1 .2. Des Descri cripci´ pci´ on general . . . . . . 8.1.3. Material . . . . . . . . . . . . 8.1.4. Desarrollo . . . . . . . . . . . 8.2. 8.2. Par´ ar´aametros metros con la clase  Triangulo   .

69

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

70 70 70 70 70 71

 

´INDICE GENERAL

8.2.1. Ob jetivo . . . . . . . . . . . . . . 8.2.2. 8.2 .2. Des Descri cripci´ pci´ on general . . . . . . . . 8.2.3. Material . . . . . . . . . . . . . . 8.2.4. Desarrollo . . . . . . . . . . . . . 8.3. 8.3. No Nom mbr bree y n´ umeros . . . . . . . . . . . . 8.3.1. Ob jetivos . . . . . . . . . . . . . 8.3.2. 8.3 .2. Des Descri cripci´ pci´ oon n general de la pr´actica 8.3.3. Desarrollo . . . . . . . . . . . . . 8.4. Juegos . . . . . . . . . . . . . . . . . . . 8.4.1. Ob jetivos . . . . . . . . . . . . . 8.4.2. 8.4 .2. Des Descri cripci´ pci´ oon n general de la pr´actica 8.4.3. Material . . . . . . . . . . . . . . 8.4.4. Desarrollo . . . . . . . . . . . . .

 

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

xi

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

9 Herencia

71 71 72 72 73 73 74 74 75 75 75 75 76 79

9.1. 9B.o1l.e1t.osO. b.je.ti.vo. .. .. .. .. .. .. .. .. .. .. .. .. .. .. 9.1.2. Material . . . . . . . . . . . . . . 9.1.3. 9.1 .3. Des Descri cripci´ pci´ oon n general de la pr´actica 9.1.4. Desarrollo . . . . . . . . . . . . . 9.2. Libros . . . . . . . . . . . . . . . . . . . 9.2.1. Ob jetivo . . . . . . . . . . . . . . 9.2.2. 9.2 .2. Des Descri cripci´ pci´ oon n general de la pr´actica 9.2.3. Material . . . . . . . . . . . . . . 9.2.4. Desarrollo . . . . . . . . . . . . . 9.3. Actas del Registro Civil . . . . . . . . . 9.3.1. Ob jetivo . . . . . . . . . . . . . .

.. . . . . . . . . . .

.. . . . . . . . . . .

.. . . . . . . . . . .

.. . . . . . . . . . .

.. . . . . . . . . . .

.. . . . . . . . . . .

.. . . . . . . . . . .

.. . . . . . . . . . .

.. . . . . . . . . . .

.. . . . . . . . . . .

.. . . . . . . . . . .

.. . . . . . . . . . .

.. . . . . . . . . . .

.. . . . . . . . . . .

.. . . . . . . . . . .

.. . . . . . . . . . .

.. . . . . . . . . . .

.. . . . . . . . . . .

.. . . . . . . . . . .

.. . . . . . . . . . .

8800 80 80 81 83 83 83 84 84 87 87

9.3.2. Des 9.3.2. Descri cripci´ pci´ oon n general de la pr´actica 9.3.3. Desarrollo . . . . . . . . . . . . . 9.4. C´ırculos . . . . . . . . . . . . . . . . . . 9.4.1. Ob jetivo . . . . . . . . . . . . . . 9.4.2. 9.4 .2. Des Descri cripci´ pci´ oon n general de la pr´actica 9.4.3. Material . . . . . . . . . . . . . . 9.4.4. Desarrollo . . . . . . . . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

87 88 89 89 89 89 90

10 Excep ciones

10.1. C´ırculos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.1.1. Ob jetivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.1.2. Descripci´on general . . . . . . . . . . . . . . . . . . . . . . . . . . . .

91

92 92 92

 

 

xii

10.1.3. Material . . . . . . 10.1.4. Desarrollo . . . . . 10.2. Racionales . . . . . . . . . 10.2.1. Ob jetivo . . . . . . 10.2.2. Descripci´on general 10.2.3. Material . . . . . . 10.2.4. Desarrollo . . . . . 10.3. Fechas . . . . . . . . . . . 10.3.1. Ob jetivo . . . . . . 10.3.2. Descripci´on general 10.3.3. Material . . . . . . 10.3.4. Desarrollo . . . . . 10.4. Horas . . . . . . . . . . . 10.4.1. Ob jetivo . . . . . . 10.4.2. Descripci´on general

. . . . . . . . . . . . . . .

´ INDICE GENERAL

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

92 93 94 94 94 94 95 96 96 96 96 96 97 97 97

1100..44..34.. M Deastaerrrioalllo. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..

9987

11 Clases abstractas

11.1. Ajedrez . . . . . . . . . . 11.1.1. Ob jetivo . . . . . . 11.1.2. Descripci´on general 11.1.3. Desarrollo . . . . . 11.2. Colecciones . . . . . . . . 11.2.1. Ob jetivo . . . . . . 11.2.2. Descripci´on general 11.2.3. Desarrollo . . . . . 11.3. Animales . . . . . . . . . . 11.3.1. Ob jetivo . . . . . . 11.3.2. Descripci´on general 11.3.3. Material . . . . . . 11.3.4. Desarrollo . . . . . 11.4. Pol´ıgonos . . . . . . . . . 11.4.1. Ob jetivo . . . . . . 11.4.2. Descripci´on general 11.4.3. Material . . . . . . 11.4.4. Desarrollo . . . . . 12 Interfaces

99

. . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . .

100 100 100 100 102 102 102 102 104 104 104 105 105 106 106 106 106 107 109

12.1. Comparable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110

 

´INDICE GENERAL

12.1.1. Ob jetivo . . . . . . 12.1.2. Descripci´on general 12.1.3. Material . . . . . . 12.1.4. Desarrollo . . . . . 12.2. Series . . . . . . . . . . . . 12.2.1. Ob jetivo . . . . . . 12.2.2. Descripci´on general 12.2.3. Material . . . . . . 12.2.4. Desarrollo . . . . . 12.3. Conjuntos . . . . . . . . . 12.3.1. Ob jetivo . . . . . . 12.3.2. Descripci´on general 12.3.3. Material . . . . . . 12.3.4. Desarrollo . . . . . 12.4. Palabras . . . . . . . . . . 12.4.1. Ob jetivo . . . . . . 12.4.2. Descripci´on general 12.4.3. Material . . . . . . 12.4.4. Desarrollo . . . . .

 

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

xiii

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

13 Serializaci´ on

13.1. Diario . . . . . . . . . . . 13.1.1. Ob jetivo . . . . . . 13.1.2. Descripci´on general 13.1.3. Material . . . . . . 13.1.4. Desarrollo . . . . . 13.2. Fechas importantes . . . . 13.2.1. Ob jetivo . . . . . . 13.2.2. Descripci´on general 13.2.3. Material . . . . . . 13.2.4. Desarrollo . . . . . 13.3. Personas . . . . . . . . . . 13.3.1. Ob jetivo . . . . . . 13.3.2. Descripci´on general 13.3.3. Material . . . . . . 13.3.4. Desarrollo . . . . . 13.4. Juego de memoria . . . . . 13.4.1. Ob jetivo . . . . . . 13.4.2. Descripci´on general 13.4.3. Desarrollo . . . . .

110 110 110 110 111 111 112 112 112 113 113 113 114 114 115 115 116 116 116 119

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

120 120 120 121 121 123 123 123 124 124 128 128 128 128 128 129 129 129 130

 

Introducci´ on on Aprender a programar es una tarea dif dif´´ıcil que requiere escribir programas, no basta con leer o entender programas ya escritos, es necesario enfrentar el reto de programar, tener tropiezos en el camino y aprender de ellos. Para lograrlo se debe aprender a analizar un problema, descomponerlo en sus partes y esbozar una soluci´oon. n. Una vez que se tiene el esbozo de soluci´oon n se puede proceder a escribir en un lenguaje de programaci´oon n los pasos a seguir para llegar a la soluci´oon n del problema. En el caso de la programaci´oon n orientada a objetos estos pasos deben contener instrucciones que impliquen la interacci´oon n de ob objetos jetos a trav´eess de mensajes. on al desarrollo de  Este libro fue escrito como complemento del libro de texto  Introducci´  1 programa pro gramass con Java , con el objetivo de ayudar al lector principiante en la programaci´o on n orientada orien tada a objetos a adqui adquirir rir experiencia pr´actica actica en el desarrollo desarrollo de programa programass en lenguaje Java a partir de tener definidas las clases que deben programarse. El libro contiene un conjunto de aproximadamente 50 ejercicios en forma de pr´acticas. acticas. Las pr´acticas acticas corresponden, en su mayo mayorr´ıa, a ejercicios planteados en el libro de texto, s´oolo lo que en este libro se va guiando al lector en el desarrollo de la soluci´on y, a falta de un supervisor, se incluyen programas para probar que todo se haya hecho bien. Esta es una recopilaci´oon n de pr´acticas acticas de laboratorio desarrolladas a lo largo de varios semestres de cursos introductorios a la programaci´on on impartidos en la Facultad de Ciencias de la UNAM. Las pr´aacticas cticas est´aan n agrupadas por tema en los distintos cap cap´´ıtulos del libro. En cada cap´ cap´ıtulo no tienen secuencia, son independientes, indep endientes, y ssee ha tratado que tengan la misma complejidad por tema. La idea es que puedan extraer conjuntos de pr´aacticas, cticas, quiz´a una o dos por tema, para complementar la parte te´oorica rica de un curso introductorio de programaci´oon. n. La estructura de cada cap cap´´ıtulo est´a formada por un breve marco te´oorico rico que presenta de manera muy general los aspectos que se van a cubrir, sin embargo para profundizar se recomienda leer el libro de texto. Despu´ es es del marco te´oorico rico se presentan las pr´aacticas. cticas. Estas pr´acticas acticas tienen el siguiente formato: objetivo, descripci´oon n general, material y desarrollo. Las pr´aacticas cticas tienen una secci´oon n de material en la cual se describen los archivos que se utilizan en la pr´aactica. ctica. Entre ellos est´a el archivo en que se debe programar lo solicitado, algunos 1

on al desarrollo de programas con Java   2a., ed., M´ Amparo L´ o opez pez Gaona  Introducci´  exico, exico, UNAM, Las

Prensas de Ciencias, 2011. xv 

 

 

xvi

´ INTRODUCCI ON 

archivos ejecutables y otros con documentaci´on on en HTML de los programas ejecutables. Es importante en la programaci´oon n orientada a objetos ser capaz de trabajar con objetos de clases desarrolladas por otras personas, por esta raz´on, on, en el material que se incluye en este texto se tienen clases en c´oodigo digorelevantes ejecutable, aasctica. s de que conclases ello elcompiladas lector (programador) se concentra en los aspectos deadem´ la pr´aactica. Estas est´aan n acompa˜ n nadas adas de su respectiva documentaci´oon n en HTML para consultarse v´ıa un nav navegador egador de Internet. El aspecto de documentaci´oon n es ampliamente utilizado y solicitado a lo largo del libro, con objeto de crear en el practicante ese buen h´aabito. bito. Las pr´acticas acticas incluyen un archivo de prueba el cual puede usarse para verificar que se obtiene el resultado esperado. En algunas pr´aacticas cticas se solicita al programador que escriba sus propios programas de prueba, con lo cual se pretende adquiera el h´abito de probar sus programas. Otro aspecto destacable es que siempre se piden programas robustos, es decir, que est´een n preparados para los posibles casos err´ooneos neos que puedan surgir en cada programa. El libro est´a dirigido a personas principiantes en la programaci´oon n con orientaci´oon n a objetos, as as´´ı que las primeras pr´aacticas cticas son sencillas, s´oolo lo para que se tenga un primer contacto con los elementos del lenguaje y con el compilador. Luego van aumentando su complejidad y la cantidad can tidad de trabajo solici solicitado. tado. El libro se ha dividi dividido do en los cap cap´´ıtulo ıtuloss que siguen la secue secuencia ncia del libro de texto texto,, aunqu aunquee la numeraci´oon n no necesa necesariame riamente nte corre corresponde, sponde, debid debidoo a que en algun algunos os cap cap´´ıtulo ıtuloss puede haber alg´ un un subtema que amerita incluir su grupo de pr´aacticas. cticas. El contenido del texto es el siguiente. Cap Ca p´ıt ıtul ulo o 1.   Env Env´´ıo de mensa mensajes jes al usuario

En este cap cap´´ıtulo se presenta una pr´actica actica para que el lector tenga un primer contacto con Java, que conozca la estructura de los programas en Java, aprenda a compilar programas, corregir errores y ejecutar programas a la vez que se ejercita en el uso de las instrucciones proporcionadas para mostrar mensajes al usuario en la pantalla de la computadora. Cap Ca p´ıt ıtul ulo o 2.  Elementos de Java Se incluyen pr´aacticas cticas para que el lector trabaje con variables para almacenar sus datos, siendo ´eestas stas para tipos primitivos. Con estas pr´aacticas ct icas tambi´een n ssee p podr odr´´a ejercitarse en distinguir las palabras reservadas de las que no lo sson, on, as´ı como en declarar vari variables ables y hacer operaciones con ellas. Cap Ca p´ıt ıtul ulo o 3.  La clase  String

En este cap cap´´ıtulo se incluye un conjunto de pr´acticas acticas para que el lector se familiarice con la creaci´oon n y uso de objetos de clases existentes por medio del uso de los m´eetodos todos incluidos en ella. Las pr´acticas acticas consisten en desarrollar programas sencillos que utilicen objetos de las clases  Scanner   y  String  proporcionadas por Java.

 

xvii

Cap Ca p´ıt ıtul ulo o 4.   Creaci´ oon n y uso de objetos

Se presentan pr´acticas acticas para que el programador refuerce sus conocimientos acerca de la creaci´oon n y manipulaci´oon n de objetos en Java y del uso de la instrucci´oon n condicional   if. Las pr´aacticas cticas contenidas en este cap cap´´ıtulo consisten en desarrollar programas utilizando clases previamente definidas y proporcionadas para ese fin. Cap Ca p´ıt ıtul ulo o 5.   Creaci´ oon n y uso de clases

Este cap cap´´ıtulo contiene un conjunto de pr´acticas acticas para que el lector se ejercite en la creaci´oon n y elaboraci´oon n de clases que le ayuden a resolver diversos problemas. Algunas de las clases desarrolladas pueden verse como una extensi´oon n de los tip tipos os de datos proporcionados porc ionados por Java. Se hace ´eenfasis nfasi s en llaa divi divisi´ si´oon nd del el ttraba rabajo jo en m´eetodos, tod os, incluyendo dos que representan una buena pr´aactica ctica de programaci´oon: n:  equals   y  toString. Cap Ca p´ıt ıtul ulo o 6.  Objetos como atributos

Se incluyen pr´aacticas cticas para que el lector consolide sus conocimientos acerca del concepto de agregaci´oon, n, as as´´ı como su habil habilidad idad para const construir ruir clases que inv involucr olucren en el uso de clases existentes, de las cuales no se tiene el c´oodigo digo fuente, s´oolo lo el c´oodigo digo ejecutable y la documentaci´oon. n. Cap Ca p´ıt ıtul ulo o 7.   Agrupaci´ oon n de objetos

En este cap cap´´ıtulo se presentan pr´acticas acticas para que el programador se ejercite en el desarrollo de programas que manejan varios datos del mismo tipo, sea este primitivo o clase, agrupado agrupadoss ´eestos stos en un ob objeto jeto denominado denominad o arre arreglo glo y tambi´een n se ejercit ejercitee en el us usoo de instrucci´oon n de iteraci´oon. n. Cap Ca p´ıt ıtul ulo o 8.  Paso de par´ aametros metros

En este cap cap´´ıtulo se tienen pr´acticas acticas para que el lector refuerce sus conocimientos acerca del paso de par´aametros metros por valor, la diferencia entre par´aametro metro formal y par´aametro metro real o actual, as´ı como el paso de par´ametros amet ros al m´eetodo to do  main. Cap Ca p´ıt ıtul ulo o 9.  Herencia de clases

En este cap cap´´ıtulo se tiene tienen n pr´ acticas a cticas que sirven para que el lector se ejercite en la creaci´oon n de jerarqu jerarqu´´ıas de herencia de clases, ya sea empezando de la ra ra´´ız o bien especializando clases existentes, adem´aass de reforzar sus conocimientos acerca del concepto de polimorfismo y de datos protegidos. Cap Ca p´ıt ıtul ulo o 10. 10 .   Excepciones

Se presentan pr´aacticas cticas para que el lector se ejercite en el manejo de excepciones como un mecanismo para escribir programas robustos. Estas excepciones pueden ser las proporcionadas por Java o las desarrolladas para el programa particular que se

 

 

xviii

´ INTRODUCCI ON 

est´ e desar desarrolla rollando. ndo. El mane manejo jo de las excepciones excepciones inclu incluye ye su lanza lanzamien miento, to, atrap atrapado ado y recuperaci´oon. n. Cap Ca p´ıt ıtul ulo o 11. 11 .   Clases abstractas

Este cap cap´´ıtulo contiene un conjunto de pr´aacticas cticas para que el programador adquiera experiencia en la creaci´oon n de jerarq jerarqu u´ıas de clases que con contenga tengan n al menos una clase que no puede definirse completamente al momento de su creaci´oon, n, y obliga a que sus subclasess imple subclase implemen menten ten los m´eetodos todos que no se puede pueden n defini definirr en ella. Estas clases se conocen como clases abstractas. Cap Ca p´ıt ıtul ulo o 12. 12 .   Interfaces

En este cap cap´´ııtulo tulo se incluye una serie de pr´acticas acticas para que el programador ejercite sus conocimientos acerca de la utilidad y programaci´oon n de interfaces durante el desarrollo de sus programas. Las pr´aacticas cticas incluyen la implementaci´oon n de interfaces proporcionadas por Jav Java, a, as as´´ı como de interfaces definidas para la aplicaci´ oon. n. Cap Ca p´ıt ıtul ulo o 13. 13 .   Serializaci´ oon n

El prop´oosito sito de las pr´aacticas cticas presentadas en este cap cap´´ıtulo es que el lector aprenda los pasos para lograr que los objetos creados durante la ejecuci´oon n de un programa persistan m´aass all´a de la ejecuci´oon n del mismo mediante su almacenamiento en archivos en disco. Tambi´een n que con conozca ozca el pr proced ocedimiento imiento para rrecupe ecuperar rar ob objetos jetos de archivos. Est Estee proc proceso eso se conoce en Java como serializaci´oon n de objetos. Es importante se˜ n nalar alar que tanto en los identificador identificadores es como en la do documentaci´ cumentaci´ oon n ssee han omitido los acentos para que cualquier lector/programador pueda ejecutar sus programas sin problemas en la plataforma que prefiera. Para que el lector disponga del material de apoyo para las pr´aacticas cticas que se incluyen en este texto se ha creado el siguiente sitio web: computacion.fciencias.unam.mx/~alg/practicas/programacionJava

 

Cap´ıtulo 1 Env´ Env ´ıo de mensa mensajes jes al usuar usuario io En este cap cap´´ıtulo se presenta una pr´actica actica para que el lector tenga un primer contacto con Java, que conozca la estructura de los programas en Java, aprenda a compilar programas, corregir errores y ejecutar programas, vez queenselaejercita ende el la uso de las instrucciones proporcionadas para mostrar mensajesaallausuario pantalla computadora.

Marco te´ orico orico Para ejecut Para ejecutar ar un progr programa ama es neces necesario ario que est est´´e en c´odigo odigo ejecutable, para ello primero se debe compilar. El objetivo del compilador es generar c´oodigo digo ejecutable a partir de un programa escrito en lenguaje de alto nivel y libre de errores de sintaxis. Si hay errores de sintaxis se muestran en la pantalla junto al n´u umero mero de l´ınea en que ocurren para facilitar al programador su correcci´oon. n. Una vez que el programa no tiene errores de sintaxis genera un archivo con c´oodigo digo ejecutable. Para compilar un programa se requiere teclear la palabra   javac  seguida del nombre del archivo que contiene el programa. Por ejemplo,   javac Etique Etiquetador. tador.java java. Si el programa tiene errores los muestra y el programador debe corregirlos, y volver a compilarlo hasta que no haya ninguno. En ese momento se genera un archivo con extensi´oon n  class, el cual se puede ejecutar tecleando la palabra  java  seguida del nombre del archivo ejecutable sin extensi´oon. n. java ava Etique Etiquetador tador. Por ejemplo   j Cada vez que se requiere que un programa muestre informaci´oon n en la pantalla de la computadora es necesario utilizar la instrucci´oon n  System.out.println  o bien  System.out.print. Ambas Amb as requieren requieren una caden cadenaa ent entre re par par´´entesis entesis y la despli despliegan egan en pan pantalla talla.. Una caden cadenaa es una sucesi´on on de caracteres entre comillas, por ejemplo   "Hola". La diferencia entre las dos instrucciones de escritura es que la primera, una vez desplegada la cadena recibida, pasa a la siguiente l´ınea y la segunda no. Por ejemplo, las instrucciones 1

 

2

 

CAP ´ ITUL IT ULO O 1. 1. ENV  ENV ´IO DE MENSAJES AL USUARIO 

System.out.println("Hola!!"); System.out.println("Empieza System.out.println("Empi eza la practica.");

Dar´´ıan como resultado el siguiente despliegue en pantalla: Dar Hola!! Empiez Emp ieza a la pr´ actica. actica.

Por su parte, las instrucciones System.out.print("Hola!!"); System.out.println("Empieza System.out.println("Empi eza la practica.");

Dar´´ıan como resultado el siguiente despliegue en pantalla: Dar Hola!! Hol a!! Empiez Empieza a la pr´ a actica. ctica.

Las comillas son necesarias para representar una cadena constante, sin embargo no se muestran en el mensaje. Si se requiere hacerlo se debe preceder de una diagonal invertida (\) para indicar a Java que no debe darle la interpretaci´oon n habitual como delimitador de cadena. Por ejemplo, con la instrucci´oon: n:

System.out Syste m.out.prin .println(" tln("Mi Mi nombr nombre e entre comillas comillas es: "\"Ch "\"Chichar icharito\" ito\" Hernandez. Hernandez."); ");

se despliega el siguiente mensaje en pantalla: Mi nombre nombre entre entre comill comillas as es: "Ch "Chich ichari arito" to" Her Hernan nandez dez. .

Si la cadena no cabe en una l´ınea de la instrucci´on on o bien se va a formar de varias partes, se utiliza el operador  + , el cual aplicado a cadenas lleva a cabo la operaci´oon n de concatenaci´oon n que consiste en unir dos cadenas, una tras otra. Ejemplo, "Est "Este e es un ejem ejempl plo o " + "de "de una una cade cadena na que que se form forma a " + "de "de tres tres cade cadena nas. s." "

produce la cadena Este Este es un ejem ejempl plo o de una una cade cadena na que que se form forma a de tres tres cade cadena nas. s.

1.1. 1.1. 1. 1.1. 1.

James Bond Objet Objetiv ivo o

El objetivo de esta pr´aactica ctica es que el alumno tenga un primer contacto con programas en Java con lo cual va a: 1. Conoce Conocerr la estruc estructura tura de un programa en Jav Java, a, 2. Ejercitarse en el uso de las instrucciones para mostrar mensajes en la pantalla de la computadora, y 3. Trabajar con el comp compilado iladorr y ejecu ejecutar tar program programas. as.

 

1.1. JAMES BOND 

1.1. 1. 1.2. 2.

 

3

Desc Descri ripci pci´ on on general ´

La pr´aactica ctica consiste en escribir una versi´oon n sencilla de un programa que sirva para generar etiquetas para sobres y escribir un programa para escribir una felicitaci´on on al programador.

1.1. 1. 1.3. 3.

Mate Materi rial al

El material de esta pr´actica actica consta de los siguientes archivos:

•   Felicitacion.java  programa para escribir una felicitaci´oon. n. •   Etiquetador.java  programa para generar etiquetas, en pantalla, para rotular sobres. Para acceder al material de esta pr´aactica ctica seleccionar el enlace  Envio de mensajes al usuario y luego  James Bond .

1.1. 1. 1.4. 4.

Desa Desarro rroll llo o

1. Copi Copiar ar los archiv archivos os   Felicitacion.java   y   Etiquetador.java  en el directorio donde se desarrollar´a la pr´aactica. ctica. 2. En el archivo  Felicitacion.java  escribir las instrucciones necesarias para que en la pantalla se pueda leer el siguiente texto de felicitaci´on. on. !!Muchas !!Muc has felicidade felicidades s Amparo!! Amparo!! En la fami famili lia a esta estamo mos s que que no cabe cabemo mos s de gust gusto o y orgu orgull llo o porq porque ue esta estas s aprendien aprend iendo do a progra programar mar en Jav Java a con ori orient entaci acion on a objeto objetos. s. De verdad verdad

"!! "!! Much Muchas as feli felici cida dade des! s!! ! "

Un abra abrazo zo :)

Sustituir  Amparo  por el nombre del programador. 3. En eell pro program gramaa  Etiquetador.java reemplaza  reemplazarr los puntos su suspen spensivos sivos p por or lo que ah´ı se solicita, esto es: el prop´oosito sito del programa, el nombre del programador y la informaci´oon n que debe llevar la etiqueta. Lo que se desea que imprima es la direcci´oon n de James Bond, en M´exico, exico, exactame exactamente nte co como mo se muestra.

 

4

 

CAP ´ ITUL IT ULO O 1. 1. ENV  ENV ´IO DE MENSAJES AL USUARIO 

Mr. James James Bond Bond "Agente "Agen te 007" Av. Insurg Insurgent entes es Sur 441 4411 1 Residencia Resid encial l Insurgente Insurgentes s Sur Edificio Edific io "Rosal "Rosales" es", , Int Int. . #15 Col. Col. La Joya Joya, , C.P. C.P. 1443 14430 0 M´ exico exico D.F. D.F.

4. Explicar la causa de que la siguiente ll´´ınea de c´oodigo digo marque un error de compilaci´oon. n. System.out Syste m.out.prin .println(" tln("Edifi Edificio cio "Rosa "Rosales", les", Int. #15"); #15");

 

Cap´ıtulo 2 Elementos de Java En este cap cap´´ıtulo se incluyen pr´aacticas cticas para que el lector trabaje con variables para almacenar sus datos, dat os, sie siendo ndo ´eestas stas p para ara tip tipos os prim primitivos. itivos. Co Con n estas pr´acticas acti cas tambi´een n ssee p pod odr´ r´a ejercitarse en distin distinguir guir las palab palabras ras reser reserv vadas de las que no lo son, as as´´ı como en decla declarar rar variab variables les y hacer operaciones con ellas.

Marco te´ orico orico En todo programa en Java es preciso asignar un identificador (o nombre) a cada elemento que se utiliza, sea ´eeste ste clase, atributo, m´eetodo, todo, objeto, dato, etc. Un identificador se construye como una sucesi´oon n de caracteres alfanum´eericos ricos que inicia con letra o gui´oon n bajo ( ). Existe un conjunto de palabras que no pueden ser usadas como identificadores porque tienen un significado esp especial ecial para Java, cada una de ´eestas stas se denomina   palabra reservada . El conjunto de palabras reservadas se muestra en la tabla 2.1. En los programas se trabaja con datos, todos deben tener un tipo particular y un nombre. Los identificadores sirven para asignar nombre a un dato o variable, y para ciertos tipos de dato se utilizan las palabras reservadas. Los tipos de datos definidos en Java, y denominados  primitivos , son: so n: ttip ipoo num´eerico ric o (entero (e nteross o reales), tipo car´acter acter y tipo Booleano. Para declarar una variable se escribe el tipo del dato seguido de su identificador y al final un punto y coma. Ejemplo, la declaraci´oon n   int int eda edad; d; define la variable  edad  de tipo entero. Para trabajar con los datos primitivos se tienen operadores. Existen un operador de asignaci´oon n (=), oper operadores adores aritm´eeticos ticos (+,+,-,*, ,*,/, /, %), operadores l´ oogicos gicos (&&, ||, !) y operadores de relaci´oon n (, ,   =). Frecuentemente se desea actualizar el valor de una variable a partir del valor que ya posee, en estos casos en el lado izquierdo y en el derecho de la asignaci´on se tiene la misma variable; por ejemplo, la expresi´oon n   a = a + 5;  suma cinco unidades al valor que tenga la variable   a. on ) utilizando el Es posible abreviar estas expresiones ( variable   =   variable operador expresi´ 

5

 

6

CAP ´ITULO 2. ELEMENTOS ELEMENTOS DE JAV JAVA

 

abstract boolean break

else e ex xtends false

interface long main

static super switch

byte case catch char class cont co ntin inue ue default do double

final finally float for if im impl plem emen ents ts import instanceof int

native new null package private pr prot otec ecte ted d public return short

synchronized this throw throws true tr try y void volatile while

Tabla 2.1. Palabras reservadas de Java

operador de asignaci´oon n compuesta como sigue:   variable operador =   expresi´  on . Por ejemplo, a+= a+ = 5; es equivalente a la expresi´ oon n anterior.

2.1. 2. 1.

Ide Identifi tificaci caci´ on on de palabras no-reservadas ´

2.1. 2. 1.1. 1.

Objet Objetiv ivo o

El objetivo de esta pr´aactica ctica es que el alumno ejercite la teor teor´´ıa acerca del uso y aplicaci´ oon, n, en un programa, de variables de tipo primitivo, as as´´ı como operadores sobre ellas, trabajando con la declaraci´oon n e inicializaci´oon n de datos primitivos. Todo ello como base para posteriormente construir constru ir programa programass m´aass complejos. complej os.

2.1. 2. 1.2. 2.

Desc Descri ripci pci´ on on general ´

La pr´actica actica consiste en identificar palabras no reservadas dentro de un programa, corregir errores de sintaxis de programas y trabajar la asignaci´oon n compuesta de Java.

2.1. 2. 1.3. 3.

Mate Materi rial al

En el enlace   Identificadores de palabras no reservadas  del cap cap´´ıtulo 2 de la p´aagina gina web del libro se tienen los siguientes archivos:

•   Identificadores.java  programa que ser´a modificado durante la pr´actica actica para reforzar los conocimientos acerca de tipos primitivos y sintaxis de programas.

 

´ 2.2. OPERADORES ARITM ETICOS 

 

7

•   AsignacionCompuesta.java  programa que sirve como base para los ejercicios relacionados con asignaci´oon n compuesta.

2.1. 2. 1.4. 4.

Desa Desarro rroll llo o

1. Hacer una lista con los identificadores encontrados en el siguiente programa. No es necesario necesa rio escri escribir bir m´aass de una vez cada identificador. public cla public class ss Ide Identi ntific ficado adores res { public pub lic sta static tic voi void d mai main(S n(Stri tring ng pps pps) ) { fl floa oat t pi = 3. 3.14 1416 16; ; int redio = 15; double area = p1 * (radio * radio); St Stri ring ng me mens nsaj aje e = "R "Res esul ulta tado do = "; System.out.println(Mensaje+area); }

2. Desca Descargar rgar los arc archiv hivos os   AsignacionCompuesta.java   e   Identificadores.java   en el directorio donde se va a desarrollar la pr´aactica. ctica. 3. Comp Compilar ilar el arc archivo hivo Identificadores.java  si hay errores corregirlos. 4. Comp Compilar ilar y ejecuta ejecutarr el programa AsignacionCompuesta.java. 5. Volver a escribir las instrucciones de asignaci´on on que se encuentran en el programa AsignacionCompuesta.java  utilizando las expresiones de asignaci´o on n compuesta. 6. Comp Compilar ilar el progr programa ama modificado del punto ante anterior, rior, ejecut ejecutarlo arlo y veri verificar ficar que se obtenga el mismo resultado que antes.

2.2. 2.2. 2. 2.1. 1.

Operadores aritm´ eticos eticos Objet Objetiv ivo o

El objetivo de la pr´actica actica es que el alumn alumnoo ejerc ejercite ite la teor teor´´ıa acerc acercaa del uso y aplic aplicaci´ aci´ oon n de variables vari ables de tipo primitivo, as as´´ı como operadores sobre ellas.

2.2. 2. 2.2. 2.

Desc Descri ripci pci´ on on general ´

La pr´actica actica consiste en trabajar con dos programas en los que se utilizan tanto el operador de asignaci´oon n como los oper operadores adores aritm´eeticos. ticos .

 

8

 

2.2. 2. 2.3. 3.

CAP ´ITULO 2. ELEMENTOS ELEMENTOS DE JAV JAVA

Mate Materi rial al

En el enlace   Operadores Operado res aritm´ ari tm´eeticos  t icos  del cap cap´´ıtulo 2 de la p´aagina gina web del libro se tienen los siguientes archivos: •   Asignacion.java  programa para ejercitarse en el manejo de expresiones aritm´eeticas. ticas.

•   Operadores.java  program  programaa para pract practicar icar con los operado operadores res aritm aritm´´eeticos ticos tan tanto to en n´u umeros meros reales como enteros.

2.2. 2. 2.4. 4.

Desa Desarro rroll llo o

1. Agreg Agregar ar al progra programa ma  Asignacion.java  las instrucciones necesarias para que muestre el valor de las variables ah´ ah´ı contenidas contenidas.. public publ ic cla class ss Asi Asigna gnacio cion n { public sta public static tic voi void d mai main(S n(Stri tring[ ng[] ] pps pps) ) { int a = 5; int b = 2; int c = 3; in int t re resu sult ltad ado o = 0; resultado = a + b + c + a * b + c; resultado = (a + b ) * c; resultado = (a + b * c); } }

2. Comp Compilar ilar y ejecu ejecutar tar el programa   Operadores.java  y explicar la raz´oon n del resultado obtenido. public class public class Operad Operadore ores s { public pub lic static static voi void d main(S main(Stri tring[ ng[] ] pps) pps) { int divisor divisor = 5, div divide idendo ndoEnt Entero ero = 39; double dou ble divide dividendo ndoRea Real l = 39. 39.0; 0; System.out.prin System.out .println(" tln("divid dividendoE endoEntero ntero System.out Syste m.out.prin .println(" tln("divid dividendoR endoReal eal / System.out Syste m.out.prin .println(" tln("divid dividendoE endoEntero ntero System.out Syste m.out.prin .println(" tln("divid dividendoR endoReal eal % } }

/ divisor divisor divisor divisor = % divisor divisor divisor divisor =

= "+ dividendoE dividendoEntero ntero / divisor); divisor); "+ dividendoR dividendoReal eal / divisor); divisor); = "+ dividendoE dividendoEntero ntero % divisor); divisor); "+ dividendoR dividendoReal eal % divisor); divisor);

 

´ DE VARIABLES  2.3. DECLARACI ON

2.3. 2. 3. 2.3. 2. 3.1. 1.

 

9

Decl Declar arac aci´ i´ on on de variables Objet Objetiv ivo o

El objetivo de esta pr´aactica ctica es que el alumno ejercite la teor teor´´ıa acerca del uso y aplicaci´ oon n de variables vari ables de tipo primitivo, as as´´ı como operadores sobre ellas, trabajando con la declaraci´ oon ne inicializaci´ oon n de datos primitivos.

2.3. 2. 3.2. 2.

Desc Descri ripci pci´ on on general ´

La pr´actica actica consiste en identificar las palabras no reservadas de un programa en Java y completar otros programas declarando variables y realizando las operaciones necesarias para lograr un resultado.

2.3. 2. 3.3. 3.

Mate Materi rial al

En el enlace  Declaraci´  on de variables  del   de l cap´ cap´ıtulo 2 de la p´aagina gina web del libro se tienen los siguientes archivos:

•   ConvertidorTemperatura.java  Programa para identificar palabras no reservadas de Java. •   Millas2Kms.java  Archivo en el que se almacenar´a un programa de conversi´oon n entre millas y kil´oometros. metros. •   Conocer.java   programa programa para conocer el valor de algun algunas as variab ariables les aritm aritm´´eeticas ticas de acuerdo al resultado de ciertas operaciones aritm´eeticas. ticas.

2.3. 2. 3.4. 4.

Desa Desarro rroll llo o

1. Se˜ nalar nalar todos los identificadores contenidos en el siguiente programa. No escribir un mismo identificador m´as as de una vez. public class convertidor public convertidor Tempe Temperatur ratura a { public pub lic void void Static Static mai main(s n(stri tring[ ng[] ] mio){ mio){ double dou ble celsiu celsius s ; doublefare doubl efarenheit nheit = 70.5; System.out.println(***Convertidor System.out.println(***C onvertidor grados Celsius***); System.out Syste m.out.prin .println(" tln("Los Los grado grados s "Farenheit "Farenheit" " que voy a convertir convertir son:"); son:"); System.out Syste m.out.prin .println(f tln(farenh arenheit eit + " grado grados s farenheit" farenheit"); );

celsiu cel sius s = (5/9)* (5/9)*(fa (faren renhei heit t

32); 32);

 

10

 

CAP ´ITULO 2. ELEMENTOS ELEMENTOS DE JAV JAVA

System.out.prin System.out .println(" tln("Los Los grado grados s celsius celsius resultante resultantes s son:"); son:"); System.out Syste m.out.prin .println(c tln(celsiu elsius s + " grado grados s celsius"); } }

2. En el directorio donde se va va a desarrollar la pr´ actica, actica, descargar los archiv archivos os Conocer.java, ConvertidorTemperatura.java   y  Millas2Kms.java. 3. Comp Compilar ilar y ejecuta ejecutarr el programa ConvertidorTemperatura.java. Si es necesario, corregir los errores de sintaxis para que pueda ejecutarse. 4. Comp Completar letar el arch archivo ivo Millas2Kms.java  con lo siguiente: (a) Decla Declarar rar una varia variable ble real llamada millas  con el valor inicial 202. (b) Decla Declarar rar una const constant antee real llamada   MILLAS A KILOMETROS   con un valor inicial de 1.609. (c) Decla Declarar rar una variab ariable le real llama llamada da   kilometros, en ella asignar el resultado de multiplicar millas   y  MILLAS A KILOMETROS. (d) Mostra Mostrarr el resulta resultado do de  kilometros  en pantalla. El resultado de este programa debe ser: ***Convert ***Co nvertidor idor millas millas a kilom kilometros etros*** *** La dist distan anci cia a de Lond Londre res s a Live Liverp rpoo ool l es de 202. 202.0 0 mill millas as que corres correspon ponden den a 325.01 325.018 8 kilome kilometro tros. s.

5. Asumi Asumiendo endo que cada expre expresi´ si´ oon n es independiente, ¿cu´aall es el resultado de las siguientes expresiones? Completar el programa  Conocer.java  para que muestre el resultado despu´eess de cada opera operaci´ ci´oon. n. public class public class Conoce Conocer r { public pub lic void void Static Static mai main(s n(stri tring[ ng[] ] pps){ pps){ int resultado1 resultado1; ; double doubl e resultado2 resultado2; ; result res ultado ado1 1 = 46/9; 46/9;

resultado1 = 46 % 9 + 4 * 4 - 2;

 

´ 2.4. F ORMULAS 

 

11

resultado1 = 45 + 43 % 5 * (23 * 3 % 2); resu result ltad ado2 o2 = 4 + resu result ltad ado2 o2 * resu result ltad ado2 o2 + 4; resu result ltad ado2 o2 += 1.5 1.5 * 3 + (++ (++ resu result ltad ado1 o1); ); resu result ltad ado2 o2 -= 1.5 1.5 * 3 + resu result ltad ado1 o1++ ++; ; } }

2.4. 2.4. 2. 4.1. 1.

Formulas ormulas ´ Objet Objetiv ivo o

El objetivo de esta pr´aactica ctica es que el alumno ejercite la teor teor´´ıa acerca del uso y aplicaci´ oon n de variables vari ables de tipo primitivo as as´´ı como operadores sobre ellas, trabajando con la declaraci´ oon ne inicializaci´ oon n de datos primitivos.

2.4. 2. 4.2. 2.

Desc Descri ripci pci´ on on general ´

La pr´actica actica consiste en identificar las palabras no reservadas de un programa en Java y completar otros programas declarando variables y realizando las operaciones necesarias para lograr un resultado.

2.4. 2. 4.3. 3.

Mate Materi rial al

En el enlace   F´  ormulas   del cap cap´´ıtulo 2 de la p´agina agina web del libro se tienen los siguientes archivos:

•   Cilindro.java  archivo que contiene un programa para calcular el ´area area y volumen de un cilindro. •   Formula.java  archivo en el que se debe escribir una f´oormula rmula y verificar que se eval´ua ua correctamente.

2.4. 2. 4.4. 4.

Desa Desarro rroll llo o

1. Desca Descargar rgar los archiv archivos os  Cilindro.java   y  Formula.java  en el directorio donde se va a desarrollar la pr´actica. actica. 2. Comp Completar letar el progra programa ma  Cilindro.java  para definir las variables   radio   y   altura, la primera con valor inicial de 25, la segunda con 57.23 y calcular el volumen y ´aarea rea del

cilindro utilizando las siguientes f´oormulas: rmulas:

 

12

CAP ´ITULO 2. ELEMENTOS ELEMENTOS DE JAV JAVA

 

volumen volum en = ar area ea* * al altu tura ra area = 2*pi*r 2*pi*radio(a adio(altura+ ltura+radio) radio)

3. Compilar y ejecutar el programa   Cilindro.java. Al ejecutar el programa se debe obtener una salida como la siguiente: ***Are *** Area a y volume volumen n de un cil cilind indro* ro*** ** El area area del cilind cilindro ro es: 129 12916. 16.658 658195 195234 234433 433 El volume volumen n del cilind cilindro ro es: 739 739220 220.34 .34851 851326 32665 65

4. Comp Completar letar el prog programa rama Formula.java  incluyendo la siguiente expresi´oon n ar aritm´ itm´etica eti ca:: x  =

  30 30,,0  3 + + d  d(2 (2 + a +  a))  −  9(  9(a a +  + bc  bc)) + 3( 3(rr + 34) a + bd  + bd

5. Comp Compilar ilar y ejecutar el program programaa  Formula.java, si la f´oormula rmula est´a bien traducida, el programa mostrar´a la siguiente informaci´oon. n. Con a = 2, b =3, c = 4, d = 5 y r = 6 el res result ultado ado de la for formul mula a es -12 -124.8 4.8666 666666 666666 666666 6666 6

 

Cap´ıtulo 3 La clase  String En este cap cap´´ıtulo se tiene un conjunto de pr´acticas acticas para que el programador se familiarice con la creac creaci´ i´oon n y uso d dee ob objetos jetos de cla clases ses existentes a trav´eess de dell uso de los m´eetodos tod os incluidos in cluidos en ella. Las pr´aacticas cticas consisten en desarrollar programas sencillos que utilicen objetos de las clases  Scanner   y  String  proporcionadas por Java.

Marco te´ orico orico La mayor´ mayor´ııaa d dee los programa programass re requieren quieren que eell us usuario uario prop proporcione orcione datos a tr trav´ av´eess d del el te teclado clado de la computadora. Para poder hacerlo Java tiene en el paquete  java.util la clase  Scanner. Para poder crear un objeto de ella, se debe incluir como primera l´ınea del programa  import java.util.Scanner;  y ya en el programa utilizar el operador   new  como sigue: Scanne Sca nner r in = new Scanne Scanner(S r(Syst ystem. em.in) in); ;

En esta clase hay un m´ eetodo todo de lectu lectura ra para cada tipo de dato primitiv primitivo, o, en parti particular cular est´a el m´eeto t odo  nextLine  que permite leer una l´ınea del teclado. Un tipo de dato muy utilizado es el de cadenas de caracteres, por tal motivo Java proporciona la clase   String   para trabajar con ellas. La declaraci´oon n para datos de esta clase es similar a la declaraci´oon n de datos de cualquier tipo primitivo, ya que el nombre de la variable para almacenar la referencia a una cadena va precedido de la palabra   String. Por ejemplo, con la instrucci´oon n   String nombre nombre; ;  se declara una variable llamada  nombre  para un objeto de la clase  String. Para crear un objeto de la clase   String   puede puede asi asigna gnarse rse una cad cadena ena con consta stant ntee en la declaraci´ on on de la referencia o se puede utilizar el operador   new  para creaci´oon n de objetos. Por ejemplo, las dos instrucciones siguientes son equivalentes:

String nombre String nombre = new Str String ing("A ("Ampa mparo ro L´ o opez pez Gaona"); Gaona"); Stri String ng nomb nombre re = "Amp "Ampar aro o L´ opez opez Gaona"; Gaona";

13

 

14

CAP ´IT ITUL ULO O 3. LA CLAS CLASE  E   STRING 

 

La clase   String  tiene va varios rios m´eetodos, todos, entre ellos los mostra mostrados dos en la tabla 3.1. Par Paraa la descripci´oon n completa de to todos dos los m´eetodos todos de esta clase consultar la direcci´oon n http://download.oracle.com/javase/1.4.2/docs/api/java/lang/String.html

Sintaxis

Descrip ci´oon n del resultado charAt(int)   Devuelve el car´aacter cter de la posici´oon n indicada. equals(String)   Devuelve  true  si la cadena pasada como par´aametro metro es igual a la cadena q que ue llama al m´eetodo. todo. Devuelve false  en caso contrario. indexOf(String)   Devuelve Devuelve la posici´ oon n en donde empieza la subcadena pasada como par´aametro. metro. length()   Devue Devuelve lve la can cantidad tidad de carac caracteres teres que tiene la caden cadena. a. substring(in substr ing(int, t, int)   Devue Devuelve lve la caden cadenaa formada por los caract caracteres eres que est´aan n desde la posici´oon n indicada en el primer par´aametro metro toLowerCase() toUpperCase() trim()  

   

hasta uno dea la en el segundo par´aametro. metro. Devue Devuelve lve laantes caden cadena enindicada min´ u usculas. sculas. Devue Devuelve lve la caden cadenaa en ma may´ y´u usculas. sculas. Devue Devuelve lve la caden cadenaa sin espac espacios ios en blanc blancoo al final. etodos eto dos de la clase String Strin g Tabla 3.1.  M´

. Para ejecutar ejecuta r cualqui cualquier er m´eetodo todo se deb debee utiliza utilizarr la refer referencia encia decl declarada, arada, sseguida eguida de un punto y luego del nom nombre bre del m´eetodo todo y los par´ ametros ametros entre par´entesis; entesis; ´eestos stos son obligato obligatorios rios aunque no haya par´aametros. metros. Por ejemplo,   nombre.toUpperCase()   llama al m´eetodo todo para convertir una cadena a may´u usculas. sculas.

3.1. 3. 1. 3.1. 3. 1.1. 1.

Una Una mos mosca par parad ada a en la la pare pared d Objet Objetiv ivo o

El objetivo de esta pr´aactica ctica es que el alumno se familiarice con la creaci´oon n y uso de objetos de la clase  String  utilizand  utilizandoo aalgunos lgunos de los m´eetodos tod os m´aass importantes de dicha clase.

3.1. 3. 1.2. 2.

Desc Descri ripci pci´ on on general ´

La pr´aactica ctica consiste en escribir un programas con la finalidad de ejercitarse en el uso de los

m´eetodos to dos de laelclas clase e  String. Eloprograma en hacer varios cambios a una cadena s´oolo lo para conocer funcionamient funcionamiento de ciertosconsiste m´eetodos. todos.

 

3.1. UNA MOSCA PARADA EN LA PARED 

3.1. 3. 1.3. 3.

 

15

Mate Materi rial al

En el enlace   Una mosca mosca par arada ada en la par ared  ed   del cap cap´´ıtulo 3 de la p´aagina gina web del libro se encuentra el archivo   Mosca.java, el cual es necesario para almacenar un programa para trabajar con una cadena de caracteres haci´eendole ndole vario varioss cambios.

3.1. 3. 1.4. 4.

Desa Desarro rroll llo o

1. Copi Copiar ar el archiv archivoo  Mosca.java  en el directorio de trabajo. 2. Comp Completar letar el programa   Mosca.java   sustituyendo los puntos suspensivos por lo que ah´ı se pi pide: de: (a) Con Contar tar caracte caracteres res de la cadena origina original. l. (b) Elimi Eliminar nar los blanco blancoss al final de la frase. (c) Con Contar tar caracte caracteres res de la nuev nuevaa cadena. (d) Pon Poner er la frase del punt puntoo (b) en may´ u usculas. sculas. (e) Sustit Sustituir uir todas las vocales por I’s en la cadena del punto punto (b). (f) Sustit Sustituir uir las ’I’es por U’s en la frase del punto punto ante anterior. rior. (g) Sustit Sustituir uir la palab palabra ra  mosca   por  MOSCOTA  en la frase original. (h) Agreg Agregar ar la frase  PIN PINTA TADA DA DE RO ROJO JO, a la frase original. 3. Par Paraa verific verificar ar que el programa est´ a bien hecho al ejecutarlo debe mostrar los siguientes mensajes: Cadena original: "Una mosca parada en la pared, en la pared " Long Longit itud ud de la cade cadena na: : 55 La cade cadena na "Una "Una mosc mosca a para parada da en la pare pared, d, en la pare pared" d" tien tiene e 41 cara caract cter eres es Fras Frase e #1: #1: Una Una mosc mosca a para parada da en la pare pared, d, en la pare pared d Fras Frase e #2: #2: UNA UNA MOSC MOSCA A PARA PARADA DA EN LA PARE PARED, D, EN LA PARE PARED D Fras Frase e #3: #3: INI INI MISC MISCI I PIRI PIRIDI DI IN LI PIRI PIRID, D, IN LI PIRI PIRID D Fras Frase e #4: #4: UNU UNU MUSC MUSCU U PURU PURUDU DU UN LU PURU PURUD, D, UN LU PURU PURUD D Fras Frase e #5: #5: Una Una MOSC MOSCOT OTA A para parada da en la pare pared, d, en la pare pared d

Fras Frase e #6: #6: Una Una mosc mosca a para parada da en la pare pared, d, en la pare pared d PINT PINTAD ADA A DE ROJO ROJO

 

16

 

3.2.

CAP ´IT ITUL ULO O 3. LA CLAS CLASE  E   STRING 

Psicologo ologo ´

3.2. 3. 2.1. 1.

Objet Objetiv ivo o

El objetivo de esta pr´aactica ctica es que el alumno se familiarice con la creaci´oon n y uso de objetos de la clase  String  utilizando algunos m´eetodos todos de dicha clase en la elaboraci´oon n de un programa.

3.2. 3. 2.2. 2.

Desc Descri ripci pci´ on on general ´

La pr´aactica ctica consiste en utilizar cadenas de caracteres y algunos de los m´eetodos todos de dicha clase en la elaboraci´oon n de un programa para simular una sesi´oon n con un psi psic´ c´ologo. olog o.

3.2. 3. 2.3. 3.

Mate Materi rial al

En el enlace   Psicologo   del cap cap´´ıtulo 3 de la p´aagina gina web del libro se encuentra el archivo Psicologo.java  en el cual se va almacenar un programa para “platicar” con un psic´ologo.

3.2. 3. 2.4. 4.

Desa Desarro rroll llo o

1. Desca Descargar rgar el archi archivo vo  Psicologo.java. 2. Completar el cuerpo del m´eetodo todo   main  para simular una sesi´oon n con el psic´oologo. logo. El algoritmo que se debe programar es el siguiente: (a) Dar bienv bienvenida enida y solic solicitar itar el nom nombre bre del pacie paciente nte.. (b) Recab Recabar ar el nom nombre bre del pacient paciente. e. (c) Salud Saludar ar al pacient pacientee y pregu pregunta ntarr cu´aall es su problema. (d) Leer, en una l´ıınea, nea, la descripci´oon n del problema del paciente. (e) Con Contesta testarr   MMMM MMMM.. ... . ya ve veo o, luego en otra l´ınea   Y dig digame ame... ...   y otra l´ınea m´ aass preguntar  Por Por qu´ e dice  e incluir la respuesta anterior entre comillas. (f) Leer, la respu respuesta esta del paci pacient ente. e. (g) Finalmente decir Muy int intere eresan sante! te!!, !, Hab Hablar laremo emos s de ell ello o con m´ a as s deta detalle lle en la si sigu guien iente te se sesi si´ on on. ´ ´ 3. Comp Compilar ilar y ejecutar el program programa. a.  Este debe presentar un di´aalogo logo como el siguiente. Bienve Bie nvenid nido, o, cual cual es su nom nombre bre? ?

Alberto Buenas tardes Buenas tardes Alberto. Alberto. Digame, Digam e, cu´ a al l es su prob proble lema ma en la vida vida? ?

 

 

3.3. RFC 

17

Odio tener Odio tener clase clase los vie vierne rnes s MMMM.. MMM M... . ya veo Y diga digame ... ... Por Por qu´ qume e dice ´ dic e "odio "odio ten tener er cla clases ses los vierne viernes"? s"? Porq Porque ue no pued puedo o conc concen entr trar arme me y el fin fin de sema semana na me pare parece ce muy muy cort corto. o. Muy intere interesan sante! te!! ! Hablar Hablaremo emos s de ell ello o con m´ a as s deta detall lle e en la sigu siguie ient nte e sesi sesi´ o ´ on. n.

Donde el texto de la segunda, quinta y novena ll´´ınea es proporcionado p por or el usuario.

3.3. 3.3. 3. 3.1. 1.

RFC Objet Objetiv ivo o

El objetivo de esta pr´aactica ctica es que el alumno se familiarice con la creaci´oon n y uso de objetos de la clase  String  utilizando algunos de los m´eetodos todos m´aass importantes de dicha clase en la elaboraci´oon n de un programa.

3.3. 3. 3.2. 2.

Desc Descri ripci pci´ on on general ´

La pr´aactica ctica consiste en utilizar cadenas de caracteres y algunos de los m´eetodos todos m´aass importantes de dicha clase en la elaboraci´oon n de un programa para generar una clave al estilo del RFC de las personas. El RFC se obtiene tomando las dos primeras letras del apellido paterno, la inicial del apell ape llid idoo ma mate tern rnoo y la in inic icia iall de dell no nom mbr bre, e, segu seguid idoo de los los do doss u ultimos ´ ltimos d´ıgitos del a˜n noo de nacimiento, los dos d´ıgitos del mes de nacimiento y dos d´ıgitos del d´ıa de nacimiento. Por ejemplo, si la persona se llama   Andre Andrea a Lop Lopez ez Lop Lopez ez   y naci´ o el   14/04/1992, su RFC es lola920414.

3.3. 3. 3.3. 3.

Mate Materi rial al

En el enlace  RFC  d  del el cap´ııtulo tul o 3 de la p´aagina gina web del libro se encuentra el archivo  RFC.java en el cual se va almacenar un programa para generar el RFC de una persona, siguiendo un formato determinado.

3.3. 3. 3.4. 4.

Desa Desarro rroll llo o

1. Copi Copiar ar el archiv archivoo  RFC.java  en el directorio de trabajo para esta pr´aactica. ctica.

2. Escri Escribir bir en el arc archivo hivo RFC.java  un programa para generar el RFC de una persona. El algoritmo que debe programarse es el siguiente:

 

18

 

CAP ´IT ITUL ULO O 3. LA CLAS CLASE  E   STRING 

(a) Solicitar al usuario su nombre completo, en una ll´´ınea. (b) Solic Solicitar itar al usuar usuario io su fecha fecha de naci nacimien miento, to, en forma formato to dd/mm/aa dd/mm/aa,, es decir decir,, dos d´ıgitos para el d´ıa, dos para el mes y dos m´aass para el a˜ n no. o. Cada dato separado por una diagonal. (c) Recab Recabar ar los datos solicita solicitados. dos. (d) Extrae Extraerr la inicia iniciall del nombre de la p person ersona. a. (e) Extrae Extraerr las dos primer primeras as letras del apellido pate paterno. rno. (f) Extrae Extraerr la inicial del apellid apellidoo materno. materno. (g) Formar el RFC con las letras letras antes obtenid obtenidas. as. (h) Manip Manipular ular la fecha de nacimien nacimiento, to, es decir extraer el a˜ a no, n ˜o, el mes mes y el d´ıa y agregarlo al RFC. 3. Comp Compilar ilar y ejecutar el program programaa   RFC. El programa debe mostrar una salida como la siguiente: Dame el nombre Dame nombre comple completo to Andrea And rea Lopez Lopez Lopez Lopez e la fech fecha a de naci nacimi mien ento to en form format ato o dd/m dd/mm/ m/aa aa 14/04/92 El RFC RFC de Andr Andrea ea Lope Lopez z Lope Lopez z es: es: LOLA LOLA92 9204 0414 14

3.4. 3. 4. 3.4. 3. 4.1. 1.

Teleg elegra rama mass Objet Objetiv ivo o

El objetivo de esta pr´aactica ctica es que el alumno se familiarice con la la creaci´oon n y uso de objetos de la clase  String  utilizando algunos de los m´eetodos todos m´aass importantes de dicha clase en el desarrollo de un programa de aplicaci´on. on.

3.4. 3. 4.2. 2.

Desc Descri ripci pci´ on on general ´

La pr´aactica ctica consiste en escribir un programa para generar mensajes telegr´aaficos ficos para ciertos

profesionistas, con un formato particular. Para ello se utilizar´aan n m´eetodos todo s de la clase  String a clase  Scanner. El programa para generar mensajes telegr´aaficos ficos requiere los siguientes datos:

 

3.4. TELEGRAMAS 

 

19

•  El nombre de la persona que va a enviar el telegrama. •  La profesi´oon n del remitente. •  Nombre de la persona a quien se va a enviar el telegrama. •  La profesi´oon n del destinatario. •  El contenido del telegrama a enviar. En el contenido debe aparecer al menos una vez la palabra  urgente. •   La direcci´oon n a la que se enviar´a el telegrama en el formato  Calle.numero.ciudad.CP A partir de los datos proporcionados, el programa debe mostrar en pantalla el telegrama con el siguiente formato:

•   De:   seguida de las primeras tres letras de la profesi´on, o n, un punto y del nombre del remitente. El nombre y la profesi´oon n deben escribirse s´olo olo con may´ u usculas. sculas. •   Para:  seguida de las primeras tres letras de la profesi´on, on, un punto y el nombre del destinatario. El nombre y la profesi´oon n deben escribirse s´olo olo con may´ u usculas. sculas. •   Mensaje:  y en una nueva l´ l´ınea el contenido del mismo, habiendo sustituido la palabra urgente  por la palabra  necesario. ´ •   COSTO:   costo del mensaje.   Este debe aparecer dejando dos l´ıneas en blanco despu´eess del cuerpo del mensaje. Considerar que cada car´aacter cter en el contenido del mensaje, excluyendo los espacios en blanco al final del mensaje, tiene un costo de 2.00 pesos.

•  La cantidad de caracteres en el texto y el costo de cada uno. •  La direcci´oon n en may´ u usculas sculas y ocupando tres l´ııneas. neas. En la primera, calle y n´u umero, mero, en la segunda la ciudad y en la tercera el c´oodigo digo p postal ostal..

3.4. 3. 4.3. 3.

Mate Materi rial al

En el enlace   Telegramas  del cap cap´´ıtulo 3 de la p´agina agina web del libro se encuentra el archivo Telegrafo.java  en el cual se va almacenar un programa para generar telegramas seg´u un n un

formato establecido.

 

20

 

3.4. 3. 4.4. 4.

CAP ´IT ITUL ULO O 3. LA CLAS CLASE  E   STRING 

Desa Desarro rroll llo o  Telegrafo.java

1. Copi Copiar ar el archiv archivoo  en el directorio de trabajo para esta pr´aactica. ctica. 2. Escribir en la clase  Telegrafo.java  un programa para generar mensajes telegr´aficos aficos para licenciados, ingenieros o doctores, para ello: (a) Incluir en el programa las instruccio instrucciones nes necesarias para solicitar los datos y leerlos. Cada dato debe ser almacenado en una cadena de caracteres. (b) Calcu Calcular lar el costo del telegram telegrama. a. (c) Mostrar, en pantalla, el mensaje que se va a enviar, de acuerdo con el formato establecido en la descripci´oon n de la pr´aactica. ctica. (d) El programa debe mostrar una salida como la que se muestra muestra a con contin tinuaci´ uaci´ oon: n: Nombre del rem Nombre remite itente nte: : Andrea Andrea Lop Lopez ez Lop Lopez ez Profesion Profe sion del remit remitente: ente: Doctora Doctora Nombre Nom bre del des destin tinata atario rio: : Jorge Jorge Lui Luis s Lopez Lopez Hernan Hernandez dez Profesion Profe sion del desti destinatar natario:li io:licenci cenciado ado Direccion Direc cion del desti destinatar natario: io: Oak Stree Street. t. 435.San 435.San Antonio, Antonio, Texas Texas.4567 .4567. . Mensaj Men saje: e: Urg Urgent ente e vengas vengas a Mexico Mexico. . Boda Boda de Blanqu Blanquita ita 1111-nov nov-20 -2011. 11.

***Telegrama*** De: Doc. Doc. ANDREA ANDREA LOP LOPEZ EZ LOP LOPEZ EZ Para: Par a: lic. lic. JOR JORGE GE LUI LUIS S LOPEZ LOPEZ HER HERNAN NANDEZ DEZ Mensaje: necesa nec esario rio ven vengas gas a Mexico Mexico. . Boda Boda de Bla Blanqu nquita ita 1111-nov nov-20 -2011. 11. Costo: Costo : $114.0 $114.0 57 letr letras as. . Cost Costo o por por letr letra a $2.0 $2.00 0 Direccion: Oak Oak S Str tree eet t 435 435 San Ant Antoni onio, o, Tex Texas as 4567.

 

Cap´ıtulo 4 Creaci´ o n y uso de objetos on En este cap cap´´ıtulo se presentan pr´aacticas cticas para que el lector refuerce sus conocimientos acerca de la creaci´oon n y manipulaci´on o n de objetos en Java y del uso de la instrucci´oon n condicional

if. Las pr´ aacticas cticas contenidas en este cap cap´´ıtulo consisten en desarrollar programas utilizando

clases previamente definidas y proporcionadas para ese fin. A partir pa rtir de eeste ste cap cap´´ıtulo se har´a hincapi´ e en la importancia que tiene la documentaci´ oon n de un programa. El alumno deber´a documentar su programa utilizando las etiquetas requeridas por el programa  javadoc.

Marco te´ orico orico El primer paso para trabajar con un objeto en Java es su creaci´on, para lo cual se utiliza el operador   new  seguido del nombre de la clase a la que pertenece tal objeto. Este operador crea un objeto y devue devuelve lve la refer referencia encia a ´eel. l. Una refer referencia encia es un tipo de dato usado para trabajar con objetos cuyo valor es la direcci´oon n o referencia al objeto, no el objeto. La forma de declarar una referencia es similar a cualquier dato primitivo: se especifica el tipo de dato, seguido de un identificador y posiblemente un valor inicial. La diferencia est´a en que el tipo de dato debe ser el nombre de una clase. Por ejemplo,   Moneda Moneda laSuer laSuertuda; tuda;  con lo cual se separa espacio para una referencia a un objeto de la clase   Moneda   y sin valor conocido. Una vez creado un objeto se le pueden enviar mensajes haciendo uso de la notaci´on on punto, cuya sintaxis es la siguiente: referenciaDelObjeto.nombreDelM´ e etodo(listaDeParam´ todo(listaDeParam´ e etros) tros)

La notaci´oon n punto consta del identificador de la referencia al objeto que atender´a el mensaje, un punto, el nombre del m´eetodo todo y la lista de par´ametros ametros para esa llamada en particular. La lista de par´aametros metros es una lista de identificadores o literales, cada uno separado por comas. 21

 

22

´ Y USO DE OBJETOS  CAP ´ ITULO ITU LO 4. 4. CREAC CREACI  I ON

 

Siempre deben escribi escribirse rse los p par´ ar´eentesis ntesis indep independientemente endientemente de qu quee el m´eetodo tod o requiera, req uiera, o no, par´aametros. metros. Para que un programa pueda trabajar con informaci´oon n proporcionada con el teclado, Java tiene en el paquete   java.util  la clase   Scanner. Para crear objetos de esta clase se debe incluir inclu ir la instru instrucci´ cci´ oon n   import java.u java.util.Sc til.Scanner anner   al inicio del archivo en donde est´a el programa. Al crear un objeto de la clase   Scanner   se debe dar como par´aametro metro el objeto System.in  para que la lectura sea del teclado. En la clase  Scanner  hay un m´eetodo todo de lectura para cada tipo de dato primitivo. La firma de los m´eetodos todos se presentan en la tabla 4.1. Sintaxis

Descripci´oon n del resultado boolean boolea n nextBo nextBoolean( olean() )   Devuelve el b boole ooleano ano le le´´ıdo del tecl teclado. ado. byte nextBy nextByte() te()   Devuelve el byte le le´´ıdo del teclado. double nextDo nextDouble() uble()   Devue Devuelve lve el n´umero umero real le´ le´ıdo del teclado. int nextIn nextInt() t()   long nextLo nextLong() ng()   float nextFl nextFloat() oat()   short nextSh nextShort() ort()   String nextLi nextLine() ne()  

Devue Devuelve lve el n´umero umero entero le´ le´ıdo del teclado. Devue Devuelve lve el n´umero umero entero grande le´ le´ıdo del teclado. Devuelve Devuelve el n´umero umero real grande le´ le´ıdo del teclado. Devuelve Devuelve el n´umero umero entero peque˜ n noo le´ le´ıdo del tecl teclado. ado. Devuelve la cadena le le´´ıda del teclado.

etodos etod os de la clase  Scanner. Tabla 4.1.  Algunos m´

La ejecuci´oon n de las instrucciones en todo programa es secuencial, es decir, se realiza una instrucci´ oon n despu´es es de otra a menos que se tenga una instrucci´oon n condicional. Las instrucciones condicionales brindan la posibilidad de dar a los programas m´aass de un posible camino de ejecuci´oon n dependiendo de la condici´on on proporcionada. La instrucci´on on condicional  if  tiene la siguiente sintaxis: if  (condici´ oon) n)

bloque1 else

bloque2

Un bloque es un conjunto de instrucciones que se agrupan mediante llaves con el fin de ser tratadas como unidad. Con la instrucci´oon n condicional   if  el bloque 1 de instrucciones

se ejecuta solamente en caso de que la condici´oon n se cumpla. Si la condici´on on no se cumple, entonces se ejecuta el bloque 2 de instrucciones. De esta manera, solamente uno de los dos bloques ser´a ejecutado. Cabe mencionar que no es necesario incluir siempre la secci´oon n  else con su bloque en una instrucci´oon n   if.

 

4.1. HORAS DEL MUNDO 

4.1. 4. 1. 4.1. 4. 1.1. 1.

 

23

Hor Horas del mund undo Objet Objetiv ivo o

Al finalizar esta pr´aactica, ctica, el alumno habr´a reforzado sus conocimientos acerca de la creaci´oon n y manipulaci´oon n de objetos en Java.

4.1. 4. 1.2. 2.

Mate Materi rial al

En el enlace   Horas del mundo  del cap cap´´ıtulo 4 de la p´aagina gina web del libro se encuentran los archivos:

•   HoraMundo.java  archivo para almacenar el programa a desarrollar en esta pr´aactica. ctica. •   Reloj.class Los ob objetos jetos de esta clase proporcionan, mediante sus m´eetodos, todos, la hora que es en un momento dado en diferentes partes del mundo.

•   Reloj.html  Archivo con la documentaci´oon n de los m´eetodos todo s de la clase  Reloj.

4.1. 4. 1.3. 3.

Desc Descri ripci pci´ on on general ´

La pr´aactica ctica consiste en elaborar un programa que utilice objetos de la clase   Reloj   para mostrar la hora en diferentes ciudades del mundo. Durante el desarrollo de la pr´aactica ctica se pide documentar el programa utilizando el programa  javadoc.

4.1. 4. 1.4. 4.

Desa Desarro rroll llo o

Reloj.class, Reloj. Reloj.html html   y   HoraMundo.java   en el mismo 1. Desca Descargar rgar los arc archivo hivoss   Reloj.class, directorio en que se vaya a desarrollar la pr´aactica. ctica.

2. Abrir el arc archiv hivoo  Reloj.html  desde un navegador de Internet. Leerlo para conocer los m´eetodos todo s y atribut atributos os de eesta sta clase. 3. Usando los m´eetodos todos de la clase  Reloj  descritos en la documentaci´oon n mencionada en el punto anterior, completar el cuerpo del m´eetodo todo  main  de la clase  HoraMundo  para que, al ejecutar el programa, escriba las siguientes ll´´ıneas: Bienvenido!

En este este moment momento o son las... las... 19:30h 19: 30hrs rs en "Mexic "Mexico, o, D.F D.F." ." 6:30hr 6:3 0hrs s en "Tokio "Tokio, , Japon" Japon" 20:30h 20: 30hrs rs en "Nueva "Nueva Yor York, k, U.S U.S.A" .A"

 

24

 

´ Y USO DE OBJETOS  CAP ´ ITULO ITU LO 4. 4. CREAC CREACI  I ON

Las horas ser´aan n diferentes a las l´ıneas anteriores, pero lo dem´aass debe de ser igual. 4. Completar los ccomentarios omentarios de de documentaci´ oon n que aparecen casi al principio del archivo HoraMundo.java  para que se explique brevemen brevemente te qu´e hace la clase, adem´aass incluir el nombre del programador en el campo  author   se˜n nalado. alado. 5. Usand Usandoo la instr instrucci´ ucci´ oon n   javadoc  generar los archivos de documentaci´oon n del programa HoraMundo.java.

4.2. 4. 2. 4.2. 4. 2.1. 1.

Jue Juego de dados ados Objet Objetiv ivo o

El objetivo de esta pr´actica actica es que el alumn alumnoo ejerci ejercite te la teor teor´´ıa acerc acercaa del uso y aplic aplicaci´ aci´ oon n de las instrucciones condicionales dentro de un programa, as as´´ı como de la creaci´ oon n y uso de objetos.

4.2. 4. 2.2. 2.

Desc Descri ripci pci´ on on general ´

Mediante la programaci´oon n de un sencillo juego de dados se utilizar´aan n instrucciones condicionales para determinar un ganador. La pr´aactica ctica consiste en desarrollar un programa para jugar a los dados con la computadora. Las reglas del juego son: se tiran dos dados y se suma el valor de la cara superior de cada uno. Si la suma es 7 u 11 el jugador gana. Si la suma es 2, 3 o 12 el jugador pierde. Si la suma es 4, 4, 5, 6, 8, 9 o 10, ´eesta sta se convierte en los puntos del jugador, quien para ganar debe volver a tirar los dados; si en esta tirada la suma de puntos es 7, 11 o es igual a la suma de la tirada anterior gana, en otro caso pierde.

4.2. 4. 2.3. 3.

Mate Materi rial al

En el enlace   Juego de dados   del cap cap´´ıtulo 4 de la p´aagina gina web del libro se encuentran los siguientes archivos:

•   Dado.class  clase de dados para utilizar en la programacion programaci on del juego. •   Dado.html  documentaci´oon n de la clase  Dado. •   JuegoConDados.java  archivo en que se programar´a el juego de dados.

 

4.2. JUEGO DE DADOS 

4.2. 4. 2.4. 4.

 

25

Desa Desarro rroll llo o

1. Descargar en el directorio de trabajo para la pr´actica actica los archiv archivos os JuegoConDados.java, Dado.html   y  Dado.class. 2. Abrir el arc archiv hivoo   Dado.html  desde un navegador de Internet. Leerlo para conocer los m´eetodos todo s y atribut atributos os de eesta sta clase. 3. Usando los m´eetodos todos de la clase  Dado  descritos en la documentaci´oon n mencionada en el punto anterior, anteri or, ccompletar ompletar el cue cuerpo rpo del m´eetodo tod o  main  de la clase  JuegoConDados.java para que contenga el juego de dados con las reglas explicadas en la descripci´oon n de la pr´aactica. ctica. Los siguientes son ejemplos de ejecuci´oon n del programa  JuegoConDados: > java JuegoConDa JuegoConDados dos Bien Bienve veni nido do, , vamo vamos s a juga jugar r a los los dado dados s Dame Dam e tu nombre nombre Maria Mari Maria a tira tira los los dado dados. s. (Da (Da un ente enter) r) El prim primer er dado dado tuvo tuvo 4 y el segu segund ndo o dado dado tuvo tuvo 1 Mari Maria a la suma suma es 5 vuel vuelve ve a tira tirar r los los dado dados. s. (Da (Da un ente enter) r) Mari Maria a La nuev nueva a suma suma es 7 Ganaste!!! Ganas te!!! ;).

> java JuegoConDa JuegoConDados dos Bien Bienve veni nido do, , vamo vamos s a juga jugar r a los los dado dados s Dame Dam e tu nombre nombre Maria Mari Maria a tira tira los los dado dados. s. (Da (Da un ente enter) r) El prim primer er dado dado tuvo tuvo 5 y el segu segund ndo o dado dado tuvo tuvo 4 Mari Maria a la suma suma es 9 vuel vuelve ve a tira tirar r los los dado dados. s. (Da (Da un ente enter) r) Mari Maria a La nuev nueva a suma suma es 12 Perdiste!! Perdi ste!!! ! ;(.

> java JuegoConDa JuegoConDados dos

Bien Bienve veni nido do, , vamo vamos s a juga jugar r a los los dado dados s Dame Dam e tu nombre nombre Maria Mari Maria a tira tira los dados dados. . (Da (Da un enter enter) ) El prim primer er dado dado tuvo tuvo 3 y el segu segund ndo o dado dado tuvo tuvo 6 Mari Maria a la suma suma es 9 vuel vuelve ve a tira tirar r los los dado dados. s. (Da (Da un ente enter) r)

 

26

 

´ Y USO DE OBJETOS  CAP ´ ITULO ITU LO 4. 4. CREAC CREACI  I ON

Mari Maria a La nuev nueva a suma suma es 9 Ganaste!!! Ganas te!!! ;).

> java JuegoConDa JuegoConDados dos Bien Bienve veni nido do, , vamo vamos s a juga jugar r a los los dado dados s Dame Dam e tu nombre nombre Maria Mari Maria a tira tira los los dado dados. s. (Da (Da un ente enter) r) El prim primer er dado dado tuvo tuvo 1 y el segu segund ndo o dado dado tuvo tuvo 4 Mari Maria a la suma suma es 5 vuel vuelve ve a tira tirar r los los dado dados. s. (Da (Da un ente enter) r) Mari Maria a La nuev nueva a suma suma es 6 Perdiste!! Perdi ste!!! ! ;(.

4. Comp Completar letar la documen documentaci´ taci´ oon n al inicio del archivo   JuegoConDados.java  describiendo qu´e hace la clase e incluyendo tu nombre dentro del campo de autor. 5. Gener Generar ar la documen documentaci´ taci´ oon n utilizando el programa con la siguiente sintaxis   javadoc -author JuegoC JuegoConDado onDados.java s.java

4.3. 4.3. 4. 3.1. 1.

Multiplos u ´ ltiplos con dados Objet Objetiv ivo o

El objetivo de esta pr´actica actica es que el alumn alumnoo ejerci ejercite te la teor teor´´ıa acerc acercaa del uso y aplic aplicaci´ aci´ oon n de las instrucciones condicionales dentro de un programa, as as´´ı como de la creaci´ oon n y uso de objetos de clases existentes.

4.3. 4. 3.2. 2.

Desc Descri ripci pci´ on on general ´

Mediante la programaci´oon n de un sencillo juego de dados se utilizar´aan n instrucciones condicionales para determinar un ganador.

4.3. 4. 3.3. 3.

Mate Materi rial al

ultiplos con dados  de En el enlace   M´   dell cap cap´´ıtulo 4 de la p´aagina gina web del libro se encuentran los

siguientes archivos:

•   Dado.class  clase de dados para utilizar en la programaci´oon n del juego. •   Dado.html  documentaci´oon n de la clase  Dado. •   Multiplos.java  archivo en que se programar´a el juego de dados.

 

´ 4.3. M ULTIPLOS CON DADOS 

4.3. 4. 3.4. 4.

 

27

Desa Desarro rroll llo o

 Multiplos.j plos.java, ava, Dado.h Dado.html tml y  Dado.class. Guardarlos en un 1. Desca Descargar rgar los arc archiv hivos os  Multi mismo directorio.

2. Abrir el arc archiv hivoo   Dado.html  desde un navegador de Internet. Leerlo para conocer los m´eetodos todo s y atribut atributos os de eesta sta clase. 3. Usando los m´eetodos todos de la clase  Dado  descritos en la documentaci´oon n mencionada en el ejercicio anterior, completar el cuerpo del m´eetodo todo   main  de la clase   Multiplos.java para programar un juego de dados en el cual participan un jugador y la computadora. Las reglas del juego son: (a) El jugador lan lanza za un dado dos veces veces.. (b) La computa computadora dora lanza un dado dos veces veces.. (c) Gana el jugador cuyo producto de los dados lanzados es m´u ultiplo ltiplo de 2 o de 5, pero no de ambos a la vez. (d) En caso de empate cada participante lanza nuevamente un dado y gana el que tenga el n´ u umero mero mayor. 4. La ejecuci´oon n del programa debe verse como los ejemplos presentados a continuaci´oon. n. >java Multiplos Multiplos Dame Dam e tu nombre nombre Amparo Amparo Tira Tira tu prim primer er dado dado (s´ (solo olo deb ´ debe e dar ENT ENTER) ER). . Tira Tira tu segu segund ndo o dado dado (s´ (solo o lo debe ´ debe dar dar ENTE ENTER) R) Ampa Amparo ro tu prod produc ucto to es 3 y mi prod produc ucto to es 15. 15. Gana Ganast ste! e!!! !! ;)

>java Multiplos Multiplos Dame Dam e tu nombre nombre Andrea Andrea Tira Tira tu prim primer er dado dado (s´ (solo olo deb ´ debe e dar ENT ENTER) ER). .

Tira Tira tu segu segund ndo o dado dado (s´ (solo o lo debe ´ debe dar dar ENTE ENTER) R). .

Andr Andrea ea tu prod produc ucto to es 5 y mi prod produc ucto to es 24. 24. Hubo Hubo un empa empate te. . Vuel Vuelve ve a tira tirar r Sali Salio o un 3

 

28

 

´ Y USO DE OBJETOS  CAP ´ ITULO ITU LO 4. 4. CREAC CREACI  I ON

Ahor Ahora a tiro tiro yo Sali Salio o un 4 El gana ganado dor r es ... ... computadora

4.4. 4.4. 4. 4.1. 1.

Cumplea˜ nos nos Objet Objetiv ivo o

El objetivo de esta pr´actica actica es que el alumno ejercite la teor´ııaa acerca de la creaci´oon n y uso de objetos ob jetos de cl clases, ases, as´ as´ı como la de aplicaci aplicaci´´oon n de las instrucciones condicionales de un programa.

4.4. 4. 4.2. 2.

Desc Descri ripci pci´ on on general ´

La pr´aactica ctica consiste en desarrollar un programa para determinar la edad de una persona y la cantidad de d´ıas que faltan para ssu u pr´ooximo ximo cumplea˜ n nos. os.

4.4. 4. 4.3. 3.

Mate Materi rial al

nos  del En el enlace Cumplea˜   de l ca cap p´ıtul ıtuloo 4 de llaa p p´agina ´agina web del libro se encuentran los siguientes archivos:

•   Edad.java. Archivo en que se programar´a la pr´aactica. ctica. •   Fecha.class. Clase para trabajar con fechas. •   Fecha.html. Documentaci´oon n de la clase  Fecha.

4.4. 4. 4.4. 4.

Desa Desarro rroll llo o

1. Desca Descargar rgar los arc archivo hivoss   Edad.java, Edad.java, Fecha. Fecha.html html   y   Fecha.class. Guardarlos en un mismo directorio. 2. Abrir el arc archiv hivoo  Fecha.html  desde un navegador de Internet. Leerlo para conocer los

metodo etodoss y atribut atributos os de eesta sta clase. 3. Usando los m´eetodos todos de la clase   Fecha  descritos en la documentaci´oon n mencionada en el ejercicio anterior, completar el cuerpo del m´eetodo todo  main  de la clase  Edad.java  para incluir el siguiente algoritmo. (a) Solic Solicitar itar el nombr nombree del usuario.

 

˜  4.4. CUMPLEANOS 

 

29

(b) Recab Recabar ar el nombre del usuari usuario. o. (c) Solicitar fecha de nacimiento del usuario, primero el d´ıa, luego el n n´ u umero ´ mero para el mes y luego otro n´umero umero para el a˜n no. o. (d) Recab Recabar ar la informac informaci´ i´oon n solicitada. (e) Si alguno de los datos no es v´alido, alido, por ejemplo,   mes = 15  enviar un mensaje de error y terminar el programa. (f) Deter Determinar minar la ed edad ad del usuar usuario. io. (g) Manda Mandarr un mensaje con la edad del usuar usuario. io. (h) Deter Determinar minar ccu´ u´aantos ntos d´ıas faltan para su pr´ooximo ximo cumplea˜ n nos. os. (i) Manda Mandarr un mensaje indicando cu´ antos antos d´ıas faltan para su pr´oximo oximo cumpl cumplea˜ ea˜ n nos. os. (j) Manda Mandarr un mensaje indicando si la persona es menor de edad ((< <  18), es un joven (entre 18 y 30 a˜ n nos), os), un adulto (entre 31 y 69) y adulto mayor (m´aass de 69 a˜ n nos). os). 4. La ejecuci´oon n del programa debe verse como los ejemplos presentados a continuaci´oon. n. >java Edad >java Edad Dame Dam e tu nombre nombre Amparo Amparo Dame Dam e tu fecha fecha de nac nacimi imient ento: o: Dia Dia 30 Mes Mes 11 A~ no n o 1900 1900 La fecha fecha es correc correcta! ta!!! !! Ampa Am ro ti es 11 1ra a~ n nos. os. Falt Faparo ltan an tien 16enes dias di as111 para pa tu cump cumple lea~ a~ n nos os Eres Ere s un adulto adulto mayor. mayor. Fel Felici icidad dades! es!!! !! >java Edad >java Edad Dame Dam e tu nombre nombre Andrea Andrea Dame Dam e tu fecha fecha de nac nacimi imient ento: o: Dia Dia 14 Mes Mes 15

15 Mes incorr incorrect ecto, o, adi adios os !!! >java >ja va Edad Edad Dame tu nombre Dame nombre Andrea Andrea Dame Dam e tu fecha fecha de nac nacimi imient ento: o: Dia Dia 14

 

30

 

´ Y USO DE OBJETOS  CAP ´ ITULO ITU LO 4. 4. CREAC CREACI  I ON

Mes 4 A~ no n o 2000 2000 La fecha fecha es correc correcta! ta!!! !! Andr Andrea ea tien tienes es 11 a~ n nos. os. Faltan Fal tan 364 dias dias para para tu cum cumple plea~ a~ n nos os Eres un joven. joven. Felicidade Felicidades!!! s!!!

 

Cap´ıtulo 5 Creaci´ o n y uso de clases on Este cap cap´´ıtulo contiene un conjunto de pr´aacticas cticas para que el programador se ejercite en la creaci´ oon n y elaboraci´oon n de clases que le ayuden a resolver diversos problemas. Algunas de las clases desarrolladas pueden verse como una extensi´on on de los tipos de datos proporcionados por Java. Se hace ´eenfasis nfasi s en la d divisi´ ivisi´oon n del tr traba abajo jo en m´eetodos, tod os, incluyendo inc luyendo dos que son buena pr´actica actica de programaci´oon: n:   equals   y   toString. Tambi ambi´´een n se insiste en la documentaci´ oon ny pruebas de las clases desarrolladas.

Marco te´ orico orico La parte medular de la programaci´oon n orientada a objetos est´a formada por las clases, pues de ellas se derivan los objetos. En toda clase se define tanto la estructura como el comportamiento que tendr´aan n sus objetos. La parte estructural de los objetos se define mediante la declaraci´ oon n de datos, ´eestos stos pueden ser de cualquier tipo definido por el lengua lenguaje. je. El comportamiento de los objetos se mo modela dela mediante m´eetodos, todos, y es s´oolo lo mediante ´eestos stos que se puede asignar, alterar y conocer el estado de un objeto. Un m´eetodo todo es el conju conjunto nto de instru instruccion cciones es que se deben realizar al llama llamarr a ejecut ejecutar ar tal m´eetodo, todo, es decir, al enviar el mensaje correspondiente. En las clases se tienen distintos m´eetodos, todos, los m´aass comunes son:

•  Constructores . Su nombre es igual al de la clase y su prop´oosito sito es asignar un estado inicial a los objetos. Este m´eetodo todo se llama impl impl´´ıcitamente al utilizar el operador   new.

•   Modificadores . Tienen Tienen el prop prop´´oosito sito de modifica modificarr el va valor lor de los atrib atributos utos priv privados ados de los objetos. En su forma m´aass simple, reciben como par´aametro metro el nuevo valor para el atributo correspondiente, por tanto, el tipo del par´ametro ametro debe coincidir con el tipo del atributo, o bien, ser de tipo compatible. Estos m´eetodos todos no devuelven valor alguno. El nom nombre bre de estos m´eetodos todos suele empezar con la palab palabra ra en   asignar, seguida del nombre del atributo iniciado con letra may´ u uscula. scula. 31

 

32

 

´ Y USO DE CLASES  CAP ´ ITULO ITU LO 5. 5. CREAC CREACI  I ON

•   M´etodos etod os de acceso acces o. Permiten recuperar el valor de un atributo de la estructura. No reciben metros yempieza el valorcon queladevuelven es del tipo definido el atributo. Generalmentepar´ suaametros nombre palabra  obtener  seguido del en nombre del atributo. Si se especific especificaa que un m´ eetodo todo va a dev devolv olver er un valor se debe usar en el cuerpo del mismo la instrucci´oon n  return, seguida de una expresi´oon n cuyo valor es el que devolver´a el m´eetodo todo que la contiene. Una buena pr´aactica ctica de programaci´oon n establece que se debe considerar un  return  aun en caso de falla.

•   M´ M´etodo   equals   para com compar parar ar dos objetos objetos por su est estado ado.. Est Estee es un m´ eetodo todo que recibe un objeto de la clase   Object, por lo tanto la primera instrucci´oon n del m´eetodo to do equals  consiste en tratar ese objeto de la clase   Object  como uno de la clase en que est´a cconten ontenido ido est estee m´eetodo. to do. •   M´ M´etodo  toString para devolver la representaci´oon n en cadena de un objeto. ob jeto. Este m´eetodo tod o se llama impl impl´´ıcita ıcitamen mente te al poner la refer referencia encia a un objeto en una instru instrucci´ cci´ on on para impresi´oon. n. Resulta de gran imp importancia ortancia y utilidad el que una clase est´e do documentada. cumentada. La documentado cumentaci´on on de la clase en Java puede generarse como archivos HTML mediante el uso del programa javadoc. Para ello en el programa se deb deben en incluir comentario comentarioss entre los s´ımbolos   /**   y   */ abarcando todas las l´ııneas neas necesarias e incluir ciertas etiquetas. Las etiquetas m´aass utilizadas son:

•   @author  nombre . Para especificar el nombre del autor del programa. •   @param  nombre descripci´oon n. Para describir cada par´ aametro met ro de un m´eetodo. to do. n. Para especificar •   @return  descripci´oon esp ecificar el valo valorr que devuelve un m´eetodo. todo.

•   @see   referencia . Para especificar que en el c´oodigo digo de esa clase se hace referencia a objetos de otras clases. •   @version   descripci´oon n. Para especificar la versi´ oon n de la clase clase;; ´eesta sta se ha usado para incluir la fecha de realizaci´oon n de la clase. •   @throws  clase descripci´on on. Para especificar la clase de excepci´o on n que se puede disparar

en ese m´eetodo to do y en qu´e sit situaci uaci´´oon. n. Para utilizar esta herramienta, la clase debe estar precedida de la palabra  public. Desde el sistema operativo se debe teclear la instrucci´oon: n: javadoc javado c -autho -author r   nombreDePrograma.java . con lo cual se genera una serie de archivos con la documentaci´oon, n, en particular uno con el mismo nombre de la clase y extensi´oon n  html.

 

 

5.1. RACIONALES 

5.1. 5. 1. 5.1. 5. 1.1. 1.

33

Racio aciona nale less Objet Objetiv ivo o

El objetivo de esta pr´actica actica es que el alumno adquiera pr´aactica ctica en el desarrollo de clases partiendo de la definici´oon n de funcionalidad de la misma.

5.1. 5. 1.2. 2.

Desc Descri ripci pci´ on on general ´

´ La pr´aactica ctica consiste en escribir una clase para trabajar con n´u umeros meros racio racionales. nales.   Estos no existen en J Java, ava, as as´´ı que q ue una vez qu quee la l a cclase lase est´e funciona f uncionando ndo se habr´a extendido el lenguaje Java al permitir definir objetos de esa clase y trabajar con ellos. Un n´ u umero mero racional est´a representado por un cociente entre dos n´u umeros meros enteros de la   forma p/q  forma  p/q  donde  donde p  p y  y q   q  son  son n´umeros umeros enteros y q  y  q   = 0. Las operaciones con n´u umeros meros racionales que debe incluir la clase son: Suma:  + p  p1   p2   p1 q 2 +  p2 q 1 + = q 1 q 2 q 1 q 2 Resta:

 p1   p2   p1 q 2 − p2 q 1 − = q 1 q 2 q 1 q 2

Multiplicaci´ oon: n:

Divisi´oon: n:

 p1   p2   p1 p2 ∗ = q 1 q 2 q 1 q 2  p1 ÷  p 2 =   p1 q 2 q 2  p2 q 1 q 1

Adem´aass se debe tener operaciones para permitir comparar dos racionales y para mostrarlos como cadenas.

5.1. 5. 1.3. 3.

Mate Materi rial al

En el enlace   Racionales  de  dell ccap ap´´ıtu ıtulo lo 5 de d e la la p p´´aagina gina web del libro se encuentran los siguientes archivos:

•   Racional.java  archivo en que se debe programar la clase para n´u umeros meros racionales. •   Racional.html  documentaci´oon n de la clase  Racional. •   PruebaRacional.class  Programa para probar la clase  Racional

 

34

 

5.1. 5. 1.4. 4.

´ Y USO DE CLASES  CAP ´ ITULO ITU LO 5. 5. CREAC CREACI  I ON

Desa Desarro rroll llo o

1. Desca Descargar rgar los arc archiv hivos os   Racional.java   y   PruebaRacional.class. Guardarlos en un mismo directorio. 2. Leer en un nav navegado egadorr de Int Internet ernet el archi archivo vo  Racional.html  el cual contiene la documentaci´oon n de la clase  Racional  con el prop´oosito sito de entender cu´aall es su funci´oon n y con qu qu´´e m´eeto t odo doss co conta ntar´ r´a una vez terminada la pr´actica. actica. 3. Comp Completar letar el cuer cuerpo po del construc constructor tor de la clase  Racional  que recibe dos enteros como par´aametro. metro. En caso de que reciba un denominador igual a cero debe enviar un mensaje de error y crear el racional   0/1. 4. Completar el cuerp cuerpoo del m´eetodo todo  sumar  de la clase  Racional  de forma que ´eeste ste efect efect´ u ue ´e la suma de dos n´ u umeros meros racionales aplicando las siguientes f´oormulas: rmulas:  p1   p2   p1 q 2  + p  +  p2 q 1 + = q 1 q 2 q 1 q 2  p1   p2   p1  + p  +  p2 + = q 1 q 1 q 1 5. Completar el cuerpo del m´eetodo todo  multiplicar  de la clase Racional de forma que ´eeste ste efect´u uee la multiplicaci´oon n de dos n´ u umeros meros racionales aplicando la siguiente f´oormula: rmula:  p1   p2   p1 p2 × = q 1 q 2 q 1 q 2 6. Ejecu Ejecutar tar el progra programa ma  PruebaRacional  y observar cu´aall es el resultado de la ejecuci´oon n del programa. ¿A qu´e se debe tal resultado? 7. Completar el cuerpo del m´eetodo todo   toString   de la clase   Racional  de manera que devuelva una cadena de la forma:   12 / 45  para el racional cuyo numerador es 12 y cuyo denominador es 45. 8. Ejecu Ejecutar tar de nuev nuevoo el programa PruebaRacional  y observar los cambios que se produ-

 jeron en el resultado desplegado. 9. Completar el cuerpo del m´eetodo todo   equals  de la clase   Racional  de forma que devuelva verdadero si y s´oolo lo si ambos racionales tienen el mismo numerador y el mismo denominador. 10. Ejecu Ejecutar tar de nuev nuevoo la clase  PruebaRacional  y observar los cambios que se produjeron en el resultado desplegado.

 

 

5.2. CUENTAS BANCARIAS 

35

11. Comp Comprobar robar que la pr´ actica actica se real realiz´ iz´o de fo forma rma corr correcta, ecta, ej ejecutand ecutandoo el pro programa grama  PruebaRacional y obteniendo un resultado como el siguiente: Tengo 5 numero Tengo numeros s racion racionale ales: s: 12 / 5, 4 / 2, 20 / 13, 6 / 8 y 5 / 1 Si los sumo sumo y multip multiplic lico o puedo puedo obt obtene ener r los sig siguie uiente ntes s result resultado ados: s: 12 / 5 + 12 / 5 = 24 / 5 20 / 13 + 5 / 1 = 85 / 13 6 / 8 + 4 / 2 = 44 / 16 16 20 / 13 x 12 / 5 = 240 / 65 6 / 8 x 5 / 1 = 30 / 8 Tambien Tambie n puedo puedo det determ ermina inar r si dos de ell ellos os son igu iguale ales: s: 12 / 5 y 5 / 1: no son iguales. 4 / 2 y 20 / 13: no son iguales. 20 / 13 y 20 / 13: si son iguales.

No se pued puede e crea crear r el raci racion onal al 1000 1000/0 /0 por por tene tener r deno denomi mina nado dor r igua igual l a 0.

Fin del Progra Programa. ma.

12. Opcionalmente escribir un programa para p probar robar la clase Racional en el cual se eval´ u uee la siguiente expresi´oon: n:

 2  1   2    1  1   −  1  ÷ 2  −  ÷  + 13  −  1 2

3

5.2. 5. 2.

9

Cuen Cuenta tass banc bancar aria iass

3

2

2

5.2. 5. 2.1. 1.

Objet Objetiv ivo o

El objetivo ob jetivo de esta pr´actica actica es que el alumno se ejercite en el desarrollo de clases a partir de la definici´oon n de un problema.

5.2. 5. 2.2. 2.

Desc Descri ripci pci´ on on general ´

La pr´aactica ctica consiste en escribir un programa para ayudar a un cajero de una instituci´oon n bancaria banca ria con el manej manejoo de cuen cuentas tas de d´eebito. bito. El progr programa ama deber´ a permitir realizar las si-

 

36

 

´ Y USO DE CLASES  CAP ´ ITULO ITU LO 5. 5. CREAC CREACI  I ON

guientes operaciones sobre una tarjeta de d´eebito: bito: crear cuentas, retirar dinero (siempre que haya suficiente), depositar dinero, conocer el saldo de una cuenta y cancelar una cuenta.

5.2. 5. 2.3. 3.

Mate Materi rial al

En el enlace  Cuentas bancarias  del cap cap´´ıtulo 5 de la p´aagina gina web del libro se encuentran los siguientes archivos:

•   Cuenta.java  archivo que contendr´a la clase para manejar cuentas de d´eebito. bito. •   PruebaCuenta.class  programa para probar la clase  Cuenta. •   Transaccion.java  programa para crear objetos de la clase  Cuenta  y envia enviarle rless m´eetotodos.

5.2. 5. 2.4. 4.

Desa Desarro rroll llo o

 Cuenta.java, .java, Prueba PruebaCuenta. Cuenta.class class y  Transaccion.java. Guar1. Descargar los arc archivos hivos Cuenta darlos en un mismo directorio.

2. Progr Programar amar en la clas clasee  Cuenta  los sigu siguiente ientess m´eetodos to dos:: (a) Constructor, para crear una cuenta con un m´ınimo de $2,500.00 (b)   depositar  para depositar en la cuenta, la cantidad indicada. (c)   retirar para retirar de la cuenta la cantidad indicada, siempre que haya suficiente dinero. (d)   obtenerDisponible  para conocer la cantidad de dinero disponible en la cuenta. 3. Gener Generar ar la documen documentaci´ taci´ oon n de la clase  Cuenta  utilizando el programa  javadoc. 4. Ejecu Ejecutar tar el programa   PruebaCuenta, si se programaro programaron n bien los m´eetodos todos de la clase Cuenta  debe mostrar el siguiente resultado:

NO se pued puede e crea crear r la cuen cuenta ta 2010 2010 con con $30. $30.0 0 el mini minimo mo es de $2,5 $2,500 00 Se creo creo la cuen cuenta ta 2011 2011 con con sald saldo o = 3000 3000.0 .0 La cuen cuenta ta 2011 2011 tien tiene e un sald saldo o = 2950 2950.0 .0 Solo Sol o se pueden pueden hacer hacer ret retiro iros s de can cantid tidade ades s positi positivas vas

 

5.3. CONVERTIDOR DE TEMPERATURA

 

37

Se va a real realiz izar ar un reti retiro ro de $400 $400 La cuen cuenta ta 2011 2011 tien tiene e un sald saldo o = 2550 2550.0 .0 Los fondos fondos son insufi insuficie ciente ntes s par para a el ret retiro iro Se va a real realiz izar ar un reti retiro ro de $300 $3000 0 Los deposi depositos tos deb deben en ser positi positivos vos La cuen cuenta ta 2011 2011 tien tiene e un sald saldo o = 3550 3550.0 .0 FIN DEL PROGRA PROGRAMA. MA.

5. Comp Completar letar eell progra programa ma Transaccion en el cual se creen dos cuentas: una con $5,000.00 y otra con $3,000.00. De la primera cuenta tomar $1,500.00 y depositarlos en la segunda cuentas. Mostrar el saldo de ambas cuentas.

5.3. 5. 3. 5.3. 5. 3.1. 1.

Con Converti ertido dor r de de tem temper perat atur ura a Objet Objetiv ivo o

El objetivo ob jetivo de esta pr´actica actica es que el alumno se ejercite en el desarrollo de clases a partir de la definici´oon n de un problema.

5.3. 5. 3.2. 2.

Desc Descri ripci pci´ on on general ´

La pr´actica actica consiste en escribir una clase que permita hacer conversiones de temperaturas entre grados g rados cent cent´´ıgrados y grados Farenheit arenheit.. A Adem´ dem´aass debe poder determinar si dos temperaturas son iguales aunque est´een n en diferente escala y mostrarlas seguidas de la cadena   C   o F  seg´ u un n sea el caso.

5.3. 5. 3.3. 3.

Mate Materi rial al

En el enlace  Convertidor de temperatura  del   de l ccap ap´´ıtul ıtuloo 5 de la p´aagina gina web del libro se encuentran los siguientes archivos:

•   Temperatura.java  clase para trabajar con temp temperaturas eraturas ya sea en grados cent cent´´ıgrados o bien en grados Farenheit. •   Temperatura.html  documentaci´oon n de la clase  Temperatura. •   PruebaTemperatura.class  programa para probar la clase  Temperatura.

 

38

 

5.3. 5. 3.4. 4.

´ Y USO DE CLASES  CAP ´ ITULO ITU LO 5. 5. CREAC CREACI  I ON

Desa Desarro rroll llo o

1. Descargar en el directorio de trabajo para esta pr´aactica ctica los archiv archivos os Temperatura.java, Temperatura.html   y  PruebaTemperatura.class. 2. Abrir eell arch archivo ivo Temperatura.html  para conocer la descripci´oon n de la funcionalidad de los m´eetodos todo s solicit solicitados. ados. 3. Progr Programar amar en la clase Temperatura los siguientes si guientes m´eetodos, todo s, de acuerdo a lo esp especificado ecificado en la documentaci´on on de la clase.

•   Constructores. •   Un m´eetodo tod o para devolver una temperatura tempe ratura en grados cent cent´´ıgrados. ıgrados . •   Un m´eetodo todo para devolver una temperatura en grados Farenheit. •  Un  U n m´eetodo to do par paraa cconvert onvertir ir a ggrado radoss cent c ent´´ııgrados gr ados.. •  Un  U n m´eetodo tod o pa para ra cconvertir onvertir a gr grados ados Farenheit arenheit.. •   Un m´eetodo todo para deter determinar minar si dos temperaturas temperaturas son igual iguales es aunqu aunquee est est´´een n en diferente escala. •  Un m´ eetodo todo para comparar dos temperaturas temperaturas y deter determina minarr si una es may mayor or que otra, aunque est´een n een n di diferente ferente escala. •   Un m´eetodo todo para obtener la temp temperatura eratura como un n n´ u umero ´ mero seguido de  C  o  F  seg´ u un n sea el caso. 4. Ejecu Ejecutar tar el program programaa   PruebaTemperatura, si se programaron bien los m´eetodos todos de la clase  Temperatura  debe mostrar el siguiente resultado: Acabo Aca bo de crear crear 4 temper temperatu aturas ras:0. :0.0C 0C 0.0 0.0F F 45.0C 45.0C 35. 35.0F 0F

La temperatur temperatura a 35.0F en Centigrado Centigrados s es:1.66666 es:1.6666667 67

La temper temperatu atura ra 35. 35.0F 0F en Far Farenh enheit eit es: es:35. 35.0 0 La temper temperatu atura ra 45. 45.0C 0C en Cen Centig tigrad rados os es: es:45. 45.0 0 La temper temperatu atura ra 45. 45.0C 0C en Far Farenh enheit eit es: es:113 113.0 .0 45.0 45.0C C es mayo mayor r que que 0.0F 0.0F

Terminando...

 

5.4. ROBOT 

 

39

5. Docume Documenta ntaci´ ci´ oon n en la clase  Temperatura  los constructores. 6. Gener Generar ar la documen documentaci´ taci´ oon n de la clase  Temperatura  usando el programa  javadoc.

5.4. 5.4. 5. 4.1. 1.

Robot bot Objet Objetiv ivo o

El objetivo ob jetivo de esta pr´actica actica es que el alumno se ejercite en el desarrollo de clases a partir de la definici´oon n de un problema que puede resultar simp´aatico. tico.

5.4. 5. 4.2. 2.

Desc Descri ripci pci´ on on general ´

La pr´actica actica consiste en escribir una clase que funcione como un robot. El robot tiene nombre, modelo y un n´u umero mero de serie. Esta clase deb debee tener m´eetodos todos para crear un robot, mandarlo a dormir, despertar, desp ertar, repetir lo que se le dice, hacer op operaciones eraciones aritm´eeticas ticas b´aasicas, sicas, determinar si dos robots son iguales y mostrar sus datos. Mientras el robot est´a dormido no atiende a ning´u un n otro mensaje a menos que sea despertar.

5.4. 5. 4.3. 3.

Mate Materi rial al

En el enlace   Robot   del cap cap´´ıtulo 5 de la p´aagina gina web del libro se encuentran los siguientes archivos:

•   Robot.java  clase para trabajar con robots. •   Robot.html  documentaci´oon n de la clase  Robot. •   PruebaRobot.class  programa para probar la clase  Robot.

5.4. 5. 4.4. 4.

Desa Desarro rroll llo o

1. Desca Descargar rgar los arc archivo hivoss   Robot.java, Robot.java, Robot. Robot.html html   y   PruebaRobot.class. Guardarlos en un mismo directorio. 2. Abrir el archivo   Robot.html   para conocer la descripci´on on de la funcionalidad de los m´eetodos to dos sol solici icitado tados. s. 3. Progr Programar amar en la clas clasee  Robot  los sigu siguiente ientess m´eetodos to dos,, (a) Un constr constructor uctor por omi omisi´ si´ on. on.

 

40

 

´ Y USO DE CLASES  CAP ´ ITULO ITU LO 5. 5. CREAC CREACI  I ON

(b) Un constru constructor ctor que reci reciba ba los datos del robot. (c) Un m´eetodo todo para mandar a dormir al rob robot. ot. (d) Un m´eetodo todo para despertar al rob robot. ot. (e) Un m´eetodo todo para que robot repita to todo do lo que se le env env´´ıe en una cadena. (f) (f ) Un m´eetodo todo para sumar dos n´u umeros meros dados. (g) Un m´eetodo todo para restar dos n´u umeros meros dados. (h) Un m´eetodo todo para multiplicar dos n´u umeros meros dados. (i) Un m´eetodo todo para dividir dos n´u umeros meros dados. (j) Un m´eetodo todo para determinar si dos robots son iguales. (k) Un m´eetodo tod o para mostrar la informaci´ informa ci´oon n del robot robot.. En los m´eetodos todos que son ´ordenes ordenes que debe obedecer el robot, considerar que mientras ´eeste s te es est´ t´a dormido no atiende a ning´u un n otro mensaje a menos que sea despertar. 4. Ejecutar el programa   PruebaRobot; si se progr programaro amaron n bien los m´ eetodos todos de la clase Robot  debe mostrar el siguiente resultado: zzz zzz zzz zzz El robo robot t esta esta dorm dormid ido, o, lo voy voy a desp desper erta tar r para para que que trab trabaj aje e La suma suma de 3445 344566 66 y 9876 98765 5 es 4433 443331 31 La multip multiplic licaci acion on de 344 344566 566 y 98765 98765 es 340 340310 310609 60990 90 No puedo puedo dividi dividir r entre entre cer cero o Tengo hambre!! hambre!! Roboti Rob otina na y Arturi Arturito to son distin distintos tos

 

Cap´ıtulo 6 Objetos como atributos En este cap cap´´ıtulo se incluyen pr´acticas acticas para que el programador consolide sus conocimientos acerca del concepto de agregaci´on on al utilizar en la estructura de objetos de una clase en desarrollo, objetos de otras clase. Otro prop´oosito sito de las pr´aacticas cticas de este cap cap´´ıtulo es que el lector desarrolle su habilidad para construir clases que involucren el uso de clases existentes, de las cuales no se tiene el c´oodigo digo fuente, s´oolo lo se tiene el c´oodigo digo ejecutable y la documentaci´oon. n.

Marco te´ orico orico Una vez programada una clase puede considerarse como un nuevo tipo de datos. Como consecuencia, es igualmente sencillo incluir objetos que datos de tipos primitivos en la estructura de una clase. Lo u unico ´ nico que debe hacerse es incluir la referencia a ellos. Se debe recordar que se tiene la referencia al ob objeto, jeto, no el ob objeto jeto en s´ı. La relaci´oon n en la que un objeto contiene a otro(s) se denomina relaci´oon n de agregaci´oon. n.

Es necesario que en los constructores se creen los objetos contenidos, porque en la es tructura s´olo olo se declara la referencia a ellos. De esta forma, la creaci´oon n de un objeto puede llevar a la creaci´oon n de otros. Una vez creados los objetos contenidos se est´a en posibilidad de enviarles mensajes. Para compilar la clase contenedora es necesario que las clases de los objetos contenidos est´een n en el mismo directorio donde se compile el archivo o bien esp especificar ecificar en la trayectoria de acceso a los archivos el lugar en donde se puede encontrar; no es necesario agregar ning´un c´oodigo digo extra en el archivo. En el comen comentario tario de inici inicioo de la clase se inclu incluye ye una l´ınea que empie empieza za con   @see   para especificar que se incluyen objetos de otra clase cuya documentaci´oon n puede consultarse. 41

 

42

 

6.1.. 6.1 6.1. 6. 1.1. 1.

CAP ´ ITULO 6. OBJETOS OBJETOS COMO ATRIBU ATRIBUTOS  TOS 

Tri´ angulos angulos Objet Objetiv ivo o

El objetivo de esta pr´aactica ctica es que el alumno refuerce sus conocimientos acerca del concepto de agregaci´oon n a trav´eess de la creaci´oon n de una clase, que utilice en su estructura, objetos de otra clase.

6.1. 6. 1.2. 2.

Desc Descri ripci pci´ on on general ´

El concepto de objetos como atributos se ejercita en esta pr´aactica ctica mediante la programaci´oon n de la clase   Triangulo   que utiliza la clase   Punto  para la definici´oon n de la estructura de sus objetos y para programar los m´eetodos todos de la clase  Triangulo  se recurre a los m´eetodos todos de la clase  Punto.

6.1. 6. 1.3. 3.

Mate Materi rial al

angulos  del En el enlace  Tri´    de l ccap ap´´ıtul ıtuloo 6 de la p´aagina gina web del libro se encuentran los siguientes archivos:

•   Punto.class  clase para trabajar con puntos en el plano cartesiano. •   Punto.html  archivo con la documentaci´oon n para la clase  Punto •   Triangulo.html   archiv archivoo con la documen documentaci´ taci´ oon n la clase   Triangulo   que se pro progra gra-mar´a en esta pr´aactica. ctica. •   PruebaTriangulo.class  programa para probar los m´eetodos tod os la l a cla clase se  Triangulo  desarrollada en esta pr´actica. actica.

6.1. 6. 1.4. 4.

Desa Desarro rroll llo o  ´

1. Desca Descargar rgar los arc archiv hivos os necesario necesarioss para realiz realizar ar la pr practica. actica. Estos son:   Punto.class, Punto, html, Triang Triangulo.ht ulo.html ml   y  PruebaTriangulo.java. Guardarlos en un mismo directorio. 2. Consultar en el material de la pr´aactica ctica la documentaci´on on de la clase  Triangulo  para poder construir la clase de acuerdo con las especificaciones se˜ n naladas aladas en la misma. 3. Crea Crearr una clase para defini definirr un tri´angulo angulo como un conjunto de 3 puntos no alineados. Los atributos de la clase   Triangulo.java   deber´aan n ser u unicamente ´ nicamente tres objetos de la clase  Punto. La clase  Triangulo  deber´a proporcionar los siguientes constructores y m´eetodos: todos:

 

´ 6.1. TRI ANGULOS 

 

43

•   Un constructor que defina el tri´angulo angulo cuyos extremos est´aan n en los puntos (0,0), (10,0) y (5,10). •  Un constructor para un tri´aangulo ngulo a partir de tres puntos. •   Un constructor copia. •   Un m´eetodo tod o para determin determinar ar el per´ıımetro metro del tri´angulo. angulo. •  Un  U n m´eetodo todo para determin determinar ar el ´aarea rea del tri´aangulo ngulo con lados de longitud   a, b   y   c utilizando la f´oormula rmula de Her´oon n que dice que si el semi-p semi-per er´´ımetro de un tri´aangulo ngulo es es   s  = (a +  + b  b +  + c  c))/2 se tiene que el ´aarea rea es s(s − a)(  a)(ss − b)(  b)(ss − c).  c).

 

•   Un m´eetodo todo para determinar el tip tipoo de tri´aangulo ngulo que se trata: equil´aatero, tero, escaleno o is´oosceles. sceles. •   Un m´eetodo tod o para determin determinar ar si dos tri´angulos angulos son iguales iguales.. •   Un m´ eetodo todo para recuper recuperar ar una caden cadenaa con la inform informaci´ aci´ oon n del tri´angulo angulo de la forma: ab: (x1,y1) – (x2,y2); bc: (x2,y2) – (x3,y3); ac: (x1,y1) – (x3,y3) 4. Par Paraa comproba comprobarr que la clase  Triangulo.java  est´a bien programada, ejecutar el programa   PruebaTriangulo. El programa deber´a de arrojar una salida similar a la que se muest muestra ra a conti continuaci nuaci´´oon: n: >java Prueba PruebaTriang Triangulo ulo ***PROG ***P ROGRAM RAMA A PAR PARA A PRO PROBAR BAR LA CLA CLASE SE TRI TRIANG ANGULO ULO*** *** Triangu Tria ngulo lo 1 : ab: (0, (0,0)0)-(10 (10,0) ,0); ; bc: (10 (10,0) ,0)-(5 -(5,10 ,10); ); ac: (5, (5,10) 10)-(0 -(0,0) ,0) Triangu Tria ngulo lo 2 : ab: (2, (2,3)3)-(10 (10,3) ,3); ; bc: (10 (10,3) ,3)-(4 -(4,15 ,15); ); ac: (4, (4,15) 15)-(2 -(2,3) ,3) Triangu Tria ngulo lo 3 : ab: (5, (5,20) 20)-(1 -(13,2 3,20); 0); bc: (13 (13,20 ,20)-( )-(7,3 7,32); 2); ac: (7, (7,32) 32)-(5 -(5,20 ,20) )

Triangu Tria ngulo lo 4 : ab: (13 (13,20 ,20)-( )-(5,2 5,20); 0); bc: (5, (5,20) 20)-(7 -(7,32 ,32); ); ac: (7, (7,32) 32)-(1 -(13,2 3,20) 0) ***PERI ***PE RIME METR TRO O DE LO LOS S TR TRIA IANG NGUL ULOS OS 1 Y 2* 2*** ** El per perime imetro tro del tri triang angulo ulo 1 es: 32. 32.360 360679 679774 774997 9979 9 El per perime imetro tro del tri triang angulo ulo 2 es: 33. 33.581 581932 932925 925595 595176 176 ***AREA ***AR EA DE LO LOS S TR TRIA IANG NGUL ULOS OS 1 Y 2* 2*** ** El are area a del tri triang angulo ulo 1 es: 50. 50.000 000000 000000 000000 00001 01 El are area a del tri triang angulo ulo 2 es: 47. 47.999 999999 999999 999999 999986 986

 

44

 

CAP ´ ITULO 6. OBJETOS OBJETOS COMO ATRIBU ATRIBUTOS  TOS 

***TIPO ***TI PO DE LO LOS S TR TRIA IANG NGUL ULOS OS 1 Y 2* 2*** ** El ti tipo po de del l tr tria iang ngul ulo o 1 es es: : Is Isos osce cele les s El ti tipo po de del l tr tria iang ngul ulo o 2 es es: : Es Esca cale leno no ***VERI ***VE RIFI FICA CAR R SI LO LOS S TR TRIA IANG NGUL ULOS OS 2 Y 3 SON SON IG IGUA UALE LES* S*** ** Los Lo s tr tria iang ngul ulos os 2 y 1 no so son n ig igua uale les! s!!! !! Los tr tria iang ngul ulos os 3 y 4 so son n ig igua uale les! s!!! !!

5. Escri Escribir bir un program programaa de prueb pruebaa propio.

6.2. 6.2. 6. 2.1. 1.

Rect´ angulos angulos Objet Objetiv ivo o

El objetivo de esta pr´aactica ctica es que el alumno refuerce sus conocimientos acerca del concepto de agregaci´oon n a trav´ es es de la creaci´ on on de una clase, que utilice en su estructura objetos de otra clase.

6.2. 6. 2.2. 2.

Desc Descri ripci pci´ on on general ´

El concepto de objetos como atributos se ejercita en esta pr´aactica ctica mediante la programaci´oon n de la clase  Rectangulo  que utiliza la clase  Punto  para la definici´on on de la estructura de sus objetos.

6.2. 6. 2.3. 3.

Mate Materi rial al

En el enlace  Rect´  angulos  del  de l ccap ap´´ııtulo tu lo 6 d dee llaa p p´agina ´agina web del libro se encuentran los siguientes archivos:

•   Punto.class  clase para trabajar con puntos en el plano cartesiano. •   Punto.html  documentaci´oon n para la clase  Punto •   Rectangulo.html  documentaci´oon n de la clase   Rectangulo  que se programar´a en esta pr´aactica. ctica. •   Rectangulo.java  Clase que se programar´a en esta pr´aactica. ctica. •   PruebaRectangulo.class   programa programa para probar probar los m´eetodos todos la clase   Rectangulo desarrollada en esta pr´aactica. ctica.

 

´ 6.2. RECT ANGULOS 

6.2. 6. 2.4. 4.

 

45

Desa Desarro rroll llo o

1. Descargar los arc archivos hivos necesario necesarioss para realizar llaa pr´aactica: ctica: Punto.class, Punto.class, Punto, html, Rectangulo.html   y  PruebaRectangulo.java. Guardarlos en un mismo directorio. 2. Consu Consultar ltar en el mater material ial de la pr´ aactica ctica la documentaci´on on de la clase  Rectangulo  para poder construir la clase de acuerdo con las especificaciones se˜ n naladas aladas en la misma. 3. Crea Crearr una clase para definir un rect rect´´aangulo ngulo a partir de dos puntos que representan los extremos de una diagonal. La clase  Rectangulo  deber´a propo proporcionar rcionar m´eetodos todo s para:

•   Construir un cuadril´aatero tero a partir de dos puntos. •  Determinar si se trata de un cuadrado o de un rect´angulo. angulo. •  C  Calcular alcular el per per´´ımetro del cuadril´aatero. tero. •  Calcular el ´aarea rea del cuadril´aatero. tero. •  Determinar el cuadril´aatero tero resultante de la intersecci´oon n de dos rect´aangul ng ulos os.. V´eease a se figura 6.1.

on on de dos rect´ angulos. angulos. Figura 6.1.  Intersecci´

•   Determinar el cuadril´aatero tero m´ınimo que contiene la uni´oon n de dos rect´aangulos ngulos

o on n de dos rect´ angulos. angulos. Figura 6.2.  Uni´

•  Determinar si son iguales dos rect´aangulos. ngulos. 4. Al ejecut ejecutar ar el progra programa ma  PruebaRectangulos  se obtiene la siguiente salida:

 

46

 

CAP ´ ITULO 6. OBJETOS OBJETOS COMO ATRIBU ATRIBUTOS  TOS 

*** PROGRA PROGRAMA MA PARA PARA PROBAR PROBAR REC RECTAN TANGUL GULOS OS *** Tienes el rectangulo Tienes rectangulo (10,10) (100, (100,200) 200) (10,200) (10,200) (100, (100,10) 10) El perime perimetro tro de tu rec rectan tangul gulo o es: 560.0 El rect rectan angu gulo lo no es un cuad cuadra rado do. . El area area de tu rect rectan angu gulo lo es: es: 1710 17100. 0.0 0

Ahora Aho ra tambie tambien n tienes tienes el rec rectan tangul gulo o (150,5 (150,5) ) (200,2 (200,210) 10) (15 (150,2 0,210) 10) (200,5 (200,5) ) Los rectan rectangul gulos os (10 (10,10 ,10) ) (100,2 (100,200) 00) (10 (10,20 ,200) 0) (100,1 (100,10) 0) y (150,5 (15 0,5) ) (200,2 (200,210) 10) (15 (150,2 0,210) 10) (20 (200,5 0,5) ) no son igu iguale ales s La union union de los rec rectan tangul gulos os (10 (10,10 ,10) ) (100,2 (100,200) 00) (10 (10,20 ,200) 0) (10 (100,1 0,10) 0) y (150,5) (150, 5) (200,210) (200,210) (150,210) (200,5) es: (10,5) (10,5 ) (200,210) (200,210) (10,210) (10,210) (200, (200,5) 5) La union union de los rec rectan tangul gulos os (10 (10,10 ,10) ) (200,2 (200,210) 10) (10 (10,21 ,210) 0) (20 (200,1 0,10) 0) y (25,25 (25 ,25) ) (150,1 (150,100) 00) (25 (25,10 ,100) 0) (15 (150,2 0,25) 5) es: (10,10) (10,1 0) (200,210) (200,210) (10,210) (10,210) (200, (200,10) 10) Fin Fin de la prue prueba ba!! !!! !

6.3. 6. 3. 6.3. 6. 3.1. 1.

Esta Estaci cion onam amie ien nto Objet Objetiv ivo o

El objetivo de esta pr´aactica ctica es que el alumno se adquiera experiencia en la construcci´oon n de proyectos que involucren el uso de clases ya existentes. Se trabajar´a el concepto de agregaci´oon n mediante la programaci´oon n de una clase que har´a uso de la funcionalidad de otras clases.

6.3. 6. 3.2. 2.

Desc Descri ripci pci´ on on general ´

Durante esta pr´aactica ctica se programar programar´´a una clase que se encargue de manejar la caseta de cobro y vigilancia de un estacionamiento. El estacionamiento realiza solamente tres diferentes tareas: 1. Recib Recibir ir coches. Cuando un coche llega al estac estacionam ionamien iento to es neces necesario ario darle al cond conducuctor del veh veh´´ıculo un boleto que incluya la hora a la que lleg´o al estacionamiento. 2. Cobr Cobrar ar b boleto oletos. s. Antes de que un clien cliente te abandone el estacionam estacionamien iento to debe pagar su boleto. Las cuotas del estacionamiento son las siguientes:

 

6.3. ESTACIONAMIENTO  ESTACIONAMIENTO 

 

47

•  La primera hora (o fracci´oon) n) se cobra a 2.00 pesos. •  Las siguientes horas (o fracci´oon) n) se cobran a 10.00 pesos. Esta tarifa incluye 15 minutos de tolerancia para salir del estacionamiento. 3. Despa Despacha charr coches. Para que el coche pueda salir del estacion estacionamien amiento to es neces necesario ario que:

•   Su bol boleto eto est´e p pagad agado. o. •  No haya excedido los 15 minutos de tolerancia. Es decir, que entre la hora en la que pag´o y la hora en la que quiere salir no existan m´aass de 15 minutos.

6.3. 6. 3.3. 3.

Mate Materi rial al

En el enlace   Estacionamiento   del cap cap´´ıtulo 6 de la p´aagina gina web del libro se encuentran los siguientes archivos:

•   Caja.class clase que representa una caja de cobro de un establecimiento, en este caso, del estacionamiento. •   Caja.html  documentaci´oon n de la clase  Caja. •   Cajero.class  clase para generar cajeros que utilizan una Caja para cobrar. •   Cajero.html  documentaci´oon n de la clase  Cajero. •   Hora.class  clase para traba trabajar jar con horas del d´ıa. Cada hora est´a compuesta por una cantidad de horas, una cantidad de minutos y una cantidad de segundos. •   Hora.html  documentaci´oon n de la clase  Hora.

•   BoletoEstacionamiento.class clase para trabajar con los boletos del estacionamiento. Cada boleto se compone de 3 horas: la hora de entrada, la hora de pago y la hora de salida. •   BoletoEstacionamiento.html documentaci´oon n de la clase para trabajar con los boletos del estacionamiento. •   Estacionamiento.java clase en que se escribir´a todo el c´oodigo digo necesario para la pr´aactictica.

•   PruebaEstacionamiento.class  clase encargada de probar la programaci´oon n del estacionamiento.

 

48

 

6.3. 6. 3.4. 4.

CAP ´ ITULO 6. OBJETOS OBJETOS COMO ATRIBU ATRIBUTOS  TOS 

Desa Desarro rroll llo o

1. Desca Descargar rgar los archi archivos vos descr descritos itos en la secci´on on anterior y guardarlos en un mismo directorio. 2. Consu Consultar ltar la documen documentaci´ taci´ oon n de las clases. 3. Progr Programar amar en la clas clasee  Estacionamiento.java  los sig siguient uientes es m´eetodos to dos:: (a)   recibirCoche  Este m´eetodo todo se ejecut ejecutaa cuand cuandoo se recibe un coche coche.. Recibe como par´ametro ametro la hora de llegada del coche. Este m´eetodo todo deb debee devolver un objeto de la clase  BoletoEstacionamiento  que contenga la hora de llegada marcada. (b)   cobrarCuota. Este m´eetodo todo se ejecut ejecutaa cuand cuandoo un clien cliente te va a pagar su boleto. Recibe como par´ametro ametro el boleto del cliente y la hora en la que el cliente va a hacer el pago. Este m´eetodo todo deb debee usar un cajero ca jero para cobrar al cliente el importe adecuado seg´ un un el reglamento de cuotas del mismo. Una vez que el cliente cubri´o su cuota se debe sellar el boleto indicando que ya est´a pagado y agregarle la hora en la que se realiz´o el pago. (c)   despacharCoche. Este m´eetodo todo se ejecut ejecutaa cuand cuandoo el coche quiere aband abandonar onar el estacionamiento. Recibe como par´aametros: metros: el boleto del cliente y la hora en la que quiere salir del estacionamiento. Si el boleto est´a pagado se debe verificar que el cliente no haya excedido los 15 minutos de tolerancia. En caso de que todo est´e bien bien,, ssee d deb eber´ er´a marcar el boleto del cliente con la hora de salida. 4. Probar la clase  Estacionamiento   programada seg´ un un las indicaciones del punto anterior. Para ello es necesario compilarla y una vez que haya compilado exitosamente, ejecutar la clase  PruebaEstacionamiento. Al ejecutar la clase  PruebaEstacionamiento  se tendr´a una salida como la siguiente:

---------------------------------------------------Ha lle llegad gado o un aut auto. o. Pre Presio sionar nar ent enter er par para a ate atende nderlo rlo. . ---------------------------------------------------Bienvenido. La ta tari rifa fa es de $2 $2.0 .00 0 la pr prim imer era a ho hora ra y $10. $10.00 00 las las sig sigui uien ente tes s hora horas. s. Tu ho hora ra de ll lleg egad ada a es es: : 3: 3:15 15:3 :30 0 ---------------------------------------------------Ha lle llegad gado o un aut auto. o. Pre Presio sionar nar ent enter er par para a ate atende nderlo rlo. . ----------------------------------------------------

 

6.3. ESTACIONAMIENTO  ESTACIONAMIENTO 

 

Bienvenido. La ta tari rifa fa es de $2 $2.0 .00 0 la pr prim imer era a ho hora ra y $10. $10.00 00 las las sig sigui uien ente tes s hora horas. s. Tu ho hora ra de ll lleg egad ada a es es: : 3: 3:50 50:1 :10 0 -----------------------------------------------------------------Un cli client ente e qui quiere ere pag pagar ar su bol boleto eto. . Pre Presio sionar nar ent enter er para atende atenderlo rlo. . -----------------------------------------------------------------Hora de lle llegad gada: a: 3:5 3:50:1 0:10 0 Hora de pago: 3:50:30 Tiempo estaci estacionado onado 0:0:20 Total aapagar $2 Depos Dep osit ita tu di dine nero ro 5 *** Cam Cambio bio reg regres resado ado: : $3. $3.0 0 -------------------------------------------------------Un cli client ente e qui quiere ere sal salir. ir. Pre Presio sionar nar ent enter er par para a ate atende nderlo rlo. . -------------------------------------------------------Hora de pa Hora pago go: : 3: 3:50 50:3 :30 0 Hora Hor a ac actu tual al: : 3: 3:58 58:5 :50 0 Gracias Grac ias por vis visita itarno rnos. s. Vue Vuelva lva pro pronto nto. . -----------------------------------------------------------------Un cli client ente e qui quiere ere pag pagar ar su bol boleto eto. . Pre Presio sionar nar ent enter er para atende atenderlo rlo. . ------------------------------------------------------------------

49

Hora de lle llegad gada: a: 3:5 3:50:1 0:10 0 Hora de pago: 8:30:10 Tiempo estaci estacionado onado 4:40:0 Tota To tal l a pa paga gar r $4 $42 2 Depos Dep osit ita a tu di dine nero ro 20 El im impo port rte e a pa paga gar r es $4 $42. 2.0 0 fa falt lta a $2 $22. 2.0 0 Depos Dep osit ita a tu di dine nero ro 10 El im impo port rte e a pa paga gar r es $4 $42. 2.0 0 fa falt lta a $1 $12. 2.0 0 Depos Dep osit ita a tu di dine nero ro 10 El im impo port rte e a pa paga gar r es $4 $42. 2.0 0 fa falt lta a $2 $2.0 .0 Depos Dep osit ita a tu di dine nero ro 2

 

50

 

CAP ´ ITULO 6. OBJETOS OBJETOS COMO ATRIBU ATRIBUTOS  TOS 

*** Cam Cambio bio reg regres resado ado: : $0. $0.0 0 -------------------------------------------------------Un cli client ente e qui quiere ere sal salir. ir. Pre Presio sionar nar ent enter er par para a ate atende nderlo rlo. . -------------------------------------------------------Hora de pa Hora pago go: : 8: 8:30 30:1 :10 0 Hora Hor a ac actu tual al: : 8: 8:50 50:5 :50 0 Excedis Exce diste te el tie tiempo mpo de tol tolera eranci ncia a ---------------------------------------------------Ha lle llegad gado o un aut auto. o. Pre Presio sionar nar ent enter er par para a ate atende nderlo rlo. . ---------------------------------------------------Bienvenido. La ta tari rifa fa es de $2 $2.0 .00 0 la pr prim imer era a ho hora ra y $10. $10.00 00 las las sig sigui uien ente tes s hora horas. s. Tu ho hora ra de ll lleg egad ada a es es: : 9: 9:15 15:3 :30 0 -------------------------------------------------------Un cli client ente e qui quiere ere sal salir. ir. Pre Presio sionar nar ent enter er par para a ate atende nderlo rlo. . -------------------------------------------------------Lo se sent ntim imos os no pu pued ede e sa sali lir. r. Pr Prim imer ero o hay hay que que paga pagar. r. ...

Observaciones:

•  El texto que se muestra rodeado por  -------------------------------------, lo imprime la clase   PruebaEstacionamiento. Todo lo dem´aass es texto que deber´a de imprimir la clase  Estacionamiento. •  El pago no se hace en un solo movimiento. Para entender esto, imaginar el funcionamiento de las m´aquinas aquinas de cobro autom´aatico tico de los estacionamientos. Puede suceder que el cliente introduzca poco a poco el importe a pagar en vez de introducir solamente un billete o moneda de denominaci´oon n suficiente. •  Para recibir el dinero es necesario hacer uso de la clase  Scanner. •   Mientras que el cliente no haya ingresado todo el importe que debe pagar, se seguir´a imprimiendo lo que le falta por pagar y pedirle que introduzca m´as as dinero como se muestra en el ejemplo.

 

6.4. ETIQUETAS 

 

51

•   Para realizar el cobro se requiere usar los m´eetodos todos de la clase  Cajero. 5. Generar la documentaci´ oon n de la clase Estacionamiento utilizando el programa javadoc.

6.4. 6. 4. 6.4. 6. 4.1. 1.

Etiq tiquetas etas Objet Objetiv ivo o

El objetivo de esta pr´aactica ctica es que el alumno se familiarice con la creaci´oon n y uso de objetos como atributos para la creaci´on on de otras clases en el desarrollo de un programa pr´actico. actico.

6.4. 6. 4.2. 2.

Desc Descri ripci pci´ on on general ´

La pr´aactica ctica consiste en escribir un programa para generar etiquetas para pegar en paquetes que se env env´´ıan a pe perso rsonas nas a trav´eess de un sis sistema tema de paqu paqueter´ eter´ıa. ıa. Las etiquetas etiq uetas ti tienen enen remi remitente, tente, desti destinatario natario,, fecha de env env´´ıo, p peso, eso, dir direcci´ ecci´oon n del destinatario y direcci´on on del remitente. El formato que deben tener las etiquetas es el siguiente: De:   nombre del remitente  Para:   nombre del destinatario Destino:   direcci´  on del destinatario fech a de env en v´ıo Fecha:   fecha Peso:   peso del paquete 

6.4. 6. 4.3. 3.

Mate Materi rial al

En el enlace  Etiquetas  del cap cap´´ıtulo 6 de la p´agina agina web del libro se encuentran los siguientes archivos:

•   Direccion.java archivo en el que se va programar una clase para manejar direcciones. •   Direccion.html  descripci´oon n de los m´eetodos tod os de la clase  Direccion. •   Etiqueta.java   archivo en el cual se va a almacenar un programa para generar las etiquetas etique tas seg´ u un n un formato establecido. •   Fecha.class  clase para trabajar con fechas. •   Fecha.html  descripci´oon n de llos os m´eetodos tod os de llaa cl clase ase  Fecha. •   GeneraEtiquetas.java  archivo en el cual se va almacenar un programa para generar las etiquetas e informaci´on on adicional seg´u un n un formato establecido.

 

52

 

6.4. 6. 4.4. 4.

CAP ´ ITULO 6. OBJETOS OBJETOS COMO ATRIBU ATRIBUTOS  TOS 

Desa Desarro rroll llo o

1. Desca Descargar rgar los archi archivos vos descr descritos itos en la secci´on on anterior y guardarlos en un mismo directorio. 2. Consu Consultar ltar la documen documentaci´ taci´ oon n de las clases. 3. Progr Programar amar la cl clase ase  Direccion  en el archivo correspondiente. Esta clase debe tener:

•   Los atributos:   calle calleNum Numero ero, , col coloni onia, a, ciu ciudad dad, , pai pais s   y   CP. Cada dato ser´a almacenado en una cadena de caracteres. •   Un m´eetodo to do ccons onstruc tructor. tor. •  M´eetodos tod os pa para ra as asignar ignar valor a cada atributo atributo.. •   M´etodos etodos para recup recuperar erar el valo valorr de cada atributo. •  Un  U n m´eetodo tod o pa para ra ttener ener la d direcci´ irecci´oon n con cada dato en una l´ınea aparte. 4. Progr Programar amar la clase Etiqueta.java, en ella se deben implementar en ella los siguientes m´eeto t odo dos: s:

•  Un constructor que reciba todos los datos como par´ametros. ametros. •  Un constructor de copia. •  M´eetodos tod os pa para ra as asignar ignar valor a cada atributo atributo.. •   M´etodos etodos para recup recuperar erar el valo valorr de cada atributo.

•  Un  U n m´eetodo tod o pa para ra ggenerar enerar la etiquet etiqueta. a. 5. En la clase  GeneraEtiquetas  se deben debe n tener m´eetodos todo s para:

•  Generar una etiqueta, de acuerdo al formato especificado en la descripci´oon n general de la pr´aactica. ctica. •  Un m´eetodo todo para calcular el costo del paquete de acuerdo con la siguiente tarifa. Si el env env´ es$15.00 en M´eexico, xico, el costo es de $5.00 cada kilogramo, para Estados Unidos es´ıode por cada kilogramo y parapor cualquier otro pa´ pa´ıs es de $20.00.

•  Mostrar, en pantalla, la etiqueta, el costo del paquete y la direcci´oon n del remitente. Por ejemplo:

 

6.4. ETIQUETAS 

De: Amparo Lopez Gaona Para: Jesus Vega Colin Destin Des tino: o: Cal Calle le Cor Coral al # 425 Col. Col . Vista Vista Her Hermos mosa a Cancun Can cun, , CP. 678 6789 9 Mexico Fecha: 15 de de ma may yo de 20 2011 Peso: 16 kg

Informaci´ on on del rem remite itente nte: : Nomb Nombre re: : Ampa Amparo ro Lope Lopez z Gaon Gaona a Domicilio: Domic ilio: Tlalcoligi Tlalcoligia a 98 Col. Tlalcoligi Tlalcoligia a Mexico Mex ico D.F D.F., ., CP 140 14000 00 Mexico

Cost Costo o de envi envio o es de $80. $80.00 00

 

53

 

Cap´ıtulo 7 Arreglos En este cap cap´´ıtulo se presentan pr´acticas acticas para que el lector se ejercite en el desarrollo de programas que manejan varios datos del mismo tipo, sea este primitivo o clase, agrupados estos en un objeto denom denominado inado arreglo y tambi´ tambi´ een n se ejerci ejercite te en el uso de instru instruccion cciones es de iteraci´ oon. n.

Marco te´ orico orico Para facilitar la declaraci´oon n y manipulaci´oon n de grupos de datos del mismo tipo y relacionados entre ent re s´ı, se tiene el conce concepto pto de arreg arreglo. lo. Un arreg arreglo lo es un objeto que agrupa una cantid cantidad ad fija y predeterminada de elementos del mismo tipo. A diferencia de cualquier otro objeto, los arreglo arregloss n noo re respon sponden den a m´etodos. etodo s. La declaraci´oon n de un arreglo requiere crear una referencia a ´eell y luego llamar al constructor de la clase. Para crear una referencia a un arreglo se utiliza la siguiente sintaxis:

tipoDeDato   []  nombreDeArreglo ; despu´es es del tipo deben ir unos corchetes (par´eentesis ntesis cuadrados) para indicar que se trata de un arreglo. El tipo de dato puede ser un tipo de dato primitivo o una clase. Para llamar al constructor se utiliza el operador  new  seguido del tipo de elementos del arreglo, con la siguiente sintaxis:  new  tipoDeDato [tama˜n no]; es o];  es decir, entre corchetes se especifica la cantidad de elementos (o tama˜n no) o) que tendr´a el arreglo. Una vez definido y creado el arreglo se puede usar cada elemento del mismo como una variable independiente del tipo especificado en la declaraci´oon n del arreglo. Para trabajar con cualquier dato del arreglo es necesario usar una variable o constante de tipo entero que representa la posici p osici´´oon n del elemento dentro del arreglo; este valor se denomina ´ındice. Los valo valores res v´aalidos lidos para un ´ındice son enteros entre 0, incluy´eendolo, ndolo, y uno menos que la cantidad de elementos. Tratar de acceder a un elemento del arreglo fuera de su rango permitido ocasiona la suspensi´oon n de la ejecuci´on on del programa con el mensaje de error  ArrayOutOfBoundsException. Todo arreglo tiene en su estructura un atributo p´u ublico blico constante llamado  length, en ´el 55

 

56

 

CAP ´ ITULO ITU LO 7. 7. ARREGL ARREGLOS  OS 

se almacena el tama˜n noo del arreglo. Debido a que es p´u ublico blico se accede a ´el el directam directamente ente pa para ra consultarse. Los arreglos frecuentemente son utilizados con instrucciones para iterar. Una instrucci´oon n de iteraci´oon n permite la ejecuci´oon n repetida de instrucciones contenidas en un bloque. Java proporciona tres tipos de instrucciones iterativas.

•   La instrucci´on on  do-while  tiene la siguiente sintaxis: do  {

instrucciones }  while  (condici´oon) n)   ;

Con la instrucci´oon n   do   se ejecuta el bloque de instrucciones que contiene entre llaves mientras la condici´oon n evaluada al final del mismo sea verdadera. En cuanto el resultado de la evaluaci´oon n de la condici´oon n sea falsa se termina la instrucci´oon n  do. Es decir, de antemano no se puede conocer el n´ u umero mero de iteraciones que se realizar´aan n y las instrucciones del bloque se realizan al menos una vez.

•  La sintaxis de la instrucci´oon n  while  es la siguiente: while  (condici´ oon) n)  {

instrucciones

}

y su sem´aantica ntica es realizar el bloque de instrucciones mientras la evaluaci´oon n de la condici´on on sea verdadera. A diferencia de la instrucci´oon n   do, primero se eval´ u uaa la condici´oon n y luego se realiza el bloque de instrucciones, con lo cual cabe la posibilidad de que la primera evaluaci´oon n de la condici´oon n d´e el valo valorr   false  y por lo tanto las instrucciones del cuerpo no se ejecuten ni siquiera una vez.

•   La instrucci´on on   for   consta de un encabezado y un cuerpo. El cuerpo es un bloque de instrucciones. El encabezado tiene tres expresiones, la de inicializaci´on o n y la de actualizaci´oon n son expresiones aritm´eeticas ticas y la condici´ oon n es una expresi´oon n booleana. Se presenta a continuaci´on on la sintaxis de la instrucci´oon n   for: for  (inicializaci´ oon; n; condici´oon; n; actualizaci´oon) n)  {

instrucciones

}

 

7.1. CONJUNTOS 

 

57

La forma de trabajar de esta instrucci´oon n es ejecutar la expresi´oon n de inicializaci´on on una vez, luego evaluar la condici´oon n y si devuelve   true  se realiza el cuerpo, seguido de la actualizaci´ oon. n. Se repiten estos pasos desde la eval evaluaci´ uaci´oon n de la condici´ oon n hasta que la condici´oon n tenga valor  false. Al trabajar con instrucciones para iterar es importante que en alg´u un n momento la condici´oon n no se satisfaga para asegurar que la repetici´oon n termine.

7.1. 7. 1. 7.1. 7. 1.1. 1.

Con Conjun juntos Objet Objetiv ivo o

El objetivo de esta pr´actica actica es que el alumno refuerce sus conocimientos acerca de arreglos de datos de tipo primitivo. Ejercitando la inicializaci´on, on, llenado ll enado y con consulta sulta de arr arreglos, eglos, as as´´ı como el trabajo con instrucciones de iteraci´oon. n.

7.1. 7. 1.2. 2.

Desc Descri ripci pci´ on on general ´

Durante esta pr´aactica ctica se desarrollar´a una clase para trabajar con conjuntos. Las restricciones para los conjuntos que se programar´ aan n en esta pr´aactica ctica son que no deben tener elementos repetidos y que s´olo olo trabajan con n´umeros umeros enteros entre 1 y 100. Para representar el conjunto con las restricciones descritas se puede usar un arreglo de valores booleanos, de tal manera que si la entrada  i  tiene valor  true, significa que el n´ umero umero i conjunto. Si, al por el contrario, la entrada  i  tiene valor  false, quiere decir que el pertenece elemento   al i  no pertenece conjunto.

La practica practica consiste en implementar las operaciones basicas basicas sobre conjuntos, como son: uni´oon, n, intersecci´oon, n, diferencia, pertenencia, inserci´oon n y eliminaci´oon. n.

7.1. 7. 1.3. 3.

Mate Materi rial al

En el enlace  Conjuntos   del d el cap cap´´ıtulo 7 de la p´aagina gina web del libro se encuentran los siguientes archivos:

•   Conjunto.java  clase que ser´a implementada en esta pr´aactica. ctica. •   Conjunto.html  documentaci´oon n que especifica el comportamiento de cada m´eetodo todo incluido en la clase  Conjunto. •   PruebaConjunto.class   programa para probar que la clase   Conjunto  est´a bien programada de acuerdo con la documentaci´oon n proporcionada.

 

58

 

7.1. 7. 1.4. 4.

CAP ´ ITULO ITU LO 7. 7. ARREGL ARREGLOS  OS 

Desa Desarro rroll llo o

1. Desca Descargar rgar los arc archiv hivos os   Conjunto.java, Conjunto.java, Conjun Conjunto.htm to.html l   y   PruebaConjunto.class. Guardarlos en un mismo directorio. 2. Progr Programar amar los m´eetodos todos que se descr describen iben en el arc archivo hivo   Conjunto.java  para lograr la funcionalidad que se pide en la documentaci´oon n de cada uno de ellos ellos.. Los m´ eetodos todos solicitados son:

•   Constructores. •   Un m´eetodo tod o q que ue devuelve un conjunto contiene la uni´oon n de dos conjuntos. •   Un m´eetodo todo que devuelve un conjunto contiene la intersecci´ oon n de dos conjuntos. •   Un m´eetodo todo que devuelve un conjunto contiene la diferencia de dos conjuntos. •   Un m´eetodo todo para determinar si un elemento pertenece o no a un conjunto. •   Un m´eetodo todo para introducir un nuev nuevoo elemento al conjunto. •   Un m´eetodo todo para eliminar un elemento del conjunto. •   Un m´eetodo todo para determinar si dos conjuntos son o no iguales. •  Un  U n m´eetodo tod o q que ue d devuelve evuelve la represe representaci´ ntaci´oon n en cadena del conjunto. 3. Probar el comportamiento de la clase   Conjunto  utilizando el programa almacenado en el archivo   PruebaConjunto.java. Si la clase   Conjunto   est´a bien programada, el programa   PruebaConjunto.java   deber´a correr sin ning´ u un n error y el resultado de la ejecuci´oon n ser el siguiente:

Creo un Co Creo Conj njun unto to va vaci cio o A. A = {} Introdu Intro duzc zco o en A lo los s mu mult ltip iplo los s de 5. A = {5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, Creo un Co Creo Conj njun unto to B qu que e co cont ntie iene ne lo los s el elem emen ento tos s 20 y 80 80. . B = {20, 80} Introdu Intro duzc zco o en B lo los s mu mult ltip iplo los s de 10 10. . B = {10, 20, 30, 40, 50, 60, 70, 80, 90, 100} Creo un Conjunto C igual a la union de A y B. C = {5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85,

 

7.2. ESTAD ´ ISTICAS 

 

A y C ti tien enen en qu que e se ser r ig igua uale les. s. Son ig igua uale les? s? ---> > tr true ue Creo un Conjunto D igual a la interseccion de A y B. D = {10, 20, 30, 40, 50, 60, 70, 80, 90, 100} B y D ti tien enen en qu que e se ser r ig igua uale les. s. Son ig igua uale les? s? ---> > tr true ue Creo un Conjunto E igual a la diferencia entre A y B. E = {5, 15, 25, 35, 45, 55, 65, 75, 85, 95} Busco lo Busco los s el elem emen ento tos s ma mayo yore res s qu que e 50 qu que e pert perten enez ezca can n a E y los los elim elimin ino. o. E = {5, 15, 25, 35, 45} El 20 208 8 es esta ta en el co conj njun unto to No se pu pued ede e in intr trod oduc ucir ir el -1 -101 01 en el conj conjun unto to. . Fin de la Prueba

7.2.

Estad´ Estad´ısticas

59

7.2. 7. 2.1. 1.

Objet Objetiv ivo o

El objetivo de esta pr´aactica ctica es que el alumno ejercite el trabajo con arreglos de datos primitivos mediante la implementaci´oon n y manipulaci manipulaci´´oon n de los mismos en una aplicaci´oon n concreta.

7.2. 7. 2.2. 2.

Desc Descri ripci pci´ on on general ´

Durante esta pr´aactica ctica se va a desarrollar un programa que ayude al usuario a obtener valores estad estad´ ısticos. s. Este progr programa debe tener m´ eetodos para agregar ar un calcula va valor lor ar eel un conju conjunto de datos,´ıstico eliminar todos losama datos, determinar eltodos tama˜ no no delagreg conjunto, calcular l m´ ıınimo nimonto valor del conjunto, el m´aaximo, ximo, la media, la moda, la mediana y la desviaci´on on est´aandar. ndar. La moda es el valor que m´aass se repite en el conjunto. La mediana es el valor que queda en la posici´oon n de en medio del conjunto una vez ordenado.

 

60

 

7.2. 7. 2.3. 3.

CAP ´ ITULO ITU LO 7. 7. ARREGL ARREGLOS  OS 

Mate Materi rial al

En el enlace  E  Est stad´ ad´ıısti s ticas  cas  de  dell ccap ap´´ııtulo tu lo 7 d dee llaa p p´agina ´agina web del libro se encuentran los siguientes archivos:

•   Estadisticas.java  clase que ser´a implementada en esta pr´aactica. ctica. •   Estadisticas.html  archivo con la documentaci´on on que especifica el comportamiento de cada m´eetodo tod o in incluido cluido en llaa cclase lase  Estadisticas. •   PruebaEstadisticas.class programa para probar que la clase  Estadisticas est´a bien programada de acuerdo a la documentaci´oon n proporcionada.

7.2. 7. 2.4. 4.

Desa Desarro rroll llo o

1. Desca Descargar rgar los archiv archivos os necesario necesarioss para esta pr´aactica ctica en un mismo directorio. Estos son Estadisticas.java,  Estadisticas.html   y  PruebaEstadisticas.class. 2. Programar los m´eetodos todos que se describen en el archivo  Estadisticas.java  para lograr la funcionalidad que se pide en la documentaci´oon n de cada uno de ellos. Los m´eetodos todos solicitados son:

•   Constructores. •  Agregar un valor al conjunto de datos. •  Eliminar todos los datos del conjunto de datos. •  Determinar la cantidad de datos en el conjunto.

•   Calcular el m´ınimo valo valorr del conjunto de datos. •  Calcular el m´aaximo ximo valor del conjunto de datos. •  Calcular la media del conjunto de datos. •  Calcular la moda del conjunto de datos. •  Calcular la mediana del conjunto de datos. •  Calcular la desviaci´on on est´aandar ndar del conjunto de datos. 3. Proba Probarr el buen funci funcionami onamient entoo de la clase Estadisticas  utilizando el programa almacenado en el archivo  PruebaEstadisticas.class. Si la clase  Estadisticas  est´a bien programada, el resultado de la ejecuci´oon n deber´a de ser el siguiente: Se cr creo eo un ob obje jeto to.. ... . Se ag agre rego go el 7

 

7.2. ESTAD ´ ISTICAS 

Arreg Arr eglo lo ll llen eno, o, no se pu pudo do ag agre rega gar r el 25 La mu mues estr tra a ti tien ene e 6 el elem emen ento tos s

Las med medida idas s est estadi adisti sticas cas son Minim Min imo o 1 Maximo Maxi mo 13 Mediana Medi ana 11 Media 6.3333 6.3333333333 33333333333 33333 Desviacion Desviac ion 4.8853 4.8853522561 5225614967 4967

Voy a ha hace cer r li limp mpie ieza za Las med medida idas s est estadi adisti sticas cas son No ha hay y da dato tos s pa para ra ca calc lcul ular ar el ma maxi ximo mo No ha hay y da dato tos s pa para ra ca calc lcul ular ar el mi mini nimo mo

 

61

No ha hay y da dato tos s pa para ra ca calc lcul ular ar la me medi dian ana a El ar arre regl glo o es esta ta va vaci cio o No ha hay y da dato tos s pa para ra ca calc lcul ular ar la me medi dian ana a No ha hay y da dato tos s pa para ra ca calc lcul ular ar la de desv svia iaci cion on Se ag agre rego go el 25 La mu mues estr tra a ti tien ene e 1 el elem emen ento tos s

Puede no salir el mensaje que indica el arreglo est´a lleno.

 

62

 

7.3. 7. 3. 7.3. 7. 3.1. 1.

CAP ´ ITULO ITU LO 7. 7. ARREGL ARREGLOS  OS 

Con Contest testad ador ora a Objet Objetiv ivo o

El objetivo de esta pr´aactica ctica es que el alumno ejercite el trabajo con arreglos de objetos mediante la creaci´oon n y manipulaci´on on de los mismos en el desarrollo de un problema cuya soluci´oon n requiere un arreglo de objetos.

7.3. 7. 3.2. 2.

Desc Descri ripci pci´ on on general ´

La pr´aactica ctica consiste en escribir un programa que simule, de manera muy simple, una contestadora de tel´eefono fono con capacidad para 10 mensajes. mensa jes. Lo que debe hacer es guardar mensa mensajes jes en ella, “leerlos” (es decir, mostrarlos) en el orden en que se reciben y marcarlos como borrados.

7.3. 7. 3.3. 3.

Mate Materi rial al

En el enlace Contestadora   del d el ccap ap´´ıtulo ıtul o 7 de llaa p p´agina ´agina web del libro se encuentran los siguientes archivos:

•   Mensaje.class. Clase que almacena y manipula mensajes. •   Mensaje.html. Documentaci´oon n de la clase  Mensaje. •   Contestadora.java. Archivo en el que se programa la contestadora desarrollada en esta pr´aactica. ctica.

7.3. 7. 3.4. 4.

Desa Desarro rroll llo o

1. Desca Descargar rgar los archi archivos vos Mensaj  Mensaje.class e.class, , Mensaj Mensaje.html e.html  y  Contestadora.java. Guardarlos en un mismo directorio. 2. Progr Programar amar en la clas clasee  Contestadora  los sig siguient uientes es m´eetodos to dos::

•   Un constructor por omisi´on, on, que cree una contestadora con capacidad para 10 mensajes. •  Un constructor que cree una contestadora con capacidad para los mensajes indicados en el par´aametro. metro. • E Ell m´eeto t odo  agregarMensaje  que reciba un objeto  Mensaje  como par´aametro metro y lo agregue a la contestadora en la primera casilla  i  que cumpla una de las siguientes dos cosas:

 

7.3. CONTESTADORA

 

63

–  El mensaje almacenado en dicha casilla ya fue escuchado. Es decir, se cumple

que:  mensaje[i].fueEscuchado()  mensaje[i].fueEscuchado () == true

–  El mensaje almacenado en dicha casilla es nulo. Es decir, se cumple que:  mensaje[i] == null

En caso de que no haya ning´ u un n espacio disponible en la contestadora, el m´eetod t odoo de debe ber´ r´a de imprimir en pantalla: La Contestado Contestadora ra est´ a lle llena! na!

•  El  E l m´eeto t odo   escucharMensaje  para mostrar en pantalla el mensaje m´aass reciente que se tenga en la contestadora y no se haya escuchado. En caso de que no haya mensajes sin escuchar deber´a indicarlo. Para escuchar un mensaje, utilizar el m´eetodo: todo:   mensaje.escuchar()  de la clase Mensaje. Este m´ eetodo, todo , adem´as as de devolver una cadena que contiene el cuerpo del mensaje, autom´aticamente aticamente lo marca como “escuchado”, es decir, despu´es es de ejecuta eje cutarr el m´eetodo to do   escuchar(), se cumplir´a que   mensaje.fueEsc mensaje.fueEscuchado uchado() () == true

•   El El m´eeto t o do   escucharMensajes  para mostrar en pantalla los mensajes no nulos de la con contestad testadora ora y que no hayan hayan sido escuchado. escuchado. Igual que con el m´eetodo todo del punto anterior utilizar el m´eetodo todo  mensaje.escuchar()  de la clase  Mensaje  para escuchar cada mensaje. Al terminar de mostrar los mensajes deber´a indicar cantidad de mensajes le´ le´ıdos o, en ccaso aso de que la contestador contestadoraa es est´ t´e vac´ vac´ıa, indicar que no h hay ay ning ning´ u un ´ n mensaje.

Estee meto Est etodo do deb deber eraa producir resultados como los siguientes: (a) Par Paraa el caso en el que la cont contestad estadora ora no est´ a va vac´ c´ıa: Mensaje Mensaj e 1: Hol Hola, a, com como o has est estado ado? ? Mensaj Men saje e 2: Hab Hablab laba a para para saluda saludarte rte, , soy tu mam mami. i. Mensaj Men saje e 3: Bue Buenas nas tar tardes des, , me lla llamo mo Juan. Juan. 3 mensaje(s) mensaje(s) escuchados escuchados

(b) Par Paraa el caso en el que la cont contestad estadora ora est´ a va vac´ c´ıa: ıa : No hay men mensaj sajes es

•  Un  U n m´eeto t odo   main   con el funcionamiento de la contestadora. Al ejecutar la clase Contestadora  se deber´ a mostrar en pantalla algo similar a lo que se muestra a continuaci´oon: n: >java Contestado Contestadora ra Contestadora 1. Agrega Agregar r men mensaj saje e

 

64

 

CAP ´ ITULO ITU LO 7. 7. ARREGL ARREGLOS  OS 

2. Revisa Revisar r men mensaj saje e recien reciente te 3. Revisa Revisar r men mensaj sajes es 4. Salir Salir Selecc Sel eccion ione e la opc opcion ion --> 3 No hay Mensaj Mensajes es Contestadora 1. Agrega Agregar r men mensaj saje e 2. Revisa Revisar r men mensaj saje e recien reciente te 3. Revisa Revisar r men mensaj sajes es 4. Salir Salir Selecc Sel eccion ione e la opc opcion ion --> 1 Introd Int roduce uce Men Mensaj saje e --> Hol Hola, a, muy Bue Buenas nas Tar Tardes des. . Contestadora 1. Agrega Agregar r men mensaj saje e 2. Revisa Revisar r men mensaj saje e recien reciente te 3. Revisa Revisar r men mensaj sajes es 4. Salir Salir Selecc Sel eccion ione e la opc opcion ion --> 1 Introd Int roduce uce Men Mensaj saje e --> Que tal tal, , hablab hablaba a solame solamente nte par para a saluda saludarte rte. . Besos. Besos.

Contestadora 1. Agrega Agregar r men mensaj saje e 2. Revisa Revisar r men mensaj saje e recien reciente te 3. Revisa Revisar r men mensaj sajes es 4. Salir Salir Selecc Sel eccion ione e la opc opcion ion --> 1 Introd Int roduce uce Men Mensaj saje e --> Sal Saludo udos, s, te hab hablo lo lue luego. go. Contestadora 1. Agrega Agregar r men mensaj saje e 2. Revisa Revisar r men mensaj saje e recien reciente te 3. Revisa Revisar r men mensaj sajes es 4. Salir Salir Selecc Sel eccion ione e la opc opcion ion --> 1 Introd Int roduce uce Men Mensaj saje e --> Que tal tal. .

 

7.4. JUEGO DE CARTAS 

 

Contestadora 1. Agrega Agregar r men mensaj saje e 2. Revisa Revisar r men mensaj saje e recien reciente te 3. Revisa Revisar r men mensaj sajes es 4. Salir Salir Selecc Sel eccion ione e la opc opcion ion --> 3 Mensaje Mensaj e 1: Hol Hola, a, muy Bue Buenas nas Tardes Tardes. . Mensaj Men saje e 2: Que tal, tal, hab hablab laba a solame solamente nte par para a saluda saludarte rte. . Besos. Besos. Mensaj Men saje e 3: Sal Saludo udos, s, te hab hablo lo lue luego. go. Mens Mensaj aje e 4: Que Que tal. tal. 4 mensaje(s) mensaje(s) escuchados escuchados Contestadora 1. Agrega Agregar r men mensaj saje e 2. Revisa Revisar r men mensaj saje e recien reciente te 3. Revisa Revisar r men mensaj sajes es 4. Salir Salir Selecc Sel eccion ione e la opc opcion ion --> 3 No hay Mensaj Mensajes es Contestadora 1. Agrega Agregar r men mensaj saje e 2. Revisa Revisar r men mensaj saje e recien reciente te

65

3. Revisa Revisar r men mensaj sajes es 4. Salir Salir Selecc Sel eccion ione e la opc opcion ion --> 4

•  Documentar la clase  Contestadora.

7.4. 7. 4. 7.4. 7. 4.1. 1.

Jue Juego de car cartas tas Objet Objetiv ivo o

El objetivo de esta pr´actica actica es que el alumno se ejercite en el trabajo con arreglos mediante la implementaci´on on y manipulaci´oon n de los mismos, desarrollando un juego de cartas.

7.4. 7. 4.2. 2.

Desc Descri ripci pci´ on on general ´

La pr´aactica ctica consiste en escribir un programa que juegue cartas con el usuario de acuerdo con las siguientes reglas. Inicialmente la computadora muestra dos cartas con distinto palo

 

66

 

CAP ´ ITULO ITU LO 7. 7. ARREGL ARREGLOS  OS 

o n´u umero, mero, el usuario/jugador elige alguna de las dos. Luego se van tomando de la parte superior de la baraja una a una las cartas hasta encontrar una con palo, o valor, igual a cualquiera de las dos cartas mostradas. Si el palo, o el valor, coincide con el de la carta elegida elegi da p por or el jugad jugador, or, ´este este gana. Si el palo, o el valor, coincid coincidee con la no elegi elegida da pierde el  jugador y gana la computadora.

7.4. 7. 4.3. 3.

Mate Materi rial al

Juego de cartas   del cap En el enlace   Juego cap´´ıtulo 7 de la p´aagina gina web del libro se encuentran los siguientes archivos:

•   Carta.class  clase que almacena y manipula cartas de una baraja. •   Carta.html  documentaci´oon n de la clase  Carta.

7.4. 7. 4.4. 4.

Desa Desarro rroll llo o

1. Descargar los arc archivos hivos Carta.class y  Carta.html. Guardarlos en un mismo directorio. 2. Progr Programar amar una cla clase se  Baraja  que contenga 52 cartas, 4 de cada palo y numeradas del as, 2, 3, 4, ..., 10, J, Q, K. Los m´ eetodos todos que debe contener esta clase son:

•  Un constructor por omisi´oon. n.

•   M´etodos etodos para recuperar el valor de los atributos de la clase. •   Un m´eetodo todo para rev revolv olver er las carta cartas. s. Par Paraa tener n´ u umeros meros aleatorios entre 0 un n´u umero mero dado se puede utilizar el siguiente m´eetodo: todo: /* * Meto Metodo do que que gene genera ra nume numero ros s alea aleato tori rios os entr entre e 0 y max. max. */ privat pri vate e int ran random dom(in (int t max) max) { return ret urn (in (int) t) Mat Math.r h.roun ound(M d(Math ath.ra .rando ndom() m() * max + 0.5); 0.5); }

•  Un m´eetodo todo para tomar de la bara baraja ja la carta de arriba y mostrarla. •  Un m´eetodo tod o par paraa comp comparar arar dos ccartas. artas. 3. Gener Generar ar la documen documentaci´ taci´ oon n de la clase  Baraja  utilizando el programa  javadoc. 4. Progr Programar amar una cclase lase Juego  que contenga los m´eetodos todos necesarios para poder jugar con la computadora seg´ un un la descripci´oon n antes dada.

 

7.4. JUEGO DE CARTAS 

 

5. Gener Generar ar la documen documentaci´ taci´ oon n de la clase  Juego  usando el programa  javadoc. 6. Una posible sali salida da del progra programa ma  Juego  ser  se r´ıa la sig siguie uiente: nte: Hola, co Hola, como mo te ll llam amas as? ? Andrea Andre And rea a la las s do dos s ca cart rtas as so son: n: 1. as de co cora razo zone nes s 2. 8 de tr treb ebol oles es cual escoges (1 o 2)? 4 Esa no es op opci cion on va vali lida da cual escoges (1 o 2)? 1 Salen: 4 de pi pica cas s J de pi pica cas s 2 de tr treb ebol oles es as de di diam aman ante tes s

67

Ganaste!! Quier Qui eres es vo volv lver er a ju juga gar? r? no Hasta pronto pronto. .

 

Cap´ıtulo 8 Paso Pas o de par´ pa r´ am etro amet ross En este cap cap´´ıtulo se tienen pr´aacticas cticas para que el lector refuerce sus conocimientos acerca del paso de par´aametros metros por valor, la diferencia entre par´ametro ametro formal y par´aametro metro real o actual, as as´´ı como el paso de par´ametros amet ros al m´eetodo to do  main.

Marco te´ orico orico Con frecu frecuencia encia se tiene que los m´ eetodos todos requi requieren eren de algun algunos os datos para reali realizar zar su tarea tarea,,

estos datos se conocen como parametros. parametros. Los par parametros ametros formale formaless se esp especifican, ecifican, despu despues es de dell nombre del m´eetodo, todo, entre par´entesis, entesis, como una lista de parejas separadas por comas. Cada pareja incluye el tipo y el nombre de cada par´aametro. metro. Los p par´ ar´eentesis ntesis son p parte arte d dee la sintaxis, as as´´ı que deben estar presentes aunque el m´eetodo todo no requier requieraa par´ametros. ametros. Existen diferencias entre la declaraci´oon n de una variable y la de un par´aametro. metro. En los par´ametros ametros no se especifica la visibilidad, cada par´aametro metro se precede de su tipo, la definici´oon n no termina con punto y coma y no se puede definir valor inicial a los par´ametros. El dato con el que se llama a ejecut ejecutar ar el m´ eetodo todo se conoce como   par´  ametro real  real   o bien como par´  ametro actual . Al llamar a ejecuci´ oon n un m´eetodo, to do, el valor del par´ametro amet ro real se asi asigna gna como valor inicial del par´aametro metro formal y termina la relaci´on on entre ambos par´ametros; ametros; es decir,, si en el cuerpo del m´ decir eetodo todo se modifica el valor del par´ ametro ametro formal no cambia el valor del par´aametro metro real; esto se conoce como paso de par´aametros metros por valor. Debido a este funcionamiento, el par´ametro ametro real puede ser una variable, una literal o una expresi´oon; n; en este u ultimo ´ ltimo caso se eval´ u uaa la expresi´oon n y su valor se asigna al par´aametro metro formal. El m´eeto t odo  main tiene como par´ametro ametro un arreglo de cadenas cuyos valores se proporcionan ´ al llamar a ejecutar el programa.  Estos son cadenas separadas por espacios en blanco. Si se desea que alguna cadena incluya un espacio deb debee encerrarse ´eesta sta entre comillas. Una vez en ejecuci´oon n el m´eeto t odo  main, su par´ametro ametro puede usarse como cualquier otro arreglo de cadenas. 69

 

70

 

8.1. 8.1. 8. 1.1. 1.

´ CAP ´ ITULO ITU LO 8. PASO DE PAR  PAR AMETROS 

Par´ ametros ametros con la clase clase  Punto Objet Objetiv ivo o

El objetivo de esta pr´aactica ctica es que el alumno refuerce sus conocimientos acerca del paso de par´aametros metros por valor y del paso de par´aametros met ros al m´eetodo to do  main.

8.1. 8. 1.2. 2.

Desc Descri ripci pci´ on on general ´

La pr´actica actica consiste en trabajar con un archivo e ir observando los resultados del mismo siguiendo las indicaciones dadas, esto con el prop´osito osito de ver los resultados de acuerdo al tipo de par´aametro metro que se le pasa a un m´eetodo. todo.

8.1. 8. 1.3. 3.

Mate Materi rial al

En el enlace   Par´  ametros con la clase Punto   del cap cap´´ıtulo 8 de la p´aagina gina web del libro se encuentran los siguientes archivos:

•   Parametros.java. archiv archivoo con los m´eetodos todos para practicar el paso de par´ametros ametros por valor con los distintos tipos de datos que proporciona Java. •   Punto.class  clase para trabajar con puntos en el plano cartesiano.

•   Punto.html  documentaci´oon n de la clase  Punto. •   PruebaParametrosMain.java   archivo para escribir un programa que para trabajar tome los datos proporcionados como par´aametros met ros del m´eetodo to do  main

8.1. 8. 1.4. 4.

Desa Desarro rroll llo o

1. Desca Descargar rgar los archiv archivos os y guard guardarlos arlos en un mismo direc directorio torio.. 2. En el archivo   Parametros.java   incluir el c´oodigo digo neces necesario ario para llama llamarr al m´eetodo todo recibePrimitivos  mostra  mostrarr el result resultado ado de tal llama llamada. da. ¿Po ¿Porr qu´ e se obtiene obtiene ese resultado? 3. ¿Cu´aall es el valor de las variables   p   y   q  despu´   despu´eess de ejecuta ejecutarr el siguiente c´oodigo? digo? int int int r =

p = 1; q = 2; r = 5; recibe recibePri Primit mitivo ivos(p s(p, , q);

 

´ 8.2. PAR AMETROS CON LA CLASE   TRIANGULO 

 

71

4. Crear un objeto de la clase   Punto   y llamar al m´eetodo todo   recibeUnObjeto  de la clase Parametros  con ese objeto. Imprimir el objeto y esp especificar ecificar qu´e pas´o y po porr qu´e. e. 5. ¿Cu´aall es el resultado de ejecutar el siguiente c´oodigo? di go? ¿Po ¿Porr qu´ee?? Stri String ng mens mensaj aje e = "Est "Esta a es una una cade cadena na de prue prueba ba." ."; ; recibeUnaCadena(mensaje); System.out Syste m.out.prin .println(" tln("mensa mensaje je = " + mensa mensaje); je);

6. Llenar un arreglo de 4 caracteres con las letras   ’h’,’o’,’l’,’a’   llamar llam ar al m´eetodo to do recibeUnArreglo, mostrar el contenido del arreglo al regresar del m´ eetodo. todo. ¿Cu´aall es el result res ultado? ado? ¿Por qu´e? e? 7. Leer la docum document entaci´ aci´ oon n de la clase  Punto. 8. Escribir el c´oodigo digo faltante en el archivo   PruebaParametrosMain   para que reciba dos puntos con los cuales trabajar, obtenga la distancia entre ellos y la imprima. Por ejemplo: >java Prueba >java PruebaPar Parame ametro trosMa sMain in 0 0 5 5 La dist distan anci cia a entr entre e el punt punto o (0,0 (0,0) ) y el (5,5 (5,5) ) es 5 >java >ja va Prueba PruebaPar Parame ametro trosMa sMain in 0 0 5

Error! Err or!! ! Faltan Faltan par´ par´ a ametros metros ...

Es necesar necesario io utiliza utilizarr el m´eetodo tod o  parseDouble  de la clase  Double  que recibe una cadena y devuelve un n´u umero mero de tipo   double   para trabajar los par´aametros metros como n´u umeros meros reales.

8.2.

Par´ ametros ametros con la clase clase  Triangulo

8.2. 8. 2.1. 1.

Objet Objetiv ivo o

El objetivo de esta pr´aactica ctica es que el alumno refuerce sus conocimientos acerca del paso de par´aametros metros por valor y del paso de par´aametros met ros al m´eetodo to do  main.

8.2. 8. 2.2. 2.

Desc Descri ripci pci´ on on general ´

La pr´aactica ctica consi consiste ste en trabajar con un arc archiv hivoo y explic explicar ar a qu´ e se debe el result resultado ado producido, adem´aass de escribir un programa cuyo m´eetodo todo  main  reciba una serie de par´aametros metros para poder trabajar.

 

72

 

8.2. 8. 2.3. 3.

´ CAP ´ ITULO ITU LO 8. PASO DE PAR  PAR AMETROS 

Mate Materi rial al

En el enlace  Par´  ametros con la clase Tri´  angulo  del cap cap´´ıtulo 8 de la p´aagina gina web del libro se encuentran los siguientes archivos:

•   Cambios.java  programa para apreciar la diferencia entre pasar un entero y un arreglo de enteros. •   Triangulo.class  clase para trabajar con tri´angulos angulos a partir de tres puntos no alineados. •   Triangulo.html  documentaci´oon n de la clase  Triangulo •   Punto.class  clase para trabajar con puntos en el plano cartesiano. •   Punto.html  documentaci´oon n de la clase  Punto.

8.2. 8. 2.4. 4.

Desa Desarro rroll llo o

1. Desca Descargar rgar los archiv archivos os y guard guardarlos arlos en un mismo direc directorio torio.. 2. Comp Compilar ilar el prog programa rama Cambios. (a) ¿Cu´aall es el resultado de la ejecuci´on? on?

(b) ¿A q qu ue se debe que se haya obtenido este resultado? 3. Inc Inclui luir, r, en la cla clase se  Cambios, el siguiente m´eetodo todo para intercam intercambiar biar dos enteros. public void public void interc intercamb ambiar iar1(i 1(int nt x, int y) { int temp = x; x = y; y = temp; }

4. Probar el m´eetodo todo  intercambiar1, ¿cumple su prop´osito? osito? 5. Inc Inclui luir, r, en la cla clase se  Cambios, el siguiente m´eetodo todo para intercam intercambiar biar dos enteros public pub lic void void interc intercamb ambiar iar2(i 2(int[ nt[] ] a, int int[] [] b) { int int temp temp = a[0] a[0]; ; a[0] a[0] = b[0] b[0]; ; b[0] b[0] = temp temp; ; }

 

´ 8.3. NOMBRE Y N UMEROS 

 

73

6. Probar el m´eetodo todo  intercambiar2, ¿cumple su prop´osito? osito? 7. Escri Escribir bir un program programaa para trabajar con la clase  Triangulo  desarrollada en la pr´aactica ctica 6.1. e incluida en el material de esta pr´aactica. ctica. Este programa debe recibir 7 par´aametros. metros. El primero es un gui´oon n y una letra, y los otros son las coorden coordenadas adas de los v´eertices rtices de un tri´aangulo. ngulo. El programa debe trabajar como sigue:

•  Si recibe  -a x1 y1 x2 y2 x3 y3 debe calcular el ´aarea rea del tri´aangulo ngu lo cuyos v´eertices rti ces (x1,y1 ,y1), ), (x2 (x2, , y2)  y  (x3,y3) son el punto   (x1 •   Si recibe   -p x1 y1 x2 y2 x3 y3  debe calcular el per per´´ımetro del tri´angulo angulo cuyos (x1,y1 ,y1), ), (x2, y2)  y  (x3,y3) v´eertices rt ices son el punto   (x1 •  Si recibe   -t x1 y1 x2 y2 x3 y3  debe especificar cu´aall es el tipo del tri´angulo angulo cuyos v´eertices rti ces son el punto   (x1 (x1,y1 ,y1), ), (x2 (x2, , y2) y  (x3,y3), ´eeste ste puede ser escalen escaleno, o, is´oosceles sceles o equil´aatero. tero. •  Si recibe   -T x1 y1 x2 y2 x3 y3  debe calcular el ´aarea, rea, el p per er´´ımetro y eell ti tipo po del tri´aangulo ngulo cuyos v´eertices rtices son los puntos   (x1 (x1,y1 ,y1), ), (x2 (x2, , y2)  y  (x3,y3) Es necesar necesario io utiliza utilizarr el m´eetodo tod o  parseDouble  de la clase  Double  que recibe una cadena y devuelve un n´u umero mero de tipo  double  para trabajar los par´ametros ametros como n´u umeros. meros. Ejemplos de la ejecuci´oon n de este programa son los siguientes: >java Trianguloss -a 0 0 10 0 5 10

El area area del triangul triangulo o

ab: (0,0)-(1 (0,0)-(10,0 0,0); ); bc: (10,0 (10,0)-( )-(5,1 5,10); 0); ac: (5,10) (5,10)-(0 -(0,0) ,0)

es 50.0000000 50.000000000000 0000001 01 >java Trianguloss -p 0 0 10 0 5 10 El perimetro perimetro del trian triangulo gulo ab: (0,0) (0,0)-(10, -(10,0); 0); bc: (10,0 (10,0)-(5, )-(5,10); 10); ac:(5,10)ac:(5,10)-(0,0) (0,0) es 32.3606797 32.360679774997 749979 9 >jav >java a Tri Trian angu gul loss oss -x 0 0 10 0 5 10 Error!! Error !! Opcion Opcion incorrecta incorrecta >jav >java a Tri Triangu angul loss oss -x 0 0 10 0 5 Error!! Error !! Cantidad Cantidad de param parametros etros incorrecta incorrecta

8.3. 8.3. 8. 3.1. 1.

Nombre y n´ umeros umeros Objet Objetiv ivos os

El objetivo de esta pr´aactica ctica es que el alumno refuerce sus conocimientos acerca del paso de par´aametros met ros al m´eetodo to do  main  para realizar ejecuciones parametrizadas de los programas.

 

74

 

8.3. 8. 3.2. 2.

´ CAP ´ ITULO ITU LO 8. PASO DE PAR  PAR AMETROS 

Desc Descri ripci pci´ on on genera ´ generall de la pr´ a actica ctica

La pr´aactica ctica consist consistee en een n escr escribir ibir pr programas ogramas cuyo m´eetodo todo  main  reciba una serie de par´aamemetros para poder trabajar dando difrentes resultados de acuerdo con dichos par´aametros. metros.

8.3. 8. 3.3. 3.

Desa Desarro rroll llo o

1. Escri Escribir bir un program programaa   Nombre  que reciba  reciba   n  parametros que se supone son el nombre completo de una persona y los escriba empezando por los apellidos. Ejemplos: >java No >java Nomb mbre re Ju Juan an Pa Paco co Pe Pedr dro o "d "de e la Mar" Mar" Pe Pere rez z El no nomb mbre re co comp mple leto to es es: : de la Ma Mar r Pe Pere rez z Juan Juan Paco Paco Pedr Pedro. o. El no nomb mbre re es es: : Ju Juan an Pa Paco co Pe Pedr dro. o. >java Nom >java Nombre bre Debes Deb es in ingr gres esar ar al me meno nos s tr tres es ca cade dena nas s para para el nomb nombre re. . >java No >java Nomb mbre re An Ana a Ma Mari ria a Debes Deb es in ingr gres esar ar al me meno nos s tr tres es ca cade dena nas s para para el nomb nombre re. .

>java >jav a Nom Nombre bre Ana Pat Patric ricia ia Mar Maria ia El no nomb mbre re co comp mple leto to es es: : Pa Patr tric icia ia Ma Mari ria a Ana Ana El no nomb mbre re es es: : An Ana a

2. Escri Escribir bir un programa   Numeros  que lea 4 cadenas, cadenas, la prime primera ra indica indica qu´ e hacer y las otras tres deben tratarse como n´u umeros. meros. Los posibles valores para la primera cadena son un gui´oon n seguido de alguna de las siguientes letras   M, m, p, o, t  o seguido seguido de com combinac binaciones iones de ellas. El signifi significado cado es:

•   M  determina el valor mayor. •   m  determina el valor menor. •   p  calcula el promedio de los tres valores. •   o  muestra los tres valores en orden descreciente. •   t  realiza las cuatro funciones anteriores. Ejemplos de ejecuci´on on del programa son los siguientes:

 

8.4. JUEGOS 

> ja java va Nu Nume mero ros s -M 45 78 12 El mayor de 45, 78 y 90 es 78 > ja java va Nu Nume mero ros s -p 45 34 345 5 90 El promedio de 45, 345 y 90 es 160 > ja java va Nu Nume mero ros s -t 45 34 345 5 90 El mayor de 45, 345 y 90 es 345 El menor de 45, 345 y 90 es 45 El promedio de 45, 345 y 90 es 160 Los n´ u umer meros os or orde dena nado dos s so son n 34 345, 5, 90 90, , 45 > ja java va Nu Nume mero ros s -M -Mn n 45 34 345 5 90 El mayor de 45, 345 y 90 es 345 El menor de 45, 345 y 90 es 45 > ja java va Nu Nume mero ros s -x 45 34 345 5 90 Opcion Opci on inc incorr orrect ecta a !!! > ja java va Nu Nume mero ros s -t 45 Cantida Cant idad d inc incorr orrect ecta a de dat datos! os!!! !!

 

75

8.4. 8.4. 8. 4.1. 1.

Juegos Objet Objetiv ivos os

El objetivo de esta pr´aactica ctica es que el alumno refuerce sus conocimientos acerca del paso de par´aametros met ros al m´eetodo to do  main  para realizar ejecuciones parametrizadas de los programas.

8.4. 8. 4.2. 2.

Desc Descri ripci pci´ on on genera ´ generall de la pr´ a actica ctica

La pr´aactica ctica consis consiste te en en esc escribir ribir u un n progr programa ama cuyo m´eetodo tod o main reciba una serie de par´aamemetros para poder trabajar dando diferentes resultados de acuerdo con dichos par´aametros. metros.

8.4. 8. 4.3. 3.

Mate Materi rial al

En el enlace   Vegas   del cap cap´´ıtulo 8 de la p´aagina gina web del libro se encuentran los siguientes archivos:

•   Juegos.class  clase que contiene una serie de juegos de azar.

 

76

 

´ CAP ´ ITULO ITU LO 8. PASO DE PAR  PAR AMETROS 

•   Juegos.html  documentaci´oon n de la clase  Juegos. •   Dado.class  clase para generar dados con 6 caras. •   Dado.html  documentaci´oon n de la clase  Dado. •   Moneda.class  clase para generar monedas. •   Moneda.html  documentaci´oon n de la clase  Moneda.

8.4. 8. 4.4. 4.

Desa Desarro rroll llo o

1. Desca Descargar rgar los archiv archivos os  Juegos.class   y  Juegos.html. Gu´aardarlos rdarlos en un mismo directorio. 2. Escri Escribir bir un progr programa ama Vegas que reciba como par´aametros metros una cadena como la que sigue: Par´ametros

Significado -v   n´  umero   jugar vol volados, ados, ent entre re 2 o 3 jugad jugadores ores -d   jugar a los dados -n   n´  umero1 n´  umero2 opciones    jugar a ad adivina ivinarr un n´u umero mero en el rango dado con la cantidad de opciones dada

Todas las opciones terminan, opcionalmente, con un p´aarametro rametro   a  para indicar que se desea que haya apuestas en el juego. Si no se pone tal letra se indica que no hay apuesta de por medio. Ejemplos: > java Vegas -d a Bien Bienve veni nido do, , vamo vamos s a juga jugar r a los los dado dados s Dame Dam e tu nombre nombre Maria Cuanto Cuant o apuestas? apuestas? 100 Mari Maria a tira tira los los dado dados. s. (Da (Da un ente enter) r) El prim primer er dado dado tuvo tuvo 4 y el segu segund ndo o dado dado tuvo tuvo 1 Mari Maria a la suma suma es 5 vuel vuelve ve a tira tirar r los los dado dados. s. (Da (Da un ente enter) r) Mari Maria a La nuev nueva a suma suma es 7 Ganast Gan aste!! e!!! ! ;). Aho Ahora ra tie tienes nes 200 > java Vegas -v 3 Bienve Bie nvenid nido, o, vamos vamos a jug jugar ar a los volados volados Dame Dam e el nombre nombre del primer primer jug jugado ador: r: Hug Hugo o

 

8.4. JUEGOS 

 

Dame el nombre Dame nombre del seg segund undo o jugado jugador: r: Pac Paco o Dame Dam e el nombre nombre del tercer tercer jug jugado ador: r: Lui Luis s Hugo Hugo lanz lanza a su mone moneda da. . Cayo Cayo sol. sol. Paco Pac o lanza lanza su mon moneda eda. . Cayo Cayo aguila aguila. . Luis Luis lanz lanza a su mone moneda da. . Cayo Cayo sol. sol. Paco Pac o Ganast Ganaste!! e!!! ! ;)

> java -n 10 100 3 -a Bien Bienve veni nido do, , vamo vamos s a juga jugar r a que que adiv adivin inas as un nume numero ro entr entre e 10 y 100 100 en un  maximo de tres intentos. Cuanto Cuant o apuestas? apuestas? 100 Que No, No, No, No, No, No,

numero numero estoy estoy pen pensan sando? do? 18 es un nume numero ro mayo mayor. r. Cual Cual es? es? 80 es un nume numero ro meno menor. r. Cual Cual es? es? 40 es el 50. Pe Perd rdis iste te 10 100. 0. ;(

77

 

Cap´ıtulo 9 Herencia En este cap cap´´ıtulo se tienen pr´aacticas cticas que sirven para que el lector se ejercite en la creaci´oon n de jerarq jerarqu u´ıas de heren herencia cia de clases clases,, ya sea de la ra ra´´ız a las hojas o de las hojas a la ra ra´´ız. Adem´aass de que refuerce sus conocimientos acerca del concepto de polimorfismo y de datos protegidos.

Marco te´ orico orico

La herencia permite definir una nueva clase   C    a partir de una clase existente   C , muy parecida a  a   C  , evitando la duplicidad de c´oodigo. digo. En la clase clase C   C   se definen s´oolo lo los atributos n

n

n

y los m´ eetodos todos que difier difieren en de los existe existente ntess en la clase clase   C   C   y autom´aaticamente ticamente se incluyen los m´eetodos todos y atributos de  de   C . Como result resultado, ado, los atrib atributos utos y m´eetodos todos de de   C    son todos ultimos ´ ltimos pueden ser nuevos m´eetodos todos o bien la los de  de   C  C    m´aass los especificados en   C  . Estos u redefinici´ oon n o cancelaci´oon n de m´eetodos todo s ya existentes en en C   C .. La clase  clase   C   se denomina subclase o clase derivada y la clase  clase   C   se se conoce como superclase, clase base o clase padre. Para especificar que se va usar el mecanismo de herencia se utiliza la palabra reservada extends  seguida del nombre de la clase que se heredar´ a. a. Los objetos de una subclase son como los objetos de cualquier otra clase, por lo tanto los elementos p´ u ublicos blicos de su superclase y de cualquier otra clase pueden ser usados en ella sin ning´u un n problema, sin embargo, los atributos y m´eetodos todos priva privados dos no pueden ser usados fuera de la clase en que se definieron, as as´´ı sea una subclase. Si se quiere tener atributos y m´eetodos todos que sean privados para todas las clases, excepto para las clases derivadas, es necesario que n

n

n

en su declaraci´on on se precedan de la palabra reservada  protected. Como se sabe, al crear un objeto se llama a un constructor de su clase para asegurar que se cree con un estado inicial v´aalido. lido. Cuando ssee crea un objeto de una clase deriv derivada ada impl impl´´ıcitamente se crea un objeto de la clase base. Al programar una subclase es necesario programar alg´ u un n m´eetodo todo constructor, el cual, en general, incluye la llamada a alg´u un n constructor de la superclase; esto se hace mediante la instrucci´oon n  super  con los argumentos adecuados. 79

 

80

 

CAP ´ITU ITULO LO 9. 9. HERENC HERENCIA IA

La llamada al constructor de la superclase debe ser la primera instrucci´oon n del constructor de la subclase, con lo cual se empieza por asignar un estado inicial a la parte heredada y luego se inicializa la parte propia de la clase.

9.1.

Boletos

9.1. 9. 1.1. 1.

Objet Objetiv ivo o

Esta pr´actica actica tiene como objetivo que el alumno ponga en pr´aactica ctica sus conocimientos acerca de herencia herencia de clase clasess de Jav Java, a, desarrolla desarrollando ndo una jerarqu jerarqu´´ıa de clases para una aplic aplicaci´ aci´ oon n particular.

9.1. 9. 1.2. 2.

Mate Materi rial al

En el enlace  Boletos   del d el cap´ııtulo tul o 9 de la p´aagina gina web del libro se encuentra el siguiente archivo:

•   PruebaBoletos.class  programa para probar la jerarqu jerarqu´´ıa de boletos que se desarrolla en esta pr´aactica. ctica.

9.1. 9. 1.3. 3.

Desc Descri ripci pcion on genera generall de la pr practica actica

La pr´aactica ctica consiste en definir un conjunto de clases que permitan representar y expedir los boletos manejados en un teatro. Los boletos pueden clasificarse de acuerdo con la siguiente  jerarqu´ıa:  jerarqu´ •   Boleto. Son boletos que no requieren ninguna condici´oon n para ser comprados. Su costo es de $50.00 y clave:   BR. –   BoletoPrepago. Se trata de boletos comprados antes del d´ıa del even evento.El to.El costo

var var´ıa de acuer acuerdo do con la fec fecha ha en la que fue comprado. comprado. Si se compr compr´o´ con 10 d´ıas o m´aass de anticipaci´on, on, su costo es de $30.00. El costo es de $40 si la compra se realiz´o con menos de 10 d´ıas de anticipaci´ oon. n. La clave de estos boletos es   BP. –   BoletoEstudiante. Para obtener el descuento es necesario presentar credencial de alguna de las siguientes universidades: UNAM, UAM o Polit Polit´´eecnico. cnico. El costo es de $20.00 y la clave   BE. –   BoletoTerceraEdad. Para adquirir estos boletos es necesario presentar credencial del INAPAM. El costo de estos boletos es de $15.00 y la clave   BTE. Durante la pr´aactica ctica se deber´aan n implem implementar entar las cl clases ases qu quee forman la jerar jerarqu qu´´ıa descr descrita. ita. Es Es-  ´ tas clases son   Boleto, Boleto, Boleto BoletoPrepag Prepago, o, Boleto BoletoEstudi Estudiante ante   y  BoletoTerceraEdad. Estas  Boleto.jav to.java, a, Boleto BoletoPrepag Prepago.java o.java, , Boleto BoletoEstudia Estudiante.ja nte.java va deber´aan n estar en los archivos Bole y  BoletoTerceraEdad.java, respectivamente.

 

9.1. BOLETOS 

9.1. 9. 1.4. 4.

 

81

Desa Desarro rroll llo o

1. Programar la clase   Boleto, ra ra´´ız de la jerarqu jerarqu´´ıa. Esta clase debe tener los siguientes tres m´eetodos todo s que ser´aan n sobreescritos por sus clases hijas: (a)   obtenerId. Este m´eetodo todo devuelve una cadena con el identificador ´u unico nico asociado a cada boleto. Los identificadores tienen el siguiente formato: [Clave [Cl ave del tip tipo o de Bol Boleto eto]-[ ]-[N´ N´ u umer mero o u ´ unico] nico]

Los siguientes son ejemplos de identificadores para cada tipo de boleto: Boleto: Boleto : BRBR-15, 15, BRBR-300 300 BoletoPrepago Boleto Prepago: : BP-1, BP-100 BP-100, , BoletoEstudia Boleto Estudiante: nte: BE-3, BE-5 BoletoTercera Boleto TerceraEdad Edad BTE-65 BTE-65, , BTE-54

Utilizar una variable entera est´aatica, tica, en cada clase, para ob obtener tener la part partee num´eerica rica u unica. ´nica. (b)   toString. Este E ste m´eetodo tod o de devuelve vuelve la rrepresentaci epresentaci´´oon n en cadena del  Boleto. Cada clase deber´a devolver representaciones diferentes. Por ejemplo, los boletos

normales s´oolo lo incluyen el identificador del boleto, los boletos de prepago incluyen entre corchetes el n´ u umero mero de d´ıas de anticipaci´ oon n con los que fue comprado el boleto. Los boletos de estudiante incluyen entre corchetes el nombre de la universidad de la credencial con la que fue comprado el boleto y los boletos de tercera edad incluyen entre corchetes la clave de la credencial del INAPAM con la que compraron el boleto. A continuaci´oon n se presentan ejemplos de que devuelve este m´eetodo todo para cada una de las clases: Boleto: BR-45 Boleto: Boleto Bol etoPre Prepago pago: : BPBP-76 76 [4 dia dia(s) (s)] ] BoletoEstudia Boleto Estudiante: nte: BE-32 [UNAM] BoletoTercera Boleto TerceraEdad Edad BTE-10 BTE-103 3 [T57YH [T57YH64R] 64R]

(c)   obtenerPrecio. Este m´eetodo tod o devuelve un n´u umero mero real (double) con el precio al que fue vendido el boleto. 2. Programar la clase   BoletoPrepago   la cual debe tener un atributo que almacene el n´u umero mero de d´ıas de anticipaci´ anticipaci ´oon n con los que se compr´o el boleto. Este n´ umero umero debe ser un entero mayor que 1. 3. Programar la clase   BoletoEstudiante  que almacena el nombre de la universidad de la credencial que fue presentada para hacer la compra.

 

82

 

CAP ´ITU ITULO LO 9. 9. HERENC HERENCIA IA

4. Programar la clase   BoletoTerceraEdad   que almacena la clave de la credencial del INAPAM presentada para hacer la compra. La clave puede ser cualquier cadena de 8 caracte car acteres res alf alfanum´ anum´eericos. ric os. 5. Gener Generar ar la document documentaci´ aci´ oon n en HTML de cada clase, ejecutando el programa  javadoc. Cadaa cla Cad clase se debe est estar ar bien bien docu documen mentad tadaa hac hacien iendo do uso de las eti etique quetas tas   @author, @version, @versio n, @param  y  @return. 6. Ejecu Ejecutar tar el program programaa   PruebaBoletos. Si la jerarqu jerarqu´´ıa se program´ o bien, la salida del programa ser´a como lo siguiente: >javac Prueba PruebaBoleto Boletos s 1. BR BR-5 -500 00 $5 $50. 0.0 0 2. BP BP-5 -501 01 [1 [10 0 di dia( a(s) s)] ] $3 $30. 0.0 0 3. BE BE-5 -502 02 [U [UNA NAM] M] $2 $20. 0.0 0 4. BR BR-5 -503 03 $5 $50. 0.0 0 5. BTE BTE-50 -504 4 [IN [INAPA APAM23 M23] ] $15 $15.0 .0 6. BP BP-5 -505 05 [0 di dia( a(s) s)] ] $5 $50. 0.0 0 7. BTE BTE-50 -506 6 [JJ [JJKDF KDFSA3 SA34] 4] $15 $15.0 .0 8. BTE BTE-50 -507 7 [AL [ALGAO GAO234 234] ] $15 $15.0 .0

9. BE BE-5 -508 08 [U [UNA NAM] M] $2 $20. 0.0 0 10. BP BP-5 -509 09 [8 di dia( a(s) s)] ] $4 $40. 0.0 0 11. BEBE-510 510 [Po [Poli] li] $20 $20.0 .0 12. BRBR-511 511 $50 $50.0 .0

7. Progr Programar amar una clase  CuentaBoletos  que contenga un m´eetodo todo   main  en el que se inicialice un arreglo de 20 boletos del tipo que se desee e imprima en pantalla la cantidad de boletos que hay de cada clase en el arreglo. Con los datos del programa  PruebaBoletos  deber´a dar el siguiente resultado: boletos boleto s boleto bol etos s boletos bolet os boleto bol etos s

regula regular: r: 3 preven preventa: ta: 3 estudiante estudiante: : 3 tercer tercera a edad: edad: 3

Observaciones: 1. En cada clase de la jerarqu jerarqu´´ııaa incluir un constructor, el cual deb debee recibir los par´ametros ametros necesarios para dar valor inicial a los atributos de sus objetos. Ning´un un constructor deber´a recibir como par´aametro metro el identificado identificadorr d del el bole boleto, to, ´eeste ste debe deber´ r´a ser s er generad generadoo p por or el programa.

 

9.2. LIBROS 

 

83

2. Cad Cadaa cla clase se debe inc inclui luirr m´ eetodos todos modi modifica ficador dores es e ins inspect pectore oress par paraa cad cadaa uno de los atributos que tendr´aan n sus objetos. No se deben duplicar m´eetodos. todos.

9.2. 9.2. 9. 2.1. 1.

Libros Objet Objetiv ivo o

Esta pr´actica actica tiene como objetivo que el alumno ponga en pr´aactica ctica sus conocimientos acerca de herencia herencia de clase clasess de Jav Java, a, desarrolla desarrollando ndo una jerarqu jerarqu´´ıa de clases para una aplic aplicaci´ aci´ oon n particular.

9.2. 9. 2.2. 2.

Desc Descri ripci pci´ on on genera ´ generall de la pr´ a actica ctica

La pr´aactica ctica consiste en escribir un programa que permita a una persona llevar el control de los libros, discos (cd) y pel pel´´ıculas que posee. La informaci´oon n que le interesa de cada uno sus art´ııculo c uloss es: es: 1. Libro

•   T´ıtulo •   Autor •   Editorial •   A˜n noo de publicaci´oon n 2. Disco

•   T´ıtulo •   Int´ Int´eerpr r pret etee •   G´ G´enero •   N´u umero mero de canciones •   Idioma •   A˜n noo de lanzamiento 3. Pel´ııcul c ulaa

•   T´ıtulo •   Actor principal •   Actriz principal

 

84

 

CAP ´ITU ITULO LO 9. 9. HERENC HERENCIA IA

•   G´ G´enero •   Duraci´oon n en minutos •   A˜n noo de filmaci´oon n •   Idioma El programa deb debee ser controlado a trav trav´´es es de un men´u de opciones que permita al usuario ingresar la informaci´oon n de los art art´´ıculos e imprimir por separado libros, discos y pel pel´´ııculas culas almacenados en el programa.

9.2. 9. 2.3. 3.

Mate Materi rial al

En el enlace   Libros   del cap cap´´ııtulo tulo 9 de la p´agina agina web del libro se encuentran los siguientes archivos:

•   Articulo.class  clas  clasee ra ra´´ız de la jerarqu jerarq u´ıa con la informac informaci´ i´oon n com´ u un n a los art´ıculos. ıcul os. •   Articulo.html  documentaci´oon n de la clase  Articulo.

9.2. 9. 2.4. 4.

Desa Desarro rroll llo o

1. Crea Crearr las clases necesaria necesariass para resol resolver ver el probl problema ema plan planteado teado,, como m m´´ınimo ser´aan n Libro, Dis Disco, co, Pel Pelicu icula la. Cada clase debe programarse en un archivo con el tres:   Libro, nombre de la misma. En cada clase se debe incluir: (a) Un m´eetodo todo constructor que reciba los par´ametros ametros necesarios para dar valor inicial a los atributos de sus objetos. (b) M´etodos etodos modificadores mo dificadores e insp inspectores ectores para cada uno de los atributos que tendr´aan n sus objetos. No se deben duplicar m´eetodos. todos. (c) Un m´eetodo to do  toString  para recuperar el objeto de esa clase en forma de cadena. (d) Documen Documentaci´ taci´ oon n de cada m´eetodo. todo . Para ello utiliza utilizarr eti etiquetas quetas  @author @author, , @versi @version, on, @param   y  @return. 2. Escribir un programa   PruebaArticulos  para compr comprobar obar que la jerarq jerarqu u´ıa de clase clasess se construy´o corre correctam ctament ente. e. Este progr programa ama debe trabajar a tra trav´ v´eess de un men´ u de opciones que permita ingresar la informaci´oon n de los art art´´ıculos e imprimir por separado libros, discos y pel pel´´ıculas almacenados en el programa. Un ejemplo de ejecuci´oon n del programa solicitado se muestra a continuaci´on. on.

 

9.2. LIBROS 

 

***ALMACEN ***ALMA CENA A LIB LIBROS ROS, , DIS DISCOS COS Y PEL PELICU ICULAS LAS*** *** 1. Agr Agrega egar r lib libros ros 2. Agr Agrega egar r dis discos cos 3. Agr Agrega egar r pel pelicu iculas las 4. Mos Mostra trar r lib libros ros 5. Mos Mostra trar r dis discos cos 6. Mos Mostra trar r pel pelicu iculas las 7. Mos Mostra trar r tod todos os los art articu iculos los 8. Sa Sali lir r Elegir Eleg ir opc opcion ion: : 1 Dame el no Dame nomb mbre re de del l li libr bro: o: Introdu Intr oducci ccion on al des desarr arroll ollo o de pro progra gramas mas con Jav Java a Dame Dam e el au auto tor r de del l li libr bro: o: Amparo Ampa ro Lop Lopez ez Gao Gaona na Dame Dam e la ed edit itor oria ial l de del l li libr bro: o: Faculta Facu ltad d de Cie Cienci ncias, as, UNA UNAM M Dame el a~ n no o de pu publ blic icac acio ion n de del l li libr bro: o: 2011 2011

85

***ALMACEN ***ALMA CENA A LIB LIBROS ROS, , DIS DISCOS COS Y PEL PELICU ICULAS LAS*** *** 1. Agr Agrega egar r lib libros ros 2. Agr Agrega egar r dis discos cos 3. Agr Agrega egar r pel pelicu iculas las 4. Mos Mostra trar r lib libros ros 5. Mos Mostra trar r dis discos cos 6. Mos Mostra trar r pel pelicu iculas las 7. Mos Mostra trar r tod todos os los art articu iculos los 8. Sa Sali lir r Elegir Eleg ir opc opcion ion: : 12 Opcion incorr incorrecta ecta Elegir Eleg ir opc opcion ion: : 3 Dame Dam e el no nomb mbre re de la pe peli licu cula la: : El ci cisn sne e ne negr gro o Dame Dam e el ac acto tor r pr prin inci cipa pal l de la pe peli licu cula la: : No ha hay y Dame Dam e la ac actr triz iz pr prin inci cipa pal l de la pe peli licu cula la: : Natalie Portma Portman n

 

 

86

Dame el ge Dame gene nero ro de la pe peli licu cula la: : Suspenso Dame el a~ n no o de la lanz nzam amie ient nto o de la pe peli licu cula la: : 2011 Dame Dam e el id idio ioma ma de la pe peli licu cula la: : Ingles Dame Dam e la du dura raci cion on de la pe peli licu cula la (m (min in): ): 123 ***ALMA ***A LMACEN CENA A LIB LIBROS ROS, , DIS DISCOS COS Y PEL PELICU ICULAS LAS*** *** 1. 2. 3. 4. 5. 6. 7. 8.

Agr Agrega egar r Agr Agrega egar r Agr Agrega egar r Mos Mostra trar r Mos Mostra trar r Mos Mostra trar r Mos Mostra trar r Sa Sali lir r

lib libros ros dis discos cos pel pelicu iculas las lib libros ros dis discos cos pel pelicu iculas las tod todos os los art articu iculos los

´ CAP ITU ITULO LO 9. 9. HERENC HERENCIA IA

Elegir Eleg ir opc opcion ion: : 4 ***LIBROS ALMACE ***LIBROS ALMACENADOS* NADOS*** ** "Introd "Int roducc uccion ion al des desarr arroll ollo o de pro progra gramas mas con Jav Java" a" Amparo Ampa ro Lop Lopez ez Gao Gaona na 2011 Faculta Facu ltad d de Cie Cienci ncias, as, UNA UNAM M ***ALMACEN ***ALMA CENA A LIB LIBROS ROS, , DIS DISCOS COS Y PEL PELICU ICULAS LAS*** *** 1. Agr Agrega egar r lib libros ros 2. Agr Agrega egar r dis discos cos 3. Agr Agrega egar r pel pelicu iculas las 4. Mos Mostra trar r lib libros ros 5. Mos Mostra trar r dis discos cos 6. Mos Mostra trar r pel pelicu iculas las 7. Mos Mostra trar r tod todos os los art articu iculos los 8. Sa Sali lir r Elegir Eleg ir opc opcion ion: : 5 ***DISCOS ALMACE ***DISCOS ALMACENADOS* NADOS*** ** No hay dis discos cos alm almace acenad nados os

 

9.3. ACTAS DEL REGISTRO CIVIL

***ALMACEN ***ALMA CENA A LIB LIBROS ROS, , DIS DISCOS COS Y PEL PELICU ICULAS LAS*** *** 1. Agr Agrega egar r lib libros ros 2. Agr Agrega egar r dis discos cos 3. Agr Agrega egar r pel pelicu iculas las 4. Mos Mostra trar r lib libros ros 5. Mos Mostra trar r dis discos cos 6. Mos Mostra trar r pel pelicu iculas las 7. Mos Mostra trar r tod todos os los art articu iculos los 8. Sa Sali lir r Elegir Eleg ir opc opcion ion: : 6 ***PELICULAS ALMACE ***PELICULAS ALMACENADAS* NADAS*** ** "El cis cisne ne neg negro" ro" Natalie Portma Portman n Suspenso 2011 Ingl´ es es

 

87

123 ...

9.3. 9. 3. 9.3. 9. 3.1. 1.

Acta Actass del del Regi Regist stro ro Civi Civill Objet Objetiv ivo o

Esta pr´actica actica tiene como objetivo que el alumno refuerce sus conocimientos acerca de herencia de clases de Java, desarrollando una jerarqu jerarqu´´ıa de clases para una aplicaci´ oon n particular.

9.3. 9. 3.2. 2.

Desc Descri ripci pci´ on on genera ´ generall de la pr´ a actica ctica

La pr´aactica ctica consiste en escribir un programa para imprimir actas del Registro Civil. Las actas pueden ser: actas de nacimiento, actas de matrimonio y cartillas de vacunaci´oon. n. La programaci´oon n debe satisfacer los siguientes puntos: 1. En cada clase inclu incluir ir un construc constructor, tor, el cual debe recibir los par´ aametros metros necesarios para dar valor inicial a los atributos de sus objetos. 2. En cada clase inclu incluir ir m´ eetodos todos modificadore modificadoress e inspect inspectores ores para cada uno de los atributos que tendr´an an sus objetos. No se deben duplicar m´eetodos. todos. 3. En cada clase incluir un m´eetodo todo  toString  para recuperar el acta en forma de cadena.

 

 

88

´ CAP ITU ITULO LO 9. 9. HERENC HERENCIA IA

4. Cad Cadaa cla clase se debe estar bie bien n docu documen mentad tadaa hac hacien iendo do uso de las eti etique quetas tas   @author, @version, @versio n, @param  y  @return.

9.3. 9. 3.3. 3.

Desa Desarro rroll llo o

1. Programar la clase   Actas   con los atributos comunes a todas las actas del Registro Civil. 2. Progr Programar amar la cla clase se Nacimiento para almacenar las actas de nacimiento de las personas. Estas actas tienen fecha de nacimiento, nombre del ni˜n no, o, sexo, ciudad de nacimiento, nombre del padre y nombre de la madre. 3. Progr Programar amar la clase  Matrimonio  para almacenar las actas de matrimonio. Estas actas tienen fecha de la boda, nombre de la novia, nombre del novio y ciudad en que se efect´u uoo la boda 4. Programar la clase   Vacunacion   para generar cartillas de vacunaci´oon n que se dan al momento de registrar un ni˜ n no. o. Estas cartillas tienen fecha de nacimiento, nombre del

ni˜no no y un arreglo para 20 vacunas. Cada vacuna lleva el nombre y la fecha de aplicaci´on. 5. Gener Generar ar la documen documentaci´ taci´ on on en HTML de cada clase, ejecutando el programa  javadoc. 6. Progr Programar amar una cla clase se llamad llamadaa  GeneraActas  que contenga conte nga un m´eetodo to do  main  en el que se inicia inicialice liceinformaci´ un arreg arreglo de cada tipo) y despu despu´ ´eess impri imprima ma en pan pantalla talla cada una. La on olon de de 12 lasactas actas(4 puede ser solicitada al usuario. El programa debe mostrar un resultado parecido al siguiente: **** ****** **** **

ACTA ACTA DE DE NA NACI CIMI MIEN ENTO TO

**** ****** **** **

El ninio ninio Salvad Salvador or Lop Lopez ez Men Mendoz doza a naci nacio o el 11 de sept septie iemb mbre re de 1969 1969 en Oxaca. Oxaca. Su padr padre e es Amad Amador or Lope Lopez z Lope Lopez z y su madre madre Carmen Carmen Men Mendoz doza a Cruz. Cruz. ************************************** **** ****** **** **

ACTA ACTA DE DE MA MATR TRIM IMON ONIO IO

**** ****** **** **

El Sr. Sr. Juan Juan Pedr Pedro o de la Mar Mar la Srita. Srita. Blanca Blanca Nie Nieves ves Perez Perez contra con trajer jeron on matrim matrimoni onio o el 11 de nov noviem iembre bre de 201 2011 1

 

9.4. C ´ IRCULOS  IRCULOS 

 

en Guadalajar Guadalajara. a. ************************************** **** ****** **** ** El ninio ninio naci nacio o el Vacuna Vac una1: 1: Vacu Vacuna na2: 2:

ACTA ACTA DE DE VA VACU CUNA NACI CION ON

**** ****** **** **

Salvad Salvador or Lop Lopez ez Men Mendoz doza a 11 de sept septie iemb mbre re de 2009 2009 Poliom Poliomeli elitis tis 20 de sep septie tiembr mbre e de 200 2009 9 Sara Saramp mpio ion n 3 de marz marzo o de 2010 2010

Vacuna Vac una3: 3: Influe Influe Influenza luenza nza 10 10 de de sep sep septie tiembr mbre e de de 201 201 2010 0 Vac Vacuna una4: 4: Inf nza septie tiembr mbre e 2011 1 ************************************** ...

89

9.4. 9.4. 9. 4.1. 1.

Cırculos Objet Objetiv ivo o

Esta pr´actica actica tiene como objetivo que el alumno refuerce sus conocimientos acerca de herencia de desconoce clases de Java, desarrollando una jerarqu jerarqu´ ´ıa de clases a partir de una se su c´oodigo, digo, s´oolo lo se tiene el ejecutable y la documentaci´ oon. n. clase dada de la cual

9.4. 9. 4.2. 2.

Desc Descri ripci pci´ on on genera ´ generall de la pr´ a actica ctica

La pr´aactica ctica consis consiste te en escribir escribir un prog programa rama para trabajar c´ırcul ırculos os con diferente diferentess carac carac-ter´´ısticas ter ısticas.. Se tiene la clase   Circulo  y a partir de ah ah´´ı se va a desarrollar una jerarqu jerarqu´´ıa ıa de clases ampliando la funcionalidad de los c´ırculos.

9.4. 9. 4.3. 3.

Mate Materi rial al

rcu ulos   del cap En el enlace  C´ırc cap´´ıtulo 9 de la p´aagina gina web del libro se encuentran los siguientes archivos:

´ a va a ser ra •   Circulo.class  clase para traba trabajar jar con c´ırculos ırculos..  Est Esta ra´´ız de una jer jerarq arqu u´ıa de clases que ampl ampl´´ıen la funcion funcionalidad alidad de los c´ırculos ırculos..

•   Circulo.html  documentaci´oon n de la clase  Circulo. •   Punto.class  clase para trabajar con puntos.

 

 

90

CAP ´ITULO ITULO 9. 9. HERENC HERENCIA IA

•   Punto.html  documentaci´oon n de la clase  punto.

9.4. 9. 4.4. 4.

Desa Desarro rroll llo o

1. Desca Descargar rgar los archiv archivos os y guard guardarlos arlos en un mismo direc directorio torio.. 2. Progr Programar amar la cl clase ase  CirculoDinamico  como extensi´oon n de la clase  Circulo  en la que se tenga un m´eetodo todo para que el c´ıırculo rculo tenga un tama˜n noo mayor al original y otro para que cambiar el tama˜n noo del c´ırculo a uno menor. 3. tengan Progr Programar amar la cl clase ase  como extensi´ n de la clase  Circulo  en la que se c´ıırculos rculos en  CirculoConColor los q que ue haya definido el color de oon los mismos. 4. Progr Programar amar la cclase lase CirculoRojo  como subclase de la clase que se considere apropiada, en la que se tengan cc´´ırculos cuyo color sea rojo. 5. Escri Escribir bir un progr programa ama   PruebaCirculos   para prob probar ar la jer jerarqu´ arqu´ıa ıa de c´ırc ırculos ulos,, en ´este est e debe haber un arreglo con espacio para 12 c´ırculos y debe contener 4 c´ırculos de cada

una de las distintas clases. Luego calcular el per per´´ımetro y ´aarea rea de todos los c´ırculos y contar la cantidad de c´ırculos que hay de un color determinado. El programa debe mostrar un resultado parecido al siguiente: *** ***

PROG PROGRA RAMA MA PARA PARA PROB PROBAR AR LA JE JERA RARQ RQUI UIA A DE CIR CIRCU CULO LOS S ***

La suma suma del del area area de los los 12 circ circul ulos os es de 854. 854.54 5432 32 metr metros os cuad cuadra rado dos. s. La suma suma del del peri perime metr tro o de los los circ circul ulos os es de 123. 123.12 123 3 metr metros os. . Hay 2 circul circulos os azu azules les. .

Los valores que aparecen no necesariamente deben coincidir con los datos del programa de prueba.

 

Cap´ıtulo 10 Excepciones En este cap cap´´ıtulo se presentan pr´acticas acticas para que el programador se ejercite en el manejo de excepciones como un mecanismo para escribir programas robustos. Estas excepciones pueden ser de las proporcionadas por Java o bien desarrolladas para un programa particular. El

manejo de las excepciones incluye su lanzamiento, atrapado y recuperacion. recuperaci on.

Marco te´ orico orico on  es un evento que ocurre en cualquier momento de ejecuci´ Una  excepci´  oon n de un programa

y que modifica informaci´ el flujo norm normal al de ste. Lasen excepci excepciones ones son objetos la clase   Exception que almacenan oon n que se´eeste. regresa caso de que ocurra unadeanormalidad. Todos los m´eetodos tod os que hayan llam llamado ado al m´eetodo tod o en que se produ produce ce la eexcep xcepci´ ci´oon n pueden darse por enterados y alguno de ellos o todos tomar las medidas apropiadas. La clase  Exception, que se encuentra en el paquete  java.lang, es la ra´ız ız de un unaa je jerar rarqu´ qu´ıa ıa de clases para los errores m´aass co comunes. munes. E En n est estaa jer jerarqu arqu´´ıa se tiene la cl clase ase  RuntimeException de la que se derivan varias clases de uso frecuente, por ejemplo,  NullPointerException. Una excepci´oon n se activ activaa (dispara) para indicar que ocurri´o una falla durante la ejecuci´on on de un m´eetodo. to do. La exce excepc pci´ i´oon n se propaga hasta encontrar un m´eetodo todo en el cual se indica (atrapa) qu´e se debe hacer en circunstancias an´omalas. omalas. Para tratar con las excepciones es necesario escribir un manejador de excepciones utilizando la instrucci´oon n   try  que tiene la siguiente sintaxis: try   {

instrucciones

} catch  (Excepci´ oon1 n1 e1 )  {

instrucciones

} 91

 

 

92

CAP ´ITULO ITULO 10. EXCEPCIO EXCEPCIONES  NES 

... catch  (Excepci´ on on   e )  { n

n

instrucciones

} finally   {

instrucciones

} Cada cl´aausula usula de la instrucci´oon n  try  es un bloque que incluye las instrucciones que pueden disparar la(s) excepci´oon(es). n(es). Las cl´aausulas usulas catch tienen como par´aametro metro un objeto de alguna clase de excepci´oon. n. En una instrucci´oon n  try  puede haber varias cl´aausulas usulas  catch; en el bloque de cada una se coloca el c´oodigo digo que implementa la acci´oon n a realizar en caso de que ocurra una excepci´oon n del tipo de su par´ametro. ametro. Por u ultimo, ´ ltimo, la cl´aausula usula opcional  finally   contiene el c´oodigo digo para establecer un estado adecuado para continuar la ejecuci´oon n del m´eetodo to do dond dondee aparece la instrucci´oon n   try. En ocasiones puede suceder que las clases de excepciones existentes no describan la na-

turaleza del error que se tiene; en ese caso y para dar mayor claridad a los programas es posible crear excepciones propias, esto se logra extendiendo la clase   Exception. Todas las nuevas clases requieren que se proporcione una cadena de diagn´oostico stico al constructor.

10.1.

C´ırculos

10.1 10 .1.1 .1..

Obj Objet etiv ivo o

El objetivo de esta pr´aactica ctica es que el alumno adquiera experiencia en el manejo de excepciones incluy´eendolas ndolas en programas con la finalidad de que estos ssean ean robustos.

10.1 10 .1.2 .2..

De Desc scripc ripci´ i´ o on n general

Durante esta pr´aactica ctica el alumno tomar´a experiencia en el manejo de excepciones al incluirlas en un programa y determinar el flujo de ejecuci´oon n del mismo tanto en el caso de no ocurrir ning´u un n error como al dispararse las excepciones.

10.1 10 .1.3 .3..

Ma Mate teri rial al

rcu ulo los  s  del cap En el enlace  C´ırc cap´´ıtulo 10 de la p´agina agina web del libro se encuentran los siguientes archivos:

•   Circulo.java  clase sencilla que crea c´ırculos en ciertas circunstancias. •   Arreglo.java  clase sencilla que trabaja con elementos en un arreglo.

 

10.1. C ´ IRCULOS  IRCULOS 

10.1 10 .1.4 .4..

 

93

De Desa sarro rroll llo o

1. Desca Descargar rgar los archiv archivos os  Circulo.java   y  Division.java. Guardarlos en un mismo directorio. 2. Analizar el c´oodigo digo de la clase  Circulo. public publi c cl clas ass s Ci Circ rcul ulo o { privat pri vate e fin final al dou double ble rad radio; io; pu publ blic ic Circ rcul ulo o{(d (dou oubl ble e r) { if (rCi java Juego Uso: Juego valorInici valorInicial al Inc/D Inc/Decrem ecremento ento >jav >java a Ju Jueg ego o 100 100 -67 -67 Tengo Ten go los siguie siguiente ntes s numero numeros s 100 100 33 -34 -34 -101 -101 -168 -168 Cual Cua l el siguie siguiente nte ele elemen mento to de la suc sucesi esion? on? -15 -150 0 No es correc correcta ta tu res respue puesta sta >jav >java a Jueg Juego o 100 100 -10 -10 java java Jueg Juego o 100 100 -10 -10 Tengo Ten go los siguie siguiente ntes s numero numeros s 100 90 80 70 60 Cual Cua l el siguie siguiente nte eleme elemento nto de la suc sucesi esion? on? 50 Muy bien!!! bien!!!

12.3 12 .3..

Co Conj njun unto toss

12.3 12 .3.1 .1..

Obj Objet etiv ivo o

EL objetivo de esta pr´aactica ctica es que el alumno se ejercite en la implementaci´oon n de interfaces para generar tipos de datos.

12.3 12 .3.2 .2..

De Desc scripc ripci´ i´ o on n general

Escribir una clase  Conjunto  para trabajar con conjuntos de objetos de cualquier clase. Un conjunto es una colecci´oon n de datos sin ning´u un n orden y que no contiene repetidos. La interfaz que debe programarse es:

 

114

 

public interface public interface Conjuntabl Conjuntable e { public publi c void agregar(Ob agregar(Object ject elemento); elemento); public publi c void eliminar(O eliminar(Object bject elemento); elemento); public publi c boolean boolean contiene contiene (Object (Object eleme elemento); nto); public publi c Conjuntabl Conjuntable e union(Conj union(Conjuntab untable le c1); public publi c Conjuntabl Conjuntable e intersecci interseccion(Co on(Conjunt njuntable able c1); public publi c Conjuntabl Conjuntable e diferencia diferencia(Conj (Conjuntab untable le c1); public publi c boolean boolean subconjunt subconjunto(Con o(Conjunta juntable ble c1); }

CAP ´ITULO 12. 12. INTERFACE INTERFACES  S 

12.3 12 .3.3 .3..

Ma Mate teri rial al

En el enlace  Conjuntos  del   de l cap c ap´´ıtulo ıtul o 1122 de d e llaa p´ p agina ´agina web del libro se encuentran los siguientes archivos:

•   Conjuntable.class  interfaz para trabajar con conjuntos. •   Conjuntable.html  documentaci´oon np para ara los m´eetodos tod os de d e la interfaz  Conjuntable.

12.3 12 .3.4 .4..

De Desa sarro rroll llo o

 Conjuntable 1. documentaci´ Escri Escribir bir un programa que implemen implemente te la int interfaz erfaz  seg´ u un n lo indicado en la oon n de la misma. Los m´eetodos todos que deb debe e implementa implementar r son:

•   agregar. Si el elemento no existe en el conjunto, lo agrega y el tama˜n noo del conjunto crece en una unidad. •   eliminar. Si el elemento est´a en el conjunto lo elimina y se reduce el tama˜n noo del conjunto en una unidad. •   contiene. Regresa  true  si el elemento est´a en el conjunto y  false  en otro caso. Este m´eetodo todo no cambia el estado del conjunto. •   union. Devuelve el conjunto formado por los elementos contenidos en el conjunto que llama al m´eetodo todo m´aass los elementos del conjunto tomado como par´aametro, metro, desde luego sin duplicar elementos. •   interseccion. Devuelve el conjunto formado por los elementos que est´aan n en el conjunto que llama al m´eetodo tod o y que tambi´een n est´aan n en el conjunto tomado como par´aametro. metro. Si ambos conjuntos no contienen elementos en com´u un n devuelve el conj co njunt untoo vac vac´´ıo. •   diferencia. Devuelve el conjunto formado por los elementos que est´an a n en el primer conjunto y no est´aan n en el segundo. En caso que ambos conjuntos tengan exactamente los mismos elementos, el resultado es el conjunto vac vac´´ıo.

 

12.4. PALABRAS 

 

115

•   subconjunto. Devuelve   true   si todos los elementos del conjunto tomado como par´ametro ametro est´aan n en el conjunto con el que se llama al m´eetodo. todo. Devuelve false  en otro caso. 2. Docu Documen mentar tar la cla clase se   Conjunto  utilizando el programa   javadoc  e incluyendo los comentarios adecuados en cada m´eetodo todo para esta documentaci´ oon. n. 3. Escri Escribir bir un programa para proba probarr la impl implemen ementaci´ taci´ oon n de la interfaz  Conjuntable  desarrollada en esta pr´aactica. ctica. La salida de este programa podr podr´´ıa arro arrojar jar resultados como

los siguientes:

El conjun conjunto to est´ esta ´ lleno. lleno. c1: 0 1 2 3 4 5 6 7 8 9 c2: 0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 45 108 La dife difere renc ncia ia de c1 con c2 en c3 es c3: 1 3 5 7 9 c1: 0 1 2 3 4 5 6 7 8 9 c2: 0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 45 108 La dife difere renc ncia ia de c1 con c2 en c1 es c1: 1 3 5 7 9 c1: 1 3 5 7 9 c2: 0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 45 108 La dife difere renc ncia ia de c3 con con c2 en cc2 cc2 es cc2: 1 3 5 7 9 c1: 1 3 5 7 9 c2: 1 3 5 7 9

12.4 12 .4..

Pal alab abra rass

12.4 12 .4.1 .1..

Obj Objet etiv ivo o

El objetivo de esta pr´aactica ctica es que el alumno se ejercite en la implementaci´oon n de interfaces, implementando la interfaz  Iterator  que proporciona Java, en el paquete  java.util, para iterar sobre colecciones de datos.

 

116

12.4 12 .4.2 .2..

 

CAP ´ITULO 12. 12. INTERFACE INTERFACES  S 

De Desc scripc ripci´ i´ o on n general

Desarrollar una clase   Palabras  cuyo prop´oosito sito es trabajar con palabras de un texto dado. La clase debe implementar la interfaz  Iterator  del paquete  java.util. La interfaz  Iterator  tie  tiene ne tres m´eetodos to dos::

•   hasNext  que devue devuelve lve un valor booleano para indic indicar ar que al itera iterarr s´ı hay alg´u un n otro elemento. •   next  para obtener el siguiente elemento en una colecci´on on sobre la que se est´a iterando.

•   remove  para eliminar un elemento de la colecci´oon. n. La implementaci´on on de est estee m´eetodo to do es opcional y en esta pr´aactica ctica no se va a realizar.

12.4 12 .4.3 .3..

Ma Mate teri rial al

En el enlace  Palabras  de  dell cap cap´´ıtulo 12 de la p´aagina gina web del libro se encuentran los siguientes archivos:

•   PruebaPalabras.class  programa para probar la clase desarrollada en esta pr´aactica. ctica. •   Palabras.html  archivo con la documentaci´oon n de la clase que se desarrollar´a en esta pr´aactica. ctica. La documentaci´oon n de la interfaz  Iterator  se encuentra en la direcci´oon: n: http://download.oracle.com/javase/1.4.2/docs/api/java/util/Iterator.html

12.4 12 .4.4 .4..

De Desa sarro rroll llo o

1. Consu Consultar ltar la documen documentaci´ taci´ oon n de la interfaz  Iterator  y de la clase  Palabras. 2. Des Desarr arroll ollar ar una cla clase se   Palabras   que imp implem lemen ente te la inter interfaz faz   Iterator   del paque paquete te java.util  e incluya adem´ aass de los m´eetodos todos de la interfaz, lo siguiente:

•   Un construc constructor tor que tome como par´aametro metro un texto almacenado en una cadena de caracteres. •   Un m´eetodo todo que de devuelva vuelva un arreglo con to todas das las la s pala palabras bras del te texto. xto. E Este ste m´eetodo tod o debe iterar sobre la cadena utilizando los m´eetodos todos  hasNext   y  next. •   Un m´ eetodo, todo, que utili utilizando zando el itera iterador dor deter determine mine la can cantidad tidad de palab palabras ras en el texto. •   Un m´eetodo todo para obtener las palabras en orden contrario a como est´aan n en el texto original.

 

12.4. PALABRAS 

 

117

3. Ejecu Ejecutar tar el progr programa ama PruebaPalabras para probar la clase Palabras; si se program´o bien esta clase se debe obtener el siguiente resultado. Las palabr palabras as que ten tengo go son son: : esta esta es una una cade cadena na esta esta llen llena a de pala palabr bras as que que serv servir iran an para para prob probar ar el iterad iterador or de la cla clase se pal palabr abras as Hay 18 palabr palabras. as.

Las palabr palabras as al rev reves es son son: :

palabras palabr as clase clase la de ite iterad rador or el pro probar bar par para a ser servir viran an que pal palabr abras as de llen llena a esta esta cade cadena na una una es esta esta

 

Cap´ıtulo 13

Serializaci´ on on Este cap cap´´ıtulo contiene un conjunto de pr´aacticas cticas para que programador refuerce sus conocimientos acerca de c´oomo mo lograr que los objetos creados durante la ejecuci´oon n de un programa persistan m´aass all´a de la ejecuci´oon n del mismo mediante su almacenamiento en archivos en disco, as´ as´ı como acerca del procedimiento para recup recuperar erar ob objetos jetos de archiv archivos. os. Este proceso se conoce en Java como serializaci´oon n de objetos.

Marco te´ orico orico La serializaci´oon n de objetos permite escribir objetos a archivos con una sola instrucci´oon, n, con lo cual queda quedan n graba grabados dos hasta que se decid decidaa elimi eliminarlo narloss o modifica modificarlos. rlos. Tamb ambi´ i´een n permite recuperar los objetos grabados en archivos. Para que objetos de una clase puedan serializarse es necesario que dicha clase implemente la interfaz   Serializable, que se encuentra definida en el paquete   java.io. La interfaz es una interfaz de marcado que tiene el siguiente c´oodigo: digo: public interface public interface Serializab Serializable le { }

Para que un objeto sea serializable todas las variables de la estructura deben ser serializables. Todos los tipos primitivos, los objetos de la clase  String  y algunos de otras clases de Java son serializables. Para serializar objetos, adem´aass de especificar que ser´an an serializables se requiere trabajar con un arc archiv hivo, o, en el cual se almac almacenen enen o bien se recuper recuperen en de ah ah´´ı cuand cuandoo se requiera. requiera. Al trabajar con archivos es necesario considerar las posibles excepciones que pueden dispararse, ´eestas stas son subclases de   IOException  definida en el paquete   java.io. En este paquete est´a tambi tambi´´een n definida una serie de subclases de esta excepci´oon, n, entre ellas  EOFException   y FileNotFoundException. 119

 

120

 

´ CAP ´ITULO 13. SERIALIZA SERIALIZACI  CI ON 

Para grabar objetos en un archivo, es decir, para serializar, se requiere crear un objeto de la clase  ObjectOutputStream  del paquete  java.io  utilizando la siguiente instrucci´oon: n: ObjectOutp Objec tOutputStr utStream eam obj = new Objec ObjectOutp tOutputStr utStream(n eam(new ew FileO FileOutput utputStrea Stream(nom m(nombreAr breArch)); ch));

Una vez creado el objeto de la clase   ObjectOutputStream   se puede utilizar el m´eetodo todo writeObject(objeto )  para grabar el objeto que toma como par´a ametro. metro. Si el objeto que se intenta grabar no es de una clase que implemente la interfaz   Serializable  se dispara la excepci´oon n  NotSerializableException.

Al terminar de serializar to todos dos los objetos se debe llamar al m´eetodo todo  close  para asegurar que no se pierdan los objetos grabados en el archivo especificado. Independientemente de que haya habido un error o no es necesario cerrar el archivo, por esto es recomendable incluirla en la clausula  finally. La operaci´oon n complementaria a grabar objetos es la de recuperarlos. Para recuperar objetos de un archivo se requiere crear un objeto de la clase  ObjectInputStream  como sigue: ObjectInpu Objec tInputStre tStream am objeto objeto = new Objec ObjectInpu tInputStre tStream(ne am(new w FileInputS FileInputStream tream(nomb (nombreArc reArch)); h));

Para leer los objetos serializados se utiliza el m´eetodo todo  readObject(), el cual construye un objeto de la clase indicada pero lo regresa como una referencia de tipo  Object, por lo que es necesario hacer una conversi´oon n ex expl´ pl´ıcit ıc ita. a.

13.1.

Diario

13.1 13 .1.1 .1..

Obj Objet etiv ivo o

El objetivo de esta pr´actica actica es que el alumno se ejercite en el almacenamiento y recuperaci´oon n de objetos persistentes mediante el uso del concepto de serializaci´oon n a la vez que refuerza sus conocimientos acerca del manejo de excepciones.

13.1 13 .1.2 .2..

De Desc scripc ripci´ i´ o on n general

En esta pr´aactica ctica se programar´a un diario sencillo en una clase llamada  Diario, la cual tiene el m´eeto t odo  main  de la aplicaci´oon. n. Al ejecut ejecutarlo arlo se despl desplegar´ egar´ a el men´ u principal que consta de tres opcione opciones: s: 1. Consultar una en entrada trada del diario. Si el el usuario selecciona esta opci´ oon, n, el programa debe pedirle la fecha de la entrada del diario que desea consultar. Solamente se tendr´a una entrada del diario por cada fecha. A partir de la fecha proporcionada por el usuario se deber´a buscar el archivo que la contenga. En caso de que no se haya encontrado se deber´a desplegar el siguiente mensaje:

 

13.1. DIARIO 

 

121

No se ti tien ene e un una a en entr trad ada a co con n fe fech cha: a: 30 de Ma Mayo yo de del l 20 2011 11

Y regresar al men´ u princ principal. ipal. En caso de haberla encontr encontrado, ado, se despl despliega iega ´eesta sta en pantalla y se pide al usuario que presione  Enter  cuando haya terminado de leerla para poder volver al men´u principal. 2. Ingre Ingresar sar una nuev nuevaa entrada de diario.

Se pedir´a al usuario la siguiente informaci´oon: n: •  T´ııtulo tul o de la entrada. entra da.

•  Fecha de la entrada. •  Contenido de la entrada. Una vez que se tengan todos estos datos se crea un objeto de la clase  EntradaDeDiario con ellos y se almacena en un archivo que se llame como la fecha de la entrada, en formato  dd-mm-aa.ser 3. Salir de dell progra programa. ma. Con esta opci´oon n se termina la ejecuci´oon n del programa.

13.1 13 .1.3 .3..

Ma Mate teri rial al

En el enlace   Diario  del cap cap´´ıtulo 13 de la p´aagina gina web del libro se encuentran los siguientes archivos:

•   Fecha.java  clase en Java para trabajar con fechas. •   Fecha.html  documentaci´oon n de la clase  Fecha. •   EntradaDeDiario.java  clase para trabajar con las diferentes entradas al diario. •   EntradaDeDiario.html  documentaci´oon n de la clase  EntradaDeDiario.java.

13.1 13 .1.4 .4..

De Desa sarro rroll llo o

1. Desca Descargar rgar los archiv archivos os necesari necesarios os para esta pr´aactica. ctica. Estos archivos son:  Fecha.java, Fecha.html, Fecha.h tml, Entrad EntradaDeDia aDeDiario.ja rio.java va   y  EntradaDeDiario.html. 2. Progr Programar amar la clase Diario  seg´ u un n las especificaciones proporcionadas agregando el manejo de excepciones para lograr un programa robusto, para ello:

 

122

 

´ CAP ´ITULO 13. SERIALIZA SERIALIZACI  CI ON 

(a) Es necesario mane manejar jar las excepciones que puedan ocurrir al usar las instrucciones instrucciones para manejo de archivos. Con cada excepci´oon n se debe de desplegar un mensaje diferente. (b) No se debe permiti permitirr que el progr programa ama pueda terminar terminar por una excepci´ oon n no controlada. La u unica ´ nica forma de que el programa termine deber´a de ser seleccionando la opci´oon n  Salir  del men´u principal. (c) Es indispensa indispensable ble que cuando se presen presente te una excepci´ oon, n, el usuario est´e notificad notificadoo

de los detalles de la misma. Por lo que cada excepci´oon n deber´a de ser manejada de forma individual y diferente. (d) Modifica Modificarr la clas clasee  EntradaDeDiario  para que el programa compile. (e) Modifica Modificarr la clas clasee  Fecha  para que el programa compile. 3. Gener Generar ar la documen documentaci´ taci´ oon n HTML de todas las clases usando el programa  javadoc. 4. Desar Desarrolla rollarr un programa para prob probar ar que la clase  Diario funcione adecuadamente. Un ejemplo de resultados del programa se muestra a continuaci´oon. n. Bienvenido 1. Consul Consultar tar diario diario 2. Escrib Escribir ir en dia diario rio 3. Salir Salir del progra programa ma Elig Elige e una una opci opcion on 2 Para escrib Para escribir ir una nue nueva va pag pagina ina Dar Dar el titu titulo lo Gran Gran Logr Logro o Dar la fecha fecha dd/mm/ dd/mm/aa: aa: 30/ 30/5/2 5/2011 011 Dar conten contenido ido en una linea Adio Adios s al lapi lapiz, z, ya term termin ine e un prog progra rama ma para para llev llevar ar mi diar diario io en la comp comput utad ador ora. a.

1. Consul Consultar tar diario diario 2. Escrib Escribir ir en dia diario rio 3. Salir Salir del progra programa ma Elig Elige e una una opci opcion on 2 Para escrib Para escribir ir una nue nueva va pag pagina ina Dar el titulo titulo Car Carrer rera a Dar la fecha fecha dd/mm/ dd/mm/aa: aa: 2/6 2/6/20 /2011 11 Dar conten contenido ido en una linea Estoy Est oy nervio nervioso, so, ma~ nana n ana es la carr carrer era a de los los 10km 10km. . Espe Espero ro mejo mejora rar r mi tiem tiempo po. .

 

13.2. FECHAS IMPORTANTES 

1. Consul Consultar tar diario diario 2. Escrib Escribir ir en dia diario rio 3. Salir Salir del progra programa ma Elig Elige e una una opci opcion on 3 Hasta pronto!!! pronto!!! azalea:dia azale a:diario> rio> java Diari Diario o

 

123

Bienvenido 1. Consul Consultar tar diario diario 2. Escrib Escribir ir en dia diario rio 3. Salir Salir del progra programa ma Elig Elige e una una opci opcion on 1 Dar la fecha fecha para para consul consultar tar el dia diario rio: : dd/mm/ dd/mm/aaa aaaa a 2/6/2011 Carrera 2 de Junio Junio de 2011 2011 Estoy Est oy nervio nervioso, so, ma~ nana n ana es la carr carrer era a de los los 10km 10km. . Espe Espero ro mejo mejora rar r mi tiem tiempo po. . Para Par a contin continuar uar teclea teclear r ENTER. ENTER. 1. Consul Consultar tar diario diario 2. Escrib Escribir ir en dia diario rio 3. Salir Salir del progra programa ma Elig Elige e una una opci opcion on 3 Hasta pronto!!! pronto!!!

13.2. 13. 2.

Fechas echas importan importantes tes

13.2 13 .2.1 .1..

Obj Objet etiv ivo o

El objetivo de esta pr´aactica ctica es que el alumno adquiera experiencia en la aplicaci´oon n de los conocimientos adquiridos acerca de la creaci´oon n y uso de archivos serializables en Java al trabajar con arreglos de objetos.

13.2 13 .2.2 .2..

De Desc scripc ripci´ i´ o on n general

En esta pr´aactica ctica se desarrollar´a un programa que se encargar´a de almacenar eventos de cualquier tipo como pueden ser cumplea˜n nos, os, ex´aamenes, menes, entrega de tareas, citas personales,

 

124

 

´ CAP ´ITULO 13. SERIALIZA SERIALIZACI  CI ON 

etc´eetera. ter a. La clas clasee  Evento  representa un evento. Un evento est´a compu compuesto esto de tres atributo atributos: s: La fecha en la que suceder´a el evento, una breve descripci´oon n del evento y la clasificaci´on on a la que pertenece el evento. Se van a manejar 5 posibles grupos: cumplea˜n nos, os, examen, tarea, cita y otros. Para programar el recordatorio de eventos se van a construir dos clases: la clase  Agenda y la clase  MisEventos. La clase  MisEventos  va a almacenar los eventos del usuario y a trabajar con ellos. Esta clase dar´a la posibilidad de crear un evento, borrar un evento, consultar los

eventos de acuerdo con criterios establecidos.

13.2 13 .2.3 .3..

Ma Mate teri rial al

En el enlace   Fechas importantes  d  del el cap cap´´ıtulo 13 de la p´aagina gina web del libro se encuentran los siguientes archivos:

•   Fecha.class  clase para trabajar con fechas. •   Fecha.html  documentaci´oon n de la clase  Fecha •   Evento.class  clase que maneja un evento particular. •   Evento.html  documentaci´oon n de la clase  Evento.

13.2 13 .2.4 .4..

De Desa sarro rroll llo o

Fecha.class, class, Fecha. Fecha.html, html, Evento Evento.java .java y  Evento.html. Guar1. Descargar los arc archivos hivos Fecha. darlos en un mismo directorio.

2. Progr Programar amar la cl clase ase  MisEventos. Esta clase debe tener m´eetodos todos para:

•  Introducir un nuevo evento. •  Eliminar un evento. •   Mostrar todos los eventos almacenados. •  Mostrar los primeros  primeros   n  eventos almacenados. •  Mostrar los eventos de cierto mes. •  Mostrar los eventos de un grupo particular. •  Mostrar los eventos de un grupo y mes particular. 3. Docume Documenta ntarr la clase  MisEventos  utilizando el programa  javadoc.

 

 

13.2. FECHAS IMPORTANTES 

125

4. Escri Escribir bir un progr programa ama Agenda qu  quee teng tengaa u un n m´eetodo to do  main. Este Est e m´eetodo to do de debe be conte contempla mplarr dos posibilidades de trabajo: una con un men´u de opciones para trabajar los eventos y la otra recibiendo par´aametros metros cuya sintaxis y sem´aantica ntica es la siguiente: Par´ ametro

-t

Accion on ´

 

Despliega todos los event eventos os almacenados

-n numero numeroDeEvent DeEventos os   Despliega los primeros  numeroDeEventos

eventos almacenados.

-m nombre nombreDelMes DelMes   Despl Despliega iega los eve evento ntoss del mes especific especificado. ado. -g nombre nombreDelGrup DelGrupo o   Despl Despliega iega llos os ev event entos os del grupo es especifica pecificado. do. -e me mes s gr grup upo o   Despl Despliega iega los eve evento ntoss del grupo especifi especificado cado

que caigan en el mes especificado. La clase  Agenda  debe satisfacer los siguientes puntos:

•   Al iniciar el trabajo se deben leer los eventos contenidos contenidos en el archivo eventos.ser. •   Antes de terminar el trabajo se deben grabar todos los eventos en el archivo eventos.ser. •  El programa debe ser robusto, es decir, si el usuario introduce par´aametros metros que no est´een n definido definidos, s, se debe deber´ r´a de desplegar un mensaje indicando su error. Si, por ejemplo, se ejecutara el programa con:  java java Mis MisEve Evento ntos s -j, se deber´ a deso on n v´ a alida lida  y terminar. Si se ejecutara el plegar el mensaje   -j no es una opci´ programa con: jav java a Mis MisEve Evento ntos s -m Lun Lunes es, se deber´ a desplegar el mensaje  Lunes no es un mes v´ a alido lido  y terminar el programa. Lo mismo deber´a suceder al introducir grupos y n´ u umero mero de eventos a desplegar. •   El programa debe contemp contemplar lar todas las posibles excepciones que pueden lanzarse al trabajar con los archivos. El texto a continuaci´on on muestra c´oomo mo deb deber er´´ııaa funcionar el programa. No es necesario que corra exactamente igual ni que se introduzcan los mismos eventos.

>java Age >java Agenda nda Es nec necesa esario rio int introd roduci ucir r par parame ametro tros s para eje ejecut cutar ar el pro progra grama. ma. >j >jav ava a Ag Agen enda da -t 1. Cu Cump mple lean anos os ma mama ma, , 3 de Ju Juni nio o [c [cum umple plean anos os] ] 2. Ci Cita ta de dent ntis ista ta, , 15 de Di Dici ciem embr bre e [c [cita itas] s] 3. Ex Exam amen en No No.3 .3 de IC ICC C 1, 28 de Ab Abri ril l [e [exa xame mene nes] s]

 

126 4. 5. 6. 7. 8. 9.

 

´ CAP ´ITULO 13. SERIALIZA SERIALIZACI  CI ON 

Ta Tare rea a de Ca Calc lcul ulo, o, 7 de Oc Octu tubr bre e [ta [tare reas as] ] En Entr treg egar ar pa pape pele les s de del l CE CELE LE, , 20 de Ju Juni nio o [otr [otros os] ] Na Navi vida dad, d, 25 de Di Dici ciem embr bre e [o [otr tros os] ] Cum Cumple pleano anos s nov novio, io, 8 de Jun Junio io [cu [cumple mpleano anos] s] Ta Tare rea a de Al Alge gebr bra, a, 12 de Ju Juli lio o [t [tare areas as] ] Ta Tare rea a de Es Esta tadi dist stic ica, a, 10 de Oc Octu tubre bre [e [exa xame mene nes] s]

10. Exa Examen men de Mat Matema ematic ticas as Dis Discre cretas tas, , 11 de Nov Noviem iembre bre [ex [exame amenes nes] ] 11 11. . 12 12. . 13 13. . 14 14. . 15 15. .

Ci Cita ta pa co con n Si Sino noda dal lista de Tesi sis, s, 2ajo, de Febre [citas as] ] Ci Cita ta para ra En Entr trev evis taTe de Tr Trab abaj o,Feb 5 rero dero Dici Di[cit ciem embr bre e [cit [citas as] ] Cu Cump mple lean anos os de Ju Juan an, , 12 de Ag Agos osto to [c [cum umpl plea eano nos] s] Ex Exam amen en de Te Teor oria ia de la Co Comp mput utac acion ion, , 27 de Abri Abril l [exa [exame mene nes] s] Ta Tare rea a de Co Comp mpil ilad ador ores es, , 3 de Ag Agos osto to [t [tar area eas] s]

Total: Tot al: 15 eve evento nto(s) (s). . >j >jav ava a Ag Agen enda da -t al algo go La op opci cion on -t no es espe pera ra re reci cibi bir r ma mas s param paramet etro ros. s. >j >jav ava a Ag Agen enda da -n La opc opcion ion -n esp espera era rec recibi ibir r exa exacta ctamen mente te un par parame ametro tro. .

>j >jav ava a Ag Agen enda da -n al algo go La op opci cion on -n es espe pera ra re reci cibi bir r un nu nume mero ro en ente tero ro como como para parame metr tro. o. >j >jav ava a Ag Agen enda da -n 40 No se pu pued eden en mo most stra rar r 40 ev even ento tos s de debi bido do a que que se tien tienen en solo solo 15 alma almace cena nado dos. s. >j >jav ava a Ag Agen enda da -n 5 1. Cu Cump mple lean anos os ma mama ma, , 3 de Ju Juni nio o [c [cum umple plean anos os] ] 2. Ci Cita ta de dent ntis ista ta, , 15 de Di Dici ciem embr bre e [c [cita itas] s] 3. Ex Exam amen en No No.3 .3 de IC ICC C 1, 28 de Ab Abri ril l [e [exa xame mene nes] s] 4. Ta Tare rea a de Ca Calc lcul ulo, o, 7 de Oc Octu tubr bre e [ta [tare reas as] ] 5. En Entr treg egar ar pa pape pele les s de del l CE CELE LE, , 20 de Ju Juni nio o [otr [otros os] ] Total: Tot al: 5 eve evento nto(s) (s). . C:>java Agenda C:>java 1. In Intr trod oduc ucir ir un nu nuev evo o ev even ento to 2. El Elim imin inar ar un ev even ento to

 

13.2. FECHAS IMPORTANTES 

3. 4. 5. 6. 7. 9.

 

Mos Mostra trar r los eve evento ntos s alm almace acenad nados os Mos Mostra trar r los pri primer meros os eve evento ntos s alm almace acenado nados s Mo Most stra rar r lo los s ev even ento tos s de un me mes s pa parti rticu cula lar r Mo Most stra rar r lo los s ev even ento tos s de un ti tipo po par parti ticu cula lar r Mo Most stra rar r lo los s ev even ento tos s de un ti tipo po y mes pa part rtic icul ular ares es Sa Sali lir r de del l pr prog ogra rama ma

127

El Elig ige e un una a op opci cion on 1 Da Dar r la la de fe fech cha a pcio de del l n ev even ento to dd dd/m /mm/ m/aa aa 14 14/4/ /4/20 2011 11 Da Dar r desc scri ripc ion de del l ev even ento to Cumple Cum pleani anios os de mi mej mejor or ami amiga. ga. Com Compra prar r reg regalo alo. . Selecc Sel eccion ionar ar la cla clasif sifica icacio cion n del eve evento nto 1. Cumple Cumpleanios anios 2. Exa Examen men 3. Ta Tare rea a 4. Ci Cita ta 5. Ot Otro ro 1 1. In Intr trod oduc ucir ir un nu nuev evo o ev even ento to 2. Mos El Elim imin inar arlos un eve ev even ento tos alm 3. Mostra trar r evento ntos almace acenad nados os 4. Mos Mostra trar r los pri primer meros os eve evento ntos s alm almace acenado nados s 5. Mo Most stra rar r lo los s ev even ento tos s de un me mes s pa parti rticu cula lar r 6. Mo Most stra rar r lo los s ev even ento tos s de un ti tipo po par parti ticu cula lar r 7. Mo Most stra rar r lo los s ev even ento tos s de un ti tipo po y mes pa part rtic icul ular ares es 9. Sa Sali lir r de del l pr prog ogra rama ma El Elig ige e un una a op opci cion on 2 Da Dar r la fe fech cha a de del l ev even ento to dd dd/m /mm/ m/aa aa 15 15/12 /12/2 /201 011 1 Selecc Sel eccion ionar ar la cla clasif sifica icacio cion n del eve evento nto 1. Cumple Cumpleanios anios 2. Exa Examen men 3. Ta Tare rea a 4. Ci Cita ta 5. Ot Otro ro 5 ¡Evento ¡Event o elimin eliminado! ado! 1. In Intr trod oduc ucir ir un nu nuev evo o ev even ento to 2. El Elim imin inar ar un ev even ento to 3. Mos Mostra trar r los eve evento ntos s alm almace acenad nados os

 

128

 

´ CAP ´ITULO 13. SERIALIZA SERIALIZACI  CI ON 

4. Mos Mostra trar r los pri primer meros os eve evento ntos s alm almace acenado nados s 5. Mo Most stra rar r lo los s ev even ento tos s de un me mes s pa parti rticu cula lar r 6. Mo Most stra rar r lo los s ev even ento tos s de un ti tipo po par parti ticu cula lar r 7. Mo Most stra rar r lo los s ev even ento tos s de un ti tipo po y mes pa part rtic icul ular ares es 9. Sa Sali lir r de del l pr prog ogra rama ma El Elig ige e un una a op opci cion on 9

Hasta pronto pronto!!! !!!

13.3 13 .3..

Per erso son nas

13.3 13 .3.1 .1..

Obj Objet etiv ivo o

El objetivo de esta pr´aactica ctica es que el alumno se ejercite en el trabajo de serializaci´on de objetos que contienen objetos.

13.3 13 .3.2 .2..

De Desc scripc ripci´ i´ o on n general

La pr´aactica ctica consiste en leer datos, almacenados en disco, acerca de personas, incluirles su direcci´ oon n y grabar la informaci´oon n de las personas en diversos archivos seg´u un n cierta condici´on. on.

13.3 13 .3.3 .3..

Ma Mate teri rial al

En el enlace  Personas  del   de l cap cap´´ıtulo 13 de la p´agina agina web del libro se encuentran los siguientes archivos:

•   Persona1.class  clase para trabajar con informaci´oon n de personas. •   Persona1.html  documentaci´oon n de la clase  Persona1. •   Direccion.java  clase para trabajar con direcciones de personas. •   Direccion.html  documentaci´oon n de la clase  Direccion. •   datosPersonas.ser  archivo con datos de personas.

13.3 13 .3.4 .4..

De Desa sarro rroll llo o

1. Desca Descargar rgar los archiv archivos os en un mismo director directorio. io. 2. Desar Desarrolla rollarr una clase  Persona  en la que se tenga nombre, direcci´oon n y tel´eefono fo no de cada on on  proporcionada en el persona. La direcci´on on debe ser un objeto de la clase   Direcci´ material. La clase  Persona  deb  debee tene tenerr m´eetodos to dos::

 

13.4. JUEGO DE MEMORIA

 

•   Constructores. •   M´etodos etodos para asignar valor a cada elemento de la estructura. •   M´etodos etodos para recup recuperar erar el valo valorr de cada elemento de la estructura. •  Un m´eetodo tod o par paraa comp comparar arar dos p personas ersonas..

129

•   Un m´eetodo todo para devolver una cadena con la informaci´ oon n de la persona. 3. Gener Generar ar la documen documentaci´ taci´ oon n de la clase  Persona  utilizando el programa  javadoc. 4. Desar Desarrolla rollarr un progr programa ama  GrabarPersonas  en el cual:

•  Se lean los objetos de la clase  Persona1 almacenados en el archiv archivoo datosPersons.ser. •   Para cada persona le le´´ıda se cree un objeto de la clase   Persona   y se agregue su direcci´oon n como un objeto de la clase  Direccion. •  Guardar cada persona en un arreglo con capacidad para un m´aaximo ximo de 50. •  Una vez le´ le´ıdo todo el archivo   datosPersonas.ser, crear tres archivos   DF.ser, interior.ser y  extranjero.ser en los que van a grabar los datos de las personas que viven en el DF, las que vive viven n en el int interior erior de M´exico exico y las que vive viven n fuera de M´eexico, xic o, resp respecti ectivamente. vamente. El programa debe ser robusto, es decir, debe contemplar todos los posibles errores que pueden ocurrir, incluyendo las excepciones que pueden dispararse. 5. Generar la documentaci´ oon n de la clase  GrabarPersonas utilizando el programa javadoc.

13.4 13 .4..

Jue Juego de memor emoria ia

13.4 13 .4.1 .1..

Obj Objet etiv ivo o

El objetivo de esta pr´aactica ctica es que el alumno se ejercite en el trabajo de serializaci´on de objetos en archivos.

13.4 13 .4.2 .2..

De Desc scripc ripci´ i´ o on n general

La pr´aactica ctica consiste en programar un juego, sencillo, de memoria para que el usuario juegue con la computadora. Se tiene un tablero en el que se tienen parejas de n´u umeros, meros, por ejemplo, el mostrado a continuaci´oon. n.

 

130

4 3 2 1

+------------+ | 5 3 * 1 | | 4 2 2 * | | * 5 * 3 | | 1 * 4 * |

 

´ CAP ´ITULO 13. SERIALIZA SERIALIZACI  CI ON 

+------------+ 1 2 3 4

Las reglas del juego son: 1. El jugador en turno (usuario o computado computadora) ra) selecciona dos posiciones del tablero tablero para simular que destapa dos cartas. 2. El progr programa ama debe most mostrar rar lo que hay en ell ellas. as. Si son dos n´ u umeros meros iguales se mantienen visibles y se contabiliza esa pareja al jugador. Si los n´u umeros meros son diferentes entonces se vuelve a tapar la pareja, es decir se vuelven a mostrar asteriscos. Una vez hecho esto, se pasa el turno al siguiente jugador. 3. En cada turno del jugador jugador humano humano,, el progr programa ama debe pregu pregunta ntarle rle si desea hacer una  jugada o guardar el juego. 4. El juego termina una vez que se han destapado todas las cartas. Gana quien haya destapado m´aass parejas.

13.4 13 .4.3 .3..

De Desa sarro rroll llo o

1. Programar el juego de memoria seg´u un n las reglas proporcionadas en la descripci´oon n de la pr´aactica. ctica.

•  Generar las parejas de n´u umeros meros que deben ser encontradas, distribuyendo cada n´u umero mero de forma aleatoria en un tablero pero sin mostrar su valor, es decir, colocan colocando do un de asterisco. aster isco. aleatoria los n´ Para colocar manera u umeros meros en el tablero se puede utilizar el sigu si guie iente nte m´eetodo to do.. /* * Meto Metodo do que que gene genera ra nume numero ros s alea aleato tori rios os entr entre e 0 y max. max. */ privat pri vate e int ran random dom(in (int t max) max) { return ret urn (in (int) t) Mat Math.r h.roun ound(M d(Math ath.ra .rando ndom() m() * max + 0.5); 0.5); }

 

13.4. JUEGO DE MEMORIA

 

131

El tablero puede representarse como el mostrado en la descripci´oon n de la pr´aactica. ctica. Al inicio s´oolo lo debe mostrar asteriscos.

•  El programa debe tener una opci´oon n para recuperar un juego interrumpido y continuar.

•   El programa debe ser robusto, para ello debe incluir manejo de excepcione excepcioness en los lugares apropiados. 2. Docume Documenta ntarr el progr programa ama utilizando utilizando el progr programa ama  javadoc 3. Ejemp Ejemplos los de jugad jugadas as son:

4 3 2 1

+------------+ | * * * * | | * * * * | | * * * * | | * * * * | +------------+ 1 2 3 4

Dam Dame coordenad nadas as de tu tir tirada ada: : 1 4e3las 2 coorde

4 3 2 1

+------------+ | 5 * * * | | * * * * | | * * * 3 | | * * * * | +------------+ 1 2 3 4

Contin Con tinuam uamos os (s/n) (s/n) s

4 3 2 1

+------------+ | * * * * | | * * * * | | * * * * | | * * * * | +------------+ 1 2 3 4

Es mi turn turno, o, tira tirar´ r´ e en 1,4 y 2,2

 

132

 

4 3 2 1

+------------+ | 5 * * * | | * * * * | | * 5 * * | | * * * * |

´ CAP ´ITULO 13. SERIALIZA SERIALIZACI  CI ON 

+------------+ 1 2 3 4 Contin Con tinuam uamos os (s/n) (s/n) n Guarda Gua rdando ndo el tabler tablero o ... Hasta luego!! luego!!

 

View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF