0% encontró este documento útil (0 votos)
59 vistas141 páginas

Poo 2022

Este documento introduce el lenguaje de programación Java. Explica que Java es un lenguaje orientado a objetos que es independiente de la plataforma. Describe algunas de las características clave de Java como su compilador que produce bytecodes en lugar de código nativo y su ambiente de ejecución o Java Virtual Machine. También resume los conceptos básicos de programación en Java como la estructura de clases, métodos y tipos de datos.

Cargado por

Cristian Colque
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
59 vistas141 páginas

Poo 2022

Este documento introduce el lenguaje de programación Java. Explica que Java es un lenguaje orientado a objetos que es independiente de la plataforma. Describe algunas de las características clave de Java como su compilador que produce bytecodes en lugar de código nativo y su ambiente de ejecución o Java Virtual Machine. También resume los conceptos básicos de programación en Java como la estructura de clases, métodos y tipos de datos.

Cargado por

Cristian Colque
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 141

Introducción al Lenguaje Java

Programación Orientada a Objetos


San Salvador de Jujuy
UNJu – Facultad de Ingeniería
Ing. José Zapana
Introducción a Java
• Lenguaje de Programación Orientado a Objetos

• Características
– Independiente de la plataforma
• Compilador no genera código ejecutable nativo a la máquina donde se
ejecuta
• Compilador produce un formato especial llamado byte codes
• Para que bytescodes puedan ejecutarse en una máquina específica se
necesita un intérprete en tiempo de ejecución. El intérprete es el que
genera código de lenguaje de máquina entendido por la máquina
• Ambiente de ejecución normalmente se conoce como Java Virtual
Machine (JVM)
– Recolector de basura
• Memoria es liberada automáticamente cuando JMV lo determina

UNJu - FI - POO - Ing. José Zapana 2


Programando en Java

• Primer programa

public class Hello {


public static void main(String[] args) {
System.out.println("Hola, amigo!!");
}
}

• Compilador: javac : Traduce archivos .java en .class (bytecodes)


• Intérprete: java : dinámicamente ejecuta programa previa
interpretación de bytecode a código de lenguaje de máquina
• Existen ambientes para la creación, edición, compilación y
ejecución: Eclipse, Spring Tools, Visual Studio Code, etc

UNJu - FI - POO - Ing. José Zapana 3


Estructura de programas en Java

• Cada programa ejecutable en java consiste en una


clase
• Aplicación
– Al menos una de las clases debe contener el
método main
– Declaración de método main debe ser método
estático (método asociado a clase no objeto)
– Declaración public, cualquiera puede invocarlo

UNJu - FI - POO - Ing. José Zapana 4


Palabras clave en Java

abstract default if private this


boolean do implements protected throw
break double import public throws
byte else instanceof return transient
case extends int short try
catch final interface static void
char finally long strictfp volatile
class float native super while
const for new switch
continue goto package synchronized

• Las palabras claves tienen significado especial y


no pueden usarse como identificadores de
variables ni clases ni métodos

UNJu - FI - POO - Ing. José Zapana 5


Tipos de datos

• Tipos primitivos
– Tipos de datos simples definidos por el
lenguaje de programación
• En Java son 8
– boolean (true o false), char (16 bits set caracteres
unicode), byte (8 bits con signo), short (16 bits), int
(32 bits), long (64 bits), float (32 bits punto flotante),
double (64 bits punto flotante)
• Tipos no primitivos se conocen como Tipos
Objetos

UNJu - FI - POO - Ing. José Zapana 6


Constantes

• Declaración
– public static final <type> <name> = <value>;
• Ejemplos
public static final int DAYS_IN_WEEK = 7;
public static final double INTEREST_RATE = 3.5;
public static final int SSN = 658234569;

UNJu - FI - POO - Ing. José Zapana 7


Control de flujo

• Ciclos
– for(), while(), do-while()
• Condicionales
– If – else
– switch (expresion){
case n: sentencias;
case m: sentencias;

default: sentencias;
}

UNJu - FI - POO - Ing. José Zapana 8


Tipos de datos Objetos

• Instancias de tipos de datos complejos llamados clases


• Entidad que contiene datos y comportamientos
• Existen variables, que almacenan datos dentro de un
objeto
• Existen métodos dentro de objeto que representan su
comportamiento
• Creación de objetos en Java mediante uso de keyboard
new

UNJu - FI - POO - Ing. José Zapana 9


Variables de referencia

• Variables de tipos de objetos son llamadas referencias


• Las referencias no almacenan objeto, sino que
almacenan la dirección de una ubicación en memoria del
objeto
• Si se asigna una referencia a otra para referirse al mismo
objeto, el objeto no es copiado sino que las dos
referencias comparten el mismo objeto.
• Ejemplo
– Alumno a1 = new Alumno();
– …
– Alumno a2 = a1;

UNJu - FI - POO - Ing. José Zapana 10


Variables estáticas static
▪ Variables estáticas
• También se les conoce como class variables
• Variables que se asocian a clase no a objeto
• Variable común a todos los objetos (variables
compartidas entre todos los objetos de la clase)
– Se definen como variable de clase con la palabra
clave static
• Ejemplo : Identificador de cuenta de CuentaBanco. Un
número que identifique únicamente a dueño de
cuenta.

UNJu - FI - POO - Ing. José Zapana 11


Ejemplo: variables estáticas
public class CuantaBanco {
private String nombre;
private int balance;
private int Id;
private static int proxIdDisponible = 1;

/** Constructor, establece nombre dueño y balance inicial


de la cuenta */

public CuentaBanco(String nombre, int balance){


this.nombre = nombre;
this.balance = balance;
this.Id = proxIdDisponible;
proxIdDisponible++;
}

UNJu - FI - POO - Ing. José Zapana 12


Métodos estáticos

• Algunos métodos no están asociados, en forma natural,


con objetos particulares
– Ejemplo, métodos en clase Math, sqrt, sin, cos, tan

• También podría darse el caso que nos gustaría llamar un


métodos antes de crear un objeto
– Tales métodos pueden ser declarados estáticos: el método no
es parte de una instancia sino que de la clase
• Se invocan enviando mensaje a la clase
• No puede accesar referencia “this” o cualquier variable o
método dentro de un método estático dado que no está
asociado a un objeto

UNJu - FI - POO - Ing. José Zapana 13


Métodos estáticos - Ejemplo
public class FechaUtil(){
public static Date getNow(){
return new Date();
}
}

Date fechaIngreso = FechaUtil.getNow();

10/8/2021 UNJu - FI - POO - Ing. José Zapana 14


Nomenclatura java

• http://www.oracle.com/technetwork/java/codeconventions-
135099.html

UNJu - FI - POO - Ing. José Zapana 15


Introducción al Lenguaje Java

Programación Orientada a Objetos


San Salvador de Jujuy
UNJu – Facultad de Ingeniería
Ing. José Zapana
Contenido
• Strings
• Collections

UNJu – FI – POO
2
Ing. José Zapana
Strings - Creación
• String cadena = “unaCadena”
• String cadena = “uno + “dos”
• String cadena = new String (“unaCadena”)

UNJu – Facultad de Ingeniería – POO 3


Strings - Operaciones
• Búsqueda de longitud
– int length();
• Búsqueda de un carácter específico
– char charAt(int index)
• Devolución de una subcadena
– String substring(int inicio, int fin)

UNJu – Facultad de Ingeniería – POO 4


Operaciones adicionales
• Conversión en mayúsculas / Minúsculas
– toUpperCase(), toLowerCase(),
• Recortes de espacio
– trim()
• Búsqueda de una subcadena
– indexOf(String str)
• Comparación de objetos
– equals(str), equalsIgnoreCase(str)

UNJu – Facultad de Ingeniería – POO 5


Java Collection Frameworks
• Es una arquitectura de API para la gestión de un
grupo de objetos que se pueden manipular
independientemente de su implementación
interna
– Se encuentra en el paquete java.util
– Se define mediante seis interfaces principales y
algunas clases de implementación
• Interfaz Collection
• Interfaz Set
• Interfaz List
• Interfaz Map
• SortedSet y SortedMap para Set y Map ordenados

UNJu – Facultad de Ingeniería – POO 6


Java Collections Framework

7
Interfaz Collection
-Collection
- int size()
- boolean empty()
- boolean contains(Object elem)
- Iterator iterator()
- Object[] toArray(), Object[] toArray(Object dest[])
- boolean add(Object elem),
- boolean remove(Object elem)
- void clear()

- List – Una colección cuyos elementos permanecen en un orden particular a menos


que se modifique la lista
- void add(int index, Object element)
- Object remove(int index)
- Object get(int index)
- Object set(int index, Object element)
- int indexOf(Object o)
- int lastIndexOf(Object o)
- List subList(int min, int max)

UNJu – Facultad de Ingeniería – POO 8


Interfaz Collection (cont.)
-Set Conjunto donde no puede haber elementos
repetidos, y cuyos elementos no se almacenan
necesariamente siguiendo un orden particular.
- Mismos métodos que Collection con otro contrato.

-SortedSet – Conjunto con elementos ordenados.


-Object first()
-Object last()
-SortedSet subSet(Object fromElement, Object
toElement)
-SortedSet headSet(Object toElement)
-SortedSet tailSet(Object fromElement)

UNJu – Facultad de Ingeniería – POO 9


Interfaz Map
- Map
- Un objeto que asocia claves con valores.
- No puede tener claves duplicadas.
– Object put(Object key, Object value);
Object remove(Object key);
Object get(Object key);
– containsKey, containsValue, isEmpty, size
- Proporciona tres vistas de colección: colección de claves (keySet),
colección de valores (values), colección de asociaciones clave-valor
(entrySet).
- SortedMap: Un mapa cuyas claves están ordenadas.
- Object firstKey(), Object lastKey(), SortedMap
subMap(Object minKey, Object maxKey), SortedMap
headMap(Object maxKey), SortedMap tailMap(Object
minKey)

UNJu – Facultad de Ingeniería – POO 10


Uso de ArrayList y HashTable
• ArrayList:
– Es una interfaz redimensionable de la interfaz List
– Permite la manipulación del tamaño de la matriz.
– Tiene una capacidad que aumenta a medida que se
agregan elementos a la lista
• HashTable:
– Es una clases heredada similar a las implementaciones
Map.
– Se utiliza para almacenar objetos arbitrarios indexados por
otro objeto arbitrario.
– Se utiliza normalmente con String como clave para
almacenar objetos como valores.

UNJu – Facultad de Ingeniería – POO/ 11


Declaración de colecciones
import java.util.*;

public class ColeccionSimple {


public static void main(String args[]) {
List lista = new ArrayList();
for( int i=0; i < 10; i++ )
lista.add(new Integer(i));

for (int i: lista)


System.out.println(i);
}
}

UNJu – Facultad de Ingeniería – POO 12


Ejemplo con HashMap
public class Principal{

public static void main(String[]args){


Map map = new HashMap();
map.put(1, “Argentina”);
map.put(2, “Brasil”);

String nombrePais = (String)map.get(1);
System.out.println(nombrePais);
}
}

16/8/2021 UNJu – Facultad de Ingeniería – POO 13


Introducción al Lenguaje Java

Programación Orientada a Objetos


San Salvador de Jujuy
UNJu – Facultad de Ingeniería
Ing. José Zapana
Objetivos
• Definir e Identificar Objetos
• Conocer la Interacción de objetos mediante
mensajes.
• Entender el concepto de clases
• Entender el concepto de la POO

23/8/2021 UNJu - FI - POO - Ing. José Zapana 2


Introducción
• Los conceptos básicos se originaron con la
definición de lenguajes que incorporaron
conceptos como

23/8/2021 UNJu – Facultad de Ingeniería – POO – Ing. José Zapana 3


Objetos
• Los objetos son/representan cosas
• Los objetos pueden ser simples o complejos
• Los objetos pueden ser reales o imaginarios

23/8/2021 UNJu – Facultad de Ingeniería – POO – Ing. José Zapana 4


Estructura de un Objeto
• Los datos describen el estado del objeto
• Las operaciones actúan sobre los datos modificándolos o interrogándolos

Datos
(estado)

Operaciones
(comportamiento)

23/8/2021 UNJu – Facultad de Ingeniería – POO – Ing. José Zapana 5


Atributos
• Valores o características de los objetos
• Permiten definir el estado del objeto u otras
cualidades

23/8/2021 UNJu – Facultad de Ingeniería – POO – Ing. José Zapana 6


Mensajes

• Los objetos se comunican e interaccionen entre sí por medio de mensajes


• Si un objeto desea que otro objeto haga algo le envía un mensaje que puede tener
información adicional en forma de parámetros
• Cuando un objeto recibe un mensaje ejecutará un método u operación
• Componentes de un mensaje
– Objeto destinatario del mensaje (miCoche)
– Método que se debe ejecutar como respuesta (cambiar marcha)
– Parámetros necesarios del método (segunda)

23/8/2021 UNJu – Facultad de Ingeniería – POO – Ing. José Zapana 7


Método u operaciones
• Acciones que puede realizar un objeto
• Los métodos pueden devolver un valor al acabar su
ejecución

UNJu – FI – POO
23/8/2021 8
Ing. José Zapana
¿En que consiste la POO?
• Identificar los objetos del problema
• Identificar los mensajes a los que deberá
responder
• Establecer una secuencia de mensajes a los
objetos

23/8/2021 UNJu – Facultad de Ingeniería – POO – Ing. José Zapana 9


¿Qué es una clase?
• Representan un tipo particular de objetos
– Objetos con características y comportamiento similar
– Categorías de objetos

23/8/2021 UNJu – Facultad de Ingeniería – POO – Ing. José Zapana 10


Clases
• Cada clase tiene asociado un código
(definición de la clase), que determina
– Los atributos que tienen los objetos de la clase
– Los métodos que pueden ejecutar los objetos de
la clase y cómo lo hacen
• La programación orientada a objetos consiste
en escribir código de clases de objetos

23/8/2021 UNJu – Facultad de Ingeniería – POO – Ing. José Zapana 11


Estructura de una Clase

estructura

comportamiento

Implementación de
métodos

void imprimir(){ Double calcularSalario(Persona persona){


System.out.println(“total:“+total); return horasTrabajadas * 25;
} }

23/8/2021 UNJu – Facultad de Ingeniería – POO – Ing. José Zapana 12


Clases e Instancias
• Un Objeto se dice Instancia de una clase cuando sus métodos y atributos están
definidos en la misma.
• Tiene un Estado, un Comportamiento y una Identidad

Clases Instancias

- Define atributos
- tiene valores
- Define métodos
- ejecuta métodos
- Puede generar instancias

23/8/2021 UNJu – Facultad de Ingeniería – POO – Ing. José Zapana 13


Protocolo de mensajes
• Es el conjunto de mensajes a los cuales el objeto puede responder
• Las formas en las cuales un objeto puede actuar y reaccionar
• Constituyen la vista exterior del mismo

El protocolo de la clase
A
X esta compuesto por
los mensajes A, B, C, D

B Atributos C

Clase X D
Métodos: A, B, C, D

23/8/2021 UNJu – Facultad de Ingeniería – POO – Ing. José Zapana 14


Relaciones Entre Clases

Programación Orientada a Objetos


San Salvador de Jujuy
UNJu – Facultad de Ingeniería
Ing. José Zapana
Objetivos

• UML – Diagramas de clase


• Relaciones entre clases

UNJu – Facultad de Ingeniería – POO


2
Ing. José Zapana
Diagrama de clases
• Un diagrama de clases muestra las clases del
sistema y sus relaciones. Describe la vista
estática del sistema

UNJu – Facultad de Ingeniería – POO


3
Ing. José Zapana
Visibilidad de atributos y operaciones
de una clase
• La visibilidad puede ser:
– Público (+): objetos de cualquier clase.
– Protegido (#): objetos de las subclases.
– De paquete (~): objetos de cualquier clase del mismo paquete.
– Privado (-): objetos donde esta definido el atributo u operación.

UNJu – Facultad de Ingeniería – POO


4
Ing. José Zapana
Clase: atributo
• [visibilidad] nombre
[multiplicidad][:tipo][=valor][{lista de propiedades}]
• Ejemplos

UNJu – Facultad de Ingeniería – POO


5
Ing. José Zapana
Clase: operación
• Sintaxis
– [visibilidad] nombre[(lista de parámetros)][:tipo de
retorno][{propiedades}]
– Declaración de un parámetro:
[dirección]nombre: tipo[multipliciadad][=valor]
Donde dirección puede ser:
- in: parámetro de entrada
- out: parámetro de salida
- Inout: parámetro de entrada y salida.

UNJu – Facultad de Ingeniería – POO


6
Ing. José Zapana
Diagrama de clases: relaciones
• ¿Qué son las relaciones entre clases?
– Es un a conexión semántica entre objetos.
Proveen un camino de comunicación entre ellos.
• ¿Qué tipos de relaciones existen?
– Asociación
– Generalización
– Dependencia
– Realización

UNJu – Facultad de Ingeniería – POO


7
Ing. José Zapana
Diagrama de clases: relaciones
• Notación

UNJu – Facultad de Ingeniería – POO


8
Ing. José Zapana
Asociación
• Es una relación estructural que especifica que
los objetos de un elemento están conectados
con los otros de otro.

• Relaciones involutivas

UNJu – Facultad de Ingeniería – POO


9
Ing. José Zapana
Asociación Involutiva

UNJu – FI – POO
10
Ing. José Zapana
Multiplicidad
• Indica cuántos objetos pueden conectarse a
través de una instancia de una asociación:

– Exactamente uno A
1
B
– Cero o uno A
0..1
B
– Muchos: A
0..*
B
– Uno o más: 1..*
A B
– Número exacto A
3
B
– Lista A
0..1, 3..5, 7..9
B
– Rango 7..9
A B

UNJu – Facultad de Ingeniería – POO


11
Ing. José Zapana
Relaciones de conocimiento
• Compuesto-de
• La relación que existe entre dos partes es tal que:
– Una de las partes “contiene” a la otra.
– La parte contenida no puede existir sin la parte contenedora

– ¿Puede existir un ítem si factura?


– ¿Puede existir una factura por un monto X sin ítems?
– Pueden implicar nuevas responsabilidades para la parte contenedora
(cascada):
• Creación
• Destrucción
• Rectificación de datos (como fechas)

UNJu – Facultad de Ingeniería – POO


12
Ing. José Zapana
Relaciones de conocimiento
• Es-parte-de
• La relación que existe entre dos partes es tal que:
– Una de las partes “tiene” a la otra.
– La parte “tenida” puede existir sin la parte poseedora

– ¿Puede existir una Factura sin TrabajoImpresion?


– ¿Puede existir un TrabajoImpresion sin Factura?

UNJu – Facultad de Ingeniería – POO –


13
Ing. José Zapana
Asociaciones: Ejemplo
• Diagrama de clases

UNJu – Facultad de Ingeniería – POO


14
Ing. José Zapana
Asociaciones - Ejemplo
• Implementación:
Collection de
docentes
asociados a un
cargo

Instancia de la
Clase cargo

UNJu – Facultad de Ingeniería – POO


15
Ing. José Zapana
Herencia
• Define una relación de clases, en la que una
clase comparte los comportamientos y la
estructura de datos de la otra
• Constituye una técnica valiosa, porque
posibilita y fomenta la reutilización del
software

UNJu – Facultad de Ingeniería POO


16
Ing. José Zapana
Ventajas de la Herencia
• Modelado de la realidad: las relaciones de
especialización/generalización entre las
entidades del mundo real.
• Evitar redundancias
• Facilitar la reutilización
• Sirve de soporte al polimorfismo

UNJu – Facultad de Ingeniería – POO


17
Ing. José Zapana
Esquema de Herencia

UNJu – Facultad de Ingeniería – POO


18
Ing. José Zapana
Aspecto de una Clase
• Una subclase hereda todas las variables de
instancia de su superclase

UNJu – Facultad de Ingeniería – POO


19
Ing. José Zapana
Uso de constructores de la super clase
• super() permite referenciar al constructor de la superclase

UNJu – Facultad de Ingeniería – POO


20
–Ing. José Zapana
Especificación de Métodos Adicionales
• La superclase define métodos para todos los tipos de Persona.
• La subclase puede especificar métodos adicionales que específicos de
Docente

UNJu – Facultad de Ingeniería – POO


21
Ing. José Zapana
Sustitución de Métodos de Superclase
• Una subclase hereda todos los métodos de su superclase.
• La subclase puede sustituir un método por su propia versión especializada

UNJu – Facultad de Ingeniería – POO –


San Salvador de Jujuy 22
Ing. José Zapana
Consideraciones Importantes
• La herencia sólo se debe utilizar para
relaciones “es un tipo de” reales:
– Debe ser siempre posible sustituir un objeto de subclase
por uno de superclase.
– Todos los métodos de la superclase deben tener sentido en
la subclase
• El uso de la herencia como solución a corto
plazo provoca problemas en el futuro.

UNJu – Facultad de Ingeniería – POO


23
Ing. José Zapana
Pruebas Unitarias - Maven

Programación Orientada a Objetos


San Salvador de Jujuy
UNJu – Facultad de Ingeniería
Ing. José Zapana
¿Qué es Maven?
• Es una herramienta de software para la
gestión y construcción de proyectos Java
• Creada por Jason van Zyl, de Sonatype, en
2002
• https://maven.apache.org/

UNJu – Facultad de Ingeniería


2
Ing. José Zapana
¿Cómo funciona?
• Utiliza un Project Object Model (POM) para
– describir el proyecto de software a construir
– sus dependencias de otros módulos y
componentes externos, y
– el orden de construcción de los elementos.
• Viene con objetivos predefinidos para realizar
ciertas tareas claramente definidas, como la
compilación del código y su empaquetado

UNJu – Facultad de Ingeniería


3
Ing. José Zapana
Ciclo de vida
• compile: Genera los ficheros .class compilando los fuentes
.java
• test: Ejecuta los test automáticos de JUnit existentes,
abortando el proceso si alguno de ellos falla.
• package: Genera el fichero .jar con los .class compilados
• install: Copia el fichero .jar a un directorio de nuestro
ordenador donde maven deja todos los .jar. De esta forma
esos .jar pueden utilizarse en otros proyectos maven en el
mismo ordenador.
• deploy: Copia el fichero .jar a un servidor remoto,
poniéndolo disponible para cualquier proyecto maven con
acceso a ese servidor remoto.

UNJu – Facultad de Ingeniería


4
Ing. José Zapana
Crear un proyecto Maven
• Desde eclipse
– Nuevo -> proyecto Maven
– Es posible seleccionar archetypes predefinidos
– Definir el “Group Id”: identificador único de la
organización
– Definir el “Artifact Id”: identificador único del
artefacto principal de este proyecto
– Agregar dependencias

UNJu – Facultad de Ingeniería


5
Ing. José Zapana
Arquetipo para JUnit5

6
POM - Dependencias creadas

UNJu – FI – POO
7
Ing. José Zapana
Pruebas de software

UNJu – Facultad de Ingeniería – POO


8
–Ing. José Zapana
Técnicas de Testing
• Escribir casos de testing es deseable
• Escribir casos de testing es costoso
• Testear todos los métodos no es práctico
– Por ejemplo métodos accessors
• Se busca la cobertura necesaria según el
problema que se está analizando.

UNJu – Facultad de Ingeniería – POO


9
–Ing. José Zapana
Pruebas Unitarias - Características
• Automatizable
– No requiere intervención humana
• Completas
– Deben cubrir la mayor cantidad de código
• Repetibles o Reutilizables
– No deben funcionar para una sola vez
• Independientes
– La ejecución de una prueba no debe afectar la ejecución de
otra.
• Profesionales
– Deben ser consideradas como un entregable más…

UNJu – Facultad de Ingeniería – POO –


10
Ing. José Zapana
Pruebas Unitarias
• Fomentan el cambio
– Permiten hacer las pruebas sobre cambios y asegurarse que los
cambios no generan errores.
• Simplifican la integración
– Permiten llegar a la fase de integración con un grado alto de
seguridad de que el código está funcionando correctamente.
• Documenta el código
– Las propias pruebas son documentación del código
• Separación de la interfaz y la implementación
– El cambio de la tecnología de interfaz no debe afectar las
pruebas.
• Los errores están más acotados y son más fáciles de
localizar

UNJu – Facultad de Ingeniería – POO


11
–Ing. José Zapana
Limitaciones
• Las pruebas unitarias NO descubrirán todos
los errores de código.
– No descubrirán errores de integración.
– Problemas de rendimiento y otros problemas que
afectan a todo el sistema en su conjunto.
• Sólo son efectivas si se usan en conjunto con
otras pruebas de software.

UNJu – Facultad de Ingeniería – POO


12
–Ing. José Zapana
JUnit
• JUnit es un “framework” para automatizar las
pruebas de programas Java
• Escrito por Erich Gamma y Kent Beck
• Open Source, disponible en
http://www.junit.org

UNJu – Facultad de Ingeniería – POO


13
–Ing. José Zapana
Arquitectura de JUnit 5

14
UNJu – Facultad de Ingeniería – POO –
Esquema de pruebas unitarias

UNJu – Facultad de Ingeniería – POO


15
–Ing. José Zapana
JUnit – Aserciones

UNJu – Facultad de Ingeniería – POO


16
–Ing. José Zapana
Ejemplo

UNJu – Facultad de Ingeniería – POO


17
–Ing. José Zapana
@DisplayName

UNJu – Facultad de Ingeniería


18
Ing. José Zapana
Anotaciones destacadas
• @BeforeAll
• @AfterAll
• @BeforeEach
• @AfterEach
• @Test

UNJu – Facultad de Ingeniería


19
Ing. José Zapana
Nuevo Modelo de Programación con
JUnit5

20
Filtrar por Tags en Maven

21
@Disabled
Deshabilitar test a nivel de clase o método

22
@RepeatTest
Permite repetir un test un número determinado
de veces

23
@ParameterizedTest

24
Ejemplo con @ValueSource

25
Ejemplo con @CsvFileSource

26
Referencias
https://maven.apache.org/archetype/project-inf
o.html

https://junit.org/junit5/docs/current/user-guide/

27
Exceptions – Sistemas de Trazas

Programación Orientada a Objetos


San Salvador de Jujuy
UNJu – Facultad de Ingeniería
Ing. José Zapana
Conceptos
• En Java los errores en tiempo de ejecución se
denominan excepciones, y esto ocurre cuando se
produce un error en alguna de las instrucciones de
nuestro programa
• Por ejemplo cuando se hace una división por cero,
cuando un objeto es 'null' y no puede serlo,
cuando no se abre correctamente un fichero, etc.
• Cuando se produce una excepción se muestra en
la pantalla un mensaje de error y finaliza la
ejecución del programa

UNJu – Facultad de Ingeniería


2
Ing. José Zapana
Ventajas de las Excepciones
• En la programación tradicional, la gestión de
errores normalmente provoca que el código
sea más difícil de leer.
• Java separa los detalles de la gestión de
errores inesperados del trabajo principal del
programa.
• La lectura del código resultante es más clara y,
por lo tanto, no induce a bugs.

UNJu – Facultad de Ingeniería


3
Ing. José Zapana
Obtención y manejo de excepciones

UNJu – Facultad de Ingeniería – SOO –


16/9/2019 4
Ing. José Zapana
Jerarquía de excepciones
• Object
– Throwable
• Exception
» ClassNotFoundException
» NoSuchMethodException
• RuntimeExeption
» ClassCastException
» NullPointerException
– IndexOfBoundException
» StringIndexOutOfBoundException
» ArrayIndexOutOfBoundException
– IllgalArgumentException
» NumberFormatException
» IllegalThreadStateException

UNJu – Facultad de Ingeniería


5
Ing. José Zapana
Obtención de una única excepcion
Ejemplo con java swing

UNJu – Facultad de Ingeniería


6
Ing. José Zapana
Obtención de una única excepción

UNJu – Facultad de Ingeniería


7
Ing. José Zapana
Obtención de Varias Excepciones

UNJu – Facultad de Ingeniería


8
Ing. José Zapana
Limpieza con un bloque finally

UNJu – Facultad de Ingeniería


9
Ing. José Zapana
Devolución de Excepciones
• Devuelva las excepciones mediante la palabra
clave throw.
• Utilice throws en la declaración del método.
• Ventajas
– Se traslada el manejo de la excepción hacia el
cliente del método
– La excepción podrá ser mostrada en el formato
adecuado.

UNJu – Facultad de Ingeniería


10
Ing. José Zapana
Devolución de Excepciones
• Ejemplo

UNJu – Facultad de Ingeniería


11
Ing. José Zapana
Excepciones Personalizadas
• Es posible también crear propias excepciones
que permitan identificar y gestionar con
mayor claridad una exception

UNJu – Facultad de Ingeniería


12
José Zapana
Excepciones Personalizadas

UNJu – Facultad de Ingeniería – POO


13
José Zapana
Excepciones Personalizadas

UNJu – Facultad de Ingeniería – POO


14
José Zapana
LOG4J: Introducción
• A menudo usamos System.out.println(…) para
escribir en la consola el valor de una variable
• O bien para mostrar un mensaje “pasó por aquí”,
como seguimiento de la ejecución del programa.
• Inconvenientes:
– Si no se controlan pueden causar demora en los procesos
– Los mensajes enviados NO indican en donde se produjo el error
– En ambiente de producción deben ser controlados

UNJu – Facultad de Ingeniería


José Zapana 15
¿Qué es Log4j?
• Log4j es una biblioteca open source desarrollada
en Java por la Apache Software Foundation
• Permite a los desarrolladores de software elegir la
salida y el nivel de granularidad de los mensajes
• La configuración de salida y granularidad de los
mensajes es realizada en tiempo de ejecución
mediante el uso de archivos de configuración
externos.
• Log4J ha sido implementado en otros lenguajes
como: C, C++, C#, Perl, Python, Ruby y Eiffel.

UNJu – Facultad de Ingeniería


16
José Zapana
Pasos para la implementación
1. Agregar dependencia log4j
2. Crear archivo de configuración (por ej.
log4j.properties)
3. Implementar en las clases del proyecto

17
Log4J – Niveles de mensajes
• Cuadro comparativo

UNJu – Facultad de Ingeniería


18
Ing. José Zapana
LOG4J: Appenders
• Son las salidas de destino que se pueden configurar.
• Existen varios appenders disponibles y configurados, aunque
también podemos crear y configurar nuestros propios
appenders.
– Fichero de texto .log (FileAppender, RollingFileAppender)
– Servidor remoto donde almacenar registros (SocketAppender)
– Dirección de correo electrónico (SMTPAppender),
– Base de datos (JDBCAppender).

UNJu – Facultad de Ingeniería 19


José Zapana
log4.properties - Ejemplo
# Root logger option
log4j.rootLogger=DEBUG, stdout, file

# Redirect log messages to console


log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
log4j.logger.ar.edu.unju.fi.poo=error

# Redirect log messages to a log file, support file rolling.


log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=log4j-application.log
log4j.appender.file.MaxFileSize=5MB
log4j.appender.file.MaxBackupIndex=10
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

UNJu – Facultad de Ingeniería


20
Ing. José Zapana
Configuración
• Pom.xml

<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>

UNJu – Facultad de Ingeniería


21
Ing. José Zapana
Referencias
• log4j 1.2 official page
• log4j pattern layout
• Wikipedia : log4j
• Spring MVC + log4j example
• log4j.properties examples

22
Introducción a JPA

Programación Orientada a Objetos


San Salvador de Jujuy
UNJu – Facultad de Ingeniería
Ing. José Zapana
Java Persistence API
• Java Persistence API es la API de persistencia
desarrollada para la plataforma Java EE
• Es un framework del lenguaje de
programación Java que maneja datos
relacionales en aplicaciones usando la
Plataforma Java en sus ediciones Standard
(Java SE) y Enterprise (Java EE).

UNJu – FI – POO
2
Ing. José Zapana
Entidades
• Una entidad de persistencia (entity) es una clase de Java ligera,
cuyo estado es persistido de manera asociada a una tabla en una
base de datos relacional.
• Los meta datos del objeto/relacional pueden ser especificados
directamente en la clase, usando las anotaciones de Java
(annotations), o en un documento descriptivo XML, el cual es
distribuido junto con la aplicación.
• Características de una Entity
– Proporcionar un constructor por defecto (ya sea de forma implícita o
explícita)
– Ser una clase de primer nivel (no interna)
– No ser final
– Implementar la interface java.io.Serializabe si va a ser accedida
remotamente

UNJu – FI – POO
3
Ing. José Zapana
Entity - Anotaciones
• @Entity, @Id
• @IdClass (clave compuesta)
• @Transient
• @Entity(name=“”): nombre de la entidad / tabla
• @GeneratedValue (Strategy=?). Generación de claves
– GenerationType.AUTO
– GenerationType.IDENTITY (gestionado por la BD)
• @Basic
– Optional (boolean, si puede ser null)
– fetch (FetchType. LAZY / EAGER) tardía o temprana
• @Column
• @Enumerated (EnumType.STRING)
• @Temporal (TemporalType.DATE / TemporalType.TIMESTAMP) para campos fecha
• @Lob (String largo)
• @ElementCollection. Se utiliza para List<>

UNJu – FI – POO
4
Ing. José Zapana
¿Qué es Spring Boot?

UNJu – FI – POO
5
Ing. José Zapana
¿Cómo funciona Spring Boot?
• https://start.spring.io/
• Tiene una interfaz que permite crear el
proyecto con Spring Boot

6
Gestión de una Entity
• Se utiliza el patrón de diseño DAO
• Spring Boot brinda un genérico CrudRepository o
JPA Repository del cual se hereda la interface
DAO
• Con lo cual Spring Boot inyecta una
implementación de ese DAO
• Sólo es necesario agregar métodos específicos de
está entidad

UNJu – FI – POO
7
Ing. José Zapana
CrudRepository
Inyecta las siguientes operaciones
- +count(): long
- +delete(id: ID): void
- +delete(entity: T): void
- +delete(entities: Iterable): void
- +deleteAll(): void
- +findOne(id: ID): T
- +findAll(ids: iterable): Iterable
- +findAll(): Iterable
- +save(entity: T): T
- +save(entities: iterable): Itereable
UNJu – FI – POO
8
Ing. José Zapana
Conexión con la Base de datos
application.properties

UNJu – FI – POO
9
Ing. José Zapana
Ejemplos
- Spring Boot + JPA + Hibernate + Oracle
- Spring Data JPA @Query

UNJu – FI – POO
10
Ing. José Zapana
Sistemas de Control de Versiones

Programación Orientada a Objetos


San Salvador de Jujuy
UNJu – Facultad de Ingeniería
Ing. José Zapana
Sistema de control de versiones
• Se llama control de versiones a la gestión de
los diversos cambios que se realizan sobre los
elementos de un proyecto en desarrollo

20/10/2020 UNJu – Facultad de Ingeniería – MP – 2


¿Qué podemos hacer?
• Gestionar documentos a través del tiempo
• Mantener un historial de todos los cambios -
múltiples versiones de cada archivo
• Mostrar las diferencias entre las versiones de
un archivo
• Permisos: autenticar y controlar el acceso a los
archivos

20/10/2020 UNJu – Facultad de Ingeniería – MP – 3


Número de revisiones

0 1 2 3

El Número de revisión
se incrementa por cada
transacción que cambia
el repositorio.

20/10/2020 UNJu – Facultad de Ingeniería – MP – 4


El ciclo de trabajo
Enviar sus cambios
Crear copia local
svn commit
svn checkout Subversion 106
svn update Repository
100
Resolver conflictos
(Merge de los cambios)
Realizar cambios
svn diff
svn add svn resolved
svn move
svn delete 105

Ver los cambios en el repositorio Actualizar copia local

svn update
svn status -u

20/10/2020 UNJu – Facultad de Ingeniería – MP – 5


Herramientas
• Repositorios:
– Subversion
– GitLab
– RiouxSVN
– Otros…
• Herramientas:
– TortoiseGit
– Pluggin Eclipse
– otros

20/10/2020 UNJu – Facultad de Ingeniería – MP – 6


Gitlab - Características
• Control de versiones con Git
• Seguimiento de incidencias (Issues)
• Revisión de código
• Integración continua
• Wiki
• Otros…

UNJu – FI – POO
20/10/2020 7
Ing. José Zapana
Esquema básico

UNJu – FI – POO
20/10/2020 8
Ing. José Zapana
Metodología Scrum
Programación Orientada a Objetos
San Salvador de Jujuy
UNJu – Facultad de Ingeniería
Ing. José Zapana
¿Qué es Scrum?
• Metodología de desarrollo ágil utilizada en el
desarrollo de diferentes productos, entre
ellos, el desarrollo de software

20/10/2020 UNJu – Facultad de Ingeniería – POO 2


Principios
• Colaboración estrecha con el cliente
• Predisposición y respuesta al cambio
• Desarrollo incremental con entregas
frecuentes de funcionalidad
• Comunicación verbal directa
• Simplicidad, solo los artefactos necesarios
• Motivación, compromiso y responsabilidad del
equipo por la auto-gestión y auto-organización
20/10/2020 UNJu – Facultad de Ingeniería – POO 3
Roles
• Product owner
• Scrum Master
• Scrum Team

20/10/2020 UNJu – Facultad de Ingeniería – POO 4


Flujo de Scrum

20/10/2020 UNJu – Facultad de Ingeniería – POO 5


Artefactos de Scrum
• Product Backlog: listado con los requerimientos
del proyecto
– Mantenido y priorizado por el product owner
– Documento dinámico que incorpora constantemente
las necesidades del sistema
– Se mantiene durante todo el ciclo de vida
• Sprint Backlog: Lista de tareas de la iteración
(sprint)
– Una tarea debería tener una duración entre 4 y 16 hs
– Si hay tareas con mayor tiempo deben
descomponerse.

20/10/2020 UNJu – Facultad de Ingeniería – POO 6


Comunicación
• Sprint Planning meeting
– Planificación de todas las tareas a desarrollar en una
iteración (sprint)
– Asignación de tareas a cada integrante del equipo
• Daily Scrum meeting
– Reunión diaria, informal, interactiva y ágil (no más de
30 minutos). Moderada por el scrum master
– Cada integrante del equipo debe indicar
• Que hizo ayer
• Que hará hoy
• Que ayuda necesita

20/10/2020 UNJu – Facultad de Ingeniería – POO 7


Comunicación (cont.)
• Sprint Review (demostración)
– Participan todas las personas implicadas en el
proyecto.
– El equipo expone las nuevas funcionalidades
desarrolladas
– El product owner brinda sus impresiones,
sugerencias de cambio y mejora, y su relevancia

20/10/2020 UNJu – Facultad de Ingeniería – POO 8


Comunicación (cont.)
• Sprint Retrospective: Reunión entre el scrum
team y el scrum master. Se anlizan las
preguntas:
– ¿Qué cosas funcionaron bien en el sprint?
– ¿Qué cosas se podrían mejorar?
– ¿Qué cosas se deberían mantener?
El objetivo de la reunión es fundamentalmente
analizar los aspectos que permitan consolidar al
equipo para mejorar su rendimiento.
20/10/2020 UNJu – Facultad de Ingeniería – POO 9

También podría gustarte