Curso Fundeweb2 - Basico
Curso Fundeweb2 - Basico
Curso Fundeweb2 - Basico
• ¿Qué es Fundeweb?
• Eclipse como entorno de desarrollo
• El servidor Weblogic
• Proceso de desarrollo con Fundeweb
• El lenguaje de programación Java
• Tipos de datos y organización de código
• Clases e instancias
• Interfaces, implementaciones y herencia
• Punteros y referencias
• Polimorfismo
• Recolector de basura
• Tratamiento de excepciones
• Buenas prácticas de programación.
• Javadoc
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
¿Qué es Fundeweb?
• Aplicaciones J2EE.
• Uso del patrón MVC.
• Aplicaciones de ServiciosWeb.
• Capa de servicios.
• Sin interfaz gráfica.
• Aplicaciones de EJB.
• Capa de servicios.
• Sin interfaz gráfica.
• Aplicaciones J2EE + ServiciosWeb + EJB
• Combinación de anteriores.
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Índice de contenidos
• ¿Qué es Fundeweb?
• Eclipse como entorno de desarrollo
• El servidor Weblogic
• Proceso de desarrollo con Fundeweb
• El lenguaje de programación Java
• Tipos de datos y organización de código
• Clases e instancias
• Interfaces y herencia
• Punteros y referencias
• Polimorfismo
• Recolector de basura
• Tratamiento de excepciones
• Buenas prácticas de programación.
• Javadoc
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Eclipse
• Maven: https://maven.apache.org/
• Permite la gestión de las librerías que requiere el
proyecto.
• Especifica cuando se deben cargar las librerías:
• En Compliación.
• En runtime.
• En test.
• No cargar: existente en el servidor de antemano.
• Gestiona la construcción de proyectos.
• Requiere tener acceso a un repositorio Maven donde
buscar las dependencias del proyecto.
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Eclipse: Plugins
• Subclipse:
• Cliente de Subversion para eclipse.
• Permite comparaciones entre ficheros locales y del
servidor SVN.
• Ayuda a la resolución de conflictos entre ficheros
desincronizados.
• Visualiza de manera rápida las diferencias entre
nuestro contenido local y el del repositorio.
• Ant: http://ant.apache.org/
• Nos permite ejecutar tareas concretas para manejar
nuestros proyectos.
• Puede interactuar con todos los componentes de
nuestro entorno:
• Código fuente
• Servidores
• Test
• Creadas tareas Ant en Fundeweb para automatizar
tareas de despliegue y empaquetados de proyectos.
• TestNG:
• Framework de testing para Java.
• Basado en Junit (realización de pruebas unitarias).
• Permite paso de parámetros.
• Nos permite comprobar que nuestro código hace lo que
debe.
• Permite Cubrir todo tipo de pruebas:
• Unitarias.
• Funcionales.
• End-to-end.
• Integración.
• Etc…
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Eclipse: Plugins
• CheckStyle:
• Permite chequear si el código programado tiene
defectos de forma.
• Comprueba:
• Que se programa de acuerdo a estándares.
• Que el código producido sea eficiente.
• Que los comentarios sean correctos y adecuados.
• Que el código sea legible para otros desarrolladores.
• FindBugs:
• Chequea el código generado para prevenir errores
en tiempo de ejecución.
• Para ello hace uso de patrones de error buscando en
el código las ocurrencias de los mismos.
• Algunos ejemplos de comprobaciones:
• Null pointers.
• Clases no serializables cuando el contexto requiere
que se serialicen.
• Posibles divisiones por cero.
• Comparaciones entre clases que no sobrescriben
equals.
• Etc…
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Índice de contenidos
• ¿Qué es Fundeweb?
• Eclipse como entorno de desarrollo
• El servidor Weblogic
• Proceso de desarrollo con Fundeweb
• El lenguaje de programación Java
• Tipos de datos y organización de código
• Clases e instancias
• Interfaces y herencia
• Polimorfismo
• Punteros y referencias
• Recolector de basura
• Tratamiento de excepciones
• Buenas prácticas de programación.
• Javadoc
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Servidor Weblogic
• ¿Qué es Fundeweb?
• Eclipse como entorno de desarrollo
• El servidor Weblogic
• Proceso de desarrollo con Fundeweb
• El lenguaje de programación Java
• Tipos de datos y organización de código
• Clases e instancias
• Interfaces y herencia
• Punteros y referencias
• Polimorfismo
• Recolector de basura
• Tratamiento de excepciones
• Buenas prácticas de programación.
• Javadoc
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Proceso de desarrollo con Fundeweb
• ¿Qué es Fundeweb?
• Eclipse como entorno de desarrollo
• El servidor Weblogic
• Proceso de desarrollo con Fundeweb
• El lenguaje de programación Java
• Tipos de datos y organización de código
• Clases e instancias
• Interfaces y herencia
• Punteros y referencias
• Polimorfismo
• Recolector de basura
• Tratamiento de excepciones
• Buenas prácticas de programación.
• Javadoc
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Programación Orientada a Objetos
Matrículas - Propiedades
Contiene Becas relacionales.
Cursos - Definen las relaciones
del objeto con otros
objetos.
Cambiar
nombre - Funcionalidad que
Puede Cambiar puede hacer el alumno
teléfono con sus datos.
Añadir Curso
Añadir
Titulación
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Programación Orientada a Objetos
• Iteradores:
• For, while, Iterator
• For(int i=0;i<10;i++){}
• While(condicion){}
• Iterator.hasNext(); Iterator.next();
• Sentencias de control:
• If(..) {} else{}
• Switch(valor){case 0: break; case 1: break; …}
• Clases:
• Define todas las propiedades concretas de una
entidad que queremos modelar.
• Agrupa toda la funcionalidad (métodos) que
podemos ejecutar sobre esa entidad.
• Define relaciones entre entidades diferentes.
• Han de tener un método especial llamado
"constructor" encargado de inicializar las instancias
basadas en la clase.
• Un método se define:
• Ámbito tipoDeDatoRetorno nombreMetodo(variables){}
• public int suma(int numero1, int numero 2){}
• El ámbito puede ser:
• public: accesible por cualquier otra clase de la aplicación.
• private: sólo accesible dentro de la clase en la que se
declara.
• protected: accesible por todas las clases que estén en el
mismo paquete. Si no se indica ámbito este es el por
defecto.
• Los métodos que no devuelven valor deben tener
como tipo de dato de retorno “void”.
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Java: Clases e instancias
• Un ejemplo:
Nos indica a qué conjunto de clases pertenece
package action.vehiculos;
Inicio
public class Coche { de la definición de la clase "Coche"
private int puertas;
private String modelo;
private String matricula; Propiedades de la clase coche
private boolean tieneSeguro;
public Coche()Constructor
{ de la clase coche (vacío)
}
Método
public int getPuertas() { para obtener el parámetro "puertas"
return puertas;
}
public void setPuertas(int puertas) {
Método para asignar valor al
this.puertas = puertas; parámetro "puertas"
}
Importante: Java es "case sensitive" por lo que no será lo mismo “coche” que
“Coche.”
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Java: Clases e instancias
• Nomenclartura:
• Las clases siempre empiezan por mayúsculas.
• Los nombres pueden contener letras y números pero
siempre han de empezar por letra y no se recomienda el
uso de números.
• Los métodos y variables siempre empiezan por minúsculas.
• Cuando un nombre contenga varias palabras, no se usan ni
espacios ni guiones para separar, se pone la siguiente letra
en mayúsculas
• public void generar_resultado() ¡Incorrecto!
• public void generarResultado() ¡Correcto!
• Adaptarnos a los estándares permite que las herramientas
de terceros funcionen correctamente sobre nuestro código.
• Interfaz:
• Una interfaz pretende definir un "índice" de métodos que
deben implementar las clases que quieran ser
consideradas acorde a esa interfaz.
• Es una clase especial que sólo contiene una definición de
métodos.
• Sólo se incluye el encabezado de los métodos, no su
contenido.
• Una interfaz representa algo más genérico que una clase
concreta.
• Define el comportamiento que debe tener un objeto que
se ajuste a ella.
• Implementación:
• Se dice que una clase implementa a una interfaz,
cuando dicha clase contiene todos los métodos que
define la interfaz.
• La clase está obligada a cumplir con toda la
funcionalidad que expone la interfaz.
• Una clase puede implementar más de una interfaz a
la vez.
• Para indicar que una clase implementa una interfaz
se especifica poniendo "implements
NombreInterfaz" en el encabezado de la clase.
• Resumiendo:
• Una interfaz representa un conjunto de
funcionalidades.
• Los objetos que quieran implementar esa interfaz se
comprometen a cumplirla.
• Su principal uso es:
• Como API de servicios (EJB, ServiciosWeb). Usado para
publicar los métodos que tiene.
• Asegurar que objetos de diferente tipo tienen un
comportamiento común para una determinada
funcionalidad.
• Veamos un ejemplo:
• Tenemos una clase “Decorador” cuya funcionalidad
es decorar objetos. Pintar, poner adornos, etc.
• Si tenemos objetos diferentes: coches, casas,
lienzos. La clase decorador tendría que tener un
método diferente para cada uno de ellos.
• public void pintar(Coche miCoche)
• public void pintar(Casa miCasa)
• public void pintar(Lienzo miLienzo)
• El objetivo es que Decorador pueda decorar
cualquier clase de objeto sin tener que preguntarse
de qué objeto se trata.
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Java: Interfaces, implementaciones
y herencia
• Veamos un ejemplo:
• Para poder tratar los objetos de manera genérica
creamos la interfaz “Decorable” y hacemos que los
objetos Casa, Coche y Lienzo la implementen.
• OJO: Cada uno la implementará “a su manera” pero
de cara a la clase Decorador será un único método.
• Un objeto que implementa una interfaz, puede
identificarse con el nombre de esa interfaz en vez
del de la clase real.
• public void pintar(Decorable miObjetoDecorable)
• Al llamar a este método en cada objeto se llamará a
su método “pintar”.
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Java: Interfaces, implementaciones
y herencia
• Ejemplo:
package action.interfaces;
Nos indica a qué conjunto de clases pertenece
Inicio de
public interface Vehiculo { la definición de la interfaz "Vehiculo"
• Herencia:
• Cuando una clase hereda de otra, obtiene todas sus
propiedades y métodos.
• La clase "hija" puede:
• Definir nuevas propiedades y métodos propios.
• Redefinir los métodos heredados de la clase "padre".
• Una clase sólo puede heredar de una única clase
padre. Java no posee herencia múltiple como C++ y
otros lenguajes.
• Cuando una clase hereda de otra se indica poniendo
"extends NombrePadre" en el encabezado de la
clase hija.
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Java: Interfaces, implementaciones
y herencia
• Herencia:
• La herencia establece una jerarquía entre clases.
• Para detectar si necesitamos herencia basta con
preguntarse si una clase “es un (otra clase)”.
• Un coche es un vehículo de motor que es un vehículo.
• En este ejemplo vemos no sólo la relación entre las
clases sino la jerarquía entre ellas.
• Cada clase en cada nivel de herencia debe tener
unas características propias que no tenga el padre.
• Herencia:
• Llamamos sobrescribir cuando una clase hija quiere
modificar el comportamiento de un método de la clase
padre.
• Este comportamiento sólo se aplicará en las instancias
de esa clase y sus descendientes.
• La sobrescritura tiene sentido si la clase hija tiene
peculiaridades que hagan que ese método deba ejecutar
acciones adicionales.
• Para sobrescribir utilizaremos el mecanismo de
anotaciones que consiste en poner @Override justo
encima de la definición del método.
• El método de la clase hija ha de tener la misma definición
que el de la clase padre.
• En caso de no sobrescribirse un método, se ejecutará el
de la clase padre.
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Java: Interfaces, implementaciones
y herencia
• Herencia:
• Desde una clase hija podemos llamar a los métodos de una
clase padre, para ello utilizaremos el comando super()
• Ejemplo: super().echarGasolina();
• A diferencia de las interfaces no estamos obligados a
implementar todos los métodos de la clase padre (salvo
para las clases abstractas).
• La herencia requiere de una relación directa entre las clases.
Establece por tanto una definición del modelo de datos.
• Al igual que las interfaces, permiten acceder a una clase a
través de su padre en vez de la propia clase.
• public void pintar(Decorable miPadre)
• Ejemplo:
• Definimos la clase vehículo como:
• Propiedades: tipo, peso, capacidad (personas).
• Métodos: recorrerDistancia().
• Definimos dos clases hijas: vehículo motor, vehículo
sin motor:
• Vehículo motor:
• Propiedades: Potencia, consumo.
• Métodos: repostar
• Ejemplo:
• Vehículo sin motor:
• Propiedades: Método de desplazamiento
• Métodos: preparar desplazamiento
• En este ejemplo tenemos lo siguiente:
• Ejemplo:
//Clase padre
public class VehiculoMotor {
public void repostar(double litros){
}
}
//Clase hija
public class Coche extends VehiculoMotor{
public Coche() {
}
@Override
public void repostar(double litros){
}
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Java: Interfaces, implementaciones
y herencia
//Clase hija
public class Coche extends VehiculoMotor{
public Coche() {
}
@Override
public void repostar(double litros){
}
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Java: Instanciación y polimorfismo
• Referencias:
• Cuando creamos un objeto, Java internamente está
creando un puntero a una posición de memoria donde
está su valor.
• La asociación de un puntero con una posición de
memoria se llama referencia.
• Ese puntero es lo que se guarda en nuestra variable.
• Si asignamos ese objeto creado a otra variable, lo que
realmente se está copiando es la referencia, no el valor.
• Si modificamos un objeto, esa modificación afecta a
todas las variables que lo referencien.
• Si queremos copiarlo, debemos crear un objeto nuevo,
copiar los valores y que la nueva variable apunte a él.
• Mientras que un objeto tenga alguna referencia, no se
liberará de memoria su contenido.
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Java: Punteros y referencias
• Ejemplo
Coche seat1 = new Coche(); Coche seat1 = new Coche();
seat.setGasolina(40); seat.setGasolina(40);
Coche seat2 = seat1; Coche seat2 = new Coche();
seat2.quitaGasolina(20); seat2.setGasolina(40);
seat1.getGasolina(); seat2.quitaGasolina(20);
seat2,getGasolina(); seat1.getGasolina();
seat2,getGasolina();
Memoria 20 Memoria 40 20
• Recolector de basura:
• Es un mecanismo de Java para gestionar de manera
automática la memoria.
• Abstrae a los programadores del proceso de reserva y
liberación de memoria.
• Cuando crea un objeto reserva memoria en función de
sus características y la amplia cuando sea necesario.
• Cuando detecta que un objeto no tiene ninguna
referencia (nadie apunta a él) lo elimina liberando la
memoria ocupada.
• Gran parte de los problemas de memoria se producen
por acumulación de objetos que ya no se usan, pero
existe aún alguna referencia en el código hacia ellos.
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Java: Recolector de basura
• Recolector de basura:
• Los tipos de datos primitivos no generan referencias.
• Para eliminar una referencia basta con asignarle a la
variable que la contiene el valor null.
• En caso de tener problemas de memoria podemos
forzar el arranque del recolector de basura.
• ¿Qué es Fundeweb?
• Eclipse como entorno de desarrollo
• El servidor Weblogic
• El lenguaje de programación Java
• Tipos de datos y organización de código
• Clases e instancias
• Interfaces, implementaciones y herencia
• Punteros y referencias
• Polimorfismo
• Recolector de basura
• Tratamiento de excepciones
• Buenas prácticas de programación.
• Javadoc
• ¿Qué es Fundeweb?
• Eclipse como entorno de desarrollo
• El servidor Weblogic
• El lenguaje de programación Java
• Tipos de datos y organización de código
• Clases e instancias
• Interfaces, implementaciones y herencia
• Punteros y referencias
• Polimorfismo
• Recolector de basura
• Tratamiento de excepciones
• Buenas prácticas de programación
• Javadoc