Archivo de la etiqueta: programador

Strategy

Hoy voy a hablaros del patrón Strategy, un patrón de comportamiento que permite definir un algoritmo pero delegar la implementación de algunas partes de dicho algoritmo a otras clases. De esta forma se consigue mucha portabilidad, ya que permite adaptar el algoritmo al entorno en el que se ejecuta en tiempo de ejecución. Por ejemplo, si el algoritmo muestra información por pantalla, es interesante que esa parte del algoritmo pueda disponer de diferentes implementaciones, para poder imprimir tanto por consola como en un dispositivo Android.

Diagrama UML

El diagrama UML del patrón Strategy es el siguiente:

strategy

Como ejemplo podríamos definir en la clase Strategy una interfaz para algoritmos de ordenación, y en las clases concretas se implementaría con distintos métodos como QuickSort o MergeSort. El contexto sería la interfaz del programa principal que contendría una lista a ordenar y la referencia a la clase Strategy.

Ejemplo en Java

Supongamos que estamos diseñando una tienda online y queremos que acepte distintos medios de pago (tarjeta de crédito, Paypal, Bitcoin, etc). Un ejemplo de arquitectura con Strategy sería el siguiente:

Strategy-Pattern

En la interfaz se define el método y las subclases que implementan la interfaz definen los distintos métodos de pago. esto permite que en tiempo de ejecución se pueda elegir la clase que se ejecuta. El contexto es la clase ShoppingCart que contiene la referencia al Strategy.

El código completo en Java se encuentra en el siguiente enlace: http://www.journaldev.com/1754/strategy-design-pattern-in-java-example-tutorial

Deja un comentario

Archivado bajo Tutoriales

¿Eres un buen programador?

En la actualidad, uno de los mayores retos para las empresas de recruiting a la hora de seleccionar candidatos válidos para ser endorsados a un cliente es la de probar la valía de los individuos en base a lo que saben de programación (o dicen saber). Es por eso que surge Codility, una empresa cuya andadura comenzó en China, cuando su director ejecutivo diseñó una herramienta para ayudar a su equipo a elegir el mejor candidato en entrevistas técnicas. La idea evolucionó para convertirse en una startup que desarrolla y paquetiza dicho software. logo2 ¿El producto? Un sistema de evaluación que consiste en plantear un problema al candidato que debe resolver en menos de un tiempo estipulado usando el lenguaje en cuyas habilidades que el examinador/recruiter quiere comprobar que el candidato pilota. La herramienta cuenta con compilador/intérprete para los lenguajes más populares como C, C++, C#, Java, JavaScript, Pascal, Perl, PHP, Ruby, Python, VB.NET, SQL y Scala. Además permite añadir casos de prueba específicos para probar la solución al problema. 60301v2 Una vez implementada la solución para el problema (ojo que en muchos casos para obtener la solución perfecta se exige que la implementación cumpla ciertas restricciones de complejidad espacio/temporales) se procede a publicar la respuesta, la cual llega directamente al recruiter que solicitó la prueba, generando un informe del siguiente estilo: KNjj3 Actualmente Codility es muy habitual en empresas de recruiting de UK y US; y puede probarse para testar tus habilidades mediante la demo o en la sección «Challenge yourself».

Y si el tener en cuenta el tiempo te parece mucha presión …

Para los pacientes, los que no tengan prisa y que simplemente quieran un desafío está el Proyecto Euler. Si bien no sirve para medir la calidad de tus toneladas de líneas, este proyecto sirve para ejercitar tus habilidades de programación y consta de una serie de problemas matemáticos y/o programación que suponen un reto, ya que requieren algo más que nociones matemáticas para ser resueltos. pe_banner_light La motivación del Proyecto Euler es la de proveer de una plataforma para introducir a aquellas personas que así lo deseen en áreas poco familiares y el aprendizaje de nuevos conceptos de una manera divertida. La plataforma permite registrarse de manera gratuita e ir publicando las soluciones a los, hasta ahora publicados, 455 problemas; de manera que siguiendo un sistema de logros se busca mantener el interés del usuario en la resolución de los citados problemas matemáticos.

En resumidas cuentas …

Mientra que Codility te permite tener una visión más detallada sobre el grado cualitativo de las soluciones que aportas a determinados problemas, ProjectEuler te permite ejercitar poco a poco tus habilidades como programador, mantenerlas al día y libre de oxidación. ¡Happy coding!

Deja un comentario

Archivado bajo Herramientas