Java - Ejercicio de constructores privados

   
Vista:

Ejercicio de constructores privados

Publicado por Arween17 (21 intervenciones) el 12/05/2011 11:02:38
Hola a todos:

Tengo el siguiente ejercicio del libro de Bruce Eckel, Piensa en Java Ed. 4:

Crea una clase denominada ConnectionManager que gestione una matriz fija de objetos Connection. El programa cliente no debe poder crear explícitamente objetos Connection, sino que sólo debe poder obtenerlos a través de un método estático de ConnectionManager. Cuando ConnectionManager se quede sin objetos, devolverá una referencia null. Prueba las clases con un programa main().

Hay que crear una clase Connection con un constructor privado y un método static mediante el cual se inicializa el constructor de esta clase. Sin embargo, lo que no entiendo es cuando dice: "Cuando ConnectionManager se quede sin objetos devolverá una referencia null." No sé si hay que limitar el número de objetos Connection que se crean. ¿Cómo lo entendeis vosotros?

Estoy haciendo un blog de Java en el que resumo los temas del libro Piensa en Java y también estoy resolviendo los ejercicios y colgándolos. El blog es:

http://piensaenjavadesdecero.blogspot.com/

Un saludo y muchas gracias por vuestra ayuda.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Ejercicio de constructores privados

Publicado por Tom (908 intervenciones) el 12/05/2011 15:30:43
A mí me resulta claro que "una matriz fija de objetos" es un array de objetos con dimensiones predeterminadas (o sea fijas).
Por lo tanto, sí, hay un número fijo de objetos Connection a crear, supongo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ejercicio de constructores privados

Publicado por Arween17 (21 intervenciones) el 14/05/2011 10:05:37
Hola:

Al final lo he resuelto así:

CLASE CONNECTIONMANAGER

import java.util.Random;

public class ConnectionManager {

public static void main(String args[]){
// Creo la matriz de longitud fija.
Connection [] conexion=new Connection[Connection.conexionesPermitidas()];
Random random=new Random();

for (int i=0;i<Connection.conexionesPermitidas();i++){
// Inicializo la matriz con el método getConnection().
conexion[i]=Connection.getConnection();
if (conexion[i]!=null){
// Conectamos y desconectamos aleatoriamente las conexiones.
conexion[i].cambiarEstado(random.nextBoolean());

// Vemos qué conexiones están conectadas y cuales no.
if ((conexion[i].estaConectado()==true)){
System.out.println("Conexion "+i+" conectada.");
} else {
System.out.println("Conexion "+i+" desconectada.");
}
}
}
System.out.println("Conexiones creadas: "+Connection.conexionesCreadas());
}
}

CLASE CONNECTION

public class Connection {

private static int numConexiones=0;
private static final int permitidas=10;
private boolean conectado=true;

private Connection(){
}

public static Connection getConnection(){
if (numConexiones>=permitidas){
return null;
} else {
numConexiones++;
return new Connection();
}
}

public static int conexionesPermitidas(){
return permitidas;
}

public static int conexionesCreadas(){
return numConexiones;
}

public boolean estaConectado(){
return conectado;
}

public void cambiarEstado(boolean b){
conectado=b;
}

}

Creo que el enunciado del ejercicio no lo explica muy bien, así que he decidido hacerlo como veis.

Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar