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
y
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