miércoles, 29 de septiembre de 2010

17/9/2010: Continuacion MODULO COMPONENTES WEB

En una aplicación dinámica Web hay un archivo que se llama web.xml:archivo descriptor.
Cada dominio sería un contexto.


doGET:
Es una petición a través de la URL y es visible.

Formulario Web:Se envía por la dirección Web.Se utiliza el metodo Post que es invisible y no pasa por la URL.

¿Por qué utilizamos Servlet?

Puedo acceder a la petición y al objeto respuesta:

private void doGet
request
response

1) response.getWriter: le doy a extraer local variable.
writer.print("HOLA MUY BUENAS")+"con idCurso:"+idCurso+
"tipousuario"+tipoUsuario);
writer.close();

2) request.getParameter(idCurso): local variable
String TipoUsuario=request.getParameter("user")

Estas 2 lineas de codigo se pone encima del response.getWriter.

16/9/2010 : MODULO COMPONENTES WEB

Los servlets son objetos que se ejecutan en un contenedor de servlets.Son sólo útiles si están dentro
de un objeto que se llama servior java.Servlet deriva del applet.
Sacaron una especificación standard de esta tecnología.Hicieron y despues uno de referencia.

Local Host: Es el nombre de la máquina,el nombre del servidor. El tomcat utiliza el puerto 8080.

¿Cómo hago funcionar el tomcat en eclipse?

En servidores le damos a new y elegimos arriba el tomcatv.6.0.Elegimos la vista servlet y le damos a siguiente.Hacemos doble click en el servidor y cambiamos el puerto 8080 por el 8088 le damos a control+S para salvar y ya está.Le damos al tomcat.
Cambio la vista a JavaEE.Le doy a new y elijo Dynamic Web Proyect.
El uso más común de los servlets es generar páginas web de forma dinámica a partir de los parámetros de la petición que envíe el navegador web.

martes, 28 de septiembre de 2010

Programación orientada a eventos(POE)

La comunicación entre los objetos no es concreta aunque es buscada.

Es decir el emisor (LanzadorEventos) del Evento no conoce al receptor (EscuchadorEventos) del evento. De la misma manera el (EscuchadorEventos) receptor del evento no conoce al emisor del evento (LanzadorEventos).
Sin embargo el emisor del evento es consciente de que laza eventos y el receptor de eventos es consciente de que recibe eventos.
Para conseguir esta maravilla de la comunicación incorporamos un RepartidorDeEventos. Este objeto hace de intermediario en la comunicación, para ello los objetos de tipo LanzadorEventos le dan los eventos al RepartidorEventos para que el los reparta a los objetos de tipo EscuchadorEventos

Ejemplos de este tipo de comunicación los encontramos "de forma natural o cotidiana" en AWT y SWING

Características de POE: Este tipo de comunicación permite ignorar los eventos según nuestro interés... Al reutilizar módulos en otras aplicaciones podemos ignorar los eventos o gestionarlos.


Frameworks a trabajar:


Abstract Window Toolkit AWT
Processing http://processing.org/
GUICE http://code.google.com/p/google-guice/

http://es.wikipedia.org/wiki/Programaci%C3%B3n_dirigida_por_eventos

Colecciones ,Tipos de Asociación y Reflection


Las colecciones se utilizan para almacenar, obtener, manipular, y comunicar datos incluidos.
Las colecciones no tiene un tamaño fijo en tiempo de ejecución.

¿Qué es lo que puede hacer una coleccion?
Hace la accion den incluir elemento ,eliminar elementos, obtener elementos, encontrar elementos y recorrer la colección.

Tipo de Colecciones

List, Map y Set :

List: permite duplicados y 0 es su posición inicial.
Set: no permite duplicados.
Map: una clave puede ser cualquier tipo de objeto
.


Para ordenar listas existen dos opciones:
- Se utiliza de la clase java.util.Collections su método static sort(List listaaordenar). Este metodo espera que el tipo de objeto que contiene mi colección implemente la interfaz Comparable
Se utiliza el método sort(List list, Comparator c) . La información de comparable se almacena en una clase aparte.

Tipos de asociación:

Agregación: asociación por referencia.Ciclos de vida independientes.Es parte de....
Se reperesenta con un rombo blanco.

Composición: asociación por valor.Ciclo de vida independiente.Tiene un....
Se representa con un rombo negro.

Tipos de asociación y sus relaciones entre contextos (¿cuánto tiempo dura vivo mi objeto?) de mis objetos (o en el caso de una aplicación web: contextos de mis componentes web)

  1. Contexto aplicacion
  2. Contexto sesion de usuario
  3. Contexto de evento de usuario

Tipos de asociación y sus relaciones entre estado:

Componente Con estado Statefull. Un objeto por usuario

Componente Sin estado Stateless. Un Objeto por X usuarios


Reflection:

¿Dónde se usa la reflexión?

*web.xml

    • instanciación de objetos a partir de nombre de clase
    • comprobación de tipo de clase en tiempo de ejecución
    • comprobación de método, visibilidad y parámetros en tiempo de ejecución

*hibernate.xml

    • instanciación de objetos a partir de nombre de clase
    • comprobación de constructor vacío
    • comprobación de setter/getter publicos de propiedades
    • comprobación de relaciones entre clases

*EJB3

    • comprobación de anotaciones

martes, 14 de septiembre de 2010

10 de Septiembre:POO(Programación orientada a objetos)

  • El propósito del software es satisfacer las necesidades cambiantes de sus usuarios y la empresa
  • La programación orientada a objetos expresa un programa como un conjunto de estos objetos, que colaboran entre ellos para realizar tareas. Esto permite hacer los programas y módulos más fáciles de escribir, mantener y reutilizar.
Los objetos son entidades que combinan estado (atributo), comportamiento (método) e identidad

  • El estado está compuesto de datos
  • El comportamiento está definido por los procedimientos o métodos con que puede operar dicho objeto, es decir, qué operaciones se pueden realizar con él.
  • La identidad es una propiedad de un objeto que lo diferencia del resto

Caracteristicas de la POO:

-Abstracción

-Encapsulamiento


-Polimorfismo


-Herencia

- Recolección de basura






martes, 7 de septiembre de 2010

DIA 6 y 7 de Septiembre:Realizacion examen TDD

Inventa una funcionalidad a resolver con pruebas unitarias. Una vez aprobada por el profesor, crea la prueba, explícala en un documento paso a paso y parte por parte, e implementa el código necesario para su funcionamiento. Una vez acabado sube a repositorio y envia mail a profesor.

Inventa una funcionalidad a resolver con pruebas de comunicación o caja blanca. Una vez aprobada por el profesor, crea la prueba, explícala en un documento paso a paso y parte por parte, e implementa el código necesario para su funcionamiento. Una vez acabado sube a repositorio y envia mail a profesor.

Martes 2 y 3 de Septiembre:Pruebas De Caja Blanca

Las pruebas de caja blanca o caja transparente son más exigentes que las de caja negra, ya que se concentran en la forma en que el programa realiza su funcionalidad para lograr el resultado, y no en el resultado en sí.

Para ello se hacen comprobaciones de las comunicaciones entre los objetos, teniendo en cuentra al mismo tiempo los valores que se envían en dichas comunicaciones (parámetros) y los valores de retorno.

El framework/librería que utilizaremos para su exposición es Mockito .

Pasos para usar los objetos Mocks en nuestra clase prueba:
1)incluimos el import static de la libreria en nuestra clase prueba
2)Definimos nuestro metodo de prueba donde vamos a utilizar los mocks
3)Creamos los mocks y esperamos las llamadas a estos objetos


- Ejercicio a desarrollar de forma personal
TODO: Para desarrollar las siguientes funcionalidades habrá que definir el escenario de prueba (incluyendo mocks), las invocaciones y los resultados que garanticen el perfecto funcionamiento de la aplicación
  • Un fotografo, una vez que haya seleccionado una lista de fotografias propias, podrá enviar dicha seleccion a un servicio de revelado de copias (ServicioRevelado)

  • Un fotografo, una vez que haya seleccionado una lista de fotografias propias, podrá enviar dicha seleccion a un servicio de revelado de copias (ServicioRevelado), indicando el numero de copias de cada fotografia incluida
  • Un fotografo, una vez que haya seleccionado una lista de fotografias propias, podrá enviar dicha seleccion a un servicio de revelado de copias (ServicioRevelado), indicando el numero de copias de cada fotografia incluida y el tamaño de revelado( tamaño1, tamaño2, tamaño3) de cada fotografia

Lunes 1 De Septiembre : DESARROLLO DIRIGIDOPOR PRUEBAS(TDD - Test Driven Development)

Lo primero de todo es añadir a nuestro delicios la siguiente direccion: http://enjava.tiddlyspot.com/
Es otro blog donde el profesor ira publicando los futuros modulos.


El desarrollo guiado por pruebas, o Test-driven development (TDD) es una práctica de programación que involucra otras dos prácticas: Escribir las pruebas primero (Test First Development) y Refactorización (Refactoring).
Para esto utilizamos PruebasUnitarias .

Pasos de la prueba:
1) Escribir la prueba
2)Refactorizacion(cambiar los nombres a los metodos,variables,etc).Es para que el código sea legible en un futuro.
El proposito es lograr un código limpio que funcione.
3)Se lanzan pruebas en bateria
Vamos a probar una parte concreta con una prueba especifica.

Formas de escribir una Prueba:
  1. elegir el caso de uso o requerimiento
  2. crear los objetos que componen el escenario de prueba
  3. invocacion de programa
  4. comprobacion de resultados (Pruebas de Caja Negra) o comportamientos(Pruebas De Caja Blanca) y generación de mensajes con sentido
  5. refactorizacion

Utilizamos la etiqueta @Test para indicar los metodos de prueba
Utilizamos la etiqueta @DataProviderpara probar con diferentes valores.

Ejercicio a desarrollar Picacea(Catalogo de fotos):

Primera fase del desarrollo: código no compila

Segunda fase del desarrollo TDD:escribimos el código necesario para compilar

Tercera fase: se lanza la prueba para que falle

Cuarta fase: se escribe el menor código posible para que la prueba pase

Quinta fase: se refactoriza la prueba y/o el código








jueves, 29 de julio de 2010

Martes 27 y Miercoles 28 de julio

Realizacion del proyecto biblioteca.

Examen primer módulo:

Lunes 26 de julio

MAVEN
http://groups.google.com/group/eticom-master-java/web/maven
http://groups.google.com/group/eticom-master-java/web/maven-avanzado

VIERNES 23 DE JULIO

Hacer un ejercicio con ANT

Crear un appWeb.war .Conjunto de archivos que constituyen una aplicación web java


appWeb.war

├─── META-INF
│ └───MANIFEST
└─── WEB-INF
└───── web.xml
├───└── classes
├───└── es
│ └─── cea
│ └───HolaMundo.class
└─── lib
└───commons-logging.jar

OTRO Ejercicio a desarrollar con ANT

Archivo ANT (build.xml) que compile java teniendo en cuenta las librerías (dependencias) necesarias y genere un archivo jar. Lanzar esta tarea de compilacion desde el cmd de windows.

JUEVES 22 DE JULIO

Hemos dado XML (Extensible Markup Language).Intercambio de informacion entre plataformas.

Un XML tiene que tener el modo raiz.Dentro de esa raiz hay hijos,y los hijos tienen subhijos.

VALIDACION XML

DTDs.Se define el tipo de documento.
Schema.Te obliga mas que el DTDs. Te dice el tipo de dato.
Si incumplimos esta validacion nos da fallo el XML mal formado.

http://es.wikipedia.org/wiki/XML

http://www.w3schools.com/xml/default.asp


Apache ANT


* instalar ANT:http://apache.rediris.es/ant/binaries/apache-ant-1.7.0-bin.zip
o intentamos lanzar este archivo con ANT http://code.google.com/p/eticom-master-java/source/browse/trunk/eticom-jdbc/src/build.xml?r=98


* ejemplo de archivo build.xml: http://www.adp-gmbh.ch/java/ant/build_xml.html
* intro en español...
o http://www.marioalberto.com.mx/articulos/java_ant_basico.php
o http://www.javahispano.org/contenidos/es/introduccrion_a_ant/
* doc en inglés de los core task...
o http://ant.apache.org/manual/index.html
o http://ant.apache.org/manual/anttaskslist.html
o http://ant.apache.org/manual/CoreTasks/jar.html
o http://ant.apache.org/manual/CoreTasks/war.html

MIERCOLES 21 DE JULIO

- En "Source" podemos ver desde equals y HashCode hasta Getters y Setters, etc.

- Enumeraciones ("Enums") con la realizacion de ejemplo.
Lo hemos hecho con el tipoavion.

- Hemos dado las anotaciones ("@Anotations").Se utilizan para generar para definir los metodos.

Martes 20 de julio

Utilizacion de la refactorizacion eclipse (Mediante el atajo Refactorizar) para cambiar el proyecto de la "Terminal de Aeropuerto" por la de una "Taquilla de Circo
Activacion librerias de "logging" y "TestNG" (Properties >>> Java Build Path)
Nos copiamos el archivo log4j.

REFACTORIZACION

me pongo encima de la linea
le doy a refactor
le doy a rename
en la ventana que me sale le doy a la opcion OPEN RENAME DIALOG


Tambien nos hemos creado el enlace de repositorio de Jesus para bajarnos su proyecto de circo porque teniamos dudas de como hacerlo.
desconecccion de su proyecto para poder trabajar.

Lunes 19 de julio

Terminamos de configurar el repositorio desde Eclipse.En"repository" boton derecho del raton i "new repository location" y pegamos la direccion "source" que aparece en la pestaña de nuestro repositorio.Lo copiamos hasta trunk.

Hemos tambien subido al repositorio el proyecto del aeropuerto: Proyecto,clic derecho del raton "Team" y "Share project". Elegimos "SVN".Ya estamos conectados.Para desconectar volver a "Team" y "Disconnect".

Despues realizamos un "@Test" a nuestro proyecto. Nos hemos descargado unos archivos y nos hemos creado una nueva libreria "test" .
Utilizar TEST (TESTNG) para la ejecución
1- instalamos el plugin http://testng.org/doc/download.html
2- instalamos la libreria http://testng.org/doc/download.html
3- @Test http://code.google.com/p/cea2010-jar/source/detail?r=12
4- @DataProvider http://testng.org/doc/documentation-main.html#parameters-dataproviders http://code.google.com/p/cea2010-jar/source/detail?r=13

Viernes 16 de julio - proyecto aeropuerto

Hemos instalado el plugin de subversión para enlazar nuestro repositorio con Eclipse.
En Eclipse pestaña "Help >>> Add new Software". Introducimos :http://subclipse.tigris.org/update_1.6.x y le ponemos el nombre "Repositorio".Ahi instalamos todo.

- Hemos realizado un aplicación de reserva de billletes .




jueves 15 de julio

Jueves 15 Julio:

* Introduccion de los atajos en Eclipse:


- ALT + MAY + R: "Refactorizar"
- CTRL + M: "Maximizar la ventana activa"

- CTRL + MAY + T: "Abrir clase existente"
- CTRL + MAY + F: "Dar formato"
+ ENTER: "Propiedades del proyecto actual"
- CTRL + 1: "Lista de posibles soluciones a un error"
- MAY + ALT + L: "Extrae una variable"
- MAY + ALT + M: "Extrae un metodo"
- MAY + ALT + S: "Abre herramientas Source"


Librerias: Añadir la libreria "logging" a nuestras librerias de usuario.Se hace así:
Desde proyecto "preferences >>> java build path" ventana librerias.En menu de la derecha lr damos a "Add library", se abre una ventana y elegimos "User library", que son las de usuario.
Desde la ventana siguiente le damos a "User libraries >>> new library" para crearnos la logging y añadimos el JAR de "java 1.5".
en el blog del profesor le damos a este enlace:
http://groups.google.com/group/eticom-master-java/web/apache-commons-logging
Nos descargarmos los archivos n del logging y los pegamos en nuestra libreria.

miércoles, 14 de julio de 2010

14 julio 2010 primer dia eclipse

Primer día de entorno eclipse.No ha estado mal la puesta de contacto.
Hemos empezado haciendonos una cuenta gmail para darle al profesor nuestros datos y tambien le hemos comentado nuestra experiencia en programacion mediante un correo.
Seguidamente nos hemos hecho un blog (este exactamente)para contar lo que damos en clase.
Tambien nos hemos dado de alta en Delicious,que es un sistema para guardar favoritos y clasificarlos por etiquetas.Tambine instalamos Firefox y ahi instalamos el plugin Delicious-
El profesor nos ha facilitado un blog titulado eticon- master java que esta interesantisimo.Aparte de todos los contenidos con sus explicaciones y ejemplos tambien dispone de un foro para plantear ideas y dudas.Es una buena herramienta para aprender y manejar java.
Para concluir la clase aprendimos como crear un proyecto en internet que sirve para subir y bajar códigos , nos descargarmos la IDE con las que vamos a trabajar este módulo:Eclipse y tuvimos nuestra primera puesta de contacto.