0% encontró este documento útil (0 votos)
53 vistas11 páginas

Wrappers

Este documento describe los wrappers en Java y cómo convertir entre tipos primitivos de datos y sus clases wrapper correspondientes. También incluye un ejemplo de clase que demuestra estas conversiones y operaciones sobre wrappers.

Cargado por

Claudia Naveda
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
53 vistas11 páginas

Wrappers

Este documento describe los wrappers en Java y cómo convertir entre tipos primitivos de datos y sus clases wrapper correspondientes. También incluye un ejemplo de clase que demuestra estas conversiones y operaciones sobre wrappers.

Cargado por

Claudia Naveda
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 11

152 Ejercicios de programación orientada a objetos con Java y UML

Ejercicio 3.3. Wrappers

Un wrapper (contenedor o envoltorio) es una clase cuyos objetos contie-


nen tipos primitivos de datos. Los wrappers convierten tipos primitivos
de datos en objetos. Los wrappers son objetos que se pueden clasificar en
Number, Character o Boolean como se observa en la figura 3.7. A su vez, los
objetos Number pueden ser Byte, Short, Integer, Long, Float y Double.

Figura 3.7. Jerarquía de clases de wrappers

Los wrappers definidos en Java están en la tabla 3.3 (API Java, 2020).

Tabla 3.3. Wrappers definidos en Java

Tipo de dato Wrapper Principales métodos


primitivo
char Character Constructor Character(char ch): construye un objeto Character a
partir del char ch pasado como parámetro.
public static boolean isLowerCase(char ch): retorna true si ch es
una letra minúscula.
public static boolean isUpperCase(char ch): retorna true si ch es
una letra mayúscula.
public static boolean isDigit(char ch): retorna true si ch es un dígito.
public static boolean isLetter(char ch): retorna true si ch es una letra.
public static boolean isLetterOrDigit(char ch): retorna true si ch
es una letra o un dígito.
public static char toLowerCase(char ch): retorna ch convertido en
minúscula.
public static char toUpperCase(char ch): retorna ch convertido en
mayúscula.
String, wrappers y estructuras de almacenamiento 153

Tipo de dato Wrapper Principales métodos


primitivo
int Integer Constructor Integer(int i): construye un objeto Integer a partir del
int i pasado como parámetro.
public static int parseInt(String str): retorna el valor del entero
del String str en la base 10.
public static Integer valueOf(String str, int radix): equivalente a
parseInt() pero retorna un objeto Integer.
long Long Constructor Long(long i): construye un objeto Long a partir del
long i pasado como parámetro.
public static long parseLong(String str): equivalente al anterior,
pero con base 10.
public static Long valueOf(String str, int radix): equivalente a
parseLong(), pero retorna un objeto Long.
float Float Constructor Float(float f): construye un objeto Float a partir del
float f pasado como parámetro.
public float floatValue():retorna el valor convertido a tipo float.
double Double Constructor Double(double d): construye un objeto Double a partir
del double d pasado como parámetro.
public double doubleValue():retorna el valor convertido a tipo double.
boolean Boolean Constructor Boolean(String str): crea un objeto Boolean que
representa el valor true o false de acuerdo al String, ignorando
mayúsculas y minúsculas.

Objetivos de aprendizaje

Al finalizar este ejercicio, el lector tendrá la capacidad para:


u Crear wrappers a partir de diferentes tipos primitivos de datos.

u Realizar diferentes operaciones sobre los wrappers creados.

Enunciado: clase Envoltorio


Se desea construir un programa para manipular los tipos primitivos pre-
sentados en la tabla 3.4.

Tabla 3.4. Tipos primitivos de datos

Tipo primitivo Variable Valor


byte a 1
int b 100
float c 28.9f
double d 271.8
char e ‘M’
154 Ejercicios de programación orientada a objetos con Java y UML

u Definir un método que convierta los tipos primitivos de datos pre-


sentados en la tabla en sus respectivos wrappers y, luego, imprimir
sus valores en pantalla.
u Definir un método que realice las conversiones inversas, es decir,
que convierta los wrappers anteriores en sus tipos primitivos de
datos e imprima sus valores en pantalla.
u Definir un método que evalúe si el valor de e:
○ Está en mayúscula.
○ Está en minúscula.
○ Es una letra.
○ En un dígito.
○ Convierta el carácter en minúscula.

Solución

Clase: Envoltorio

/**
* Esta clase denominada Envoltorio que utiliza diferentes wrappers
* asociados a tipos de datos.
* @version 1.2/2020
*/
public class Envoltorio {
/* Atributos que son tipos primitivos de datos, cada uno con su
valor inicial */
byte a = 7;
int b = 100;
float c = 28.9f;
double d = 271.8;
char e = ‘M’;
/* Atributos que son envoltorios (wrappers). Cada envoltorio está
asociado a su correspondiente tipo primitivo de dato */
Byte objetoByte;
Integer objetoInteger;
Float objetoFloat;
Double objetoDouble;
Character objetoChar;
String, wrappers y estructuras de almacenamiento 155

/**
* Método que crea un envoltorio a partir de su tipo primitivo de
* dato y muestra su valor en pantalla
*/
public void convertirToWrapper() {
objetoByte = new Byte(a);
objetoInteger = new Integer(b);
objetoFloat = new Float(c);
objetoDouble = new Double(d);
objetoChar = e; /* Character no tiene un constructor como los
otros envoltorios */
System.out.println(“Objeto Byte = “ + objetoByte);
System.out.println(“Objeto Integer = “ + objetoInteger);
System.out.println(“Objeto Float = “ + objetoFloat);
System.out.println(“Objeto Double = “ + objetoDouble);
System.out.println(“Objeto Character = “ + objetoChar);
}
/**
* Método que convierte los envoltorios en tipos primitivos de datos
* y muestra el resultado en pantalla. Realiza la acción inversa del
* método convertirToWrapper
*/
public void convertirToTipoPrimitivo() {
byte tipoByte = objetoByte;
int tipoInt = objetoInteger;
float tipoFloat = objetoFloat;
double tipoDouble = objetoDouble;
char tipoChar = objetoChar;
System.out.println(“Tipo byte = “ + tipoByte);
System.out.println(“Tipo int = “ + tipoInt);
System.out.println(“Tipo float = “ + tipoFloat);
System.out.println(“Tipo double = “ + tipoDouble);
System.out.println(“Tipo char = “ + tipoChar);
}
/**
* Método que realiza varias acciones en un objeto de tipo Character
*/
public void consultarChar() {
boolean esMiníscula = Character.isLowerCase(e); /* Determina si
el carácter está en minúscula */
156 Ejercicios de programación orientada a objetos con Java y UML

System.out.println(“¿El carácter e = “ + e + “ está en minúscula?


= “ + esMiníscula);
// Determina si el carácter está en mayúscula
boolean esMayúscula = Character.isUpperCase(e);
System.out.println(“¿El carácter e = “ + e + “ está en mayúscula?
= “ + esMayúscula);
boolean esLetra = Character.isLetter(e); /* Determina si el
carácter es una letra */
System.out.println(“¿El carácter e = “ + e + “ está una letra? = “ +
esLetra);
boolean esDigito = Character.isDigit(e); /* Determina si el
carácter es un dígito */
System.out.println(“¿El carácter e = “ + e + “ es un dígito? = “ +
esDigito);
char charMinúscula = Character.toLowerCase(e); /* Convierte el
carácter a minúscula */
System.out.println(“Carácter e = “ + e + “ convertido a minúscula
= “ + charMinúscula);
}
/**
* Método main que instancia un objeto Envoltorio y prueba los
* métodos para convertir de tipo primitivo de dato a envoltorio, de
* envoltorio a tipo primitivo de dato y diferentes métodos del
* envoltorio Character
*/
public static void main(String args[]) {
Envoltorio wrapper = new Envoltorio();
wrapper.convertirToWrapper();
wrapper.convertirToTipoPrimitivo();
wrapper.consultarChar();
}
}
String, wrappers y estructuras de almacenamiento 157

Diagrama de clases

Figura 3.8. Diagrama de clases del ejercicio 3.3.

Explicación del diagrama de clases

Se ha definido una clase denominada Envoltorio con atributos privados


(-), que representan tipos primitivos de datos y sus envoltorios (wrappers)
correspondientes. La clase tienen tres métodos públicos: para convertir los
tipos primitivos de datos a envoltorios (convertirToWrapper), convertir el
envoltorio a tipo primitivo de dato (convertirToPrimitivo) y para realizar
diferentes transformaciones de un envoltorio Character (consultarChar).

Diagrama de objetos

Figura 3.9. Diagrama de objetos del ejercicio 3.3.


158 Ejercicios de programación orientada a objetos con Java y UML

Ejecución del programa

Figura 3.10. Ejecución del programa del ejercicio 3.3.

Ejercicios propuestos

u Crear un array de caracteres y luego ordenarlo alfabéticamente.


Para conocer cómo trabajar con arrays consultar el apartado 1.5
de este libro.
u Crear un programa que imprima en pantalla los valores mínimos y
máximo de un entero (int), long, float y double.
u Crear un método que reciba como parámetro un tipo de dato int,
luego, convertirlo a long, a float y, finalmente, imprimir en pantalla
los tres valores.

Ejercicio 3.4. Entrada de datos desde teclado y wrappers

La entrada de datos desde teclado en Java utiliza el objeto Scanner (Arro-


yo-Díaz, 2019a). El formato es el siguiente:

Scanner sc = new Scanner(System.in)

Para utilizar la clase Scanner se debe importar el paquete java.util al


inicio del programa.
En la tabla 3.5 se presenta un listado de métodos de la clase Scanner
para leer diferentes tipos de datos.
String, wrappers y estructuras de almacenamiento 159

Tabla 3.5. Métodos de la clase Scanner

Método Descripción
nextLine() Leer un valor String ingresado por teclado.
nextBoolean() Lee un valor de tipo boolean ingresado por teclado.
nextByte() Lee un valor byte ingresado por teclado.
nextDouble() Lee un valor double ingresado por teclado.
nextFloat() Lee un valor float ingresado por teclado.
nextInt() Lee un valor int ingresado por teclado.
nextLine() Lee un valor String ingresado por teclado.
nextLong() Lee un valor long ingresado por teclado.
nextShort() Lee un valor short ingresado por teclado.

Objetivos de aprendizaje

Al finalizar este ejercicio, el lector tendrá la capacidad para:


u Capturar datos ingresados por teclado utilizando la clase Scanner.

u Capturar tipos diferentes de datos.

Enunciado: clase EnvoltorioTeclado

Se desea construir un programa que capture por teclado los valores de la


clase Envoltorio (del ejercicio anterior 3.3).
Agregar a la clase un atributo f de tipo boolean, cuyo valor por teclado
pueda a su vez ser leído.

Solución

Clase: EnvoltorioTeclado

import java.util.*;
/**
* Esta clase denominada EnvoltorioTeclado modifica el código de la clase
* Envoltorio para solicitar entrada de datos por teclado.
* @version 1.2/2020
*/
160 Ejercicios de programación orientada a objetos con Java y UML

public class EnvoltorioTeclado {


// Atributos que son tipos primitivos de datos
byte a;
int b;
float c;
double d;
char e;
boolean f;
/* Atributos que son envoltorios (wrappers). Cada envoltorio está
asociado a su correspondiente tipo primitivo de dato */
Byte objetoByte;
Integer objetoInteger;
Float objetoFloat;
Double objetoDouble;
Character objetoChar;
Boolean objetoBoolean;
/**
* Constructor de la clase EnvoltorioTeclado. Solicita ingreso de
* datos por teclado y cada dato ingresado se almacena en un
* atributo de la clase
*/
EnvoltorioTeclado() {
/* Crea un objeto Scanner que gestiona la captura de datos por
teclado */
Scanner sc = new Scanner(System.in);
System.out.print(“Ingresar dato tipo bye = “);
a = sc.nextByte(); // Lee un dato de tipo byte
System.out.print(“Ingresar dato tipo int = “);
b = sc.nextInt(); // Lee un dato de tipo int
System.out.print(“Ingresar dato tipo float = “);
c = sc.nextFloat(); // Lee un dato de tipo float
System.out.print(“Ingresar dato tipo double = “);
d = sc.nextDouble(); // Lee un dato de tipo double
System.out.print(“Ingresar dato tipo char = “);
e = sc.next().charAt(0); // Lee un dato de tipo char
System.out.print(“Ingresar dato tipo boolean = “);
f = sc.nextBoolean(); // Lee un dato de boolean
}
String, wrappers y estructuras de almacenamiento 161

/**
* Método que crea un envoltorio a partir de su tipo primitivo de
* dato y muestra su valor en pantalla
*/
public void convertirToWrapper() {
objetoByte = new Byte(a);
objetoInteger = new Integer(b);
objetoFloat = new Float(c);
objetoDouble = new Double(d);
objetoChar = new Character(e);
objetoBoolean = new Boolean(f);
System.out.println(“Objeto Byte = “ + objetoByte);
System.out.println(“Objeto Integer = “ + objetoInteger);
System.out.println(“Objeto Float = “ + objetoFloat);
System.out.println(“Objeto Double = “ + objetoDouble);
System.out.println(“Objeto Character = “ + objetoChar);
System.out.println(“Objeto Booelan = “ + objetoBoolean);
}
/**
* Método que convierte los envoltorios en tipos primitivos de datos
* y muestra el resultado en pantalla. Realiza la acción inversa del
* método convertirToWrapper
*/
public void convertirToTipoPrimitivo() {
byte tipoByte = objetoByte;
int tipoInt = objetoInteger;
float tipoFloat = objetoFloat;
double tipoDouble = objetoDouble;
char tipoChar = objetoChar;
boolean tipoBoolean = objetoBoolean;
System.out.println(“Tipo byte = “ + tipoByte);
System.out.println(“Tipo int = “ + tipoInt);
System.out.println(“Tipo float = “ + tipoFloat);
System.out.println(“Tipo double = “ + tipoDouble);
System.out.println(“Tipo char = “ + tipoChar);
}
162 Ejercicios de programación orientada a objetos con Java y UML

/**
* Método que realiza varias acciones en un objeto de tipo Character
*/
public void consultarChar() {
// Determina si el carácter está en minúscula
boolean esMiníscula = Character.isLowerCase(e);
System.out.println(“¿El carácter e = “ + e + “ está en minúscula? =
“ + esMiníscula);
// Determina si el carácter está en mayúscula
boolean esMayúscula = Character.isUpperCase(e);
System.out.println(“¿El carácter e = “ + e + “ está en mayúscula? =
“ + esMayúscula);
boolean esLetra = Character.isLetter(e); /* Determina si el carácter
es una letra */
System.out.println(“¿El carácter e = “ + e + “ está una letra? = “ +
esLetra);
boolean esDigito = Character.isDigit(e); /* Determina si el carácter
es un dígito */
System.out.println(“¿El carácter e = “ + e + “ es un dígito? = “ +
esDigito);
char charMinúscula = Character.toLowerCase (e); /* Convierte el
carácter a minúscula */
System.out.println(“Carácter e = “ + e + “ convertido a minúscula
= “ + charMinúscula);
}
/**
* Método main que instancia un objeto EnvoltorioTeclado y prueba
* los métodos para convertir de tipo primitivo de dato a envoltorio,
* de envoltorio a tipo primitivo de dato y diferentes métodos sobre
* el envoltorio Character
*/
public static void main(String args[]) {
EnvoltorioTeclado wrapper = new EnvoltorioTeclado();
wrapper.convertirToWrapper();
wrapper.convertirToTipoPrimitivo();
wrapper.consultarChar();
}
}

También podría gustarte