Desarrollar código que declare clases (incluyendo clases abstractas y todas las formas de clases anidadas), interfaces y enums, así como el uso apropiado de las sentencias package e import (incluuyendo importaciones estáticas)
Desarrollar código que declara una interfaz. Desarrollar código que implemente o extiene una o más interfaces. Desarrollar código que declare una clase abstracta. Desarrollar código que extienda una clase abstracta.
Desarrollar código que declare, inicialice y use tipos primitovos, arreglos, enums y objetos como variables locales, de instancia y estáticos. También, usar identificadores válidos para los nombres de variables.
Desarrollar código que declare métodos estáticos y no-estáticos y, si resulta apropiado, usar nombres de métodos que se adhieran a los estándares de nombramiento de JavaBeans. También desarrollar código que declare y use una lista de argumentos de largo variable.
Dado un ejemplo de código, determinar si un método está sobreescrito o sobrecargado en forma correcta e identificar los valores de retorno válidos (incluyendo las devoluciones covariantes), para un método.
Dado un conjunto de clases y superclases, desarrollar constructores para una o más clases. Dada una declaración de clase, determinar si se creará un constructor por defecto y determinar el comportamiento de este constructor. Dada una clase anidada o no-anidada, escribir código para instanciar la clase.
Control de Flujo
Desarrollar código que implemente una sentencia if o switch e identificar los tipos de argumentos válidos para estas sentencias.
Desarrollar código que implemente todas las formas de bucles e iteradores, incluyendo el uso de for, el for enriquecido(for-each), do, while, labels, breaks y contiue. Explicar los valores tomados por variables contadores de un bucle durante y después de la ejecución de un bucle.
Desarrollar código que haga uso de aserciones y distinguir entre los usos apropiados e inapropiados de aserciones.
Desarrollar código que haga uso de excpeciones y cláusulas manejadoras de excpeciones (try, catch, finally) y declarar métodos y métodos sobrecargados que lancen excepciones.
Reconocer el efecto de alcanzar una excepción en un punto específico de un fragmento de código. Distinguir entre excepciones en tiempo de ejecución, excepciones verificadas y errores.
Reconocer situaciones que puedan dar como resultado cualquiera de las siguientes excepciones: ArrayIndexOutOfBoundsException,ClassCastException, IllegalArgumentException, IllegalStateException, NullPointerException, NumberFormatException, AssertionError, ExceptionInInitializerError, StackOverflowError o NoClassDefFoundError. Comprender cuáles de estas pueden ser lanzadas por la máquina virtual y reconocer situaciones en las que podrían lanzarse programáticamente.
Contenidos de API
Desarrollar código que use clases de envolutura primitivas (tales como Boolean, Character, Double, Integer, etc.), y/o autoboxing & unboxing. Discutir las diferencias entre las clases String, StringBuilder y StringBuffer.
Dado un escenario que involucre navegación en el sistema de archivos, lectura de archivos, escritura en archivos o interaccionar con usuario, desarroolar la solución correcta usando las clases siguientes: java.io: BufferedReader, BufferedWriter, File, FileReader, FileWriter, PrintWriter, y Console.
Desarrollar código que serialice o de-serialice objetos usando las siguientes API de java.io: DataInputStream, DataOutputStream, FileInputStream, FileOutputStream, ObjectInputStream, ObjectOutputStream y Serializable.
Usar API J2SE estándar en el paquete java.text para formatear o parsear fechas, números y valores monetarios para un locale específico. Dado un escenario, determinar los métodos apropiados para usar un locale por defecto o un locale específico. Describir el propósito y uso de la clase java.util.Locale.
Escribir código que use las API J2SE estándar en los paquetes java.util y java.util.regex para formatear y parsear strings o streams. Para strings, escribir código que use las clases Pattern y Matcher y el métod split de String. Reconocer u usar patrones de expresiones regulares para concordancia (limitado a: . (dot), * (star), + (plus), ?, \d, \s, \w, [], ()). El uso de *, + y ? estará limitado a los cuantificadores y el uso de paréntesis será solo usado como mecanismos de agrupación (no se utilizará para capturar contenido durante la concordancia). Para streams, la escritura de código usando las clases Formatter y Scanner y los métodos PrintWriter.format/printf. Reconocer y usar parámetros de formateo (limitado a: %b, %c, %d, %f, %s) en el formateo de strings.
Concurrencia
Escribir código para definir, instanciar y comenzar hilos nuevos usando java.lang.Thread y java.lang.Runnable.
Reconocer los estados en los que puede existir un hilo e identificar las formas en que un hilo puede realizar una transición desde un estado a otro.
Dado un escenario, escribir código que haga uso apropiado del lockeo de objetos para proteger variables estáticos o de instancia de problemas de acceso concurrente.
Dado un escenario, escribir código que haga uso apropiado de wait, notify o notifyAll.
Conceptos de Orientación a Objetos
Desarrollar código que implemente encapsulación, bajo acoplamiento y alta cohesión en clases y describir los beneficios.
Dado un escenario, desarrollar código que muestre el uso de polimorfismo. Además, determinar cuándo se necesita realizar casting y reconocer errores de tiempo de ejecución yde compilación.
Explicar el efecto de los modificadores sobre la herencia con respecto a los constructores, variables estáticas y de instancia y métodos estáticos o de instancia.
Dado un escenario, desarrollar código que declare y/o invoque métodos sobreescritos y sobrecargados y código que declare y/o invoque construtcores sobrecargados o de superclases.
Desarrollar código que implemente relaciones "is-a" y/o "has-a".
Colecciones / Generics
Dado un escenario de diseño, determinar qué clases e interfaces de colecciones deberían usarse para implementar apropiadamente dicho diseño,incluyendo el uso de la interfaz Comparable.
Distinguir entre sobrescritura correctas e incorrectas de los métodos hashCode y equals, y explicar la diferencia entre los métodos = = y equals.
Escribir código que use las versiones genéricas de la API Collections, en particular, las clases de implementación e interfaces Set, List y Map. Reconocer las limitaciones de la API Collections no genérica y cómo refactorizar el código para usar las versiones genéricas. Escribir código que use las interfaces NavigableSet y NavigableMap.
Desarrollar código que haga uso apropiado de los parámetros de tipo en las declaraciones de clases e interfaces, variables de instancia, argumentos de métodos y tipos de retorno. Escribir métodos genéricos o métodos que hagan uso de tipos comodines y comprender y comprener las diferencias y similitudes entre estos dos enfoques.
Usar las capacidades en el paquete java.util para escribir código que maneje una lista mediante el ordenamiento, búsqueda banaria y conversión de listas en arreglos. Usar las interfaces java.util.Comparator y java.lang.Comparable para afectar la ordenación de listas y arreglos. Reconocer el efecto del ordenamiento natural de las clases de envoltura primitivas y java.lang.String sobre la ordenación.
Fundamentos
Dado un ejemplo de código y un escenario, escribir código que use los modificadores de acdeso, las declaraciones de paquetes y las sentencias import apropiadas para interaccionar con el código en el ejemplo. Dado un ejemplo de una clase y una lìnea de comand, determinar el comportamiento esperado durante la ejecución.
Determinar el efecto sobre las referencias a objetos y los valores primitivos cuando son pasados a un método para realizar asignaciones u otras operaciones que modifican los parámetros.
Dado un ejemplo de código, reconocer el punto en el que un objeto se transforma en elegible para garbage collection, determinar que está garantizado y que no por el sistema de garbage collection y determine el comportamiento del método Object.finalize().
Dado el nombre de una clase completamente calificado que está siendo desplegado dentro y/o fuera de un archivo JAR, construir la estructura de directorio apropiada para esa clase. Dado un ejemplo de un código y un classpath, determinar si el classpath hará que el código compile en forma exitosa.
Escribir código que aplique correctamente los operadores apropiados incluyendo los operadores de asignación (limitado a: =, +=, -=), operadores aritméticos (limitado a: +, -, *, /, %, ++, -\-), operadores relacionales (limitado a: <, <=, >, >=, ==, !=), el operador instanceof, operadores lógicos (limitados a: &, |, ^, !, &&, ||) y el operador condicional ( ? : ) para producir el resultado deseado. Escribir código que determine la igualdad de dos objetos y dos valores primitivos.
SOA - BPM
Consulte sobre nuestras opciones de consultoría y capacitación en SOA y BPM.
Noticias Sofis
Sofis Solutions participa en el evento PYMETIC 2009, Lima Perú, exponiendo sobre el tema "Automatización de procesos para PYME: un enfoque BPM".
Sofis Solutions participa en el Seminario CITEVirtual, organizado por BID-FOMIN, PROGRAMA ICT4BUS, LATU y la Red de CITEs de Perú, exponiendo sobre "SaaS: Software as a Service".
Sofis es designado partner de Oracle.
Sofis es designado el primer Centro Autorizado de Capacitación de MySQL para Uruguay.
Sofis Solutions comienza el proceso para la certificación ISO 27001 (Seguridad de la Información).
Staff de Sofis Solutions participa en la capacitación internacional de capacitadores en MySQL.
El 100% del staff de Sofis Solutions obtiene certificaciones Java.
Sofis obtiene la certificación UNIT-ISO 9001:2000 de su Sistema de Gestión de Calidad.
Sofis es designado Centro Oficial de Capacitación de Sun Micrsoystems para Uruguay.