11 TRADUCIDAvxcv

164
2003 Prentice Hall, Inc. Todos los derechos reservados. Capítulo 11 - Cuerdas y Personajes Contorno 11.1 Introducción 11.2 Fundamentos de caracteres y cadenas 11.3 Clase Cadena 11.3.1 Cuerda Constructores 11.3.2 Métodos de Cuerda longitud, charAt y getChars 11.3.3 Strings Comparar 11.3.4 Localización de caracteres y subcadenas en Cuerdas 11.3.5 Extracción Subcadenas de Cuerdas 11.3.6 concatenar cadenas

description

xcvxcvxcvxcvxcv

Transcript of 11 TRADUCIDAvxcv

Page 1: 11 TRADUCIDAvxcv

 2003 Prentice Hall, Inc. Todos los derechos reservados.

Capítulo 11 - Cuerdas y PersonajesContorno 

11.1 Introducción 

11.2 Fundamentos de caracteres y cadenas 

11.3 Clase Cadena 

11.3.1 Cuerda Constructores 

11.3.2 Métodos de Cuerda longitud, charAt y getChars 

11.3.3 Strings Comparar 

11.3.4 Localización de caracteres y subcadenas en Cuerdas 

11.3.5 Extracción Subcadenas de Cuerdas 

11.3.6 concatenar cadenas 

11.3.7 Varios Métodos de Cuerda 

11.3.8 Cadena Método valueOf 

Page 2: 11 TRADUCIDAvxcv

11.4 Clase StringBuffer 

11.4.1 StringBuffer Constructores 

11.4.2 Métodos StringBuffer longitud, capacidad, setLength y ensureCapacity 

11.4.3 StringBuffer Métodos charAt, setCharAt, getChars y reversa

 2003 Prentice Hall, Inc. Todos los derechos reservados.

Capítulo 11 - Cuerdas y Personajes

11.4.4 StringBuffer anexar Métodos 

11.4.5 StringBuffer Inserción y Métodos de eliminación 

11.5 Clase Personajes 

11.6 Clase StringTokenizer 

11.7 Tarjeta de barajar y repartir Simulación 

11.8 Expresiones regulares, patrón del grupo y Matcher 

11.9 (Ejemplo práctico opcional) Acerca de los objetos: Manipulación Evento

Page 3: 11 TRADUCIDAvxcv

 2003 Prentice Hall, Inc. Todos los derechos reservados.

11.1 Introducción Cadena y el carácter de proceso Clase java.lang.String

Clase java.lang.StringBuffer

Clase java.lang.Character

Clase java.util.StringTokenizer

 2003 Prentice Hall, Inc. Todos los derechos reservados.

11.2 Fundamentos de caracteres y cadenas Personajes "Bloques" de los programas de código Java

Cadena Series de caracteres tratado como sola unidad

Page 4: 11 TRADUCIDAvxcv

Puede incluir letras, números, etc.

Objeto de la clase String

 2003 Prentice Hall, Inc. Todos los derechos reservados.

11.3.1 Cuerda Constructores Clase String Proporciona nueve constructores

 2003 Prentice Hall, Inc. 

Todos los derechos reservados.

Contorno

StringConstructors.java 

Línea 17 

Línea 18 

Page 5: 11 TRADUCIDAvxcv

Línea 19 

Línea 20 

Línea 21 

Línea 22 

1 // Fig. 11.1: StringConstructors.java

2 constructores de clase // cadena.

3 javax.swing importación. *;

4

5 pública StringConstructors clase {

6

Page 6: 11 TRADUCIDAvxcv

7    público estático void main (String args [])

8 {

9       Char charArray [] = {'b', 'i', 'r', 't', 'h', '', 'd', 'a', 'y'};

10       bytes ByteArray [] = {(byte) 'n', (byte) «e»,

11 (byte) 'w', (byte) '', (byte) 'y',

12 (byte) 'e', (byte) 'a', (byte) 'r'};

13

14 Cadena s = new String ("hola");

15

16       // constructores uso de Cuerda

17 s1 String = new String ();

18 s2 String = new String (s);

19 s3 String = new String (charArray);

Page 7: 11 TRADUCIDAvxcv

20 s4 String = new String (charArray, 6, 3);

21 s5 String = new String (ByteArray, 4, 4);

22 s6 String = new String (ByteArray);

Constructor copia byte-array subconjunto

Constructor copias matriz de bytes

Constructor copias carácter conjunto de subconjuntos

Constructor copias array de caracteres

Copias Constructor Cadena

Constructor por defecto Cadena instancia cadena vacía

 2003 Prentice Hall, Inc. 

Todos los derechos reservados.

Contorno

StringConstructors.java 

23

Page 8: 11 TRADUCIDAvxcv

24       // Anexar Cuerdas de salida

25 String salida = "s1 =" + s1 + "\ ns2 =" + s2 + "\ ns3 =" + s3 +

26          "\ Ns4 =" + s4 + "\ NS5 =" + s5 + "\ NS6 =" + s6;

27

28 JOptionPane.showMessageDialog (null, la producción,

29          "String Clase de constructores", JOptionPane.INFORMATION_MESSAGE);

30

31 System.exit (0);

32}

33

34} // fin de la clase StringConstructors

 2003 Prentice Hall, Inc. Todos los derechos reservados.

11.3.2 Métodos de Cuerda longitud, charAt y getChars

Page 9: 11 TRADUCIDAvxcv

Longitud Método Determinación de la longitud de cuerda

Al igual que las matrices, cadena s siempre "sabe" su tamaño

A diferencia de array, string s no tienen longitud variable de

instancia

Método charAt Obtén carácter en la ubicación específica en Cadena

GetChars Método Obtener todo el conjunto de caracteres en cadena

 2003 Prentice Hall, Inc. 

Todos los derechos reservados.

Contorno

StringMiscellaneous.java 

Page 10: 11 TRADUCIDAvxcv

Línea 16 

Línea 21

1 // Fig. 11.2: StringMiscellaneous.java

2 // Este programa demuestra la longitud, charAt y getChars

3 // métodos de la clase String.

4 javax.swing importación. *;

5

6 pública clase StringMiscellaneous {

7

8    público estático void main (String args [])

9 {

10 Cadena s1 = "hola";

11       Char charArray [] = new char [5];

Page 11: 11 TRADUCIDAvxcv

12

13 String salida = "s1:" + s1;

14

15       // Método de longitud de la prueba

16 salida + = "\ nLongitud de s1:" + s1.length ();

17

18       // Bucle a través de personajes de s1 y visualizador revirtió

19 salida + = "cadena \ nEl invertido es:";

20

21       for (int cuenta = s1.length () - 1; contar> = 0; count--)

22 salida + = s1.charAt (recuento) + "";

Determinar el número de caracteres en cadena s1

Anexar caracteres de s1 en orden inverso a la salida de cuerda

Page 12: 11 TRADUCIDAvxcv

 2003 Prentice Hall, Inc. 

Todos los derechos reservados.

Contorno

StringMiscellaneous.java 

Línea 25 

23

24       // Copiar los caracteres de cadena en charArray

25 s1.getChars (0, 5, charArray, 0);

26 salida + = "\ nLa matriz de caracteres es:";

27

28       for (int cuenta = 0; contador <charArray.length; contar ++)

29 salida + = charArray [contar];

30

Page 13: 11 TRADUCIDAvxcv

31 JOptionPane.showMessageDialog (null, la producción,

32          "Cuerda métodos de manipulación de carácter de clase",

33          JOptionPane.INFORMATION_MESSAGE);

34

35 System.exit (0);

36}

37

38} // fin de la clase StringMiscellaneous

Copie los caracteres (algunos de) de s1 a charArray

 2003 Prentice Hall, Inc. Todos los derechos reservados.

11.3.3 Strings Comparar La comparación de objetos String Método es igual

Page 14: 11 TRADUCIDAvxcv

Método equalsIgnoreCase

Método compareTo

RegionMatches Método

 2003 Prentice Hall, Inc. 

Todos los derechos reservados.

Contorno

StringCompare.java 

Línea 18 

Línea 24

1 // Fig. 11.3: StringCompare.java

2 // métodos de Cuerda es igual, equalsIgnoreCase, compareTo y regionMatches.

Javax.swing.JOptionPane 3 de importación;

Page 15: 11 TRADUCIDAvxcv

4

5 pública clase StringCompare {

6

7    público estático void main (String args [])

8 {

9 s1 String = new String ("hola"); // s1 es una copia de "hola"

10 Cadena s2 = "adiós";

11 Cadena s3 = "feliz cumpleaños";

12 s4 String = "feliz cumpleaños";

13

14 String salida = "s1 =" + s1 + "\ ns2 =" + s2 + "\ ns3 =" + s3 +

15          "\ Ns4 =" + s4 + "\ n \ n";

16

Page 16: 11 TRADUCIDAvxcv

17       // Prueba para la igualdad

18       if (s1.equals ("hola")) // true

19 salida + = "s1 es igual a \" hola \ "\ n";

20       más

21 salida + = "s1 no es igual a \" hola \ "\ n";

22

23       // Prueba para la igualdad con ==

24       si (s1 == "hola") // false; que no son el mismo objeto

25 salida + = "s1 es igual a \" hola \ "\ n";

26       más

27 salida + = "s1 no es igual a \" hola \ "\ n";

Método es igual a las pruebas de dos objetos para la igualdad mediante la comparación lexicográfica

Operador de igualdad (==) pruebas si ambas referencias se refieren al mismo objeto en la memoria

Page 17: 11 TRADUCIDAvxcv

 2003 Prentice Hall, Inc. 

Todos los derechos reservados.

Contorno

StringCompare.java 

Línea 30 

Líneas 36-40 

Línea 43 y 49

28

29       // Prueba para la igualdad (ignorar caso)

30       si (s3.equalsIgnoreCase (s4)) // true

31 salida + = "s3 s4 es igual \ n";

Page 18: 11 TRADUCIDAvxcv

32       más

33 salida + = "s3 no es igual s4 \ n";

34

35       // CompareTo prueba

36 salida + = "\ ns1.compareTo (s2) es" + s1.compareTo (s2) +

37          "\ Ns2.compareTo (s1) es" + s2.compareTo (s1) +

38          "\ Ns1.compareTo (s1) es" + s1.compareTo (s1) +

39          "\ Ns3.compareTo (s4) es" + s3.compareTo (s4) +

40          "\ Ns4.compareTo (s3) es" + s4.compareTo (s3) + "\ n \ n";

41

42       // RegionMatches prueba (mayúsculas y minúsculas)

43       if (s3.regionMatches (0, s4, 0, 5))

44 de salida + = "Primeros 5 caracteres del partido s3 y s4 \ n";

Page 19: 11 TRADUCIDAvxcv

45       más

46 salida + = "Primeros 5 caracteres de s3 y s4 no coinciden \ n";

47

48       // regionMatches prueba (ignorar caso)

49       si (s3.regionMatches (verdadero, 0, s4, 0, 5))

50 salida + = "Primeros 5 caracteres del partido s3 y s4";

51       más

52 de salida + = "Primeros 5 caracteres de s3 y s4 no coinciden";

Prueba de dos objetos para la igualdad, pero ignorar el caso de las letras en Cuerdas

Método compareTo compara objetos String

Método regionMatches compara porciones de dos objetos String para la igualdad

 2003 Prentice Hall, Inc. 

Todos los derechos reservados.

Contorno

Page 20: 11 TRADUCIDAvxcv

StringCompare.java 

53

54 JOptionPane.showMessageDialog (null, la producción,

55          "comparaciones de cadenas", JOptionPane.INFORMATION_MESSAGE);

56

57 System.exit (0);

58}

59

60} // fin de la clase StringCompare

 2003 Prentice Hall, Inc. 

Todos los derechos reservados.

Contorno

Page 21: 11 TRADUCIDAvxcv

StringStartEnd.java 

Línea 15 

Línea 24

1 // Fig. 11.4: StringStartEnd.java

2 // métodos de Cuerda startsWith y endsWith.

3 javax.swing importación. *;

4

5 pública clase StringStartEnd {

6

7    público estático void main (String args [])

8 {

9 cadenas String [] = {"empezaron", "a partir de", "terminó", "final"};

Page 22: 11 TRADUCIDAvxcv

10 String salida = "";

11

12       // Método de ensayo startsWith

13       for (int cuenta = 0; contador <strings.length; contar ++)

14

15          si (cuerdas [count] .startsWith ("c"))

16 de salida + = "+ cuerdas" \ "[cuenta] +" \ "comienza con \" c \ "\ n";

17

18 salida + = "\ n";

19

20       // Método de prueba startsWith partir de la posición

21       // 2 de la cadena

22       for (int cuenta = 0; contador <strings.length; contar ++)

Page 23: 11 TRADUCIDAvxcv

23

24          si (cuerdas [count] .startsWith ("arte", 2))

25 de salida + = "\" "+ cuerdas [contar] +

26                "\" Comienza con \ "art \" en la posición 2 \ n ";

Método startsWith determina si la cadena comienza con caracteres específicos

 2003 Prentice Hall, Inc. 

Todos los derechos reservados.

Contorno

StringStartEnd.java 

Línea 33 

27

28 salida + = "\ n";

29

Page 24: 11 TRADUCIDAvxcv

30       // Método de ensayo endsWith

31       for (int cuenta = 0; contador <strings.length; contar ++)

32

33          si (cuerdas [count] .endsWith ("ed"))

34 de salida + = "\" "+ cuerdas [cuenta] +" \ "termina con \" ed \ "\ n";

35

36 JOptionPane.showMessageDialog (null, la producción,

37          "Las comparaciones clase String", JOptionPane.INFORMATION_MESSAGE);

38

39 System.exit (0);

40}

41

42} // fin de la clase StringStartEnd

Page 25: 11 TRADUCIDAvxcv

Método endsWith determina si la cadena termina con caracteres específicos

 2003 Prentice Hall, Inc. Todos los derechos reservados.

11.3.4 Localización de caracteres y subcadenas en Cuerdas

Búsqueda de caracteres en cadena Método indexOf

Método lastIndexOf

 2003 Prentice Hall, Inc. 

Todos los derechos reservados.

Contorno

StringIndexMethods.java 

Líneas 12-16 

Page 26: 11 TRADUCIDAvxcv

Líneas 19-26

1 // Fig. 11.5: StringIndexMethods.java

2 // Cuerda métodos de búsqueda indexOf y lastIndexOf.

3 javax.swing importación. *;

4

5 pública StringIndexMethods clase {

6

7    público estático void main (String args [])

8 {

9 cartas de Cuerda = "abcdefghijklmabcdefghijklm";

10

11       // Test indexOf para localizar un carácter en una cadena

Page 27: 11 TRADUCIDAvxcv

12 String salida = "" c "se encuentra en el índice" + letters.indexOf ('c');

13

14 salida + = "\ n'a 'se encuentra en el índice" + letters.indexOf (' a ', 1);

15

16 salida + = "\ n" $ "se encuentra en el índice" + letters.indexOf ('$');

17

18       // LastIndexOf prueba para encontrar un carácter en una cadena

19 salida + = "\ n \ nLast 'c' se encuentra en el índice" +

20 letters.lastIndexOf ('c');

21

22 salida + = "\ nLast 'a' se encuentra en el índice" +

23 letters.lastIndexOf ("a", 25);

24

Page 28: 11 TRADUCIDAvxcv

25 salida + = "'$' \ nLast se encuentra en el índice" +

26 letters.lastIndexOf ('$');

27

Método indexOf encuentra primera aparición del personaje en Cadena

Método lastIndexOf encuentra la última ocurrencia del carácter en cadena

 2003 Prentice Hall, Inc. 

Todos los derechos reservados.

Contorno

StringIndexMethods.java 

Líneas 29-46 

28       // Test indexOf ubicar una subcadena en una cadena

29 salida + = "\ n \ n \" def \ "se encuentra en el índice" +

30 letters.indexOf ("def");

Page 29: 11 TRADUCIDAvxcv

31

32 salida + = "\ n \" def \ "se encuentra en el índice" +

33 letters.indexOf ("def", 7);

34

35 salida + = "\ n \" hola \ "se encuentra en el índice" +

36 letters.indexOf ("hola");

37

38       // LastIndexOf prueba para encontrar una subcadena en una cadena

39 salida + = "\ n \ nLast \" def \ "se encuentra en el índice" +

40 letters.lastIndexOf ("def");

41

42 salida + = "\ nLast \" def \ "se encuentra en el índice" +

43 letters.lastIndexOf ("def", 25);

Page 30: 11 TRADUCIDAvxcv

44

45 salida + = "\ nLast \" hola \ "se encuentra en el índice" +

46 letters.lastIndexOf ("hola");

47

48 JOptionPane.showMessageDialog (null, la producción,

49          "Cuerda métodos de búsqueda", JOptionPane.INFORMATION_MESSAGE);

50

51 System.exit (0);

52}

53

54} // fin de la clase StringIndexMethods

Métodos indexOf y lastIndexOf también puede encontrar las apariciones de subcadenas

 2003 Prentice Hall, Inc. 

Todos los derechos reservados.

Page 31: 11 TRADUCIDAvxcv

Contorno

StringIndexMethods.java 

 2003 Prentice Hall, Inc. Todos los derechos reservados.

11.3.5 Extracción Subcadenas de Cuerdas Crear cadena s de otra cadena s Método subcadena

 2003 Prentice Hall, Inc. 

Todos los derechos reservados.

Contorno

SubString.java 

Línea 13 

Línea 16

Page 32: 11 TRADUCIDAvxcv

1 // Fig. 11.6: SubString.java

2 // Cuerda métodos de clase subcadena.

3 javax.swing importación. *;

4

5 pública clase subcadena {

6

7    público estático void main (String args [])

8 {

9 cartas de Cuerda = "abcdefghijklmabcdefghijklm";

10

11       // métodos subcadena prueba

12 String salida = "Subcadena del índice 20 al final es" +

13          "\" "+ Letters.substring (20) +" \ "\ n";

Page 33: 11 TRADUCIDAvxcv

14

15 salida + = "Subcadena de índice de 3 hasta 6 es" +

16          "\" "+ Letters.substring (3, 6) +" \ "";

17

18 JOptionPane.showMessageDialog (null, la producción,

19          "String substring métodos", JOptionPane.INFORMATION_MESSAGE);

20

21 System.exit (0);

22}

23

24} // fin de la clase subcadena

Comenzando en el índice 20, extraer personajes de las letras de Cuerda

Extrae caracteres de índice de 3 a 6 de las cartas de Cuerda

 2003 Prentice Hall, Inc. Todos los derechos reservados.

Page 34: 11 TRADUCIDAvxcv

11.3.6 concatenar cadenas Concat Método Concatenar dos objetos String

 2003 Prentice Hall, Inc. 

Todos los derechos reservados.

Contorno

StringConcatenation.java 

Línea 14 

Línea 15

1 // Fig. 11.7: StringConcatenation.java

2 método concat // String.

3 javax.swing importación. *;

Page 35: 11 TRADUCIDAvxcv

4

5 pública clase StringConcatenation {

6

7    público estático void main (String args [])

8 {

9 s1 String = new String ("Happy");

10 s2 String = new String ("Cumpleaños");

11

12 String salida = "s1 =" + s1 + "\ ns2 =" + s2;

13

14 salida + = "\ n \ nResult de s1.concat (s2) =" + s1.concat (s2);

15 salida + = "\ ns1 después de concatenación =" + s1;

16

Page 36: 11 TRADUCIDAvxcv

17 JOptionPane.showMessageDialog (null, la producción,

18          "Método de cadena concat", JOptionPane.INFORMATION_MESSAGE);

19

20 System.exit (0);

21}

22

23} // fin de la clase StringConcatenation

Concatenar cadena s2 a cadena s1

Sin embargo, s1 cadena no se modifica por el método concat

 2003 Prentice Hall, Inc. Todos los derechos reservados.

11.3.7 Varios Métodos de Cuerda Varios métodos de Cuerda Regreso copias modificadas de cuerdas

Volver matriz de caracteres

Page 37: 11 TRADUCIDAvxcv

 2003 Prentice Hall, Inc. 

Todos los derechos reservados.

Contorno

StringMiscellaneous2.java 

Línea 17 

Línea 20 

Línea 21 

Línea 24

1 // Fig. 11.8: StringMiscellaneous2.java

2 // métodos de Cuerda reemplazan, toLowerCase, toUpperCase, asiento y ToCharArray.

Page 38: 11 TRADUCIDAvxcv

3 javax.swing importación. *;

4

5 pública clase StringMiscellaneous2 {

6

7    público estático void main (String args [])

8 {

9 s1 String = new String ("hola");

10 s2 String = new String ("adiós");

11 Cadena s3 = new String ("espacios");

12

13 String salida = "s1 =" + s1 + "\ ns2 =" + s2 + "\ ns3 =" + s3;

14

15       // Método de ensayo reemplazar

Page 39: 11 TRADUCIDAvxcv

16 salida + = "\ n \ nReplace 'l' con 'L' en s1:" +

17 s1.replace ('l', 'L');

18

19       // ToLowerCase prueba y toUpperCase

20 salida + = "\ n \ ns1.toUpperCase () =" + s1.toUpperCase () +

21          "\ Ns2.toLowerCase () =" + s2.toLowerCase ();

22

23       // Método de ajuste de prueba

24 salida + = "\ n \ ns3 después del ajuste = \" "+ s3.trim () +" \ "";

25

Utilice el método toUpperCase para volver copia s1 en el que cada personaje es mayúscula

Utilice el método del ajuste para volver copia s3 en el que se elimina el espacio en blanco

Utilice el método toLowerCase para volver copia s2 en el que cada personaje es mayúscula

Utilice el método reemplazar a regresar copia s1 en el que cada ocurrencia de 'l' se sustituye por 'L'

Page 40: 11 TRADUCIDAvxcv

 2003 Prentice Hall, Inc. 

Todos los derechos reservados.

Contorno

StringMiscellaneous2.java 

Línea 27 

26       // Método ToCharArray prueba

27       Char charArray [] = s1.toCharArray ();

28 salida + = "\ n \ ns1 como una matriz de caracteres =";

29

30       for (int cuenta = 0; contador <charArray.length; ++ recuento)

31 salida + = charArray [contar];

32

33 JOptionPane.showMessageDialog (null, la producción,

Page 41: 11 TRADUCIDAvxcv

34          "Los métodos adicionales de Cuerda", JOptionPane.INFORMATION_MESSAGE);

35

36 System.exit (0);

37}

38

39} // fin de la clase StringMiscellaneous2

Utilice el método ToCharArray regresar matriz de caracteres de s1

 2003 Prentice Hall, Inc. Todos los derechos reservados.

11.3.8 Cadena Método valueOf Cadena proporciona métodos estáticos de clase Método valueOf

String representación del objeto, datos, etc.

 2003 Prentice Hall, Inc. 

Todos los derechos reservados.

Page 42: 11 TRADUCIDAvxcv

Contorno

StringValueOf.java 

Líneas 20-26

1 // Fig. 11.9: StringValueOf.java

2 métodos // Cadena valueOf.

3 javax.swing importación. *;

4

5 pública clase StringValueOf {

6

7    público estático void main (String args [])

8 {

9       Char charArray [] = {'a', 'b', 'c', 'd', 'e', 'f'};

10       boolean booleanValue = true;

Page 43: 11 TRADUCIDAvxcv

11       Char characterValue = 'Z';

12       int IntegerValue = 7;

13       larga longValue = 10000000L;

14       flotar floatValue = 2.5f; // f sufijo indica que 2,5 es un flotador

15       doble doubleValue = 33,333;

16 Objeto ObjectRef = "hola"; // cadena de asignación a una referencia de objeto

17

18 Cadena de salida = "matriz de caracteres =" + String.valueOf (charArray) +

19          "\ NEl de matriz de caracteres =" + String.valueOf (charArray, 3, 3) +

20          "\ Nboolean =" + String.valueOf (booleanValue) +

21          "\ Nchar =" + String.valueOf (characterValue) +

22          "\ Nint =" + String.valueOf (IntegerValue) +

23          "\ Nlong =" + String.valueOf (longValue) +

Page 44: 11 TRADUCIDAvxcv

24          "\ Nfloat =" + String.valueOf (floatValue) +

25          "\ Ndouble =" + String.valueOf (doubleValue) +

26          "\ NObject =" + String.valueOf (ObjectRef);

método estático valueOf de la clase String devuelve representación String de varios tipos

 2003 Prentice Hall, Inc. 

Todos los derechos reservados.

Contorno

StringValueOf.java 

27

28 JOptionPane.showMessageDialog (null, la producción,

29          "métodos valueOf cadena", JOptionPane.INFORMATION_MESSAGE);

30

31 System.exit (0);

32}

Page 45: 11 TRADUCIDAvxcv

33

34} // fin de la clase StringValueOf

 2003 Prentice Hall, Inc. Todos los derechos reservados.

11.4 Clase StringBuffer Clase StringBuffer Cuando se crea objeto String, su contenido no puede cambiar

Se utiliza para crear y manipular datos de cadena dinámicos

es decir, modificable Cadena s

Puede almacenar caracteres basado en la capacidad

Capacidad expande dinámicamente para manejar caracteres

adicionales

Utiliza los operadores + y + = para la concatenación de cadenas

 2003 Prentice Hall, Inc. Todos los derechos reservados.

11.4.1 StringBuffer Constructores

Page 46: 11 TRADUCIDAvxcv

Tres constructores StringBuffer Por defecto crea StringBuffer sin caracteres

Capacidad de 16 caracteres

 2003 Prentice Hall, Inc. 

Todos los derechos reservados.

Contorno

StringBufferConstructors.java 

Línea 9 

Línea 10 

Línea 11 

Page 47: 11 TRADUCIDAvxcv

Líneas 13-15

1 // Fig. 11.10: StringBufferConstructors.java

2 constructores // StringBuffer.

3 javax.swing importación. *;

4

5 pública StringBufferConstructors clase {

6

7    público estático void main (String args [])

8 {

9 StringBuffer Buffer1 = new StringBuffer ();

10 StringBuffer buffer2 = new StringBuffer (10);

11 StringBuffer buffer3 = new StringBuffer ("hola");

Page 48: 11 TRADUCIDAvxcv

12

13 String salida = "Buffer1 = \" "+ buffer1.toString () +" \ "" +

14          "\ Nbuffer2 = \" "+ buffer2.toString () +" \ "" +

15          "\ Nbuffer3 = \" "+ buffer3.toString () +" \ "";

16

17 JOptionPane.showMessageDialog (null, la producción,

18          "constructores", StringBuffer JOptionPane.INFORMATION_MESSAGE);

19

20 System.exit (0);

21}

22

23} // fin de la clase StringBufferConstructors

Por defecto constructor crea StringBuffer vacío con capacidad de 16 caracteres

Page 49: 11 TRADUCIDAvxcv

Segundo constructor crea StringBuffer vacío con capacidad de (10) caracteres especificados

En tercer constructor crea StringBuffer con la cadena "hola" y capacidad de 16 caracteres

ToString método devuelve representación String de StringBuffer

 2003 Prentice Hall, Inc. Todos los derechos reservados.

11.4.2 Métodos StringBuffer longitud, capacidad, setLength y ensureCapacity

Longitud Método Longitud Volver StringBuffer

Capacidad de Método Regreso capacidad StringBuffer

Método setLength Aumentar o disminuir la longitud StringBuffer

Método ensureCapacity

Page 50: 11 TRADUCIDAvxcv

Establecer la capacidad StringBuffer

Garantizar que StringBuffer tiene capacidad mínima

 2003 Prentice Hall, Inc. 

Todos los derechos reservados.

Contorno

StringBufferCapLen.java 

Línea 12 

Línea 12 

Línea 14 

Línea 17

Page 51: 11 TRADUCIDAvxcv

1 // Fig. 11.11: StringBufferCapLen.java

2 // StringBuffer longitud, setLength, capacidad y ensureCapacity métodos.

3 javax.swing importación. *;

4

5 pública clase StringBufferCapLen {

6

7    público estático void main (String args [])

8 {

9 búfer StringBuffer = new StringBuffer ("Hola, ¿cómo estás?");

10

11 String salida = "buffer =" + buffer.toString () + "\ nLongitud =" +

12 buffer.length (+) "\ ncapacity =" + buffer.capacity ();

13

Page 52: 11 TRADUCIDAvxcv

14 buffer.ensureCapacity (75);

15 salida + = "\ n capacidad \ nNueva =" + buffer.capacity ();

16

17 buffer.setLength (10);

18 salida + = "\ n longitud \ nNueva =" + buffer.length () +

19          "\ Nbuf =" + buffer.toString ();

20

21 JOptionPane.showMessageDialog (null, la producción,

22          "Longitud de StringBuffer y Métodos de capacidad",

23          JOptionPane.INFORMATION_MESSAGE);

24

Longitud método devuelve longitud StringBuffer

Capacidad método devuelve la capacidad StringBuffer

Utilice el método ensureCapacity para establecer capacidad para 75

Page 53: 11 TRADUCIDAvxcv

Utilice el método setLength para establecer la longitud de 10

 2003 Prentice Hall, Inc. 

Todos los derechos reservados.

Contorno

StringBufferCapLen.java 

Sólo los 10 personajes de StringBuffer se imprimen 

25 System.exit (0);

26}

27

28} // fin de la clase StringBufferCapLen

Sólo los 10 personajes de StringBuffer se imprimen

 2003 Prentice Hall, Inc. Todos los derechos reservados.

Page 54: 11 TRADUCIDAvxcv

11.4.3 StringBuffer Métodos charAt, setCharAt, getChars y reversa

La manipulación de caracteres StringBuffer Método charAt

Regreso carácter StringBuffer en el índice especificado

Método setCharAt

Conjunto de caracteres StringBuffer en el índice especificado

GetChars Método

Regreso matriz de caracteres de StringBuffer

Método inverso

Invierta contenidos StringBuffer

 2003 Prentice Hall, Inc. 

Todos los derechos reservados.

Page 55: 11 TRADUCIDAvxcv

Contorno

StringBufferChars.java 

Líneas 12-13 

Línea 16 

Líneas 22-23 

1 // Fig. 11.12: StringBufferChars.java

2 métodos // StringBuffer charAt, setCharAt, GetChars y marcha atrás.

3 javax.swing importación. *;

4

5 pública StringBufferChars clase {

6

Page 56: 11 TRADUCIDAvxcv

7    público estático void main (String args [])

8 {

9 búfer StringBuffer = new StringBuffer ("hola");

10

11 String salida = "buffer =" + buffer.toString () +

12          "\ NCharacter a 0:" + buffer.charAt (0) +

13          "\ NCharacter en 4:" + buffer.charAt (4);

14

15       Char charArray [] = new char [buffer.length ()];

16 buffer.getChars (0, buffer.length (), charArray, 0);

17 de salida + = "\ n \ nLos personajes son:";

18

19       for (int cuenta = 0; contador <charArray.length; ++ recuento)

Page 57: 11 TRADUCIDAvxcv

20 salida + = charArray [contar];

21

22 buffer.setCharAt (0, 'H');

23 buffer.setCharAt (6, 'T');

24 salida + = "\ n \ nbuf =" + buffer.toString ();

25

Devolver caracteres StringBuffer en los índices 0 y 4, respectivamente

Regreso matriz de caracteres de StringBuffer

Reemplazar caracteres en los índices 0 y 6 con 'H' y 'T', respectivamente,

 2003 Prentice Hall, Inc. 

Todos los derechos reservados.

Contorno

Page 58: 11 TRADUCIDAvxcv

StringBufferChars.java 

Líneas 26 

26 buffer.reverse ();

27 salida + = "\ n \ nbuf =" + buffer.toString ();

28

29 JOptionPane.showMessageDialog (null, la producción,

30          "métodos de carácter StringBuffer",

31          JOptionPane.INFORMATION_MESSAGE);

32

33 System.exit (0);

34}

35

Page 59: 11 TRADUCIDAvxcv

36} // fin de la clase StringBufferChars

Caracteres inversas en StringBuffer

 2003 Prentice Hall, Inc. Todos los derechos reservados.

11.4.4 StringBuffer anexar Métodos Append Método Permitir que los valores de datos que se añadirán a StringBuffer

 2003 Prentice Hall, Inc. 

Todos los derechos reservados.

Contorno

StringBufferAppend.java 

Línea 21 

Línea 23 

Page 60: 11 TRADUCIDAvxcv

Línea 25 

Línea 27 

1 // Fig. 11.13: StringBufferAppend.java

2 // StringBuffer anexar métodos.

3 javax.swing importación. *;

4

5 pública clase StringBufferAppend {

6

7    público estático void main (String args [])

8 {

9 Objeto ObjectRef = "hola";

10 cadena String = "adiós";

Page 61: 11 TRADUCIDAvxcv

11       Char charArray [] = {'a', 'b', 'c', 'd', 'e', 'f'};

12       boolean booleanValue = true;

13       Char characterValue = 'Z';

14       int IntegerValue = 7;

15       larga longValue = 10000000;

16       flotar floatValue = 2.5f; // f sufijo indica 2.5 es un flotador

17       doble doubleValue = 33,333;

18 StringBuffer lastBuffer = new StringBuffer ("último StringBuffer");

19 búfer StringBuffer = new StringBuffer ();

20

21 buffer.append (ObjectRef);

22 buffer.append (""); // cada uno de ellos contiene dos espacios

23 buffer.append (cadena);

Page 62: 11 TRADUCIDAvxcv

24 buffer.append ("");

25 buffer.append (charArray);

26 buffer.append ("");

27 buffer.append (charArray, 0, 3);

Anexar cadena "hola" a StringBuffer

Anexar String "adiós"

Anexar "abcdef"

Anexar "abc"

 2003 Prentice Hall, Inc. 

Todos los derechos reservados.

Contorno

StringBufferAppend.java 

Línea 29-39 

Page 63: 11 TRADUCIDAvxcv

28 buffer.append ("");

29 buffer.append (booleanValue);

30 buffer.append ("");

31 buffer.append (characterValue);

32 buffer.append ("");

33 buffer.append (IntegerValue);

34 buffer.append ("");

35 buffer.append (longValue);

36 buffer.append ("");

37 buffer.append (floatValue);

38 buffer.append ("");

39 buffer.append (doubleValue);

40 buffer.append ("");

Page 64: 11 TRADUCIDAvxcv

41 buffer.append (lastBuffer);

42

43 JOptionPane.showMessageDialog (null,

44          "Tampón =" + buffer.toString (), "StringBuffer anexar Métodos",

45          JOptionPane.INFORMATION_MESSAGE);

46

47 System.exit (0);

48}

49

50} // fin StringBufferAppend

Anexar boolean, char, int, long, float y double

 2003 Prentice Hall, Inc. Todos los derechos reservados.

11.4.5 StringBuffer Inserción y Métodos de eliminación

Page 65: 11 TRADUCIDAvxcv

Método de inserción Permitir que los valores de tipo de datos que se insertan en StringBuffer

Métodos eliminar y deleteCharAt Permitir caracteres para ser removidos de StringBuffer

 2003 Prentice Hall, Inc. 

Todos los derechos reservados.

Contorno

StringBufferInsert.java 

Líneas 20-26 

1 // Fig. 11.14: StringBufferInsert.java

2 métodos // StringBuffer insertar y eliminar.

3 javax.swing importación. *;

Page 66: 11 TRADUCIDAvxcv

4

5 pública clase StringBufferInsert {

6

7    público estático void main (String args [])

8 {

9 Objeto ObjectRef = "hola";

10 cadena String = "adiós";

11       Char charArray [] = {'a', 'b', 'c', 'd', 'e', 'f'};

12       boolean booleanValue = true;

13       Char characterValue = 'K';

14       int IntegerValue = 7;

15       larga longValue = 10000000;

16       flotar floatValue = 2.5f; // f sufijo indica que 2,5 es un flotador

Page 67: 11 TRADUCIDAvxcv

17       doble doubleValue = 33,333;

18 búfer StringBuffer = new StringBuffer ();

19

20 buffer.insert (0, ObjectRef);

21 buffer.insert (0, ""); // cada uno de ellos contiene dos espacios

22 buffer.insert (0, cadena);

23 buffer.insert (0, "");

24 buffer.insert (0, charArray);

25 buffer.insert (0, "");

26 buffer.insert (0, charArray, 3, 3);

Use el método de inserción para insertar datos en comienzo de StringBuffer

 2003 Prentice Hall, Inc. 

Todos los derechos reservados.

Contorno

Page 68: 11 TRADUCIDAvxcv

StringBufferInsert.java 

Líneas 27-38 

Línea 42 

Línea 43

27 buffer.insert (0, "");

28 buffer.insert (0, booleanValue);

29 buffer.insert (0, "");

30 buffer.insert (0, characterValue);

31 buffer.insert (0, "");

32 buffer.insert (0, IntegerValue);

33 buffer.insert (0, "");

Page 69: 11 TRADUCIDAvxcv

34 buffer.insert (0, longValue);

35 buffer.insert (0, "");

36 buffer.insert (0, floatValue);

37 buffer.insert (0, "");

38 buffer.insert (0, doubleValue);

39

40 String salida = "buffer después de inserciones: \ n" + buffer.toString ();

41

42 buffer.deleteCharAt (10); // eliminar 5 en 2.5

43 buffer.delete (2, 6); // eliminar 0.333 en 33.333

44

45 salida + = "\ n \ nbuffer después de eliminaciones: \ n" + buffer.toString ();

46

Page 70: 11 TRADUCIDAvxcv

47 JOptionPane.showMessageDialog (null, la producción,

48          "StringBuffer insertar / eliminar", JOptionPane.INFORMATION_MESSAGE);

49

50 System.exit (0);

51}

52

53} // fin de la clase StringBufferInsert

Use el método de inserción para insertar datos en comienzo de StringBuffer

Utilice el método deleteCharAt para eliminar el carácter de índice 10 en StringBuffer

Retire los personajes de índices 2 a 5 (inclusive)

 2003 Prentice Hall, Inc. 

Todos los derechos reservados.

Contorno

StringBufferInsert.java 

Page 71: 11 TRADUCIDAvxcv

 2003 Prentice Hall, Inc. Todos los derechos reservados.

11.5 Clase Personajes Tratar variables primitivas como objetos Clases Tipo de contenedor

Boolean

Personaje

Doble

Flotador

Byte

Corto

Entero

Largo

Examinamos la clase de personaje

Page 72: 11 TRADUCIDAvxcv

 2003 Prentice Hall, Inc. 

Todos los derechos reservados.

Contorno

StaticCharMethods.java

1 // Fig. 11.15: StaticCharMethods.java

2 métodos de prueba del carácter // estáticas y métodos de conversión caso.

3 import java.awt. *;

4 java.awt.event importación. *;

5 javax.swing importación. *;

6

7 pública clase StaticCharMethods extiende JFrame {

8    privado Char c;

9    privada promptLabel JLabel;

10    privada inputField JTextField;

Page 73: 11 TRADUCIDAvxcv

11    privada areaSalida JTextArea;

12

13    // Constructor construye GUI

14    StaticCharMethods públicos ()

15 {

16       super ("Métodos de carácter estático");

17

18 Container contenedor = getContentPane ();

19 container.setLayout (new FlowLayout ());

20

21 promptLabel = new JLabel ("Introduzca un carácter y pulse Enter");

22 contenedor.add (promptLabel);

23 inputField = new JTextField (5);

Page 74: 11 TRADUCIDAvxcv

24

 2003 Prentice Hall, Inc. 

Todos los derechos reservados.

Contorno

StaticCharMethods.java

25 inputField.addActionListener (

26

27          new ActionListener () {// clase interna anónima

28

29             // Evento mango campo de texto

30             público void actionPerformed (ActionEvent evento)

31 {

32 Cadena s = event.getActionCommand ();

33 c = s.charAt (0);

Page 75: 11 TRADUCIDAvxcv

34 buildOutput ();

35}

36

37} // fin de la clase interna anónima

38

39); // fin de la llamada a addActionListener

40

41 contenedor.add (InputField);

42 areaSalida = new JTextArea (10, 20);

43 contenedor.add (areaSalida);

44

45 setSize (300, 220); // establecer el tamaño de la ventana

46 setVisible (true); // mostrar la ventana

Page 76: 11 TRADUCIDAvxcv

47

48} // fin del constructor

49

 2003 Prentice Hall, Inc. 

Todos los derechos reservados.

Contorno

StaticCharMethods.java 

Línea 54 

Línea 56 

Línea 58 

Page 77: 11 TRADUCIDAvxcv

Línea 59 

Línea 60 

Líneas 61-62

50    // Ver información de carácter en areaSalida

51    privado anular buildOutput ()

52 {

53 outputArea.setText ("se define:" + Character.isDefined (c) +

54          "Dígitos \ nis:" + Character.isDigit (c) +

55          "Primer carácter nis \ en un identificador Java:" +

56 Character.isJavaIdentifierStart (c) +

57          "Parte \ nis de un identificador Java:" +

58 Character.isJavaIdentifierPart (c) +

Page 78: 11 TRADUCIDAvxcv

59          "Carta \ nis:" + Character.isLetter (c) +

60          "Carta nis \ o dígito:" + Character.isLetterOrDigit (c) +

61          "\ Nis minúsculas:" + Character.isLowerCase (c) +

62          "\ Nis mayúsculas:" + Character.isUpperCase (c) +

63          "\ Na mayúsculas:" + Character.toUpperCase (c) +

64          "\ Na minúsculas:" + Character.toLowerCase (c));

65}

66

67    // Crear StaticCharMethods objeto de comenzar la ejecución

68    público estático void main (String args [])

69 {

70 StaticCharMethods aplicación = nuevos StaticCharMethods ();

71 application.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);

Page 79: 11 TRADUCIDAvxcv

72}

73

74} // fin de la clase StaticCharMethods

Determinar dígitos Unicode si c se define

Determinar si c puede ser utilizado como primer carácter de identificador

Determinar si c se puede utilizar como carácter identificador

Determinar si c es una letra

Determine si c es letra o dígito

Determinar si c es mayúscula o minúscula

 2003 Prentice Hall, Inc. 

Todos los derechos reservados.

Contorno

StaticCharMethods.java

Page 80: 11 TRADUCIDAvxcv

 2003 Prentice Hall, Inc. 

Todos los derechos reservados.

Contorno

StaticCharMethods2.java

1 // Fig. 11.15: StaticCharMethods2.java

2 métodos de conversión de caracteres // estáticas.

3 import java.awt. *;

4 java.awt.event importación. *;

5 javax.swing importación. *;

6

7 pública clase StaticCharMethods2 extiende JFrame {

8    privado Char c;

9    privado int dígitos, radix;

10    prompt1 JLabel privado, prompt2;

Page 81: 11 TRADUCIDAvxcv

11    JTextField entrada privada, radixField;

12    privada JButton Tochar, Toint;

13

14    // Constructor construye GUI

15    StaticCharMethods2 público ()

16 {

17       super ("carácter de conversión Métodos");

18

19 Container contenedor = getContentPane ();

20 container.setLayout (new FlowLayout ());

21

22 prompt1 = new JLabel ("Introduzca un dígito o carácter");

23 de entrada = new JTextField (5);

Page 82: 11 TRADUCIDAvxcv

24 contenedor.add (prompt1);

25 contenedor.add (entrada);

 2003 Prentice Hall, Inc. 

Todos los derechos reservados.

Contorno

StaticCharMethods2.java 

Línea 44 

26

27 prompt2 = new JLabel ("Introduzca un radix");

28 radixField = new JTextField (5);

29 contenedor.add (prompt2);

30 contenedor.add (radixField);

31

Page 83: 11 TRADUCIDAvxcv

32 Tochar = new JButton ("Convertir dígitos al carácter");

33 toChar.addActionListener (

34

35          new ActionListener () {// clase interna anónima

36

37             // Manejar evento Tochar JButton

38             público void actionPerformed (ActionEvent ActionEvent)

39 {

40 dígitos = Integer.parseInt (input.getText ());

41 radix = Integer.parseInt (radixField.getText ());

42 JOptionPane.showMessageDialog (null,

43                   "Convertir dígitos al personaje:" +

44 Character.forDigit (dígito, radix));

Page 84: 11 TRADUCIDAvxcv

45}

46

47} // fin de la clase interna anónima

48

49); // fin de la llamada a addActionListener

50

Utilice el método forDigit convertir int dígitos para el número de caracteres del sistema especificado

por int radix

 2003 Prentice Hall, Inc. 

Todos los derechos reservados.

Contorno

StaticCharMethods2.java 

Línea 64

Page 85: 11 TRADUCIDAvxcv

51 Toint = new JButton ("Convertir personaje dígitos");

52 toInt.addActionListener (

53

54          new ActionListener () {// clase interna anónima

55

56             // Manejar evento Toint JButton

57             público void actionPerformed (ActionEvent ActionEvent)

58 {

59 Cadena s = input.getText ();

60 c = s.charAt (0);

61 radix = Integer.parseInt (radixField.getText ());

62 JOptionPane.showMessageDialog (null,

63                   "Convertir personaje dígitos:" +

Page 86: 11 TRADUCIDAvxcv

64 Character.digit (c, radix));

65}

66

67} // fin de la clase interna anónima

68

69); // fin de la llamada a addActionListener

70

71 contenedor.add (Tochar);

72 contenedor.add (Toint);

73 setSize (275, 150); // establecer el tamaño de la ventana

74 setVisible (true); // mostrar la ventana

75}

Page 87: 11 TRADUCIDAvxcv

Utilice el método dígitos para convertir carbón c para entero número del sistema especificado por int

radix

 2003 Prentice Hall, Inc. 

Todos los derechos reservados.

Contorno

StaticCharMethods2.java

76

77    // Crear StaticCharMethods2 objeto ejecutar la aplicación

78    público estático void main (String args [])

79 {

80 aplicaciones StaticCharMethods2 = new StaticCharMethods2 ();

81 application.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);

82}

83

Page 88: 11 TRADUCIDAvxcv

84} // fin de la clase StaticCharMethods2

 2003 Prentice Hall, Inc. 

Todos los derechos reservados.

Contorno

OtherCharMethods.java 

Líneas 12-15

1 // Fig. 11.17: OtherCharMethods.java

2 // métodos carácter no estáticos.

3 javax.swing importación. *;

4

5 pública OtherCharMethods clase {

6

7    público estático void main (String args [])

Page 89: 11 TRADUCIDAvxcv

8 {

C1 = 9 Carácter nuevo personaje ('A');

C2 10 caracteres = new Carácter ('a');

11

12 String salida = "c1 =" + c1.charValue () +

13          "\ Nc2 =" + c2.toString ();

14

15       si (c1.equals (c2))

16 salida + = "\ n \ nc1 y c2 son iguales";

17       más

18 salida + = "\ n \ nc1 y c2 no son iguales";

19

20 JOptionPane.showMessageDialog (null, la producción,

Page 90: 11 TRADUCIDAvxcv

21          "métodos de carácter no estáticos",

22          JOptionPane.INFORMATION_MESSAGE);

23

24 System.exit (0);

25}

26

27} // fin de la clase OtherCharMethods

Personajes métodos no estáticos charValue, toString y equals

 2003 Prentice Hall, Inc. Todos los derechos reservados.

11.6 Clase StringTokenizer Tokenizer Cadena de reparto en subcadenas individuales

Uso delimitador

Page 91: 11 TRADUCIDAvxcv

Java ofrece java.util.StringTokenizer

 2003 Prentice Hall, Inc. 

Todos los derechos reservados.

Contorno

TokenTest.java 

Línea 24

1 // Fig. 11.18: TokenTest.java

2 clase // StringTokenizer.

3 import java.util. *;

4 import java.awt. *;

5 java.awt.event importación. *;

6 javax.swing importación. *;

7

Page 92: 11 TRADUCIDAvxcv

8 pública clase TokenTest extiende JFrame {

9    privada promptLabel JLabel;

10    privada inputField JTextField;

11    privada areaSalida JTextArea;

12

13    // Configurar GUI y manejo de eventos

14    TokenTest público ()

15 {

16       súper ( "Prueba de Clase StringTokenizer" );

17

18 Container contenedor = getContentPane ();

19 container.setLayout ( nueva FlowLayout ());

20

Page 93: 11 TRADUCIDAvxcv

21 promptLabel = nueva JLabel ( "Introduzca una frase y pulse Intro" );

22 contenedor.add (promptLabel);

23

24 inputField = nueva JTextField ( 20 );

inputField contiene Cadena a ser analizado por StringTokenizer

2003 Prentice Hall, Inc.

Todos los derechos reservados.

Contorno

TokenTest.java 

Línea 33 Línea 36 Líneas 38-39

25 inputField.addActionListener (

Page 94: 11 TRADUCIDAvxcv

26

27          nueva ActionListener () { // clase interna anónima

28

29             // Evento campo de texto mango

30             público anular actionPerformed (ActionEvent evento)

31 {

32 fichas StringTokenizer =

33                   nueva StringTokenizer (event.getActionCommand ());

34

35 outputArea.setText ( "Número de elementos:" +

36 tokens.countTokens () + "tokens \ nLos son: \ n" );

37

38                mientras que (tokens.hasMoreTokens ())

Page 95: 11 TRADUCIDAvxcv

39 outputArea.append (tokens.nextToken () + "\ n" );

40 }

41

42 } // fin de la clase interna anónima

43

44 ); // fin de la llamada a addActionListener

45

46 contenedor.add (InputField);

47

48 areaSalida = nueva JTextArea ( 10 , 20 );

49 outputArea.setEditable ( false );

50 contenedor.add ( nueva JScrollPane (areaSalida));

51 setSize ( 275 , 240 ); // establecer el tamaño de la ventana

Page 96: 11 TRADUCIDAvxcv

52 setVisible ( verdadero ); // mostrar la ventana

53 }

Utilice StringTokenizer para analizar el uso de cuerdas delimitador predeterminado " \ n \ t \ r "

Contar el número de fichas

Anexar al lado de contadores a areaSalida, mientras existan tokens

2003 Prentice Hall, Inc.

Todos los derechos reservados.

Contorno

TokenTest.java

54

55    // Ejecutar la aplicación

56    público estático void principales (String args [])

57 {

58 aplicaciones TokenTest = nueva TokenTest ();

Page 97: 11 TRADUCIDAvxcv

59 application.setDefaultCloseOperation ( JFrame.EXIT_ON_CLOSE );

60 }

61

62 } // fin de la clase TokenTest

2003 Prentice Hall, Inc. Todos los derechos reservados.

11.7 Tarjeta de barajar y repartir Simulación Desarrollar aplicaciones DeckOfCards Crear baraja de 52 cartas con objetos Card

Se ocupa del usuario tarjeta haciendo clic "Trato botón de la tarjeta "

Usuario baraja cubierta haciendo clic en "Aleatorio botón de tarjetas "

Utilice generación aleatoria de números

Page 98: 11 TRADUCIDAvxcv

2003 Prentice Hall, Inc.

Todos los derechos reservados.

Contorno

DeckOfCards.java 

Líneas 19 y 29 de la línea 30

1 // Fig. 11.19: DeckOfCards.java

2 // barajar y el programa que trata.

3 import java.awt. *;

4 importación java.awt.event. *;

5 de importaciones javax.swing. *;

6

Page 99: 11 TRADUCIDAvxcv

7 públicas clase DeckOfCards extiende JFrame {

8    privada cubierta de la tarjeta [];

9    privado int currentCard;

10    privada JButton dealButton, shuffleButton;

11    privada displayField JTextField;

12    privada statusLabel JLabel;

13

14    // Configurar baraja de cartas y GUI

15    públicas DeckOfCards ()

16 {

17       súper ( "Tarjeta Programa de Negociación" );

18

19 Cadena enfrenta [] = { "Ace" , "Deuce" , "Tres" , "cuatro" , "cinco" , "seis" ,

Page 100: 11 TRADUCIDAvxcv

20          "Seven" , "Ocho" , "Nine" , "Ten" , "Jack" , "reina" , "rey" };

21 trajes String [] = { "Corazones" , "Diamantes" , "Clubs" , "espadas" };

22

23 = cubierta nueva tarjeta [ 52 ];

24 currentCard = -1 ;

25      

Baraja de 52 cartas

Más recientemente tratado tarjetas en orden mazo (-1 si no hay cartas han sido repartidas)

2003 Prentice Hall, Inc.

Todos los derechos reservados.

Contorno

DeckOfCards.java 

Líneas 27-29

Page 101: 11 TRADUCIDAvxcv

Línea 43 

Línea 46

26       // Poblar cubierta con objetos Carta

27       para ( int count = 0 ; contador <deck.length; contar ++)

28 mazo [contar] = nueva Tarjeta (caras [cuentan% 13 ],

29 trajes [contar / 13 ]);

30

31       // Configurar GUI y manejo de eventos

32 Container contenedor = getContentPane ();

33 container.setLayout ( nueva FlowLayout ());

34

35 dealButton = nuevo JButton ( "tarjeta de Deal" );

Page 102: 11 TRADUCIDAvxcv

36 dealButton.addActionListener (

37

38          nueva ActionListener () { // clase interna anónima

39

40             // Contrato de un tarjeta

41             público void actionPerformed (ActionEvent ActionEvent)

42 {

43 Tarjeta trató = dealCard ();

44

45                si (tratado! = nula ) {

46 displayField.setText (dealt.toString ());

47 statusLabel.setText ( "Tarjeta #:" + currentCard);

48 }

Page 103: 11 TRADUCIDAvxcv

49                else {

50 displayField.setText ( "NO MÁS TARJETAS PARA TRATAR" );

51 statusLabel.setText ( "tarjetas Aleatorio para continuar" );

52 }

Llenar matriz cubierta con Tarjetas

Cuando el usuario pulsa el botón Tarjeta de Deal, método dealCard consigue siguiente carta en la

matriz cubierta

Display Card en JTextField

2003 Prentice Hall, Inc.

Todos los derechos reservados.

Contorno

DeckOfCards.java 

Línea 70

Page 104: 11 TRADUCIDAvxcv

54

55 } // fin de la clase interna anónima

56

57 ); // fin de la llamada a addActionListener

58

59 contenedor.add (dealButton);

60

61 shuffleButton = nuevo JButton ( "Aleatorio cartas" );

62 shuffleButton.addActionListener (

63

64          nueva ActionListener () { // clase interna anónima

65

66             // Cubierta aleatoria

Page 105: 11 TRADUCIDAvxcv

67             público void actionPerformed (ActionEvent ActionEvent)

68 {

69 displayField.setText ( "arrastrando los pies ..." );

70 shuffle ();

71 displayField.setText ( "cartas se barajan" );

72 }

73

74 } // fin de la clase interna anónima

75

76 ); // fin de la llamada a addActionListener

77

78 contenedor.add (shuffleButton);

Cuando el usuario pulsa el botón Aleatorio Tarjetas, método aleatorio baraja tarjetas

Page 106: 11 TRADUCIDAvxcv

2003 Prentice Hall, Inc.

Todos los derechos reservados.

Contorno

DeckOfCards.java 

Líneas 92-102

79

80 displayField = nueva JTextField ( 20 );

81 displayField.setEditable ( false );

82 contenedor.add (displayField);

83

84 statusLabel = nueva JLabel ();

85 contenedor.add (statusLabel);

86

Page 107: 11 TRADUCIDAvxcv

87 setSize ( 275 , 120 ); // establecer tamaño de la ventana

88 setVisible ( verdadero ); // espectáculo ventana

89 }

90

91    // Cubierta aleatoria de cartas con el algoritmo de una sola pasada

92    privado void shuffle ()

93 {

94 currentCard = -1 ;

95                                                              

96       // Para cada tarjeta, escoja otra tarjeta al azar y se intercambiarlos

97       para ( int primero = 0 ; primero <deck.length; primero ++) {

98          int segundos = ( int ) (Math.random () * 52 );

99 Tarjeta temp = mazo [primera];

Page 108: 11 TRADUCIDAvxcv

100 mazo [primero] = el mazo [segundo];

101 mazo [segundo] = temp;

102 }

103                                                          

Baraja las tarjetas mediante el canje de cada tarjeta con la tarjeta seleccionada al azar

2003 Prentice Hall, Inc.

Todos los derechos reservados.

Contorno

DeckOfCards.java 

Líneas 108-116 Líneas 114 y 123

104 dealButton.setEnabled ( verdadero );

105 }

Page 109: 11 TRADUCIDAvxcv

106

107    // Contrato de un tarjeta

108    privado Tarjeta dealCard ()

109 {

110       si (++ currentCard <deck.length)

111          retorno mazo [currentCard];

112       else {

113 dealButton.setEnabled ( false );

114          retorno nulo;

115 }

116 }

117

118    // Ejecutar la aplicación

Page 110: 11 TRADUCIDAvxcv

119    público estático void principales (String args [])

120 {

121 DeckOfCards aplicación = nuevos DeckOfCards ();

122

123 application.setDefaultCloseOperation ( JFrame.EXIT_ON_CLOSE );

124 }

125

126 } // fin de la clase DeckOfCards

127

Si la cubierta no está vacía, se devuelve una referencia de objeto Tarjeta; de lo contrario, se devuelve

nulo

Método setEnabled activa y desactiva JButton

2003 Prentice Hall, Inc.

Todos los derechos reservados.

Page 111: 11 TRADUCIDAvxcv

Contorno

DeckOfCards.java Líneas 130-131

128 // clase para representar una tarjeta

129 clase Card {

130    privada cara String;

131    privada traje String;

132

133    // Constructor para inicializar una tarjeta

134    pública Card (String cardFace, Cadena cardSuit)

135 {

136 face = cardFace;

137 traje = cardSuit;

138 }

Page 112: 11 TRADUCIDAvxcv

139

140    // Devuelve Cadena represenation de tarjeta

141    pública String toString ()

142 {

143       volver la cara + "de" + traje;

144 }

145

146 } // fin de la clase de tarjeta

Tienda nombre de cara y traje para la tarjeta específica, respectivamente

2003 Prentice Hall, Inc. Todos los derechos reservados.

11.8 Expresiones regulares, Clase Patrón y clase Matcher

Expresión regular

Page 113: 11 TRADUCIDAvxcv

Secuencia de caracteres y símbolos

Definir un conjunto de cuerdas

Clase Modelo Una expresión regular inmutable

Clase Partido Una operación de la expresión regular de juego

2003 Prentice Hall, Inc. Todos los derechos reservados.

11.8 Expresiones regulares, Clase Patrón y clase Matcher

2003 Prentice Hall, Inc. Todos los derechos reservados.

11.8 Expresiones regulares, Clase Patrón y clase Matcher

Page 114: 11 TRADUCIDAvxcv

2003 Prentice Hall, Inc.

Todos los derechos reservados.

Contorno

ValidateFrame.java

1 // Fig. 11.21: ValidateFrame.java

2 // información de usuario Validar el uso de expresiones regulares.

3 import java.awt. *;

4 importación java.awt.event. *;

5 de importaciones javax.swing. *;

6

7 pública clase ValidateFrame extiende JFrame {

8    privada JTextField phoneTextField, zipTextField, stateTextField,

9 cityTextField, addressTextField, firstTextField, lastTextField;

10

Page 115: 11 TRADUCIDAvxcv

11    público ValidateFrame ()

12 {

13       súper ( "Validar" );

14        

15 // crear los componentes GUI

16 JLabel phoneLabel = nueva JLabel ( "Teléfono" );

17 JLabel zipLabel = nueva JLabel ( "Zip" );

18 JLabel stateLabel = nueva JLabel ( "Estado" );

19 JLabel cityLabel = nueva JLabel ( "Ciudad" );

20 JLabel direcciónEtiqueta = nueva JLabel ( "Dirección" );

21 JLabel FirstLabel = nueva JLabel ( "Nombre" );

22 JLabel LastLabel = nueva JLabel ( "Last Name" );

23         

Page 116: 11 TRADUCIDAvxcv

24 JButton okButton = nuevo JButton ( "OK" );

2003 Prentice Hall, Inc.

Todos los derechos reservados.

Contorno

ValidateFrame.java

25 okButton.addActionListener (

26            

27          nueva ActionListener () { // clase interna

28

29             público anular actionPerformed (ActionEvent evento) {

30 validateDate ();

31 }

32               

33 } // fin de la clase interna

Page 117: 11 TRADUCIDAvxcv

34         

35 ); // fin de la llamada a addActionListener

36         

37 phoneTextField = nueva JTextField ( 15 );

38 zipTextField = nueva JTextField ( 5 );

39 stateTextField = nueva JTextField ( 2 );

40 cityTextField = nuevo JTextField ( 12 );

41 addressTextField = nuevo JTextField ( 20 );

42 firstTextField = nuevo JTextField ( 20 );

43 lastTextField = nuevo JTextField ( 20 );

44      

45 JPanel firstName = nueva JPanel ();

46 firstName.add (FirstLabel);

Page 118: 11 TRADUCIDAvxcv

47 firstName.add (firstTextField);

48      

49 JPanel lastName = nueva JPanel ();

50 lastName.add (LastLabel);

51 lastName.add (lastTextField);

2003 Prentice Hall, Inc.

Todos los derechos reservados.

Contorno

ValidateFrame.java

52      

53 JPanel address1 = nuevos JPanel ();

54 address1.add (direcciónEtiqueta);

55 address1.add (addressTextField);

56      

Page 119: 11 TRADUCIDAvxcv

57 JPanel address2 = nuevos JPanel ();

58 address2.add (cityLabel);

59 address2.add (cityTextField);

60 address2.add (stateLabel);

61 address2.add (stateTextField);

62 address2.add (zipLabel);

63 address2.add (zipTextField);

64      

65 JPanel teléfono = nuevos JPanel ();

66 phone.add (phoneLabel);

67 phone.add (phoneTextField);

68      

69 JPanel ok = nuevos JPanel ();

Page 120: 11 TRADUCIDAvxcv

70 ok.add (okButton);

71      

72 // agregar los componentes de la aplicación

73 Container contenedor = getContentPane ();

74 container.setLayout ( nueva GridLayout ( 6 , 1 ));

75

2003 Prentice Hall, Inc.

Todos los derechos reservados.

Contorno

ValidateFrame.java

76 contenedor.add (firstName);

77 contenedor.add (lastName);

78 contenedor.add (address1);

79 contenedor.add (address2);

Page 121: 11 TRADUCIDAvxcv

80 contenedor.add (teléfono);

81 contenedor.add (ok);

82         

83 setSize ( 325 , 225 );

84 setVisible ( verdadero );

85

86 } // fin del constructor ValidateFrame

87

88    público estático void principales (String args [])

89 {

90 aplicaciones ValidateFrame = nueva ValidateFrame ();

91 application.setDefaultCloseOperation ( JFrame.EXIT_ON_CLOSE );

92 }

Page 122: 11 TRADUCIDAvxcv

93

94 // maneja evento action okButton

2003 Prentice Hall, Inc.

Todos los derechos reservados.

Contorno

ValidateFrame.java Líneas 109-118

95    privado anular validateDate ()

96 {

97 // asegurar que no hay cuadros de texto están vacías

98       si (lastTextField.getText (). equals ( "" ) ||

99 firstTextField.getText (). equals ( "" ) ||

100 addressTextField.getText (). equals ( "" ) ||

101 cityTextField.getText (). equals ( "" ) ||

Page 123: 11 TRADUCIDAvxcv

102 stateTextField.getText (). equals ( "" ) ||

103 zipTextField.getText (). equals ( "" ) ||

104 phoneTextField.getText (). equals ( "" )) // condición final

105            

106 JOptionPane.showMessageDialog ( este , "Por favor, complete todos los campos" );

107

108 // si primer formato nombre del show inválida mensaje

109       más si (! firstTextField.getText (). coincida ( "[AZ] [a-zA-Z] *" ))

110 JOptionPane.showMessageDialog ( esto , "no válido nombre" );

111

112 // si la última formato de nombre espectáculo inválida mensaje

113       más si (! lastTextField.getText (). coincida ( "[AZ] [a-zA-Z] *" ))

114 JOptionPane.showMessageDialog ( esto , "no válido apellido" );

Page 124: 11 TRADUCIDAvxcv

115

116 // si el formato de dirección no válida mensaje espectáculo

117       más si (! addressTextField.getText (). Correspondencias (

118         "\\ \\ D + s + ([a-zA-Z] + | [a-zA-Z] + \\ s [a-zA-Z] +)" ))

119 JOptionPane.showMessageDialog ( este , "la dirección no válida" );

120

Partidos devuelve true si la cadena coincide con la expresión regular

2003 Prentice Hall, Inc.

Todos los derechos reservados.

Contorno

ValidateFrame.java Líneas 122-137

121 // si el formato de la ciudad no válido mensaje espectáculo

122       más si (! cityTextField.getText (). Correspondencias (

Page 125: 11 TRADUCIDAvxcv

123                 "([A-zA-Z] + | [a-zA-Z] + \\ s [a-zA-Z] +)" ))

124 JOptionPane.showMessageDialog ( este , "la ciudad no válida" );

125

126 // si el formato estado no válido mensaje espectáculo

127       más si (! stateTextField.getText (). Correspondencias (

128                 "([A-zA-Z] + | [a-zA-Z] + \\ s [a-zA-Z] +)" ))

129 JOptionPane.showMessageDialog ( este , "el estado no válido" );

130

131 // si el formato código postal válido mensaje espectáculo

132       más si (! zipTextField.getText (). los partidos ( "\\ d {5}" ))

133 JOptionPane.showMessageDialog ( este , "código postal válido" );

134

135 // si el formato número de teléfono válido mensaje espectáculo

Page 126: 11 TRADUCIDAvxcv

136       más si (! phoneTextField.getText (). Correspondencias (

137                  "[1-9] \\ d {2} - [1-9] \\ d {2} - \\ d {4}" ))

138 JOptionPane.showMessageDialog ( este , "el número de teléfono válido" );

139      

140       demás // información es válida, el usuario de la señal

141 JOptionPane.showMessageDialog ( este , "Gracias" );

142

143 } // fin del método validateDate

144

145 } // fin de la clase ValidateFrame

Partidos devuelve true si la cadena coincide con la expresión regular

2003 Prentice Hall, Inc.

Todos los derechos reservados.

Contorno

Page 127: 11 TRADUCIDAvxcv

ValidateFrame.java

Mensaje de error si TextBox deja en blanco

Señal de que la "postal" TextBox se ingresó incorrectamente

Significan que todos los TextBox es se introdujeron en el formato correcto

2003 Prentice Hall, Inc.

Todos los derechos reservados.

Contorno

RegexSubstitution.java Línea 15 Línea 20 Línea 26

1 // Fig. 11.23: RegexSubstitution.java

2 // El uso de métodos replaceFirst, ReplaceAll y dividida.

Page 128: 11 TRADUCIDAvxcv

3 de importación javax.swing. *;

4

5 pública clase RegexSubstitution

6 {

7    público estático void principales (String args [])

8 {

9 Cadena firstString = "Esta frase termina en 5 estrellas *****" ;

10 Cadena secondString = "1, 2, 3, 4, 5, 6, 7, 8" ;

11         

12 String salida = "String original 1:" + firstString;

13

14 // reemplazar '*' con '^'

15 firstString = firstString.replaceAll ( "\\ *" , "^" );

Page 129: 11 TRADUCIDAvxcv

16

17 salida + = "\ n ^ sustituido por *:" + firstString;

18

19 // reemplazar 'estrellas' con 'signos de intercalación'

20 firstString = firstString.replaceAll ( "estrellas" , "CARET" );

21

22 de salida + = signos de intercalación "\ n \" \ "sustituir \" estrellas \ ":" + firstString;

23

24 // reemplazar palabras con 'palabra'

25 salida + = "palabra \ Nevery reemplazado por \" palabra \ ":" +

26 firstString.replaceAll ( "\\ w +" , "palabra" );

Reemplace cada instancia de "*" en firstString con "^"

Reemplace cada instancia de "estrellas" en firstString con "signos de intercalación"

Vuelva a colocar cada palabra en firstString con "palabra"

Page 130: 11 TRADUCIDAvxcv

2003 Prentice Hall, Inc.

Todos los derechos reservados.

Contorno

RegexSubstitution.java Línea 32 Línea 38

27

28 salida + = "\ n \ nOriginal Cadena 2:" + secondString;

29

30 // reemplazar tres primeros dígitos con 'dígito'

31       para ( int i = 0 ; i < 3 ; i ++)

32 secondString = secondString.replaceFirst ( "\\ d" , "dígitos" );

33

Page 131: 11 TRADUCIDAvxcv

34 salida + = "\ Nfirst 3 dígitos reemplazados por \" dígitos \ ":" +

35 secondString;

36 salida + = "\ nSTRING divide en comas: [" ;

37

38 String [] = secondString.split resultados ( "\\ s *" ); // división de comas

39

40       para ( int i = 0 ; i <results.length; i ++)

41 de salida + = "\" " + resultados [i] + "\", " ; // resultados de salida

42

43 // eliminar la coma extra y añadir un soporte

44 salida = output.substring ( 0 , output.length () - 2 ) + "]" ;

45

46 JOptionPane.showMessageDialog ( nula , de salida);

Page 132: 11 TRADUCIDAvxcv

47 System.exit ( 0 );

48

49 } // fin del método principal

50

51 } // fin de la clase RegexSubstitution

replaceFirst sustituye a una sola aparición de la expresión regular

dividida vuelve matriz de subcadenas entre los partidos de la expresión regular

2003 Prentice Hall, Inc.

Todos los derechos reservados.

Contorno

RegexSubstitution.java 

2003 Prentice Hall, Inc.

Todos los derechos reservados.

Contorno

Page 133: 11 TRADUCIDAvxcv

RegexMatches.java Líneas 13-14 Línea 22

Línea 24 

Línea 25

1 // Fig. 11.24: RegexMatches.java

2 // Demostración de clases Pattern y Matcher.

3 de importación java.util.regex. *;

4 importación javax.swing. *;

5

Page 134: 11 TRADUCIDAvxcv

6 clase RegexMatches

7 {

8    público estático void principales (String args [])

9 {

10 String salida = "" ;

11

12 // crear expresiones regulares

13 expresión del patrón =

14 Pattern.compile ( "J * \\ d [0-35-9] - \\ d \\ d - d \\ \\ d." );

15      

16 cadena1 String = "El cumpleaños de Jane es 5.12.75 \ n" +

17          "Dave cumpleaños es 4.11.68 \ n" +

18          "El cumpleaños de Juan es 4.28.73 \ n" +

Page 135: 11 TRADUCIDAvxcv

19          "El cumpleaños de Joe es 12/17/77" ;

20

21 // partido expresión regular a los partidos de cuerda y de impresión

22 Matcher matcher = expression.matcher (cadena1);

23        

24       mientras que (matcher.find ())

25 salida + = matcher.group () + "\ n" ;

compilación crea un objeto de expresiones regulares inmutables

matcher asocia un objeto patrón con una cadena

hallazgo pone la primera subcadena que coincide con la expresión regular

grupo devuelve la subcadena coincidente

2003 Prentice Hall, Inc.

Todos los derechos reservados.

Contorno

Page 136: 11 TRADUCIDAvxcv

RegexMatches.java

26

27 JOptionPane.showMessageDialog ( nula , de salida);

28 System.exit ( 0 );

29

30 } // fin principal

31

32 } // fin de la clase RegexMatches

2003 Prentice Hall, Inc. Todos los derechos reservados.

11.9 (Ejemplo práctico opcional) Acerca de los objetos: Manipulación Evento

¿Cómo interactúan los objetos Envío de objeto envía un mensaje a un objeto que recibe

Page 137: 11 TRADUCIDAvxcv

Se discute cómo los objetos del sistema de ascensor interactúan

El comportamiento del sistema Modelo

2003 Prentice Hall, Inc. Todos los derechos reservados.

11.9 (Ejemplo práctico opcional) Acerca de los objetos: Manipulación Evento

Evento Mensaje que notifica a un objeto de una acción

Acción: Ascensor llega al piso

Consecuencia: Ascensor envía evento elevatorArrived a Puerta

Elevator 's

es decir, la puerta está "notificó" que ha llegado Ascensor

Acción: se abre la puerta Elevator 's

Consecuencia: Puerta envía evento doorOpened a persona

Page 138: 11 TRADUCIDAvxcv

es decir, la persona se "notificó" que ha abierto la puerta

Estructura de denominación preferido

Sustantivo ( "ascensor") precedido de verbo ("llegó")

2003 Prentice Hall, Inc.

Todos los derechos reservados.

Contorno

ElevatorSimulationEvent.java 

Línea 8 

Línea 11 Línea 14

1 // ElevatorSimulationEvent.java

2 // Básica paquetes evento sosteniendo objeto Ubicación

3 paquete com.deitel.jhtp5.elevator.event;

Page 139: 11 TRADUCIDAvxcv

4

5 // paquetes Deitel

6 importación com.deitel.jhtp5.elevator.model. *;

7

8 public class ElevatorSimulationEvent {

9

10 // Ubicación que generó ElevatorSimulationEvent

11    privada ubicación Ubicación;

12   

13 // fuente de generada ElevatorSimulationEvent

14    privada fuente de objetos;

15

16 // ElevatorSimulationEvent constructor establece Ubicación

Page 140: 11 TRADUCIDAvxcv

17    pública ElevatorSimulationEvent (fuente de objetos,

18 la ubicación, ubicación)

19 {

20 setFuente (fuente);

21 setLocation (ubicación);

22 }

23

Representa un evento en la simulación del ascensor

Lugar de referencia objeto representa la ubicación donde incluso se ha generado

Referencia de objeto Objeto representa objeto que generó evento

2003 Prentice Hall, Inc.

Todos los derechos reservados.

Contorno

ElevatorSimulationEvent.java

Page 141: 11 TRADUCIDAvxcv

24 // establecer ElevatorSimulationEvent Ubicación

25    public void setLocation (Lugar Eventlocation)

26 {

27 ubicación = Eventlocation;

28}

29

30 // obtener ElevatorSimulationEvent Ubicación

31    pública Ubicación getLocation ()

32 {

33       volver ubicación;

34 }

35

36 // establecer fuente ElevatorSimulationEvent

Page 142: 11 TRADUCIDAvxcv

37    private void setFuente (EventSource Object)

38 {

39 fuente = EventSource;

40 }

41

42 // get source ElevatorSimulationEvent

43    pública getSource Object ()

44 {

45       volver fuente;

46 }

47 }

2003 Prentice Hall, Inc. Todos los derechos reservados.

Page 143: 11 TRADUCIDAvxcv

11.9 (Ejemplo práctico opcional) Acerca de los objetos: Manipulación Evento

Objetos envían ElevatorSimulationEvent Esto puede llegar a ser confuso

Puerta envía ElevatorSimulationEvent a persona al abrir

Ascensor envía ElevatorSimulationEvent a Puerta a la llegada

Solución:

Crear varias subclases ElevatorSimulationEvent

Cada subclase representa mejor la acción

por ejemplo, BellEvent cuando suena la campana

2003 Prentice Hall, Inc. Todos los derechos reservados.

Fig. 11.26 diagrama de clases que los modelos de la generalización entre

ElevatorSimulationEvent y sus subclases.ElevatorSimulationEvent

Page 144: 11 TRADUCIDAvxcv

BellEvent

DoorEvent

PersonMoveEvent

ButtonEvent

ElevatorMoveEvent

LightEvent

2003 Prentice Hall, Inc. Todos los derechos reservados.

Fig. 11.27 Disparo acciones de los eventos de subclases ElevatorSimulationEvent2003 Prentice Hall, Inc. Todos los derechos reservados.

11.9 (Ejemplo práctico opcional) Acerca de los objetos: Manipulación Evento

Manejo de eventos Similar a la colaboración

Objeto envía el mensaje (evento) a los objetos

Page 145: 11 TRADUCIDAvxcv

Sin embargo, la recepción de los objetos debe

estar escuchando para el evento

Llamados detectores de eventos

Los oyentes deben registrarse con el remitente para recibir eventos

2003 Prentice Hall, Inc. Todos los derechos reservados.

11.9 (Ejemplo práctico opcional) Acerca de los objetos: Manipulación Evento

Modificar diagrama de colaboración de la Fig. 7.19 Incorporar el manejo de eventos (Fig. 11.28)

Tres cambios

Incluir notas

Explicaciones sobre gráficos UML

Representada como rectángulos con esquinas "doblada"

Page 146: 11 TRADUCIDAvxcv

Todas las interacciones ocurren en el primer piso

Elimina la ambigüedad de nombres

Incluya eventos

Ascensor informa objetos de la acción que ha ocurrido

Ascensor notifica objeto de llegada

2003 Prentice Hall, Inc. Todos los derechos reservados.

Fig. 11.28 diagrama de colaboración Modificado para los pasajeros entrar y salir

del ascensor en el primer piso: Ascensor

firstFloorLight: Luz

firstFloorButton: Button

: ElevatorShaft

waitingPassenger: Persona

: ElevatorDoor

firstFloorDoor: Puerta

ridingPassenger: Persona

Page 147: 11 TRADUCIDAvxcv

3.2.1 doorOpened (DoorEvent)

4.2.1: turnOnLight ()

4.1.1: resetButton ()

3.3.1: exitElevator ()

3.2.1.1: enterElevator ()

4: elevatorArrived (ElevatorMoveEvent)

3.2: OpenDoor ()

3.3: doorOpened ()

3.1: OpenDoor (Ubicación)

1: elevatorArrived (ElevatorMoveEvent)

4.1: elevatorArrived (ElevatorMoveEvent)

4.2: elevatorArrived (ElevatorMoveEvent)

2: elevatorArrived (ElevatorMoveEvent)

: Campana

2.1: ringBell ()

elevatorButton: Button

1.1: resetButton ()

3: elevatorArrived (ElevatorMoveEvent)

Page 148: 11 TRADUCIDAvxcv

2003 Prentice Hall, Inc. Todos los derechos reservados.

11.9 (Ejemplo práctico opcional) Acerca de los objetos: Manipulación Evento

Los detectores de eventos Ascensor envía ElevatorMoveEvent

Todas las clases de eventos (en nuestra simulación) tienen esta

estructura

La puerta debe implementar la interfaz que "escucha" para este evento

Puerta implementa la interfaz ElevatorMoveListener

Método elevatorArrived

Se invoca cuando llega Ascensor

Método elevatorDeparted

Page 149: 11 TRADUCIDAvxcv

Se invoca cuando se aparta Ascensor

2003 Prentice Hall, Inc.

Todos los derechos reservados.

Contorno

ElevatorMoveEvent.java

1 // ElevatorMoveEvent.java

2 // Indica en qué piso llegaron o partieron del Ascensor

3 paquete com.deitel.jhtp5.elevator.event;

4

5 paquete // Deitel

6 importación com.deitel.jhtp5.elevator.model. *;

7

8 public class ElevatorMoveEvent extiende ElevatorSimulationEvent {

9

Page 150: 11 TRADUCIDAvxcv

10 // ElevatorMoveEvent constructor

11    pública ElevatorMoveEvent (fuente de objetos, ubicación, ubicación)

12 {

13       súper (fuente, ubicación);

14 }

15 }

2003 Prentice Hall, Inc.

Todos los derechos reservados.

Contorno

ElevatorMoveListener.java

1 // ElevatorMoveListener.java

2 // Métodos invocados cuando Ascensor ha ido bien o llegado

3 paquete com.deitel.jhtp5.elevator.event;

4

Page 151: 11 TRADUCIDAvxcv

5 pública interfaz ElevatorMoveListener {

6

7   // Invoca cuando se ha apartado Ascensor

8    público anular elevatorDeparted (ElevatorMoveEvent moveEvent);

9

10    // Invoca cuando Ascensor ha llegado

11    público anular elevatorArrived (ElevatorMoveEvent moveEvent);

12 }

2003 Prentice Hall, Inc. Todos los derechos reservados.

11.9 (Ejemplo práctico opcional) Acerca de los objetos: Manipulación Evento

Diagrama de clases revisitado Modificar diagrama de clases de la figura. 10.28 para incluir

Page 152: 11 TRADUCIDAvxcv

Señales (eventos)

por ejemplo, Ascensor señales  llegada a Luz

Asociaciones de autónomos

por ejemplo, la luz se convierte en sí y fuera

2003 Prentice Hall, Inc. Todos los derechos reservados.

Fig. Diagrama de 11.31 Clase de nuestro simulador (incluyendo la gestión de eventos)

Luz

Piso

ElevatorShaft

Elevador

Persona

Campana

2

2

2

1

Page 153: 11 TRADUCIDAvxcv

1

1

1

1

1

1

1

1

1

1

1

1

1

1

2

Prensas

Señales para mover

Restablece

Abre / Cierra

Ocupa

Signalsarrival

Page 154: 11 TRADUCIDAvxcv

Activa / desactiva

Anillos

Puerta

Botón

Ubicación

Las señales de la llegada

Signalsarrival

Signalsarrival

Signalsarrival

Signalsarrival

Informa de apertura

1

1

1

1

1

1

1

1

1

Page 155: 11 TRADUCIDAvxcv

1

1

Abre / Cierra

1

ElevatorDoor

1