RSS

Novedades

Hace tiempo que no escribía en el blog y es que estoy realizando un máster de desarrollo para aplicaciones móviles que incluye Android, iOS y Windows Phone. La verdad es que me está gustando muchísimo y tengo este blog un poco abandonado.

A la vez os comento que dentro de poco, el día 14 de Febrero voy a realizar el examen de la certificación Business Component Developer. Así que si alguien se la está estudiando o le interesa ya os comentaré en su momento cómo me ha parecido el examen. 

Un saludo!

 
13 comentarios

Publicado por en 21 enero, 2013 en Uncategorized

 

Etiquetas: ,

Encuesta para vosotros

 
9 comentarios

Publicado por en 6 julio, 2012 en Uncategorized

 

Resumen Interfaz List y clases implementadoras

En este diagrama os dejo las clases que deberéis conocer sobre la interfaz List, los métodos más usados y algunas anotaciones sobre ellas.


1. Ejemplo ArrayList

import java.util.*;
public class EjemArrayList{
    public static void main (String[] args){
        ArrayList nombres = new ArrayList();
        System.out.println("Elementos al inicio: " + nombres.size());
        nombres.add("Ana");
        nombres.add("Bea");
        nombres.add("Dalia");
        nombres.add("Pedro");
        nombres.add("Bea");  //comprobar que admite duplicados

        System.out.println("Contenido: " + nombres);
        System.out.println("Elementos: " + nombres.size());
        System.out.println(nombres.contains("Ana"));

        nombres.remove("Ana"); //eliminamos un elemento

        System.out.println("Contenido: " + nombres);
        System.out.println("Elementos: " + nombres.size());
        System.out.println(nombres.contains("Ana"));

        nombres.add(3, "Ana"); //Añadir en posicion x
        System.out.println("Contenido: " + nombres);

        System.out.println("SubLista(1,4):" + nombres.subList(1,4));
    }
}

Resultado de la ejecución:

2. Ejemplo LinkedList

import java.util.*;
public class EjemLinkedList {
    public static void main (String[] args){
        LinkedList nombres = new LinkedList();
        nombres.add("Ana");
        nombres.add("Maria");
        nombres.add("Pedro");
        nombres.addFirst("Elena"); //insertamos al ppio.
        nombres.addLast("Bea"); //insertamos al final.
        nombres.add(2, "Lola"); //insertamos en posicion x

        System.out.println("\nContenido: " + nombres);
        System.out.println("getFirst(): " + nombres.getFirst());
        System.out.println("getLast(): " + nombres.getLast());

        System.out.println("\nHacemos peek(): " + nombres.peek());
        System.out.println("Contenido: " + nombres);

        System.out.println("\nHacemos poll(): " + nombres.poll());
        System.out.println("Contenido: " + nombres);

        System.out.println("\nHacemos offer(): " + nombres.offer("Luis"));
        System.out.println("Contenido: " + nombres);

    }
}

Resultado de la ejecución:

Si queréis consultar algún método en concreto o verlos todos: ArrayList, LinkedList, List.

 
1 comentario

Publicado por en 22 junio, 2012 en Resumenes

 

Etiquetas: , , , , , ,

Resumen Interfaz Set y clases implementadoras

En este diagrama os dejo las clases que deberéis conocer sobre la interfaz Set, los métodos más usados y algunas anotaciones.

También algunos ejemplos para que comprobéis sus características.

1. Ejemplo HashSet

import java.util.*;
public class EjemploHashSet {

    public static void main (String[] args)
    {
        HashSet<String> s1 = new HashSet <String>();
        s1.add("Hola");
        s1.add("Hola amigo");
        s1.add("Encantado de conocerte");
        s1.add("Se me hace tarde");
        s1.add("Espero verte pronto");
        s1.add("Adios");

        s1.add("Adios"); //Intentamos añadir un duplicado.

        System.out.println("Numero de elementos: " + s1.size() + "\n");

        Iterator i = s1.iterator();
        while (i.hasNext()){
            System.out.println(i.next());
        }
    }
}

2. Ejemplo LinkedHashSet

import java.util.*;
public class EjemploLinkedHashSet {

    public static void main (String[] args)
    {
        LinkedHashSet<String> s2 = new LinkedHashSet <String>();
        s2.add("Hola");
        s2.add("Hola amigo");
        s2.add("Encantado de conocerte");
        s2.add("Se me hace tarde");
        s2.add("Espero verte pronto");
        s2.add("Adios");

        s2.add("Adios"); //Intentamos añadir un duplicado.

        System.out.println("Numero de elementos: " + s2.size() + "\n");

        Iterator i = s2.iterator();
        while (i.hasNext()){
            System.out.println(i.next());
        }
    }
}


3. Ejemplo TreeSet

import java.util.*;
public class EjemploTreeSet {

    public static void main (String[] args)
    {
        TreeSet<String> s3 = new TreeSet<String>();
        s3.add("Hola");
        s3.add("Hola amigo");
        s3.add("Encantado de conocerte");
        s3.add("Se me hace tarde");
        s3.add("Espero verte pronto");
        s3.add("Adios");
        s3.add("Adios"); //Intentamos añadir un duplicado.

        System.out.println("Numero de elementos: " + s3.size() + "\n");

        Iterator i = s3.iterator();
        while (i.hasNext()){
            System.out.println(i.next());
        }

        System.out.println ("\nlower(\"Encantado de conocerte\"): "
        + s3.lower("Encantado de conocerte"));
        System.out.println("floor(\"Encantado de conocerte\"): "
        + s3.floor("Encantado de conocerte"));
        System.out.println("higher(\"Encantado de conocerte\"): "
        + s3.higher("Encantado de conocerte"));
        System.out.println("ceiling(\"Encantado de conocerte\"): "
        + s3.ceiling("Encantado de conocerte"));

        // Devolvemos el set en orden descendente
        NavigableSet<String> reverse =   s3.descendingSet();

        //Lo mostramos
        Iterator r1 = reverse.iterator();
        while (r1.hasNext()){
            System.out.println(r1.next());
        }

        //Hacemos un pollFirst y pollLast
        //Devuelve y elimina el primer elemento
        System.out.println("\nreverse.pollFirst: " + reverse.pollFirst());
        //Devuelve y elimina el ultimo elemento
        System.out.println("reverse.pollLast: " + reverse.pollLast() + "\n");

        //Vemos cómo queda el set
        Iterator r2 = reverse.iterator();
        while (r2.hasNext()){
            System.out.println(r2.next());
        }

    }
}

 
4 comentarios

Publicado por en 9 junio, 2012 en Resumenes

 

Etiquetas: , , , , ,

Resumen de las clases de Ficheros y E/S

Os dejo este diagrama de las clases que debemos conocer para el examen.
Incluye los métodos más conocidos y los argumentos que admiten (F: File, Str: String, Wr: Writer, R: Reader)

Algunas notas rápidas sobre las clases:

File: es una representación abstracta de nombres de ficheros y directorios.

FileReader: lee ficheros de caracteres. Es una clase que opera a bajo nivel. El método read lee todo el fichero, devuelve el tamaño y lo devuelve en un array.

BufferedReader: es la clase que mejora la eficiencia de los anteriores lectores. Lee largas cantidades de caracteres y guarda lo datos en buffer. Tiene mejores métodos como readLine().

FileWriter: se usa para escribir en ficheros de caracteres. Su método write() permite escribir caracteres o cadenas en un fichero.

BufferedWriter: clase que mejora la eficiencia del anterior escritor. Escribe grandes cantidades de caracteres en un fichero. Tiene el método newLine().

PrintWriter: clase mejorada desde Java 5. Métodos nuevos como format(), printf() y append() la hacen flexible y poderosa.

Console: provee métodos para leer y escribir en la consola.

Programa libre de diagrama de clases StarUML.

 
3 comentarios

Publicado por en 31 mayo, 2012 en Resumenes

 

Ya llegó la certificación por correo!!

Hola a todos! Ya hace dos semanas que llegó el sobre de Oracle a casa de mis padres (fue el domicilio que puse en Pearson Vue) pero aún no me había pasado a recogerlo. Aprobé el día 10 de Mayo y solamente tardó una semana en llegar.

Por si tenéis curiosidad y os anima a estudiar, os cuento lo que nos llega en el sobre:

  • Una carta de felicitación de Oracle: «Congratulations on becoming an Oracle Certified Professional, Java SE 6 Programmer! …» e indicaciones para suscribirnos a la monthly Oracle Certification E-Magazine.

Para ello necesitamos hacer login con nuestra cuenta de Oracle en https://myprofile.oracle.com y movernos por los siguientes menús: «Subscription Center»>»Education and Training»> y seleccionar la casilla «Oracle Certification Program».

  • Una página de publicidad de Oracle para informarnos y animarnos a participar en los Oracle User Group. Para encontrar algún grupo de nuestro interés: iouc.org/ou
  • El certificado:
    No me podía resistir a ponerlo 🙂  

  • Una tarjeta: para poder llevarla cómodamente en la cartera y acreditar la certificación.


Ánimo y dentro de poco el Success Kit estará llegando a vuestra casa también!

 
26 comentarios

Publicado por en 28 mayo, 2012 en Uncategorized

 

Etiquetas: , , , ,

Mi experiencia con el examen OCPJP 6

Este jueves pasado día 10 de Mayo reservé cita en un centro próximo para realizar el examen y aunque no iba tan preparada como a mí me hubiera gustado, finalmente aprobé!!! Con un porcentaje que no es muy impresionante, un 76% pero al menos aprobado está!

Os cuento un poco:

¿Qué nos piden en el centro antes de hacer el examen? 

  • Dos identificaciones con foto. Yo dí el dni y el carnet de conducir.
  • Rellenar un formulario con nuestros datos.
  • Leer y firmar que aceptas las reglas de Oracle para los exámenes de certificación.
  • Nos hacen una foto para el informe que se imprimirá posteriormente con el resultado de la prueba.
  • Recoger y guardar en taquilla cualquier dispositivo electrónico, móvil, reloj, etcétera

¿Cómo es el programa del examen? 

El programa nos muestra el enunciado con el número de respuestas a elegir, la pregunta y las opciones en la parte izquierda. En la parte superior derecha se nos muestra el tiempo restante y hay una casilla de verificación para marcar la pregunta para revisar más tarde. En la esquina inferior derecha tenemos botones para movernos por las preguntas, Anterior y Siguiente.

Las preguntas me sorprendieron porque yo haciendo otros tests y ejercicios de examen era muy lenta y pensaba que no me iba a dar tiempo a contestar todas, pero son menos enrevesadas y más cortitas.

Cuando pasas la última pregunta puedes elegir Revisar o Finalizar Examen.
Al darle a Revisar aparece un listado con las preguntas que marcaste para ir directamente a alguna en concreto o puedes elegir Revisar Marcadas o Revisar Todas.

Yo revisé todas desde el principio porque me sobraron 20 minutos y quise dar otra pasada.

Cuando acabas de revisar vuelven a aparecer las opciones Revisar y Finalizar Examen.
Al darle a Finalizar Examen en unos segundos ya aparece tu porcentaje de aciertos y si aprobaste.
Al dar a Terminar se manda a imprimir el resultado.


¿De qué temas hubo más preguntas? 

Colecciones, Hilos, llamadas correctas a clases internas o estáticas.
Sobre polimorfismo: castings válidos o decir que métodos eran correctos en una subclase, teniendo en cuenta que algunos eran correctos por ser sobrecargas y otros por ser sobrescritos.

También quería confirmaros que no hubo ninguna pregunta sobre serialización ni preguntas drag & drop.


¿Si apruebas te dan la certificación directamente? 

La certificación llega por correo más adelante, te dan la hoja de resultados con tu porcentaje de aciertos y si aprobaste o no. La dirección a la que llegara es la que indicaste en tu perfil de Pearson Vue.

Existe una página de Oracle, Oracle Cert View en la que podemos ver el historial de certificaciones (Certification History), exámenes (Exam History), acreditar nuestras certificaciones a un tercero (Publish Credentials to 3rd Parties) y ver si han realizado ya el envío de nuestra certificación (Success Kit Status).

Será necesario para entrar en esta página tener una cuenta en Oracle (o creárnosla) y dar algunos datos del perfil de Pearson Vue que hicimos para reservar el examen.

Os dejo algunas capturas:



 
36 comentarios

Publicado por en 15 mayo, 2012 en Examen, Uncategorized

 

Las clases de cadena: String, StringBuffer y StringBuilder

Java proporciona tres clases diferentes para tratar con cadenas de caracteres:

Los objetos String son cadenas de caracteres estáticas, al crearse e inicializarse no pueden cambiar su valor. Es porque son inmutables que pueden ser compartidas por varias referencias.

Los objetos StringBuffer y StringBuilder, por el contrario, son cadenas de caracteres dinámicas, pueden cambiar su contenido y su capacidad.

La diferencia entre los objetos StringBuffer y StringBuilder es que los primeros pueden ser utilizados de forma segura por varios hilos, siendo sus métodos sincronizados mientras que los objetos StringBuilder no.

La clase StringBuilder se añadió en la versión J2SE 1.5.

Read the rest of this entry »

 
5 comentarios

Publicado por en 27 marzo, 2012 en Tema 6

 

Etiquetas: , , , , , , , , , ,

30 preguntas sobre Assertions

He recopilado las siguientes 30 preguntas sobre Assertions de diferentes
fuentes, citadas al final del post.

Las primeras son más teóricas, preguntando sobre las características de las Assertions y su uso adecuado o no, mientras que las siguientes se concentran en que el aspirante conozca el resultado de la ejecución.

He creído mejor esta vez no colocar las respuestas, si alguna la encontráis difícil o dudosa, podemos hablar de ella en los comentarios.

1. Suponiendo que están habilitadas las assertions, ¿cúales de las siguientes sentencias lanzarán un error?

  1. assert true : true;
  2. assert true : false;
  3. assert false : true;
  4. assert false : false;

2. ¿Cuáles de las siguientes opciones son válidas?

  1. -ae
  2. -enableassertions
  3. -source 1.4
  4. -disablesystemassertions
  5. -dea

3. ¿Cuál es el nombre de la excepción lanzada por una sentencia assertion?

  1. Depends on the assertion statement.
  2. FailedAssertion
  3. AssertionException
  4. RuntimeException
  5. AssertionError
  6. Error

4. ¿Qué puede provocar que una sentencia assert sea ignorada?

  1. Nada.
  2. Usando las opciones de compilación correctas.
  3. Usando las opciones de tiempo ejecución correctas.
  4. Usando las opciones de compilación y tiempo de ejecución correctas.

5. Suponiendo que las assertions están habilitadas, dado el siguiente método, ¿qué sentencias lanzarán una excepción?


static int inv(int value) {
assert value > -50 : value < 100;
return 100/value;
}

  1. inv(-50)
  2. inv(0)
  3. inv(50)
  4. inv(100)
  5. inv(150)
 
2 comentarios

Publicado por en 24 marzo, 2012 en Preguntas

 

Etiquetas: , , , , , ,

Soluciones – Assertions

Solución Ejercicio 1:

Creamos la clase Assert_Identificador.java

public class Assert_Identificador
{
        //Código Anterior a la J2SE 1.4
        //assert como identificador.
	public static void main(String[] args)
	{
		boolean assert;
		assert = Integer.parseInt(args[0]) % 5 == 0;
                if (assert) {
			System.out.println("Correcto");
		}
		else{
			System.out.println("No Correcto");
		}
	}
}

Compilamos normalmente y observamos el error:

Compilamos ahora indicando la versión 1.3 y observamos los warnings:

Ejecutamos:


Solución Ejercicio 2: 

Creamos la clase Assert_PalabraClave.java.

Definimos un constructor con la longitud del array de edades como parámetro.

Creamos un método público setEdad(int pos, int valor) para dar valores a las posiciones del array.
En este método público setEdad, validamos los argumentos lanzando excepciones si no son correctos. Quitaremos estas comprobaciones para provocar que salte la assertion posteriormente.

Creamos el método privado mediaEdades() que calcula la media e incluye la assertion que supone que la media siempre será >0.

public class Assert_PalabraClave{
    private int[] edades;

    public Assert_PalabraClave (int tam){
       edades = new int[tam];
    }

    public void setEdad(int i, int valor){
    /* En un método público no podemos usar assertions para comprobar los
       argumentos, se deben lanzar excepctions si no son válidos. Comentar
       los ifs y exceptions para dejar solo this.edades[i] = valor y
       poder poner en el main un valor negativo que haga saltar
       la assertion en mediaEdades. */

        if (iedades.length-1){
            throw new IllegalArgumentException("\nPosicion: " + i + " fuera de rango del array");
        }
        else if (valor < 0){
            throw new IllegalArgumentException("\nValor: " + valor + " menor de 0");
        }
        else{
    	    this.edades[i] = valor;
        }
    }

    private float mediaEdades(){
        int suma = 0;
        float media = 0;
        int i;
        for (i=0; i 0): "La media no es mayor que cero, es: " + media;
        return media;
    }

    public static void main (String[] args)
    {
          Assert_PalabraClave apc = new Assert_PalabraClave(5);
          apc.setEdad(0, 10);
          apc.setEdad(1, 3);
          apc.setEdad(2, 4);
          apc.setEdad(3, 7);
          apc.setEdad(4, 23);
          //apc.setEdad(4, -100); //para provocar excepción por valor menor de cero.
          //apc.setEdad(5, 39); //para provocar excepción por posición fuera de rango.

	  System.out.println("La media de edad es: " + apc.mediaEdades());

    }
Compilamos con -source 1.3 para observar el error:
Compilarmos normalmente y ejecutamos habilitando assertions:
Modificamos el código fuente para hacer saltar la assertion, compilamos y ejecutamos:

Solución Ejercicio 3:
En el constructor no se puede utilizar un assertion para comprobar los argumentos, ya que es público y esencial que al construirse el objeto se garantice que sus atributos tengan valores válidos. Modificar con excepciones.

Los asserts en los métodos públicos subir(int personas) y bajar(int personas) son correctos ya que no están comprobando los valores del argumento personas, sino el estado final de los atributos del objeto bus.

El assert que comprueba los argumentos pasados en la línea de comandos al programa también es un uso inapropiado. Modificar con excepciones.

Solución Ejercicio 4:

Escribimos un switch sencillo que según el entero nos imprima el día de la semana que le correspondería.

public class AssertSwitch{

  public static void mostrarDiaSemana(int dia)
  {
       switch(dia){
           case 1: System.out.println("Lunes");
           break;

           case 2: System.out.println("Martes");
           break;

           case 3: System.out.println("Miercoles");
           break;

	   case 4: System.out.println("Jueves");
           break;

	   case 5: System.out.println("Viernes");
           break;

           case 6: System.out.println("Sabado");
           break;

	   case 7: System.out.println("Domingo");
           break;

	   default:
		assert(false): "Int Dia pasado: " + dia;
        }
    }

    public static void main (String[] args){
        mostrarDiaSemana(3);
        mostrarDiaSemana(9); //Se supone que este valor nunca se daria
    }
}


 
1 comentario

Publicado por en 23 marzo, 2012 en Deberes

 

Etiquetas: , , , , ,

 
A %d blogueros les gusta esto: