mvnForum Homepage Bienvenido domingo  |  Terminar sesión   
  Búsqueda  
  Indice |  Temas Recientes |  Quién Está en Línea |  Lista de Usuarios |  Mi Perfil |  Búsqueda |  Ayuda


Ir a »
Total de mensajes en este tema: 2 [Eliminar este Tema] [Mover este Tema]
[Ańadir a Mis Favoritos] [Ańadir un aviso a este tema] [Publicar nuevo tema]
Autor
Tema Anterior Este tema ha sido visto 73 veces y tiene 1 respuesta Tema Siguiente
Masculino iob
Novato



Ingresó: Jul 1, 2004
Mensajes: 25
Estado: Desconectados

Adjuntar archivo   Editar este mensaje   Duda Sesion3 ejercicio 2.2!! Responder a este mensaje
Responder citando
[Eliminar este Tema]

Bueno nos dice que cambiemos la linea , this.Contador(Contador.VALOR_INICIAL) por new Contador(Contador.VALOR_INICIAL) , y al menos a mi me da que el valor de c1 es 2 el de c2 11 y el de c3 que es el total de los dos es 23, esto no deberia ser asi . es eso lo que debe salir o es algun fallo mio de mi compilador?

Por mas que miro el codigo no le veo la logica a esto .
[Jul 7, 2004 9:52:36 PM] Print Post Reportar mensaje ofensivo  Ir al inicio 
Masculino domingo
Miembro



Ingresó: Feb 1, 2004
Mensajes: 57
Estado: En línea

Adjuntar archivo   Editar este mensaje   Re: Duda Sesion3 ejercicio 2.2!! Responder a este mensaje
Responder citando
[Eliminar este mensaje]

Voy a desvelar la solución. Reconozco que me he pasado, y que es algo complicadilla.

Si hacemos la modificación que se pide en el ejercicio nos quedarán los dos siguientes constructores de la clase Contador:
   public Contador(int valor) {
this.valor = valor;
acumulador += valor;
}

public Contador() {
//this(Contador.VALOR_INICIAL);
new Contador(Contador.VALOR_INICIAL);
}
El segundo constructor se ejecuta al crear un objeto Contador sin argumentos, como es el caso de la creación de c3 en el siguiente ejemplo
Contador c1 = new Contador(12);
Contador c2 = new Contador(2);
Contador c3 = new Contador();
La diferencia fundamental de la línea añadida en Contador() es la llamada a "new". Antes no se llamaba a new, se llamaba al otro constructor usando el operador "this". Ahora, sin embargo, hacemos una llamada a "new". Simpre que hay una llamada a new se crea un objeto nuevo. En este caso Contador() está creando un contador nuevo con valor 10 pero no lo está devolviendo, sino que se queda en el "limbo". Por ello el valor de 10 se acumula en el acumulador, pero no se devuelve a c3. El contador que se devuelve a c3 está inicializado a 0. Si comentas la línea del "new":
    public Contador() {
//this(Contador.VALOR_INICIAL);
//new Contador(Contador.VALOR_INICIAL);
}
verás que el valor de c3 se inicializa a 0, y ya no se acumula valor en la variable de clase.

Un saludo,
Domingo.
[Jul 8, 2004 12:00:38 AM] Print Post    domingo@dccia.ua.es Reportar mensaje ofensivo  Ir al inicio 
[Versión imprimible] [Publicar nuevo tema]