Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - nosferacento

Páginas: 1 ... 12 13 14 15 16 [17] 18 19 20 21 22 23
321
Aprender a programar desde cero / Re:Como crear test en java
« en: 27 de Septiembre 2012, 10:49 »
Yo creo que en este caso no tienes que tener Assert. Con JUnit tendríamos dos tipos de pruebas:

a) Las pruebas en que comprobamos que algo se ejecuta, que creo que es el caso tuyo en el método que has puesto. Tu objetivo es probar que una tarea puede ser realizada por más de un usuario, entonces si el método se ejecuta ya JUnit te dirá "Successfull" o "Exito", es decir, se cumple el objetivo de la prueba.

b) Las pruebas en que comprobamos que un resultado coincide con el resultado esperado. Por ejemplo cuando tengas que verificar que una subtarea es una tarea el resultado esperado será no solo que se ejecute la comprobación sino que la comprobación dé como resultado "true", es decir, que lo esperado es que una subtarea sea una tarea. Entonces sí tienes que meter el assert para indicarle a JUnit que el verifique que el resultado obtenido es igual al esperado. Y JUnit no te dirá "éxito" simplemente porque se ejecute el método, sino que tendrá que ejecutarse y el resultado coincidir con el que tú le digas en el assert.

322
Aprender a programar desde cero / Re:Como crear test en java
« en: 26 de Septiembre 2012, 17:07 »
Hola Eva, no soy experto en JUnit  :-[ pero voy a tratar de aportar alguna idea a ver si te sirve.

Voy a suponer algunas cosas porque con la explicación que has dado no tengo claro cómo tienes organizado el código.

Voy a suponer que dentro de la clase Tarea existe un método boolean esTarea(Tarea t)  { ... } que devuelve true si un objeto es una tarea y false si no es una tarea.

Voy a suponer que dentro de la clase Usuario tienes un método que se llame void hacerTarea (Tarea t) { ... } que da lugar a que el usuario haga una tarea.

Ahora sobre la clase Usuarios tendríamos que crear una clase de prueba de JUnit, por ejemplo UsuariosTest. Dentro de esa clase tendríamos el código en un método donde generamos un usuario y varias tareas y hacemos que ese usuario ejecute esas varias tareas, e igualmente tendríamos otro método donde generamos varios usuarios y una tarea y hacemos que esos varios usuarios ejecuten esa tarea.

Finalmente crearíamos un método donde creamos una tarea y consultamos mediante el método esTarea (Tarea t) si el atributo subtarea es una tarea en sí misma. Como en este método no simplemente estamos esperando "que se pueda ejecutar" sino un resultado concreto tendríamos que añadir una línea final donde se especifique la aserción de lo que queremos conseguir, por ejemplo:

assertEquals (true, objetoTareaCreado.esTarea(objetoTareaCreado.getSubtarea());

La llamada a assertEquals controla que el valor devuelto por el método coincida con el resultado esperado y de esa manera JUnit sabe si se obtiene un "resultado ok" o no.

Finalmente, una vez tienes la clase de prueba creada y los métodos de prueba, tendrías que ejecutarlos (por separado o conjuntamente) y verificar que JUnit te devuelve el resultado esperado para todos ellos.

Claro que para hacer esto hay que conocer el manejo básico de JUnit que normalmente está integrado con los IDEs (Eclipse, NetBeans, BlueJ, etc.) pero en cada IDE las herramientas que incorpora pueden ser un poco distintas, el concepto de aserción, etc.

Espero te sirva!  :D

323
PREGUNTA: Dado el siguiente código ¿cuál es el contenido de la variable c?

char c = '\0';
System.out.println (c);




RESPUESTA: El contenido es el carácter nulo. No tiene representación por pantalla, al igual que el string nulo “” no tiene representación por pantalla.

324
PREGUNTA: ¿Una subclase conoce un campo público de su superclase?


RESPUESTA: Sí debe conocerlo, pues si con protected basta, con public basta más todavía.

325
Gracias a vosotros por proporcionar este espacio!

326
PREGUNTA: Para conocer el número de elementos en un array en java se usa la invocación

a) array.length, invocamos un campo de la variable que referencia al objeto.
b) array.length(), invocamos un método de la clase.
c) array.size, invocamos un campo del objeto.
d) array.size(), invocamos un método del objeto.


RESPUESTA: este es un caso un poco singular, igual que los arrays son objetos especiales en java. La respuesta correcta es la a), usamos el campo length de los objetos de la clase, campo que "singularmente" tiene acceso público. ¡Esto hay que aprendérselo!

327
PREGUNTA: Un método estático puede invocarse:

a) De una manera, sobre un objeto.
b) De una manera, sobre la clase.
c) De dos maneras, sobre un objeto o sobre la clase
d) De ninguna manera por su carácter estático.



RESPUESTA: de dos maneras: sobre un objeto, o sobre la clase. Se admiten las dos formas.

328
Gracias Susana. Me canso como todo el mundo  :o, la cosa es ir poquito a poco  :)

Para ser más precisos -- > solo parar para coger carrerilla  ;D

329
PREGUNTA: Indicar qué se puede insertar en el lugar indicado para que el código compile, eligiendo la respuesta de entre las opciones que se dan más abajo:

class X { void do1() { } }
class Y extends X { void do2() { } }

class Chrome {
    public static void main(String [] args) {
        X x1 = new X();
        X x2 = new Y();
        Y y1 = new Y();
        //Código a insertar
    } }


Opciones que se dan como respuesta:

A. x2.do2();
B. (Y)x2.do2();
C. ((Y)x2).do2();
D. Ninguna de estas formas compila


RESPUESTA: La forma A no compila porque el compilador no conoce los tipos dinámicos. La forma B no compila porque el compilador ve ambigüedad en el casting. La forma C sí compila, al menos en Java 6. Un poco enrevesado, pero así es. Una pregunta de este tipo diríamos que tiene un poco (o un mucho) de mala intención, así que no le des demasiadas vueltas.

330
PREGUNTA: ¿Qué resultado produce este código?:

class Clidder {
private final void flipper() { System.out.println("Clidder"); }
}

public class Clidlet extends Clidder {
public final void flipper() { System.out.println("Clidlet"); }

public static void main(String [] args) {
new Clidlet().flipper();
}

}



RESPUESTA: esto de cliper clider recuerda a bebidas gaseosas  8) . En fin, vamos al asunto. Podría dar la impresión de que nos lanzaría un error al sobreescribir un método declarado como final, que no puede ser sobreescrito. Pero en realidad todo método declarado como privado no es conocido por las subclases. Por lo tanto una subclase puede sobreescribir un método que haya sido declarado como private y final. Final aplicado sobre private no tiene efectos. En cambio, sí tiene efectos cuando se combina con public o con protected. Resultado de ejecución: Clidlet.

331
PREGUNTA: ¿Qué efecto tiene la afección de un método por final como en esta signatura?:

final void Move(int dx, int dy)
{ x+= dx; y+= dy; }



RESPUESTA: El método B no podrá ser sobreescrito por clases que hereden de la clase donde se ha definido el método con final.



332
Los que estén preparando el examen... ¡A ponerse las pilas!


PREGUNTA: ¿Qué efecto tiene la afección de una clase por final como en esta declaración?:
final class B extends A { }


RESPUESTA: La clase B no puede ser derivada, no puede tener herencia. Sería erróneo escribir public class C extends B porque al usar la declaración final la herencia queda cerrada.

333
PREGUNTA: Dado este código:

public abstract interface Frobnicate { public void twiddle(String s); }

¿Qué signaturas de las siguientes son correctas y cuáles no?

A. public abstract class Frob implements Frobnicate {
public abstract void twiddle(String s) { }
}


B. public abstract class Frob implements Frobnicate { }

C. public class Frob extends Frobnicate {
public void twiddle(Integer i) { }
}


D. public class Frob implements Frobnicate {
public void twiddle(Integer i) { }
}

E. public class Frob implements Frobnicate {
public void twiddle(String i) { }
public void twiddle(Integer s) { }
}


RESPUESTA: Esto del frobnicate suena un poco raro, no sé si tendrá doble intención o no. Desde luego es para darles una palmadita en la espalda...

A.   Incorrecta. Implementa un método abstracto.
B.   Correcta. No sobreescribe el método abstracto, pero al ser la clase abstracta, no tiene la obligación de hacerlo.
C.   Incorrecta: no se puede usar extends aplicado sobre una interface.
D.   Incorrecta: no sobreescribe correctamente el método.
E.   Correcta: sobreescribe el método. Además lo sobrecarga correctamente.

¿Puede darse la situación en un examen de que dos respuestas sean correctas? En teoría no, pero en la práctica sí (porque en los propios exámenes a veces se cuelan erratas; no es frecuente, pero ocasionalmente sucede).

334
PREGUNTA: Una clase abstracta que implementa una interface ¿Está obligada a sobreescribir todos los métodos de la interface?

RESPUESTA: No, esta obligación solo afecta si la clase es concreta. Mientras se vayan declarando descendentemente clases abstractas, no hay obligación de sobreescribir los métodos abstractos hasta que no se implemente una clase concreta.

335
PREGUNTA: ¿Se puede instanciar una clase vacía?

RESPUESTA: Sí, aunque pueda parecer que tener una clase vacía no tenga utilidad, su utilidad puede estar diferida en el tiempo durante el desarrollo o pruebas de un programa. Es decir, que necesitemos que exista la clase para poder hacer otras cosas aunque de momento no tenga utilidad.

336
Enhorabuena bartvander! Y gracias a tí por tu apoyo... Hay mucha gente a la que le ha servido todo el trabajo aquí volcado pero no todo el mundo lo expresa públicamente. Por otro lado, dado que has aprobado y tienes las preguntas y respuestas del examen te animaría a que colabores y cuelgues las preguntas y respuestas de tu examen, que seguro le servirán a la gente que tenga que estudiar para septiembre o para próximos años... Suerte!

337
PREGUNTA: Si usted va a hacer una entrega comercial de software, ¿qué intentará, que contenga el mayor número de aserciones posibles o que no contenga aserciones?


RESPUESTA: Que no contenga aserciones. Las aserciones están pensadas para la fase de desarrollo y pruebas del programa.

338
Algunos ya han pasado los exámenes y para otros empieza ahora la preparación. Aquí seguimos!

339
PREGUNTA: ¿Qué ocurrirá si durante la ejecución de un programa se verifica que en la línea expuesta this.isEmpty() ==false?

Contenido de la línea:

assert this.isEmpty() == true;


RESPUESTA: Se produce una excepción de tipo java.lang.AssertionError. El uso de aserciones es útil para poder ir desarrollando un código más depurado pero no se mantienen en los programas finales o comerciales.

340
Hola Montse. El año pasado el examen de la primera semana fue "normal", mientras que el examen de la segunda semana era bastante más complicado, podría decirse que con un poquito (o mucho) de mala leche. Esperemos que este año se porten mejor. De cualquier manera, sea cual sea el nivel de dificultad que traiga el examen, la recomendación es no dejar que eso te descentre. Sea cual sea el nivel, conviene controlar bien los tiempos y tratar de responder lo máximo posible. Por ejemplo, si el tipo test es muy complicado, hay quien tiende a dedicarle 1 hora y media al test y luego no tiene tiempo para responder nada de la parte práctica. Es mejor hacer una primera pasada al test respondiendo por ejemplo un 75 % de las preguntas dejando las más complicadas y seguir a la parte práctica antes que enfrascarse con el test y no hacer nada de la práctica.

Páginas: 1 ... 12 13 14 15 16 [17] 18 19 20 21 22 23

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".