jueves, 31 de enero de 2008

EasyMock es una librería autónoma

Aclaración sobre EasyMock:
EasyMock se puede utilizar con Junit o TestNG, en un entorno de pruebas, o inclusosi se le echa imaginación se puede utilizar en la aplicación es decir en el src

Anotaciones y AOP

Una aclaración sobre las anotaciones en AOP: El AOP se puede aplicar sin anotaciones, en este caso le indicaríamos al "contenedor" las especificaciones relacionadas con los aspectos a través de ficheros XML que tendría que parsear y traducir.
Con las anotaciones queda más claro para el programador, ya que la información relativa a aspectos/interceptores queda en el mismo fichero java, en vez de utilizar otro fichero (XML) situado en otro directorio de la aplicación

En la versión 2 de EJB todo los componentes se marcaban con XML, y toda la aplicación estaba interceptada, es decir se podía aplicar AOP

viernes, 25 de enero de 2008

Los blogs del curso y lo que le parecen al profe!

  • http://cea-jesussubires.blogspot.com/
    • en desarrollo progresivo!
      • hay que seguir trabajando las entradas (con ejemplos en repositorio) para asimilarlas cada día mejor (aunque van bien), me refiero a herencia, easymock ...
      • me gusta que las entradas son cortas pero con lo que hemos dado en clase mejor que largas investigaciones del universo java
  • http://www.noelia-java.blogspot.com/
    • promete!
      • está bien de entradas, y de "inspiración" (intenta personalizar la teoría), cuando acabe el curso este blog promete!
  • http://cea-roberto-roldan.blogspot.com/
    • Muy bien!:
      • la información justa para recordar lo importante de las explicaciones del curso
      • se utilizan los recursos/herramientas de documentación como delicious
      • se aportan enlaces de interes
      • el estilo es distendido
      • claridad en describir lo especial de cada herramienta tratada en el curso
  • http://cea-mariagd.blogspot.com/
    • en buen camino! aunque todavía falta un poquillo ...
      • está más o menos bien lo que hay en el blog, sobre todo el lenguaje utilizado y que se refiere al curso que estamos dando y no al universo frikie de java,wikipedia,...
  • http://cea-manuelperujo.blogspot.com/
    • en camino!
      • creatividad "gráfica" y humor no falta y hay esperanza de que en breve este blog/programador empieze a ver la luz ...
      • hay que intentar personalizar el lenguaje y contarlo con otras palabras, no hace falta intentar explicar el ¿qué es una herramienta? sino el ¿para qué se usa y desde cuándo?
  • http://cea-j2ee-paco.blogspot.com/
    • hay que ponerse las pilas!
  • http://cea-fidelmazo.blogspot.com/
    • En camino!
      • la intención es buena, queda entender un poco más las herramientas y los contextos donde se utilizan las herramientas, que se supone que es el objetivo del curso y vamos por la mitad ...
      • el esfuerzo en concretar con palabras las herramientas del curso tendrá sus resultados ...
  • http://cea-manolobe.blogspot.com/
    • triple pirueta
      • se reconoce el interés en plasmar lo que se desarrolla en clase aunque hay que pulir algunas cosas
      • estilo distendido e intentando teorizar: está muy bien arriesgarse aunque haya que corregir algunos conceptos, (que en teoría para eso está el resto del curso)
  • http://cea-pacogalvez.blogspot.com/
    • Muy bien!, pero ...
      • lenguaje demasiado especializado (en teoría tenía que entenderse por una persona no demasiado docta en la materia)
      • demasiada información relativa a investigación en relación a los ejemplos personalizados de cada herramienta tradada en el curso
  • http://cea-ruben.blogspot.com/
    • Ánimo !
      • falta que utilices el blog para que pongas lo que sabes! sobre todo para extenderse un poquito, los diagramas son un poco "espaciales" no?
      • lo del chorizo engancha!
  • http://cea-elmrabet.blogspot.com/
    • la intención es buena!, pero ...
      • hay que resumir lo que damos en clase!
      • el código java de ejemplo al repositorio, please!
      • faltan algunas entradas ...
  • http://cea-victorortega.blogspot.com/
    • Muy bien!
      • Se nota que se entienden bien los contenidos y las herramientas, solo faltaría un poco más de desarrollo de la información para que otra persona que consulte el blog pueda utilizarlo como documentación (aunque ya casi se podría, ya que la linea es buena), es decir incuir links a otras páginas, recursos, algunos ejemplos más ...
      • genial como archivo de todo lo interesante (ej: ciclo de vida, seam-gen ...) que se dice en el curso
  • http://cea-josedominguez.blogspot.com/
    • un blog camino de resucitar!
      • hay entradas más encaminadas que otras, pero falta información con palabras de andar por casa para explicar conceptos de andar por casa ...
      • easymock y testng ¿cuándo se rellenan los ejemplos ?
      • el repositorio ...
  • http://www.cea-manunuwi.blogspot.com/
    • Muy bien! aunque todavía faltan algunas entradas (hay que currárselo un poco más!)...
      • Genial los inicios de documentación en video sobre refactorización
      • OK la comprensión de herramientas expuestas en el blog
      • Informaciones pequeñas pero claras
  • http://cea-tamara.blogspot.com/
    • que lista (es la wikipedia y derivados)!
      • hay que recontarlo con nuestras palabras! y que sea lo que se trata e clase, hay que intentar hacer resumenes diarios ¿vale?
      • la foto es muy chula!
  • http://cea-raul.blogspot.com/
    • donde hay estilo ...
      • muy bien como acercamiento (personal) a los conceptos fundamentales del java, (aunque ya digo que son personales) . Hay que teorizar para poder acertar, entre tanto el menda intentará corregir
      • falta mucha info eh!

jueves, 24 de enero de 2008

Crear un repositorio en google y acceder desde eclipse

Para utilizar el subversión de google (gratuito!) hay que seguir los siguientes pasos:
  1. entrar en la dirección http://code.google.com/hosting/
  2. click en new proyect
  3. rellenar todos los campos que nos pide el formulario de proyecto nuevo
  4. click en ficha source y desde el apartado command-line access copiamos la dirección https, ej: https://nombreDeNuestroProyecto.googlecode.com/svn/trunk/
  5. hacemos click en googlecode.com password y obtendremos nuestro password
  6. Desde eclipse
    1. menu window>show view>other>svn repository
    2. en la ventana de svn repository botón derecho del ratón y seleccionar nuevo repositorio location.
      • url=https://nombreDeNuestroProyecto.googlecode.com/svn/trunk/
      • usuario=cuentaUsuarioGMAIL (no incluir @gmail.com, solo nombreUsuario)
      • clave=la generada anteriormente en googlecode.com password
    3. para conectar nuestro código con subversion, botón derecho sobre la carpeta de proyecto a controlar>Team>Share Project
    4. Cada vez que queramos subir nuesrtro código al subversion: botón derecho>team>commit
    5. Cuando queramos bajarnos los archivos o modificaciones del subversion a nuestro equipo: botón derecho>team>update

miércoles, 23 de enero de 2008

Gurus

 
http://martinfowler.com/

http://in.relation.to/Bloggers/Gavin

martes, 22 de enero de 2008

http://code.google.com/p/ceaj2ee/

http://code.google.com/p/ceaj2ee/

viernes, 18 de enero de 2008

Interfaces e implementaciónes

En esta entrada se pretende introducir las interfaces desde los siguientes puntos de vista prácticos:


interface Futbolista{
public Balon pasaBalon();
}


interface Bailarin{
public cambiaPareja(Bailarin nuevo);
}

interface Escalador{
public void cambiaRoca();
}

class Persona implements Futbolista, Bailarin, Escalador{

... implementar metodos
}

class Sevillano extends Persona{
... implementar metodos
}

class Suizo extends Persona{
... implementar metodos
}



  1. ¿para qué sirven o qué ventajas aportan?
  • Para aplicar polimorfismo: es decir para que un determinado objeto, en una determinada situación pueda tratarse de una forma u otra. En el ejemplo anterior, si nuestro objeto persona se utiliza en un ámbito relacionado con el futbol, es mejor tratarlo a través de su interface de Futbolista, de esa forma en el ámbito o situación de un programa de futbol, nuestro objeto no mostrará a los otros objetos relacionados sus metodos relacionados con Bailarin o con Escalador.
      • Esto lanzaría error: Futbolista f=new Persona(); f.cambiaPareja(parejaNueva);
    • El polimorfismo se lleva a cabo a través del casting:
      • Persona p=new Persona(); Futbolista f=(Futbolista)p;
  • Para generar código robusto o lo que es lo mismo para proporcionar independencia a los objetos. Esto quiere decir que si cambiamos una clase de nuestro código, el código afectado por ese cambio en teoría debe corresponderse solo a esa clase (y su clase de prueba). Lo contrario a un programa robusto es un programa frágil, es decir aquel que sufre cualquier modificación realizada en alguna de sus partes como si se realizara en todo el sistema.
    • falta incluir diagrama UML!!

Stateful and Stateless (con estado y sin estado )

En el diseño OOP podemos distinguir entre los objetos con [mantenimiento de] estado y sin [mantenimiento de] estado.
El estado se refiere al estado de la información, y la información recaería en las propiedades de nuestros objetos.

En el siguiente ejemplo, creamos un nuevo objeto de la clase Color, y a continuación le asignamos el valor "verde". Este objeto (Stateful) mantiene la información del valor de color en la variable "valor".


public class Color{
String valor;
}

Color color1=new Color();
color1.valor="verde";


Sin embargo en el ejemplo a continuación se muestra un objeto (Stateless) sin estado, es decir no mantiene ninguna información en sus propiedades o atributos, de hecho no tiene propiedades o atributos, únicamente métodos



public class ServicioPintura{
public void cambiaColor(Mesa mesa, Color color){
mesa.setColor(color);
}
}


Los objetos con estado[Stateful] suelen estar relacionados con los objetos que maneja el usuario del programa, y suelen mantener las decisiones(opciones) del usuario durante un proceso o una sesión de uso. Ejemplos de mantenimiento de estado:
  • los diferentes pasos a seguir para registrarse en una página web
  • un carrito de compra
Los objetos sin estado[Stateless ] (generalmente llamados servicios) únicamente operan con los objetos pero no mantienen el estado de los procesos o resultados que generan. Ejemplos de objetos sin estado:
  • petición RSS
  • web services
  • Todos los servicios que veremos en el curso y como el anterior ejemplo: ServicioPintura

jueves, 17 de enero de 2008

Diagramas de secuencia

Introducción a los UML de secuencia
http://www.creangel.com/uml/secuencia.php