SlideShare una empresa de Scribd logo
1 de 76
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Curso de introducción a Fundeweb
© 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, 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?
• Framework de desarrollo de aplicaciones J2EE diseñado
por MNCS y con inicio en el año 2008.
• Facilita el proceso de desarrollo de software.
• Abstrae a los programadores de las dependencias de las
tecnologías que se usan.
• Provee de un conjunto de facilidades que adaptan el
desarrollo a las características del Framework.
• Abstrae de la base de datos sobre la que se trabaja.
• Automatiza las tareas de despliegue de proyectos.
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
¿Qué es Fundeweb?
• Automatiza el despliegue en servidores de desarrollo y/o
producción.
• Provee ayudas para el control de calidad y supervisión de
código.
• En resumen:
• Fundeweb es un framework de desarrollo de aplicaciones
que facilita a los programadores la gestión y despliegue de
proyectos.
• Incorpora un conjunto de tecnologías suficientes para el
desarrollo de aplicaciones J2EE.
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
¿Qué tipo de aplicaciones desarrolla?
• 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
• IDE de desarrollo de aplicaciones.
• Basado en un core y un paquete de extensión o plugins.
• Eclipse se puede adaptar mediante la instalación de
plugins a diferentes lenguajes de programación.
• Concentra toda la funcionalidad necesaria para que los
programadores desarrollen sus proyectos.
• Contiene un gestor de plugins que permite instalar nuevos
o actualizar los existentes.
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Eclipse: Plugins
• 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.
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Eclipse: Plugins
• 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.
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Eclipse: Plugins
• 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.
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Eclipse: Plugins
• 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
• Oracle WebLogic es un servidor de aplicaciones Java EE
y HTTP.
• Desarrollado originalmente por BEA y comprado
posteriormente por ORACLE.
• Compatible con cualquier base de datos que se ajuste al
estándar JDBC.
• Integra un portal web de gestión integral de los diferentes
componentes.
• Provee plugins para Eclipse para el despliegue de
aplicaciones.
© 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.
Proceso de desarrollo con Fundeweb
• Fundeweb como framework J2EE requiere una serie de
estructuras para agilizar su uso.
• En ATICA hay establecidas metodologías para dirigir el
desarrollo de aplicaciones J2EE
• Existen herramientas para gestionar el código y mejorar
su calidad.
• Podemos ver una explicación más detallada en:
Estructura J2ee Atica
© 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.
Programación Orientada a Objetos
• La programación orientada a objetos se basa, como su
nombre dice, en el concepto “Objeto” pero ¿qué es un
objeto?
• Es una “entidad” con significado propio en el sistema que
tiene propiedades y es capaz de realizar funcionalidad por
sí sola. A la estructura de esa entidad se la conoce como
“clase”.
• Un sistema, a su vez, está compuesto por objetos que
interactúan entre sí.
• Las propiedades de un objeto son los atributos que lo
definen.
• Al estado de un objeto en un instante dado se le suele
llamar instancia (aunque a veces se refieren simplemente
como objeto).
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Programación Orientada a Objetos
• Veamos un ejemplo y modelemos un alumno.
• Lo primero es saber qué propiedades tiene un alumno:
• Nombre, apellidos, DNI, etc.
• Una vez definida las propiedades decidamos qué puede
hacer un alumno sobre él mismo:
• Cambiar sus datos personales, aumentar su edad, etc.
• Tras tener claro qué representa un alumno definimos su
relación con otros objetos:
• Un alumno tiene una o varias matrículas.
• Un alumno tiene una beca.
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Programación Orientada a Objetos
• El resultado quedaría así:
Tiene
Nombre
Apellidos
Dirección
Teléfono
Dni
- Propiedades simples.
- Definen el objeto.
Contiene
Matrículas
Becas
Cursos
- Propiedades relacionales.
- Definen las relaciones del
objeto con otros objetos.
Puede
Cambiar nombre
Cambiar teléfono
Añadir Curso
Añadir Titulación
- Funcionalidad que puede
hacer el alumno con sus
datos.
Clase Alumno
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Programación Orientada a Objetos
• Ejercicio: Modelar una titulación
1. ¿Qué propiedades simples tiene una titulación?
2. ¿Qué propiedades relacionales tiene?
3. ¿Qué puede hacer una titulación con sus datos?
• Para modelar nuestros diagramas utilizaremos
• Supongamos que una titulación pertenece a un centro y
contiene varias asignaturas.
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Programación Orientada a Objetos
• Ejercicio: Modelar una titulación
• El resultado podría ser similar al siguiente
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Programación Orientada a Objetos
• Mediante la definición de clases especificamos las
estructuras que gestiona nuestra aplicación.
• Una clase es sólo el esquema. Cuando esa clase se
concreta en unos datos que representan una entidad pasa
a llamarse instancia u objeto.
• Basado en el ejemplo anterior:
• Alumno es una clase.
• El alumno Manuel Pérez con DNI:11223344R es una
instancia de la clase alumno.
• Las aplicaciones en ejecución manejan instancias. Las
clases definen la estructura para crear nuevas instancias.
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Programación Orientada a Objetos
• No todos los objetos tienen como función representar
entidades.
• Un objeto puede actuar como:
• Modelo de datos de una entidad (Alumno)
• Controlador de la aplicación (gestiona las relaciones entre
objetos, lanza acciones, etc.)
• Intermediario con el usuario (captura los datos introducidos
al usuario y lo traduce en objetos del modelo o en acciones
del controlador.
• Esta estructura se corresponde con parte del patrón MVC
(Modelo Vista Controlador) que veremos en la sección de
patrones de diseño.
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Programación Orientada a Objetos
• Así pues la programación orientada a objetos se basa en:
• Definición de las estructuras (clases) que implementarán la
aplicación.
• Definición de las relaciones y funcionalidades de esas
estructuras.
• En tiempo de ejecución esas estructuras se usarán de
plantilla para crear instancias.
• Las instancias serán las encargadas de realizar las
funcionalidades de la aplicación.
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Lenguaje de programación Java
• Lenguaje de programación orientado a objetos.
• Diseñado para tener las mínimas dependencias con una
implementación concreta.
• El objetivo es programar para cualquier dispositivo
independientemente de su arquitectura.
• Las aplicaciones java se ejecutan sobre una máquina virtual
(JVM) instalada en cada dispositivo.
• Actualmente Java es uno de los lenguajes de programación
más extendidos cubriendo el ámbito: Web, móvil y de
aplicaciones de escritorio.
• Importante: Java es sensible a mayúsculas y minúsculas por
lo que no es lo mismo “Hola” que “hola”.
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Java: Tipos de datos y organización de
código
• Java nos permite organizar el código (ficheros) en lo que
denomina paquetes.
• En cada fichero deberemos poner en la primera línea y de
manera obligatoria a qué paquete pertenece.
• Esta estructura es simbólica y la decide el desarrollador.
• El nombre del paquete ha de coincidir con la ruta en disco
de la carpeta que contiene al fichero. Esta ruta será
relativa al proyecto.
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Java: Tipos de datos y organización de
código
• Un paquete es una manera de agrupar conceptualmente
clases que tienen un comportamiento o filosofía común.
• Permiten identificar módulos dentro de una aplicación y
agrupar características en un conjunto de paquetes.
• Algunas propiedades de Java nos permiten aplicar
características sobre un paquete determinado, lo que
afecta a todos los ficheros que referencia.
• En disco, un paquete es simplemente una carpeta que
contiene ficheros (otros paquetes o clases)
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Java: Tipos de datos y organización de
código
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Java: Tipos de datos y organización de
código
• Los tipos de datos primitivos en Java son
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Java: Tipos de datos y organización de
código
• Los tipos de datos no primitivos, pero que provee Java son
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Java: Tipos de datos y organización de
código
• Java provee de un tipo de dato especial llamado
enumerado.
• Este tipo de dato contiene una lista fija de valores, no
variable.
• Se suele emplear cuando entre conjuntos de datos del
mismo tipo iguales queremos representar un subtipo o bien
un estado.
• Este tipo de dato se da de alta de la siguente manera
public enum AuthenticationType {
RADIUS, SSO, CARNE, DNI
}
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Java: Tipos de datos y organización de
código
• Java permite que nos podamos crear nuestros propios
conjuntos de tipos de datos de manera indefinida.
• Es responsabilidad del programador analizar y decidir qué
debe ser un tipo de dato y qué no.
• Normalmente, los tipos de datos que queramos crear,
representarán entidades de nuestra aplicación o bien un
registro de base de datos.
• Estos “tipos de datos” toman entidad propia en Java
llamándose clases.
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Java: Tipos de datos y organización de
código
• Los operadores Java son:
• Operadores Aritméticos:
• + - * /
• Operadores Incrementales
• ++ -- += -=
• Operadores Relacionales
• > < >= <= != ==
• Operadores lógicos
• &&
• ||
• !
• Operador de concatenación de cadenas
• +
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Java: Estructuras de control
• 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; …}
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Java: Clases e instancias
• 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.
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Java: Clases e instancias
• Una variable se define de la siguiente manera:
• Ámbito (calificativos) tipoDeDato nombre: private int numero;
• 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 calificativos (opcionales):
• static: se podrá acceder sin necesidad de que la clase esté creada.
• final: no se podrá modificar el valor. Se deberán inicializar en su
declaración.
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Java: Clases e instancias
• 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:
package action.vehiculos;
public class Coche {
private int puertas;
private String modelo;
private String matricula;
private boolean tieneSeguro;
public Coche() {
}
public int getPuertas() {
return puertas;
}
public void setPuertas(int puertas) {
this.puertas = puertas;
}
Nos indica a qué conjunto de clases pertenece
Inicio de la definición de la clase "Coche"
Propiedades de la clase coche
Constructor de la clase coche (vacío)
Método para obtener el parámetro "puertas"
Método para asignar valor al 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.
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Java: Clases e instancias
• Una clase es la definición de una entidad junto con todos
sus propiedades y acciones posibles.
• Una instancia u objeto es cuando esa definición se
transforma en una entidad concreta. Contiene por lo
tanto los valores y el estado de una clase en un instante
determinado.
public class Coche{
private int puertas;
private int tipoCombustible;
…
}
Coche{
puertas = 5;
tipoCombustible=“diesel”;
}
Ejemplo de clase Instancia de la clase
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Java: Clases e instancias
• Una clase puede contener variables que sean otras
clases.
• Desde una clase se puede llamar a los métodos de
cualquier otra clase, siempre que se tenga una instancia.
• Existen objetos especiales, llamados colecciones que
forman listas de objetos, permitiendo recorrerlas y
almacenar en memoria sus elementos.
• Programando definimos las clases. En ejecución se
accede a instancias.
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Java: Clases e instancias
• Ejercicio: Modelar el siguiente diagrama en Java
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Java: Interfaces, implementaciones y
herencia
• 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.
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Java: Interfaces, implementaciones y
herencia
• 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.
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Java: Interfaces, implementaciones y
herencia
• 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.
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Java: Interfaces, implementaciones y
herencia
• 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;
public interface Vehiculo {
public boolean tieneSeguro();
public void recorreDistancia(int numKilometros);
public double getCombustibleRestante();
}
Nos indica a qué conjunto de clases pertenece
Inicio de la definición de la interfaz "Vehiculo"
Definición de un métodos
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Java: Interfaces, implementaciones y
herencia
• 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.
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Java: Interfaces, implementaciones y
herencia
• 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)
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Java: Interfaces, implementaciones y
herencia
• 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
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Java: Interfaces, implementaciones y
herencia
• Ejemplo:
• Vehículo sin motor:
• Propiedades: Método de desplazamiento
• Métodos: preparar desplazamiento
• En este ejemplo tenemos lo siguiente:
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Java: Interfaces, implementaciones y
herencia
• 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
• Ejercicio: Implementar el diagrama y añadir
• Dos clases hijas para vehículo de motor y vehículo sin motor.
• Sobreescribir el método “recorrerDistancia” para que según el tipo de
vehículo:
• Si la distancia a recorrer es mayor de 100km lance repostar.
• Antes de empezar el desplazamiento lanzar PrepararDesplazamiento
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Java: Clases abstractas
• Cuando tenemos herencia podemos crear lo que se
conoce como una clase abstracta.
• Una clase abstracta no es más que una clase que tiene
algún método sin implementar.
• Esto obliga a las clases hijas a implementar ese método.
• Para definir una clase abstracta tenemos que:
• En la declaración de la clase añadir abstract.
• Dejar sólo la declaración del método, añadiendo igualmente
abstract.
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Java: Interfaces, implementaciones y
herencia
• El ejemplo anterior dejando repostar como abstracto:
//Clase padre
public abstract class VehiculoMotor {
public abstract 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: Instanciación y polimorfismo
• Llamamos polimorfismo a la capacidad de un objeto de
ser representado por varias clases o interfaces:
• Un coche puede representarse por:
• Un vehículo
• Un vehículo de motor
• Un coche
• Llamamos instanciación de un objeto cuando lo
recuperamos como una clase o interfaz concreta.
• En el caso anterior cuando lo decidimos recuperar como,
por ejemplo, un vehículo de motor.
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Java: Interfaces, implementaciones y
herencia
• Para recuperar un objeto como una clase o interfaz
concreta deberemos hacer lo que se conoce como cast
• Un cast es decirle a Java que el objeto que tenemos lo
utilice como si fuera el que le estamos indicando.
• (ObjetoDestino)miObjeto
• Para saber si un objeto puede ser recuperado como una
determinada clase haremos uso del la instrucción
instanceof.
• Esta instrucción pregunta si un determinado objeto puede
ser recuperado con el tipo que le estoy indicando.
• miObjeto instanceof Clase
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Java: Interfaces, implementaciones y
herencia
• Si hacemos un cast a una clase con la que no es
compatible mi objeto obtendremos una excepción.
• Si usamos previamente instanceof nos aseguramos de
evitar la excepción
• ¿Con qué puedo hacer un cast en un determinado objeto?
• Con interfaces que implemente dicho objeto,
• Con cualquier clase heredada.
if(coche instanceof VehiculoMotor){
VehiculoMotor vm = (VehiculoMotor)coche;
}
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Java: Interfaces, implementaciones y
herencia
• ¿Cuándo debemos heredar y cuando aplicar una interfaz?
• El desarrollador decide, pero la referencia es:
• Herencia: Cuando entre los objetos hay una relación
conceptual. “Un coche es un vehículo”. En este caso se
comparten métodos y propiedades.
• Interfaz: Cuando tenemos un conjunto de objetos muy
diferente, pero que comparten una funcionalidad común y
queremos hacer uso de ella sin necesidad de saber qué tipo
de objeto es.
• Un ejemplo claro es el patrón Observer, que veremos en la
sección de patrones en Fundeweb.
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Java: Punteros y referencias
• 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();
seat.setGasolina(40);
Coche seat2 = seat1;
seat2.quitaGasolina(20);
seat1.getGasolina();
seat2,getGasolina();
Coche seat1 = new Coche();
seat.setGasolina(40);
Coche seat2 = new Coche();
seat2.setGasolina(40);
seat2.quitaGasolina(20);
seat1.getGasolina();
seat2,getGasolina();
20
seat2
seat1
40 20
seat2
seat1
Memoria
Memoria
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Java: Recolector de basura
• 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.
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Java: Tratamiento de excepciones
• Cuando en nuestro código Java, el compilador nos indica que
puede saltar una excepción deberemos hacer uso del bloque
try{ … }catch(NombreExcepcion ex){ … }
• Este bloque nos permite que si se produjera una excepción
dentro del código situado en el “try” se nos ejecutará lo
indicado dentro del catch.
• En el bloque catch se nos pasará la excepción lanzada y la
información disponible.
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Java: Tratamiento de excepciones
• También podemos lanzar nuestras propias excepciones para que la clase
que llama a nuestro método la maneje.
• Para ello debemos:
• Crear una clase que represente a nuestra excepción y hacer que herede de la
clase Java Exception.
• Añadir en la cabecera de nuestro método la cláusula throws
NombreExcepcion.
• Dentro del código lanzar la excepción de la siguiente manera: throw new
NombrExcepcion(“texto que se quiera poner”);
© 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
• 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.
Java: Buenas prácticas
• Las variables se han de crear siempre al principio de la clase o
método.
• Los métodos get y set siempre deben ir al final.
• Nunca usar variables públicas.
• Se crean privadas y se implementan sus métodos get y set.
• Si varias clases comparten muchas propiedades hacer uso de la
herencia.
• No usar la salida estándar de consola para mostrar texto.
• Definir y usar los logs en su caso.
• Respetar los estándares.
• Minimizar el uso de estructuras complejas siempre que sea posible.
• Comentar los métodos y los trozos de código largos.
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Java: Buenas prácticas
• Si tenemos una clase con demasiadas líneas de código,
revisar si realmente son necesarias ahí o se puede
reestructurar.
• En los constructores sólo asignar valores, no ejecutar
métodos.
• Utilizar método “equals” cuando se comparan objetos en
vez de “==“.
© 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
• 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.
Java: Javadoc
• Para introducir comentarios en el código haremos uso de
la doble barra // cuando sea una línea.
• Cuando sean varias líneas haremos uso de la estructura /*
todo el comentario */
• Para generar javadoc de los métodos, nos situaremos en
el encabezado del método, escribiremos /** y le daremos
al enter para que se nos genere automáticamente el
encabezado y podamos completarlo.
© 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Java: Javadoc
• Es importante generar el Javadoc adecuado pues se
mostrará a los que usen nuestros métodos.
• Si las clases implementan interfaces el Javadoc debe ir en
la interfaz y no en la implementación concreta.
• Lo mismo pasa en caso de la herencia con los métodos
que se sobreescriben.

Más contenido relacionado

Similar a CursoFundeweb2-basico (1).ppt

Modulo Jee Intro Pos Fp Une
Modulo Jee Intro  Pos Fp UneModulo Jee Intro  Pos Fp Une
Modulo Jee Intro Pos Fp UneMarcos Jara
 
Ionic y angular.js
Ionic y angular.jsIonic y angular.js
Ionic y angular.jsGDG Cali
 
Defensa proyecto fin de carrera
Defensa proyecto fin de carreraDefensa proyecto fin de carrera
Defensa proyecto fin de carreraBorja Merino
 
Iis daw taller_1.1-ta-herramientas-para-desarrollo-web (rodriguez a. - rodrig...
Iis daw taller_1.1-ta-herramientas-para-desarrollo-web (rodriguez a. - rodrig...Iis daw taller_1.1-ta-herramientas-para-desarrollo-web (rodriguez a. - rodrig...
Iis daw taller_1.1-ta-herramientas-para-desarrollo-web (rodriguez a. - rodrig...Xthian Vidal Cortez
 
01_ppt_introduccion_spring_mmmmmmmmm.pdf
01_ppt_introduccion_spring_mmmmmmmmm.pdf01_ppt_introduccion_spring_mmmmmmmmm.pdf
01_ppt_introduccion_spring_mmmmmmmmm.pdfMarvelNanosoft
 
Mi Lenguaje de Programacion de Preferencia
Mi Lenguaje de Programacion de PreferenciaMi Lenguaje de Programacion de Preferencia
Mi Lenguaje de Programacion de PreferenciaNelson Rivera
 
Mi lenguaje de programacion de preferencia
Mi lenguaje de programacion de preferenciaMi lenguaje de programacion de preferencia
Mi lenguaje de programacion de preferenciaNelson Rivera
 
Mi lenguaje de programación de preferencia
Mi lenguaje de programación de preferenciaMi lenguaje de programación de preferencia
Mi lenguaje de programación de preferenciaJacob
 
SharePoint Saturday Barcelona. La importancia de JavaScript en nuestros desar...
SharePoint Saturday Barcelona. La importancia de JavaScript en nuestros desar...SharePoint Saturday Barcelona. La importancia de JavaScript en nuestros desar...
SharePoint Saturday Barcelona. La importancia de JavaScript en nuestros desar...Adrian Diaz Cervera
 
Fundamentos de Java
Fundamentos de Java Fundamentos de Java
Fundamentos de Java jmosorio777
 
1/9 Curso JEE5, Soa, Web Services, ESB y XML
1/9 Curso JEE5, Soa, Web Services, ESB y XML1/9 Curso JEE5, Soa, Web Services, ESB y XML
1/9 Curso JEE5, Soa, Web Services, ESB y XMLJuan Carlos Rubio Pineda
 
Frameworks de Desarrollo Web Grails
Frameworks de Desarrollo Web GrailsFrameworks de Desarrollo Web Grails
Frameworks de Desarrollo Web GrailsEsteban Saavedra
 
Tecnologías Semánticas sobre Drupal: Caso Recursos Educativos Abiertos
Tecnologías Semánticas sobre Drupal: Caso Recursos Educativos AbiertosTecnologías Semánticas sobre Drupal: Caso Recursos Educativos Abiertos
Tecnologías Semánticas sobre Drupal: Caso Recursos Educativos AbiertosAlexandra González
 
Hawk: indexado de modelos en bases de datos NoSQL
Hawk: indexado de modelos en bases de datos NoSQLHawk: indexado de modelos en bases de datos NoSQL
Hawk: indexado de modelos en bases de datos NoSQLAntonio García-Domínguez
 
Mejores a nuestros proyectos de Software
Mejores a nuestros proyectos de SoftwareMejores a nuestros proyectos de Software
Mejores a nuestros proyectos de SoftwareJose Luis Bugarin Peche
 
Software en la actualidad
Software en la actualidadSoftware en la actualidad
Software en la actualidadRaelyx Cordero
 
Presentación ingeniería web
Presentación ingeniería webPresentación ingeniería web
Presentación ingeniería webJORGE MONGUI
 
Ingenieria web
Ingenieria webIngenieria web
Ingenieria webMirsha01
 

Similar a CursoFundeweb2-basico (1).ppt (20)

Modulo Jee Intro Pos Fp Une
Modulo Jee Intro  Pos Fp UneModulo Jee Intro  Pos Fp Une
Modulo Jee Intro Pos Fp Une
 
Ionic y angular.js
Ionic y angular.jsIonic y angular.js
Ionic y angular.js
 
Defensa proyecto fin de carrera
Defensa proyecto fin de carreraDefensa proyecto fin de carrera
Defensa proyecto fin de carrera
 
Iis daw taller_1.1-ta-herramientas-para-desarrollo-web (rodriguez a. - rodrig...
Iis daw taller_1.1-ta-herramientas-para-desarrollo-web (rodriguez a. - rodrig...Iis daw taller_1.1-ta-herramientas-para-desarrollo-web (rodriguez a. - rodrig...
Iis daw taller_1.1-ta-herramientas-para-desarrollo-web (rodriguez a. - rodrig...
 
01_ppt_introduccion_spring_mmmmmmmmm.pdf
01_ppt_introduccion_spring_mmmmmmmmm.pdf01_ppt_introduccion_spring_mmmmmmmmm.pdf
01_ppt_introduccion_spring_mmmmmmmmm.pdf
 
Practicas java
Practicas javaPracticas java
Practicas java
 
Mi Lenguaje de Programacion de Preferencia
Mi Lenguaje de Programacion de PreferenciaMi Lenguaje de Programacion de Preferencia
Mi Lenguaje de Programacion de Preferencia
 
Mi lenguaje de programacion de preferencia
Mi lenguaje de programacion de preferenciaMi lenguaje de programacion de preferencia
Mi lenguaje de programacion de preferencia
 
Mi lenguaje de programación de preferencia
Mi lenguaje de programación de preferenciaMi lenguaje de programación de preferencia
Mi lenguaje de programación de preferencia
 
Web services1
Web services1Web services1
Web services1
 
SharePoint Saturday Barcelona. La importancia de JavaScript en nuestros desar...
SharePoint Saturday Barcelona. La importancia de JavaScript en nuestros desar...SharePoint Saturday Barcelona. La importancia de JavaScript en nuestros desar...
SharePoint Saturday Barcelona. La importancia de JavaScript en nuestros desar...
 
Fundamentos de Java
Fundamentos de Java Fundamentos de Java
Fundamentos de Java
 
1/9 Curso JEE5, Soa, Web Services, ESB y XML
1/9 Curso JEE5, Soa, Web Services, ESB y XML1/9 Curso JEE5, Soa, Web Services, ESB y XML
1/9 Curso JEE5, Soa, Web Services, ESB y XML
 
Frameworks de Desarrollo Web Grails
Frameworks de Desarrollo Web GrailsFrameworks de Desarrollo Web Grails
Frameworks de Desarrollo Web Grails
 
Tecnologías Semánticas sobre Drupal: Caso Recursos Educativos Abiertos
Tecnologías Semánticas sobre Drupal: Caso Recursos Educativos AbiertosTecnologías Semánticas sobre Drupal: Caso Recursos Educativos Abiertos
Tecnologías Semánticas sobre Drupal: Caso Recursos Educativos Abiertos
 
Hawk: indexado de modelos en bases de datos NoSQL
Hawk: indexado de modelos en bases de datos NoSQLHawk: indexado de modelos en bases de datos NoSQL
Hawk: indexado de modelos en bases de datos NoSQL
 
Mejores a nuestros proyectos de Software
Mejores a nuestros proyectos de SoftwareMejores a nuestros proyectos de Software
Mejores a nuestros proyectos de Software
 
Software en la actualidad
Software en la actualidadSoftware en la actualidad
Software en la actualidad
 
Presentación ingeniería web
Presentación ingeniería webPresentación ingeniería web
Presentación ingeniería web
 
Ingenieria web
Ingenieria webIngenieria web
Ingenieria web
 

Más de miguel checa

Plan-de-negocio-de-restaurante.pdf
Plan-de-negocio-de-restaurante.pdfPlan-de-negocio-de-restaurante.pdf
Plan-de-negocio-de-restaurante.pdfmiguel checa
 
5.metodos-funciones_alumnos.pdf
5.metodos-funciones_alumnos.pdf5.metodos-funciones_alumnos.pdf
5.metodos-funciones_alumnos.pdfmiguel checa
 
__Aprende_de_agilismo_.pdf
__Aprende_de_agilismo_.pdf__Aprende_de_agilismo_.pdf
__Aprende_de_agilismo_.pdfmiguel checa
 
Historia de Instagram Restaurante Comida Italiana Versus Rasgado Tradicional ...
Historia de Instagram Restaurante Comida Italiana Versus Rasgado Tradicional ...Historia de Instagram Restaurante Comida Italiana Versus Rasgado Tradicional ...
Historia de Instagram Restaurante Comida Italiana Versus Rasgado Tradicional ...miguel checa
 
IngresoyTrabajo-HerramientaZoom.pptx
IngresoyTrabajo-HerramientaZoom.pptxIngresoyTrabajo-HerramientaZoom.pptx
IngresoyTrabajo-HerramientaZoom.pptxmiguel checa
 

Más de miguel checa (7)

JAVA (1).PPT
JAVA (1).PPTJAVA (1).PPT
JAVA (1).PPT
 
Java2-Clases.ppt
Java2-Clases.pptJava2-Clases.ppt
Java2-Clases.ppt
 
Plan-de-negocio-de-restaurante.pdf
Plan-de-negocio-de-restaurante.pdfPlan-de-negocio-de-restaurante.pdf
Plan-de-negocio-de-restaurante.pdf
 
5.metodos-funciones_alumnos.pdf
5.metodos-funciones_alumnos.pdf5.metodos-funciones_alumnos.pdf
5.metodos-funciones_alumnos.pdf
 
__Aprende_de_agilismo_.pdf
__Aprende_de_agilismo_.pdf__Aprende_de_agilismo_.pdf
__Aprende_de_agilismo_.pdf
 
Historia de Instagram Restaurante Comida Italiana Versus Rasgado Tradicional ...
Historia de Instagram Restaurante Comida Italiana Versus Rasgado Tradicional ...Historia de Instagram Restaurante Comida Italiana Versus Rasgado Tradicional ...
Historia de Instagram Restaurante Comida Italiana Versus Rasgado Tradicional ...
 
IngresoyTrabajo-HerramientaZoom.pptx
IngresoyTrabajo-HerramientaZoom.pptxIngresoyTrabajo-HerramientaZoom.pptx
IngresoyTrabajo-HerramientaZoom.pptx
 

Último

Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdfDemetrio Ccesa Rayme
 
30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdf30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdfgimenanahuel
 
Manual - ABAS II completo 263 hojas .pdf
Manual - ABAS II completo 263 hojas .pdfManual - ABAS II completo 263 hojas .pdf
Manual - ABAS II completo 263 hojas .pdfMaryRotonda1
 
cortes de luz abril 2024 en la provincia de tungurahua
cortes de luz abril 2024 en la provincia de tungurahuacortes de luz abril 2024 en la provincia de tungurahua
cortes de luz abril 2024 en la provincia de tungurahuaDANNYISAACCARVAJALGA
 
programa dia de las madres 10 de mayo para evento
programa dia de las madres 10 de mayo  para eventoprograma dia de las madres 10 de mayo  para evento
programa dia de las madres 10 de mayo para eventoDiegoMtsS
 
Planificacion Anual 4to Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 4to Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 4to Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 4to Grado Educacion Primaria 2024 Ccesa007.pdfDemetrio Ccesa Rayme
 
Heinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoHeinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoFundación YOD YOD
 
Estrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónEstrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónLourdes Feria
 
Dinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dDinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dstEphaniiie
 
Sesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docxSesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docxMaritzaRetamozoVera
 
celula, tipos, teoria celular, energia y dinamica
celula, tipos, teoria celular, energia y dinamicacelula, tipos, teoria celular, energia y dinamica
celula, tipos, teoria celular, energia y dinamicaFlor Idalia Espinoza Ortega
 
UNIDAD DPCC. 2DO. DE SECUNDARIA DEL 2024
UNIDAD DPCC. 2DO. DE  SECUNDARIA DEL 2024UNIDAD DPCC. 2DO. DE  SECUNDARIA DEL 2024
UNIDAD DPCC. 2DO. DE SECUNDARIA DEL 2024AndreRiva2
 
Lecciones 04 Esc. Sabática. Defendamos la verdad
Lecciones 04 Esc. Sabática. Defendamos la verdadLecciones 04 Esc. Sabática. Defendamos la verdad
Lecciones 04 Esc. Sabática. Defendamos la verdadAlejandrino Halire Ccahuana
 
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptxSINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptxlclcarmen
 
RETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docxRETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docxAna Fernandez
 
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxTIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxlclcarmen
 
CALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADCALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADauxsoporte
 
Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.José Luis Palma
 
2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdfBaker Publishing Company
 

Último (20)

Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdf
 
Medición del Movimiento Online 2024.pptx
Medición del Movimiento Online 2024.pptxMedición del Movimiento Online 2024.pptx
Medición del Movimiento Online 2024.pptx
 
30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdf30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdf
 
Manual - ABAS II completo 263 hojas .pdf
Manual - ABAS II completo 263 hojas .pdfManual - ABAS II completo 263 hojas .pdf
Manual - ABAS II completo 263 hojas .pdf
 
cortes de luz abril 2024 en la provincia de tungurahua
cortes de luz abril 2024 en la provincia de tungurahuacortes de luz abril 2024 en la provincia de tungurahua
cortes de luz abril 2024 en la provincia de tungurahua
 
programa dia de las madres 10 de mayo para evento
programa dia de las madres 10 de mayo  para eventoprograma dia de las madres 10 de mayo  para evento
programa dia de las madres 10 de mayo para evento
 
Planificacion Anual 4to Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 4to Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 4to Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 4to Grado Educacion Primaria 2024 Ccesa007.pdf
 
Heinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoHeinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativo
 
Estrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónEstrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcción
 
Dinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dDinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes d
 
Sesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docxSesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docx
 
celula, tipos, teoria celular, energia y dinamica
celula, tipos, teoria celular, energia y dinamicacelula, tipos, teoria celular, energia y dinamica
celula, tipos, teoria celular, energia y dinamica
 
UNIDAD DPCC. 2DO. DE SECUNDARIA DEL 2024
UNIDAD DPCC. 2DO. DE  SECUNDARIA DEL 2024UNIDAD DPCC. 2DO. DE  SECUNDARIA DEL 2024
UNIDAD DPCC. 2DO. DE SECUNDARIA DEL 2024
 
Lecciones 04 Esc. Sabática. Defendamos la verdad
Lecciones 04 Esc. Sabática. Defendamos la verdadLecciones 04 Esc. Sabática. Defendamos la verdad
Lecciones 04 Esc. Sabática. Defendamos la verdad
 
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptxSINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
 
RETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docxRETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docx
 
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxTIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
 
CALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADCALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDAD
 
Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.
 
2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf
 

CursoFundeweb2-basico (1).ppt

  • 1. © 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas. Curso de introducción a Fundeweb
  • 2. © 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, implementaciones y herencia • Punteros y referencias • Polimorfismo • Recolector de basura • Tratamiento de excepciones • Buenas prácticas de programación. • Javadoc
  • 3. © 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas. ¿Qué es Fundeweb? • Framework de desarrollo de aplicaciones J2EE diseñado por MNCS y con inicio en el año 2008. • Facilita el proceso de desarrollo de software. • Abstrae a los programadores de las dependencias de las tecnologías que se usan. • Provee de un conjunto de facilidades que adaptan el desarrollo a las características del Framework. • Abstrae de la base de datos sobre la que se trabaja. • Automatiza las tareas de despliegue de proyectos.
  • 4. © 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas. ¿Qué es Fundeweb? • Automatiza el despliegue en servidores de desarrollo y/o producción. • Provee ayudas para el control de calidad y supervisión de código. • En resumen: • Fundeweb es un framework de desarrollo de aplicaciones que facilita a los programadores la gestión y despliegue de proyectos. • Incorpora un conjunto de tecnologías suficientes para el desarrollo de aplicaciones J2EE.
  • 5. © 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas. ¿Qué tipo de aplicaciones desarrolla? • 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.
  • 6. © 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
  • 7. © 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas. Eclipse • IDE de desarrollo de aplicaciones. • Basado en un core y un paquete de extensión o plugins. • Eclipse se puede adaptar mediante la instalación de plugins a diferentes lenguajes de programación. • Concentra toda la funcionalidad necesaria para que los programadores desarrollen sus proyectos. • Contiene un gestor de plugins que permite instalar nuevos o actualizar los existentes.
  • 8. © 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas. Eclipse: Plugins • 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.
  • 9. © 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.
  • 10. © 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas. Eclipse: Plugins • 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.
  • 11. © 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas. Eclipse: Plugins • 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…
  • 12. © 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.
  • 13. © 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas. Eclipse: Plugins • 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…
  • 14. © 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
  • 15. © 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas. Servidor Weblogic • Oracle WebLogic es un servidor de aplicaciones Java EE y HTTP. • Desarrollado originalmente por BEA y comprado posteriormente por ORACLE. • Compatible con cualquier base de datos que se ajuste al estándar JDBC. • Integra un portal web de gestión integral de los diferentes componentes. • Provee plugins para Eclipse para el despliegue de aplicaciones.
  • 16. © 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
  • 17. © 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas. Proceso de desarrollo con Fundeweb • Fundeweb como framework J2EE requiere una serie de estructuras para agilizar su uso. • En ATICA hay establecidas metodologías para dirigir el desarrollo de aplicaciones J2EE • Existen herramientas para gestionar el código y mejorar su calidad. • Podemos ver una explicación más detallada en: Estructura J2ee Atica
  • 18. © 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
  • 19. © 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas. Programación Orientada a Objetos • La programación orientada a objetos se basa, como su nombre dice, en el concepto “Objeto” pero ¿qué es un objeto? • Es una “entidad” con significado propio en el sistema que tiene propiedades y es capaz de realizar funcionalidad por sí sola. A la estructura de esa entidad se la conoce como “clase”. • Un sistema, a su vez, está compuesto por objetos que interactúan entre sí. • Las propiedades de un objeto son los atributos que lo definen. • Al estado de un objeto en un instante dado se le suele llamar instancia (aunque a veces se refieren simplemente como objeto).
  • 20. © 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas. Programación Orientada a Objetos • Veamos un ejemplo y modelemos un alumno. • Lo primero es saber qué propiedades tiene un alumno: • Nombre, apellidos, DNI, etc. • Una vez definida las propiedades decidamos qué puede hacer un alumno sobre él mismo: • Cambiar sus datos personales, aumentar su edad, etc. • Tras tener claro qué representa un alumno definimos su relación con otros objetos: • Un alumno tiene una o varias matrículas. • Un alumno tiene una beca.
  • 21. © 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas. Programación Orientada a Objetos • El resultado quedaría así: Tiene Nombre Apellidos Dirección Teléfono Dni - Propiedades simples. - Definen el objeto. Contiene Matrículas Becas Cursos - Propiedades relacionales. - Definen las relaciones del objeto con otros objetos. Puede Cambiar nombre Cambiar teléfono Añadir Curso Añadir Titulación - Funcionalidad que puede hacer el alumno con sus datos. Clase Alumno
  • 22. © 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas. Programación Orientada a Objetos • Ejercicio: Modelar una titulación 1. ¿Qué propiedades simples tiene una titulación? 2. ¿Qué propiedades relacionales tiene? 3. ¿Qué puede hacer una titulación con sus datos? • Para modelar nuestros diagramas utilizaremos • Supongamos que una titulación pertenece a un centro y contiene varias asignaturas.
  • 23. © 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas. Programación Orientada a Objetos • Ejercicio: Modelar una titulación • El resultado podría ser similar al siguiente
  • 24. © 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas. Programación Orientada a Objetos • Mediante la definición de clases especificamos las estructuras que gestiona nuestra aplicación. • Una clase es sólo el esquema. Cuando esa clase se concreta en unos datos que representan una entidad pasa a llamarse instancia u objeto. • Basado en el ejemplo anterior: • Alumno es una clase. • El alumno Manuel Pérez con DNI:11223344R es una instancia de la clase alumno. • Las aplicaciones en ejecución manejan instancias. Las clases definen la estructura para crear nuevas instancias.
  • 25. © 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas. Programación Orientada a Objetos • No todos los objetos tienen como función representar entidades. • Un objeto puede actuar como: • Modelo de datos de una entidad (Alumno) • Controlador de la aplicación (gestiona las relaciones entre objetos, lanza acciones, etc.) • Intermediario con el usuario (captura los datos introducidos al usuario y lo traduce en objetos del modelo o en acciones del controlador. • Esta estructura se corresponde con parte del patrón MVC (Modelo Vista Controlador) que veremos en la sección de patrones de diseño.
  • 26. © 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas. Programación Orientada a Objetos • Así pues la programación orientada a objetos se basa en: • Definición de las estructuras (clases) que implementarán la aplicación. • Definición de las relaciones y funcionalidades de esas estructuras. • En tiempo de ejecución esas estructuras se usarán de plantilla para crear instancias. • Las instancias serán las encargadas de realizar las funcionalidades de la aplicación.
  • 27. © 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas. Lenguaje de programación Java • Lenguaje de programación orientado a objetos. • Diseñado para tener las mínimas dependencias con una implementación concreta. • El objetivo es programar para cualquier dispositivo independientemente de su arquitectura. • Las aplicaciones java se ejecutan sobre una máquina virtual (JVM) instalada en cada dispositivo. • Actualmente Java es uno de los lenguajes de programación más extendidos cubriendo el ámbito: Web, móvil y de aplicaciones de escritorio. • Importante: Java es sensible a mayúsculas y minúsculas por lo que no es lo mismo “Hola” que “hola”.
  • 28. © 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas. Java: Tipos de datos y organización de código • Java nos permite organizar el código (ficheros) en lo que denomina paquetes. • En cada fichero deberemos poner en la primera línea y de manera obligatoria a qué paquete pertenece. • Esta estructura es simbólica y la decide el desarrollador. • El nombre del paquete ha de coincidir con la ruta en disco de la carpeta que contiene al fichero. Esta ruta será relativa al proyecto.
  • 29. © 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas. Java: Tipos de datos y organización de código • Un paquete es una manera de agrupar conceptualmente clases que tienen un comportamiento o filosofía común. • Permiten identificar módulos dentro de una aplicación y agrupar características en un conjunto de paquetes. • Algunas propiedades de Java nos permiten aplicar características sobre un paquete determinado, lo que afecta a todos los ficheros que referencia. • En disco, un paquete es simplemente una carpeta que contiene ficheros (otros paquetes o clases)
  • 30. © 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas. Java: Tipos de datos y organización de código
  • 31. © 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas. Java: Tipos de datos y organización de código • Los tipos de datos primitivos en Java son
  • 32. © 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas. Java: Tipos de datos y organización de código • Los tipos de datos no primitivos, pero que provee Java son
  • 33. © 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas. Java: Tipos de datos y organización de código • Java provee de un tipo de dato especial llamado enumerado. • Este tipo de dato contiene una lista fija de valores, no variable. • Se suele emplear cuando entre conjuntos de datos del mismo tipo iguales queremos representar un subtipo o bien un estado. • Este tipo de dato se da de alta de la siguente manera public enum AuthenticationType { RADIUS, SSO, CARNE, DNI }
  • 34. © 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas. Java: Tipos de datos y organización de código • Java permite que nos podamos crear nuestros propios conjuntos de tipos de datos de manera indefinida. • Es responsabilidad del programador analizar y decidir qué debe ser un tipo de dato y qué no. • Normalmente, los tipos de datos que queramos crear, representarán entidades de nuestra aplicación o bien un registro de base de datos. • Estos “tipos de datos” toman entidad propia en Java llamándose clases.
  • 35. © 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas. Java: Tipos de datos y organización de código • Los operadores Java son: • Operadores Aritméticos: • + - * / • Operadores Incrementales • ++ -- += -= • Operadores Relacionales • > < >= <= != == • Operadores lógicos • && • || • ! • Operador de concatenación de cadenas • +
  • 36. © 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas. Java: Estructuras de control • 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; …}
  • 37. © 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas. Java: Clases e instancias • 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.
  • 38. © 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas. Java: Clases e instancias • Una variable se define de la siguiente manera: • Ámbito (calificativos) tipoDeDato nombre: private int numero; • 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 calificativos (opcionales): • static: se podrá acceder sin necesidad de que la clase esté creada. • final: no se podrá modificar el valor. Se deberán inicializar en su declaración.
  • 39. © 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas. Java: Clases e instancias • 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”.
  • 40. © 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas. Java: Clases e instancias • Un ejemplo: package action.vehiculos; public class Coche { private int puertas; private String modelo; private String matricula; private boolean tieneSeguro; public Coche() { } public int getPuertas() { return puertas; } public void setPuertas(int puertas) { this.puertas = puertas; } Nos indica a qué conjunto de clases pertenece Inicio de la definición de la clase "Coche" Propiedades de la clase coche Constructor de la clase coche (vacío) Método para obtener el parámetro "puertas" Método para asignar valor al parámetro "puertas" Importante: Java es "case sensitive" por lo que no será lo mismo “coche” que “Coche.”
  • 41. © 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.
  • 42. © 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas. Java: Clases e instancias • Una clase es la definición de una entidad junto con todos sus propiedades y acciones posibles. • Una instancia u objeto es cuando esa definición se transforma en una entidad concreta. Contiene por lo tanto los valores y el estado de una clase en un instante determinado. public class Coche{ private int puertas; private int tipoCombustible; … } Coche{ puertas = 5; tipoCombustible=“diesel”; } Ejemplo de clase Instancia de la clase
  • 43. © 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas. Java: Clases e instancias • Una clase puede contener variables que sean otras clases. • Desde una clase se puede llamar a los métodos de cualquier otra clase, siempre que se tenga una instancia. • Existen objetos especiales, llamados colecciones que forman listas de objetos, permitiendo recorrerlas y almacenar en memoria sus elementos. • Programando definimos las clases. En ejecución se accede a instancias.
  • 44. © 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas. Java: Clases e instancias • Ejercicio: Modelar el siguiente diagrama en Java
  • 45. © 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas. Java: Interfaces, implementaciones y herencia • 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.
  • 46. © 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas. Java: Interfaces, implementaciones y herencia • 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.
  • 47. © 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas. Java: Interfaces, implementaciones y herencia • 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.
  • 48. © 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas. Java: Interfaces, implementaciones y herencia • 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.
  • 49. © 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”.
  • 50. © 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas. Java: Interfaces, implementaciones y herencia • Ejemplo: package action.interfaces; public interface Vehiculo { public boolean tieneSeguro(); public void recorreDistancia(int numKilometros); public double getCombustibleRestante(); } Nos indica a qué conjunto de clases pertenece Inicio de la definición de la interfaz "Vehiculo" Definición de un métodos
  • 51. © 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas. Java: Interfaces, implementaciones y herencia • 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.
  • 52. © 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.
  • 53. © 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas. Java: Interfaces, implementaciones y herencia • 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.
  • 54. © 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)
  • 55. © 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas. Java: Interfaces, implementaciones y herencia • 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
  • 56. © 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas. Java: Interfaces, implementaciones y herencia • Ejemplo: • Vehículo sin motor: • Propiedades: Método de desplazamiento • Métodos: preparar desplazamiento • En este ejemplo tenemos lo siguiente:
  • 57. © 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas. Java: Interfaces, implementaciones y herencia • 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){ }
  • 58. © 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas. Java: Interfaces, implementaciones y herencia • Ejercicio: Implementar el diagrama y añadir • Dos clases hijas para vehículo de motor y vehículo sin motor. • Sobreescribir el método “recorrerDistancia” para que según el tipo de vehículo: • Si la distancia a recorrer es mayor de 100km lance repostar. • Antes de empezar el desplazamiento lanzar PrepararDesplazamiento
  • 59. © 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas. Java: Clases abstractas • Cuando tenemos herencia podemos crear lo que se conoce como una clase abstracta. • Una clase abstracta no es más que una clase que tiene algún método sin implementar. • Esto obliga a las clases hijas a implementar ese método. • Para definir una clase abstracta tenemos que: • En la declaración de la clase añadir abstract. • Dejar sólo la declaración del método, añadiendo igualmente abstract.
  • 60. © 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas. Java: Interfaces, implementaciones y herencia • El ejemplo anterior dejando repostar como abstracto: //Clase padre public abstract class VehiculoMotor { public abstract void repostar(double litros); } //Clase hija public class Coche extends VehiculoMotor{ public Coche() { } @Override public void repostar(double litros){ }
  • 61. © 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas. Java: Instanciación y polimorfismo • Llamamos polimorfismo a la capacidad de un objeto de ser representado por varias clases o interfaces: • Un coche puede representarse por: • Un vehículo • Un vehículo de motor • Un coche • Llamamos instanciación de un objeto cuando lo recuperamos como una clase o interfaz concreta. • En el caso anterior cuando lo decidimos recuperar como, por ejemplo, un vehículo de motor.
  • 62. © 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas. Java: Interfaces, implementaciones y herencia • Para recuperar un objeto como una clase o interfaz concreta deberemos hacer lo que se conoce como cast • Un cast es decirle a Java que el objeto que tenemos lo utilice como si fuera el que le estamos indicando. • (ObjetoDestino)miObjeto • Para saber si un objeto puede ser recuperado como una determinada clase haremos uso del la instrucción instanceof. • Esta instrucción pregunta si un determinado objeto puede ser recuperado con el tipo que le estoy indicando. • miObjeto instanceof Clase
  • 63. © 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas. Java: Interfaces, implementaciones y herencia • Si hacemos un cast a una clase con la que no es compatible mi objeto obtendremos una excepción. • Si usamos previamente instanceof nos aseguramos de evitar la excepción • ¿Con qué puedo hacer un cast en un determinado objeto? • Con interfaces que implemente dicho objeto, • Con cualquier clase heredada. if(coche instanceof VehiculoMotor){ VehiculoMotor vm = (VehiculoMotor)coche; }
  • 64. © 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas. Java: Interfaces, implementaciones y herencia • ¿Cuándo debemos heredar y cuando aplicar una interfaz? • El desarrollador decide, pero la referencia es: • Herencia: Cuando entre los objetos hay una relación conceptual. “Un coche es un vehículo”. En este caso se comparten métodos y propiedades. • Interfaz: Cuando tenemos un conjunto de objetos muy diferente, pero que comparten una funcionalidad común y queremos hacer uso de ella sin necesidad de saber qué tipo de objeto es. • Un ejemplo claro es el patrón Observer, que veremos en la sección de patrones en Fundeweb.
  • 65. © 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas. Java: Punteros y referencias • 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.
  • 66. © 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas. Java: Punteros y referencias • Ejemplo Coche seat1 = new Coche(); seat.setGasolina(40); Coche seat2 = seat1; seat2.quitaGasolina(20); seat1.getGasolina(); seat2,getGasolina(); Coche seat1 = new Coche(); seat.setGasolina(40); Coche seat2 = new Coche(); seat2.setGasolina(40); seat2.quitaGasolina(20); seat1.getGasolina(); seat2,getGasolina(); 20 seat2 seat1 40 20 seat2 seat1 Memoria Memoria
  • 67. © 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas. Java: Recolector de basura • 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.
  • 68. © 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.
  • 69. © 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas. Java: Tratamiento de excepciones • Cuando en nuestro código Java, el compilador nos indica que puede saltar una excepción deberemos hacer uso del bloque try{ … }catch(NombreExcepcion ex){ … } • Este bloque nos permite que si se produjera una excepción dentro del código situado en el “try” se nos ejecutará lo indicado dentro del catch. • En el bloque catch se nos pasará la excepción lanzada y la información disponible.
  • 70. © 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas. Java: Tratamiento de excepciones • También podemos lanzar nuestras propias excepciones para que la clase que llama a nuestro método la maneje. • Para ello debemos: • Crear una clase que represente a nuestra excepción y hacer que herede de la clase Java Exception. • Añadir en la cabecera de nuestro método la cláusula throws NombreExcepcion. • Dentro del código lanzar la excepción de la siguiente manera: throw new NombrExcepcion(“texto que se quiera poner”);
  • 71. © 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 • 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
  • 72. © 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas. Java: Buenas prácticas • Las variables se han de crear siempre al principio de la clase o método. • Los métodos get y set siempre deben ir al final. • Nunca usar variables públicas. • Se crean privadas y se implementan sus métodos get y set. • Si varias clases comparten muchas propiedades hacer uso de la herencia. • No usar la salida estándar de consola para mostrar texto. • Definir y usar los logs en su caso. • Respetar los estándares. • Minimizar el uso de estructuras complejas siempre que sea posible. • Comentar los métodos y los trozos de código largos.
  • 73. © 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas. Java: Buenas prácticas • Si tenemos una clase con demasiadas líneas de código, revisar si realmente son necesarias ahí o se puede reestructurar. • En los constructores sólo asignar valores, no ejecutar métodos. • Utilizar método “equals” cuando se comparan objetos en vez de “==“.
  • 74. © 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 • 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
  • 75. © 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas. Java: Javadoc • Para introducir comentarios en el código haremos uso de la doble barra // cuando sea una línea. • Cuando sean varias líneas haremos uso de la estructura /* todo el comentario */ • Para generar javadoc de los métodos, nos situaremos en el encabezado del método, escribiremos /** y le daremos al enter para que se nos genere automáticamente el encabezado y podamos completarlo.
  • 76. © 2012. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas. Java: Javadoc • Es importante generar el Javadoc adecuado pues se mostrará a los que usen nuestros métodos. • Si las clases implementan interfaces el Javadoc debe ir en la interfaz y no en la implementación concreta. • Lo mismo pasa en caso de la herencia con los métodos que se sobreescriben.