dentro del conjunto. El constructor sin argumentos inicializa el arreglo de Java con el “conjunto vacío” (es decir, un 
conjunto cuya representación de arreglo contiene sólo valores 

false

). 

Proporcione los siguientes métodos: el método 

union

 debe crear un tercer conjunto que sea la unión teórica de 

conjuntos para los dos conjuntos existentes (es decir, un elemento del tercer arreglo se establece en 

true

 si ese elemento 

es 

true

 en cualquiera o en ambos de los conjuntos existentes; en caso contrario, el elemento del tercer conjunto se 

establece en 

false

). El método 

interseccion

 debe crear un tercer conjunto que sea la intersección teórica de conjun-

tos para los dos conjuntos existentes (es decir, un elemento del arreglo del tercer conjunto se establece en 

false

 si ese 

elemento es 

false

 en uno o ambos de los conjuntos existentes; en caso contrario, el elemento del tercer conjunto se 

establece en 

true

). El método 

insertarElemento

 debe insertar un nuevo entero 

k en un conjunto (estableciendo 

a[k]

en 

true

). El método 

eliminarElemento

 debe eliminar el entero 

m (estableciendo 

a[m]

 en 

false

). El método 

aStrin-

gConjunto

 debe devolver una cadena que contenga un conjunto como una lista de números separados por espacios. 

Incluya sólo aquellos elementos que estén presentes en el conjunto. Use 

- - - 

para representar un conjunto vacío. El 

método 

esIgualA

 debe determinar si dos conjuntos son iguales. Escriba un programa para probar la clase 

ConjuntoEn-

teros

. Cree instancias de varios objetos 

ConjuntoEnteros

. Pruebe que todos sus métodos funcionen correctamente.

8.16 

(Clase Fecha) Cree la clase 

Fecha

 con las siguientes capacidades:

 

a) Imprimir la fecha en varios formatos, como

  

 

MM/DD/AAAA

 

 

 Junio 15, 1992

  

 

DDD 

AAAA

 

b) Usar constructores sobrecargados para crear objetos 

Fecha

 inicializados con fechas de los formatos en la 

parte (a). En el primer caso, el constructor debe recibir tres valores enteros. En el segundo caso, debe recibir 
un objeto 

String

 y dos valores enteros. En el tercer caso debe recibir dos valores enteros, el primero de los 

cuales representa el número de día en el año. [

Sugerencia: para convertir la representación de cadena del mes 

a un valor numérico, compare las cadenas usando el método 

equals

. Por ejemplo, si 

s1

 y 

s2

 son cadenas, 

la llamada al método 

s1.equals( s2 )

 devuelve 

true

si las cadenas son idénticas y devuelve 

false

 en 

cualquier otro caso].

8.17 

(Números racionales) Cree una clase llamada 

Racional

 para realizar operaciones aritméticas con fracciones. 

Escriba un programa para probar su clase. Use variables enteras para representar las variables de instancia 

private

 de 

la clase: el 

numerador

 y el 

denominador

. Proporcione un constructor que permita a un objeto de esta clase inicializarse 

al ser declarado. El constructor debe almacenar la fracción en forma reducida. La fracción

 2/4

es equivalente a 

1/2

 y debe guardarse en el objeto como 1 en el 

numerador

 y 2 en el 

denominador

. Proporcione un 

constructor sin argumentos con valores predeterminados, en caso de que no se proporcionen inicializadores. Proporcio-
ne métodos 

public

 que realicen cada una de las siguientes operaciones:

 

a) Sumar dos números 

Racional

: el resultado de la suma debe almacenarse en forma reducida.

 

b) Restar dos números 

Racional

: el resultado de la resta debe almacenarse en forma reducida.

 

c) Multiplicar dos números 

Racional

: el resultado de la multiplicación debe almacenarse en forma reducida.

 

d) Dividir dos números 

Racional

: el resultado de la división debe almacenarse en forma reducida.

 e) 

Imprimir 

números 

Racional

 en la forma 

a/b

, en donde 

a

 es el 

numerador

 y 

b

 es el 

denominador

.

 f) 

Imprimir 

números 

Racional

 en formato de punto fl otante. (Considere proporcionar capacidades de for-

mato, que permitan al usuario de la clase especifi car el número de dígitos de precisión a la derecha del punto 
decimal).

8.18 

(Clase Entero Enorme) Cree una clase llamada 

EnteroEnorme

 que utilice un arreglo de 40 elementos de dígitos, 

para guardar enteros de hasta 40 dígitos de longitud cada uno. Proporcione los métodos 

entrada

salida

sumar

 y 

restar

. Para comparar objetos 

EnteroEnorme

, proporcione los siguientes métodos: 

esIgualA

noEsIgualA

esMayor-

Que

esMenorQue

esMayorOIgualA

, y 

esMenorOIgualA

. Cada uno de estos métodos deberá ser un método predicado 

que devuelva 

true

 si la relación se aplica entre los dos objetos 

EnteroEnorme

, y 

false

 si no se aplica. Proporcione un 

método predicado llamado 

esCero

. Si desea hacer algo más, proporcione también los métodos 

multiplicar

dividir

 

residuo

. [

Nota: los valores 

boolean

 primitivos pueden imprimirse como la palabra “true” o la palabra “false”, con el 

especifi cador de formato 

%b

].

376

Capítulo 8 Clases y objetos: un análisis más detallado

08_MAQ_CAP_08.indd376

4/19/081:24:06AM