Documentos de Académico
Documentos de Profesional
Documentos de Cultura
INTERACTIVO 2
CONTENIDO
1. Repaso de Java
Java
Java es un lenguaje multiplataforma,
orientado a objetos y centrado en la
red que se puede utilizar como una
plataforma en sí mismo. Es un lenguaje
de programación rápido, seguro y
fiable para codificar todo, desde
aplicaciones móviles y software
empresarial hasta aplicaciones de
macrodatos y tecnologías del lado del
servidor
Ejercicio
Se declara una
clase de tipo
Pública
int x = 5, y = 6, z = 50;
Reglas para nombrar
variables
Las reglas generales para nombrar variables son:
+: suma
-:resta
*:multiplicación
/:división
%:modulo
++:incremento por 1
--:decrement por 1
Operadores de asignación
= x = 5
+= x += 3
-= x -= 3
*= x *= 3
/= x /= 3
%= x %= 3
&= x &= 3
|= x |= 3
^= x ^= 3
>>= x >>= 3
<<= x <<= 3
Operadores de asignación
= x = 5
+= x += 3
-= x -= 3
*= x *= 3
/= x /= 3
%= x %= 3
&= x &= 3
|= x |= 3
^= x ^= 3
>>= x >>= 3
<<= x <<= 3
Operadores de comparación
== igual a
!= no es igual a
> mayor que
< menor que
>= mayor o igual que
<= menor o igual que
Operadores Lógicos
|| OR x < 5 || x < 4
// bitwise and
// 0101 & 0111=0101 = 5
System.out.println("a&b = " + (a & b));
// bitwise or
// 0101 | 0111=0111 = 7
System.out.println("a|b = " + (a | b));
// bitwise xor
// 0101 ^ 0111=0010 = 2
System.out.println("a^b = " + (a ^ b));
// bitwise not
// ~00000000 00000000 00000000 00000101=11111111 11111111 11111111
11111010
// will give 1's complement (32 bit) of 5 = -6
System.out.println("~a = " + ~a);
1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,15
97…
Se desea desarrollar un programa que calcule el índice de masa corporal de una persona. Para ello, se requiere definir el peso de la
persona (en kilogramos) y su estatura (en metros). El índice de masa corporal (IMC) se calcula utilizando la siguiente fórmula:
Luego, a partir del IMC obtenido se pueden calcular si una persona tiene un peso normal, inferior o superior al normal u obesidad.
Para generar estos resultados el IMC calculado debe estar en los rangos de la tabla 1.1
Ejercicios para practicar el while y el for
● Escriba un programa que lea un conjunto de números y al final imprima la suma de los números pares
y la de los impares
● Escriba un programa que imprima el siguiente triangulo, este varia de acuerdo al valor n que
relaciona el número de escalones del triangulo
Clases y objetos
class NombreClase {
lista de atributos
lista de constructores
lista de métodos
}
Clase nombreClase {
tipo atributo;
nombreClase(int parámetro, …) { // Constructor
this.atributo = parámetro; … } }
Clases y objetos
Se requiere un programa que modele el concepto de una persona. Una persona posee nombre, apellido, número de documento de
identidad y año de nacimiento. La clase debe tener un constructor que inicialice los valores de sus respectivos atributos.
----------------------------------------------------------------------------------------------------------------------------------------------------
Agregar dos nuevos atributos a la clase Persona. Un atributo que represente el país de nacimiento de la persona (de tipo String) y
otro que identifique el género de la persona, el cual debe representarse como un char con valores 'H' o 'M’.
Modificar el constructor de la clase Persona para que inicialice estos dos nuevos atributos.
Modificar el método imprimir de la clase Persona para que muestre en pantalla los valores de los nuevos atributos.
Java packages
Un paquete en Java se usa para agrupar clases relacionadas. Piense en ello como una carpeta en un directorio de archivos. Usamos paquetes
para evitar conflictos de nombres y para escribir un código mejor mantenible. Los paquetes se dividen en dos categorías:
La biblioteca se divide en paquetes y clases. Lo que significa que puede importar una sola clase (junto con sus métodos y atributos) o un
paquete completo que contenga todas las clases que pertenecen al paquete especificado.
Para usar una clase o un paquete de la biblioteca, debe usar la palabra clave de importación:
}
--------------------------------------
Para atributos y métodos:
abstract class Main {
• final: Los atributos y métodos no se pueden anular/modificar public String fname = "John";
public int age = 24;
• static: Los atributos y métodos pertenecen a la clase, en lugar de un }
public abstract void study(); // abstract method
objeto
// Subclass (inherit from Main)
• abstract: Solo se puede usar en una clase abstracta y solo se puede class Student extends Main {
public int graduationYear = 2018;
usar en métodos. El método no tiene cuerpo, por ejemplo, abstract public void study() { // the body of the abstract method is provided here
void run();. El cuerpo lo proporciona la subclase }
System.out.println("Studying all day long");
1. Crea una clase llamada Cuenta que tendrá los siguientes atributos: titular y cantidad (puede tener decimales).
El titular será obligatorio y la cantidad es opcional. Crea dos constructores que cumpla lo anterior.
ingresar(double cantidad): se ingresa una cantidad a la cuenta, si la cantidad introducida es negativa, no se hará nada.
retirar(double cantidad): se retira una cantidad a la cuenta, si restando la cantidad actual a la que nos pasan es negativa, la cantidad
de la cuenta pasa a ser 0.
Ejercicios
– ISBN
– Titulo
– Autor
– Número de páginas
Crear sus respectivos métodos get y set correspondientes para cada atributo. Crear el método toString() para mostrar la información relativa al libro con el
siguiente formato:
En el fichero main, crear 2 objetos Libro (los valores que se quieran) y mostrarlos por pantalla.
3. Implementa la clase Rectangulo (ancho y la altura) (1 constructor, getters, setters y toString()). La clase rectángulo tendrá además
dos métodos para calcular su área y su perímetro. Implementa también una clase rectangulo y que muestre el área y el perímetro de
dicho Rectángulo. Area= base*altura, perímetro=2*base+2*altura
Java Herencia
Para heredar de una clase, use la palabra clave extends. class Car extends Vehicle {
private String modelName = "Mustang"; // Car attribute
public static void main(String[] args) {
// Call the honk() method (from the Vehicle class) on the myCar object
myCar.honk();
// Display the value of the brand attribute (from the Vehicle class) and the value of the modelName
from the Car class
System.out.println(myCar.brand + " " + myCar.modelName);
}
}
Polimorfismo en Java
class Animal {
public void animalSound() {
System.out.println("The animal makes a sound");
El polimorfismo usa métodos para realizar diferentes
}
tareas. Esto nos permite realizar una misma acción de }
diferentes formas.
class Pig extends Animal {
Por ejemplo, piense en una superclase llamada Animal public void animalSound() {
que tiene un método llamado animalSound(). Las System.out.println("The pig says: wee wee");
subclases de animales pueden ser cerdos, gatos, perros, }
pájaros, y también tienen su propia implementación de }
un sonido animal (el cerdo gruñe y el gato maúlla,
etc.): class Dog extends Animal {
public void animalSound() {
System.out.println("The dog says: bow wow");
}
}
Abstracción en Java
// Abstract class
abstract class Animal {
// Abstract method (does not have a body)
public abstract void animalSound();
// Regular method
public void sleep() {
La abstracción de datos es el proceso de ocultar ciertos System.out.println("Zzz");
detalles y mostrar solo la información esencial al }
}
usuario.
La abstracción se puede lograr con clases abstractas o // Subclass (inherit from Animal)
interfaces. class Pig extends Animal {
public void animalSound() {
// The body of animalSound() is provided here
Clase abstracta: es una clase restringida que no se
System.out.println("The pig says: wee wee");
puede usar para crear objetos (para acceder a ella, se }
debe heredar de otra clase). }
interface SecondInterface {
public void myOtherMethod(); // interface method
}
class Main {
public static void main(String[] args) {
DemoClass myObj = new DemoClass();
myObj.myMethod();
myObj.myOtherMethod();
}
}
Ejercicios herencia
1. Crea una clase Persona (con nombre y apellidos como atributos) y dos clases que hereden de
Persona: Profesor (con atributo adicional String despacho) y Alumno (con atributo adicional String
cuatrimestre). (Por simplicidad, para nuestro ejercicio asumimos que un alumno sólo está
matriculado de asignaturas de un mismo cuatrimestre.)
Las tres clases sobrescribirán el método toString() de tal forma que las clases hijas invoquen el
método de la clase madre. El toString() de Persona mostrará “apellido, nombre”, el de Alumno lo
mismo seguido del cuatrimestre (por ejemplo “ (Semester: Q1B)” y el de Profesor seguido de su
despacho (por ejemplo “ (Office: D6-212)”.
Las tres clases tendrán como mínimo el constructor y el toString(), pero podéis añadir todos los
métodos que queráis.
Finalmente, implementad un clase tester que cree e imprima objetos de las tres clases, para que se
vea que en cada caso se invoca el toString que corresponde.
Ejercicios polimorfismo
1. Vamos a crear una clase abstracta Figura con un atributo final de tipo String llamado “tipo” (que
podrá ser “Triangulo”, “Circulo”, “Rectangulo”, etcétera. A parte del constructor y del toString()
tendrá dos métodos abstractos: double calculateArea() y double calculatePerimeter() que devolverán
el área y el perímetro de la figura. Crearemos también la clase punto bidimensional.
Crearemos tres clases hijas de Figura: Triangulo (construido a través de 3 puntos), Circulo
(construido a través de 1 punto y 1 radio) y Rectangulo (construido a través de 2 puntos).
Crearemos una clase tester que compruebe que funcionan correctamente
Estructuras de datos
● Estructura de datos lineal: la estructura de datos en la que los elementos de datos se organizan de forma secuencial o lineal,
donde cada elemento se adjunta a sus elementos adyacentes anterior y siguiente, se denomina estructura de datos lineal.
Ejemplos de estructuras de datos lineales son matriz, pila, cola, lista enlazada, etc.
○ Estructura de datos estática: la estructura de datos estática tiene un tamaño de memoria fijo. Es más fácil acceder a
los elementos en una estructura de datos estática. Un ejemplo de esta estructura de datos es una matriz.
○ Estructura de datos dinámica: en la estructura de datos dinámica, el tamaño no es fijo. Puede actualizarse
aleatoriamente durante el tiempo de ejecución, lo que puede considerarse eficiente en relación con la complejidad de
la memoria (espacio) del código. Ejemplos de esta estructura de datos son cola, pila, etc.
● Estructura de datos no lineales: las estructuras de datos donde los elementos de datos no se colocan secuencial o
linealmente se denominan estructuras de datos no lineales. En una estructura de datos no lineal, no podemos recorrer todos
los elementos en una sola ejecución. Ejemplos de estructuras de datos no lineales son árboles y gráficos.
Necesidad de estructura
de datos
La estructura de los datos y la síntesis del algoritmo
son relativas entre sí. La presentación de los datos debe
ser fácil de entender para que tanto el desarrollador
como el usuario puedan realizar una implementación
eficiente de la operación.
Las estructuras de datos proporcionan una manera fácil
de organizar, recuperar, administrar y almacenar datos.
Aquí hay una lista de las necesidades de datos.
● Las matrices utilizan una estructura de datos basada en índices que ayuda a identificar fácilmente cada uno de los elementos de una matriz utilizando el índice.
● Si un usuario desea almacenar varios valores del mismo tipo de datos, la matriz se puede utilizar de manera eficiente.
● Una matriz también puede manejar estructuras de datos complejas almacenando datos en una matriz bidimensional.
● Una matriz también se usa para implementar otras estructuras de datos como pilas, colas, montones, tablas hash, etc.
Aplicaciones de matriz:
● También se utiliza para implementar otras estructuras de datos como pilas, colas, montones, tablas hash, etc.
● Los arreglos se pueden usar en el procesamiento de voz donde cada señal de voz es un arreglo.
● La pantalla de la computadora también se muestra mediante una matriz. Aquí usamos una matriz multidimensional.
Lista enlazada
● Las listas enlazadas se utilizan para implementar pilas, colas, gráficos, etc.
● Cada nodo de la lista enlazada consta de un puntero/enlace que es la dirección del siguiente nodo.
● Las listas enlazadas se utilizan para realizar operaciones aritméticas con números enteros largos.
● Las listas enlazadas se utilizan para mostrar contenedores de imágenes. Los usuarios pueden visitar imágenes pasadas, actuales y siguientes.
● Stack se usa en muchos algoritmos diferentes como Tower of Hanoi, tree traversal, recursividad, etc.
● Sigue la operación Último en entrar, primero en salir, es decir, el elemento que se inserta primero aparecerá en último lugar y viceversa.
● En la pila, si el espacio asignado para la pila está lleno y todavía alguien intenta agregar más elementos, se producirá un desbordamiento de la pila.
Aplicaciones de la pila:
● Para eliminar el último elemento de Queue, todos los elementos insertados antes del nuevo elemento en la cola deben eliminarse.
Aplicaciones de cola:
● Ayuda a atender solicitudes en un solo recurso compartido, como una impresora, programación de tareas de CPU, etc.
● En las redes sociales se utiliza la cola para subir múltiples fotos o videos.
● Árbol binario,
● árbol de búsqueda binaria,
● árbol AVL,
● Árbol B, etc.
Árbol
Características de un árbol:
● Heap es una estructura de datos de árbol que se implementa mediante matrices y se utiliza para implementar colas de prioridad.
● B-Tree y B+ Tree se utilizan para implementar la indexación en bases de datos.
● El árbol de sintaxis ayuda a escanear, analizar, generar código y evaluar expresiones aritméticas en el diseño del compilador.
● K-D Tree es un árbol de partición espacial que se utiliza para organizar puntos en el espacio K-dimensional.
● Los árboles de expansión se utilizan en enrutadores en redes informáticas.
Aplicaciones de Gráfico:
{
// ... codigo para una peticion POST
}
}
JSP
<html>
<head><title>First JSP</title></head>
<body>
<%
double num = Math.random();
if (num > 0.95) {
%>
<h2>You'll have a luck day!</h2><p>(<%= num %>)</p>
<%
} else {
%>
<h2>Well, life goes on ... </h2><p>(<%= num %>)</p>
<%
}
%>
<a href="<%= request.getRequestURI() %>"><h3>Try Again</h3></a>
</body>
</html>
BEANS
//Employee.java package mypack;
public class Test{
package mypack; public static void main(String args[]){
public class Employee implements Employee e=new Employee();//object is created
java.io.Serializable{ e.setName("Arjun");//setting value to the object
private int id; System.out.println(e.getName());
private String name; }}
public Employee(){}
public void setId(int id){this.id=id;}
public int getId(){return id;}
public void setName(String
name){this.name=name;}
public String getName(){return name;}
}
SPRING
Ejercicios de práctica
1.Realiza un diagrama de clases
Una biblioteca tiene copias de libros. Estos últimos se caracterizan por su nombre, tipo (novela, teatro, poesía, ensayo), editorial, año y autor.
Los autores se caracterizan por su nombre, nacionalidad y fecha de nacimiento.
Cada copia tiene un identificador, y puede estar en la biblioteca, prestada, con retraso en reparación, disponible.
Los lectores pueden tener un máximo de 3 libros en préstamo.
Cada libro se presta un máximo de 30 días, por cada día de retraso, se impone una “multa” de 3000 pesos día de retraso.
2. Se ha de realizar el diagrama de casos de uso de un cajero automático en el que se pueden realizar las operaciones siguientes:
Retirar efectivo.
Ingresar o depositar efectivo.
Hacer transferencias.
Obtener información de nuestra cuenta: movimientos, saldo, etc.
Para realizar cualquiera de las operaciones el cajero automático ha de validar la tarjeta y la clave que introduce el usuario.
Una aplicación necesita almacenar información sobre empresas, sus empleados y sus clientes. Ambos se caracterizan por su nombre y edad.
Los empleados tienen un sueldo bruto, los empleados que son directivos tienen una categoría, así como un conjunto de empleados subordinados.
De los clientes además se necesita conocer su teléfono de contacto.
La aplicación necesita mostrar los datos de empleados y clientes
Ejercicios de práctica
Desarrollar un programa que modele una cuenta bancaria que tiene los siguientes atributos, que deben ser de acceso protegido:
Saldo, de tipo float. Número de consignaciones con valor inicial cero, de tipo int. Número de retiros con valor inicial cero, de tipo int. Tasa anual (porcentaje), de
tipo float. Comisión mensual con valor inicial cero, de tipo float.
La clase Cuenta tiene un constructor que inicializa los atributos saldo y tasa anual con valores pasados como parámetros. La clase Cuenta tiene los siguientes
métodos:
Consignar una cantidad de dinero en la cuenta actualizando su saldo. Retirar una cantidad de dinero en la cuenta actualizando su saldo. El valor a retirar no debe
superar el saldo. Calcular el interés mensual de la cuenta y actualiza el saldo correspondiente. Extracto mensual: actualiza el saldo restándole la comisión
mensual y calculando el interés mensual correspondiente (invoca el método anterior). Imprimir: muestra en pantalla los valores de los atributos. La clase Cuenta
tiene dos clases hijas:
Cuenta de ahorros: posee un atributo para determinar si la cuenta de ahorros está activa (tipo boolean). Si el saldo es menor a $10000, la cuenta está inactiva, en
caso contrario se considera activa. Los siguientes métodos se redefinen:
Consignar: se puede consignar dinero si la cuenta está activa. Debe invocar al método heredado. Retirar: es posible retirar dinero si la cuenta está activa. Debe
invocar al método heredado. Extracto mensual: si el número de retiros es mayor que 4, por cada retiro adicional, se cobra $1000 como comisión mensual. Al
generar el extracto, se determina si la cuenta está activa o no con el saldo. Un nuevo método imprimir que muestra en pantalla el saldo de la cuenta, la comisión
mensual y el número de transacciones realizadas (suma de cantidad de consignaciones y retiros).
Cuenta corriente: posee un atributo de sobregiro, el cual se inicializa en cero. Se redefinen los siguientes métodos:
Retirar: se retira dinero de la cuenta actualizando su saldo. Se puede retirar dinero superior al saldo. El dinero que se debe queda como sobregiro. Consignar:
invoca al método heredado. Si hay sobregiro, la cantidad consignada reduce el sobregiro. Extracto mensual: invoca al método heredado. Un nuevo método imprimir
que muestra en pantalla el saldo
de la cuenta, la comisión mensual, el número de transacciones realizadas (suma de cantidad de consignaciones y retiros) y el valor de sobregiro.
Realizar un método main que implemente un objeto Cuenta de ahorros y llame a los métodos correspondientes.