Está en la página 1de 66

DISEÑO

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

public class Main {

public static void main(String[] args)


{
System.out.println("Hello World"); System es la clase final
} que pertenece a
} java.lang package. Out
Es él punto de entrada
es una instancia de
del Código, debe ser
tipo PrintStream.
público para que se
Println es un método
pueda acceder a él y
que pertenece a
estático para que se
PrintStream e imprime
cargue en memoria. Debe
un string y manda un
ser main porqué es lo
salto de linea
primero qué va a buscar
el compilador
Variables Java
● String – guarda texto ej:"Hello".
● int – guarda enteros como 123 o -123
● float – guarda decimales como 19.99 o
19.99
● char – guarda caracteres como 'a' or 'B’.
● boolean – guarda valores con 2 estados:
true o false
Ejercicio
int myNum = 5;

float myFloatNum = 5.99f;

char myLetter = ‘D’;

boolean myBool = true;

String myText = "Hello";

int x = 5, y = 6, z = 50;
Reglas para nombrar
variables
Las reglas generales para nombrar variables son:

● Los nombres pueden contener letras, dígitos, guiones bajos y


signos de dólar.
● Los nombres deben comenzar con una letra.
● Los nombres deben comenzar con una letra minúscula y no
pueden contener espacios en blanco
● Los nombres también pueden comenzar con $ y _
● Los nombres distinguen entre mayúsculas y minúsculas
("myVar" y "myvar" son variables diferentes)
● Las palabras reservadas (como las palabras clave de Java, como
int o boolean) no se pueden usar como nombres
Operadores Java
● Operadores aritméticos
● Operadores de asignación
● Operadores de comparación
● Operadores lógicos
● Operadores bit a bit
Operadores aritméticos

+: 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

&& AND x < 5 && x < 10

|| OR x < 5 || x < 4

! NOT !(x < 5 && x < 10)


Operadores bit a bit
// Java program to illustrate
// bitwise operators

public class operators {


public static void main(String[] args)
{
// Initial values
int a = 5;
int b = 7;

// 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);

// can also be combined with


// assignment operator to provide shorthand
// assignment
// a=a&b
a &= b;
System.out.println("a= " + a);
}
}
Condicionales Java
Java admite las condiciones lógicas
habituales de las matemáticas:

● Menos que: a < b


● Menor o igual que: a <= b
● Mayor que: a > b
● Mayor o igual que: a >= b
● Igual a a == b
● No igual a: a != b
Java
estructuras
condicionales ● Else If :
if (condition1) {
// block of code to be executed if condition1 is true
● If : } else if (condition2) {
if (condition) { // block of code to be executed if the condition1 is false
// block of code to be executed if the condition is true and condition2 is true
} } else {
// block of code to be executed if the condition1 is false
● Else: and condition2 is false
if (condition) { }
// block of code to be executed if the condition is true
} else { ● Operador ternario o if else version corta:
// block of code to be executed if the condition is false variable = (condition) ? expressionTrue : expressionFalse;
}
ejemplos
if (20 > 18) {
System.out.println("20 is greater than 18");
}
----------------------------------------
int time = 20;
if (time < 18) {
System.out.println("Good day.");
} else {
System.out.println("Good evening.");
}
-----------------------------------------
int time = 22;
if (time < 10) {
System.out.println("Good morning.");
} else if (time < 20) {
System.out.println("Good day.");
} else {
System.out.println("Good evening.");
}
-----------------------------------------
int time = 20;
String result = (time < 18) ? "Good day." : "Good evening.";
System.out.println(result);
Java estructura
switch
int day = 4;
switch (day) {
case 1:
System.out.println("Monday");
break;
Use la declaración switch para seleccionar uno de los case 2:
System.out.println("Tuesday");
muchos bloques de código que se ejecutarán: break;
case 3:
switch(expression) { System.out.println("Wednesday");
case x: break;
case 4:
// code block System.out.println("Thursday");
break; break;
case y: case 5:
// code block System.out.println("Friday");
break; break;
case 6:
default: System.out.println("Saturday");
// code block break;
} case 7:
System.out.println("Sunday");
break;
}
// Outputs "Thursday" (day 4)
Java while
int i = 0;
while (i < 5) {
System.out.println(i);
El ciclo while recorre un bloque de código siempre que una
condición específica sea verdadera:
i++;
}
while (condition) {
// code block to be executed
}
Java FOR
for (int i = 0; i < 5; i++) {
System.out.println(i);
Cuando sepa exactamente cuántas veces desea recorrer un }
bloque de código, use el bucle for en lugar de un bucle
while::

for (statement 1; statement 2; statement 3) {


// code block to be executed
}
Java serie de
fibonacci
En matemáticas, la sucesión o serie de
Fibonacci es la siguiente sucesión infinita de
números naturales:

1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,15
97…

La sucesión comienza con los números 0 y 1;2


a partir de estos, «cada término es la suma de
los dos anteriores»
Ejercicios para practicar el if

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

Las clases son modelos del mundo real que


capturan la estructura y comportamiento
compartidos por una colección de objetos de un
mismo tipo (Seidl et al., 2015)

(134) Qué es la programación Orientada a Objetos:


Curso de programación - YouTube
Clases y objetos

Una clase se define en JAVA como :

class NombreClase {
lista de atributos
lista de constructores
lista de métodos
}

Un objeto se considera la instancia de una clase.


Para crear un objeto se debe invocar a su
constructor, el cual coincide con el nombre de la
clase y se debe utilizar la palabra reservada new.

Clase objeto = new Clase();


Clases y objetos

Los constructores, además de permitir la instancia


de objetos, realizan la inicialización de los
atributos del objeto. Esto se logra pasando los
valores de los atributos como parámetros en la
invocación del constructor:

Clase nombreClase {
tipo atributo;
nombreClase(int parámetro, …) { // Constructor
this.atributo = parámetro; … } }
Clases y objetos

De otro lado, la palabra this se utiliza para referirse a los


atributos de la clase y en particular, para diferenciar
cuando los parámetros del constructor tienen el mismo
nombre que los atributos. El operador . (punto) permite
acceder a los distintos atributos y métodos de una clase. El
formato de la operación punto es:
objeto.atributo;
objeto.metódo();
Ejercicios

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.

La clase debe incluir los siguientes métodos:


● Definir un método que imprima en pantalla los valores de los atributos del objeto.
● En un método main se deben crear dos personas y mostrar los valores de sus atributos en pantalla

----------------------------------------------------------------------------------------------------------------------------------------------------
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:

● Paquetes integrados (paquetes de la API de Java)


● Paquetes definidos por el usuario (cree sus propios paquetes)

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:

import package.name.Class; // Import a single class example: import java.util.Scanner;


import package.name.*; // Import the whole package example: import java.util.*;
Modificadores de acceso

public El código es accessible para todas las clases


private El Código solo es accessible dentro de la clase
default El Código es accessible en el mismo package.
Se utiliza cuando no se especifica ningún
modificador.
protected El Código es accessible dentro del
mismo paquete y las subclases.
Otros Modificadores
public class Main {
final int x = 10;
final double PI = 3.14;

Para clases : public static void main(String[] args) {


Main myObj = new Main();
• final: La clase no puede ser heredada por otras clases. myObj.x = 50; // will generate an error: cannot assign a value to a final variable
myObj.PI = 25; // will generate an error: cannot assign a value to a final variable

• abstract: The class cannot be used to create objects }


System.out.println(myObj.x);

}
--------------------------------------
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");

• synchronized: Solo se puede acceder a los métodos mediante un }


subproceso a la vez
• volatile: El valor de un atributo no se almacena en caché localmente
y siempre se lee desde la "memoria principal"
Encapsulación
public class Person {
private String name; // private = restricted access
El significado de Encapsulación es asegurarse de que
// Getter
los datos "sensibles" estén ocultos para los usuarios. public String getName() {
Para lograr esto, debes: return name;
}
declarar variables/atributos de clase como privados
proporcionar métodos públicos get y set para acceder y // Setter
actualizar el valor de una variable privada. public void setName(String newName) {
this.name = newName;
}
● Mejor control de los atributos y métodos de clase. }
● Los atributos de clase pueden ser de solo lectura (si
solo usa el método get) o de solo escritura (si solo
usa el método set)
● Flexible: el programador puede cambiar una parte del
código sin afectar otras partes
● Mayor seguridad de los datos
Ejercicios

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.

Crea sus métodos get, set y toString.

Tendrá dos métodos especiales:

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

2. Crear una clase Libro que contenga los siguientes atributos:

– 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:

«El libro con ISBN creado por el autor tiene páginas»

En el fichero main, crear 2 objetos Libro (los valores que se quieran) y mostrarlos por pantalla.

Por último, indicar cuál de los 2 tiene más páginas.


Ejercicios

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

En Java, es posible heredar atributos y métodos de una


clase a otra. Agrupamos el "concepto de herencia" en dos
categorías:

● subclase (hijo) - la clase que hereda de otra clase class Vehicle {


protected String brand = "Ford"; // Vehicle attribute
public void honk() { // Vehicle method
● superclase (padre) - la clase de la cual se hereda }
System.out.println("Tuut, tuut!");

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) {

// Create a myCar object


Car myCar = new Car();

// 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). }

Método abstracto: solo se puede usar en una clase class Main {


public static void main(String[] args) {
abstracta y no tiene cuerpo. El cuerpo lo proporciona la Pig myPig = new Pig(); // Create a Pig object
subclase. myPig.animalSound();
myPig.sleep();
}
}
Interfaces en Java
// Interface
interface Animal {
public void animalSound(); // interface method (does not have a body)
public void sleep(); // interface method (does not have a body)
}
Otra forma de lograr la abstracción en Java es con
interfaces. // Pig "implements" the Animal interface
class Pig implements Animal {
public void animalSound() {
Una interfaz es una "clase abstracta" completamente // The body of animalSound() is provided here
que se utiliza para agrupar métodos relacionados con System.out.println("The pig says: wee wee");
cuerpos vacíos }
public void sleep() {
// The body of sleep() is provided here
Las interfaces son importantes para: System.out.println("Zzz");
}
1) Para lograr la seguridad, oculte ciertos detalles y }
solo muestre los detalles importantes de un objeto
class Main {
(interfaz).
public static void main(String[] args) {
Pig myPig = new Pig(); // Create a Pig object
2) Java no admite "herencia múltiple" (una clase solo myPig.animalSound();
puede heredar de una superclase). Sin embargo, se myPig.sleep();
puede lograr con interfaces, porque la clase puede }
}
implementar múltiples interfaces.
ejemplo
interface FirstInterface {
public void myMethod(); // interface method
}

interface SecondInterface {
public void myOtherMethod(); // interface method
}

class DemoClass implements FirstInterface, SecondInterface {


public void myMethod() {
System.out.println("Some text..");
}
public void myOtherMethod() {
System.out.println("Some other text...");
}
}

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

Una estructura de datos es un espacio de memoria que


se utiliza para almacenar y organizar datos. Es una
forma de organizar los datos en una computadora para
que se pueda acceder a ellos y actualizarlos de manera
eficiente.

Una estructura de datos no solo se utiliza para


organizar los datos. También se utiliza para procesar,
recuperar y almacenar datos. Existen diferentes tipos
básicos y avanzados de estructuras de datos que se
utilizan en casi todos los programas o sistemas de
software que se han desarrollado. Entonces debemos
tener un buen conocimiento sobre las estructuras de
datos.
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.

● La modificación de la estructura de datos es fácil.


● Requiere menos tiempo.
● Ahorre espacio en la memoria de almacenamiento.
● La representación de datos es fácil.
● Fácil acceso a la gran base de datos.
Arreglos ó matrices

Un arreglo es una estructura de datos lineal y es una


colección de elementos almacenados en ubicaciones de
memoria contiguas. La idea es almacenar varios
artículos del mismo tipo juntos en un solo lugar.
Permite el procesamiento de una gran cantidad de
datos en un período relativamente corto. El primer
elemento de la matriz está indexado por un subíndice
de 0. Hay diferentes operaciones posibles en un arreglo,
como Buscar, Ordenar, Insertar, Recorrer, Invertir y
Eliminar
Arreglos ó matrices
Características de una matriz:

● 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.

● El proceso de búsqueda en un arreglo se puede hacer muy fácilmente

Aplicaciones de matriz:

● Los registros de la base de datos también se implementan mediante una matriz.

● Ayuda a implementar un algoritmo de clasificación.

● También se utiliza para implementar otras estructuras de datos como pilas, colas, montones, tablas hash, etc.

● Se puede utilizar una matriz para la programación de la CPU.

● Se puede aplicar como una tabla de búsqueda en las computadoras.

● 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

Una lista enlazada es una estructura de datos lineal en


la que los elementos no se almacenan en ubicaciones
de memoria contiguas. Los elementos de una lista
vinculada se vinculan mediante punteros como se
muestra en la siguiente imagen:

Tipos de lista enlazada:

● Lista de enlaces simples


● Lista doblemente enlazada
● Lista enlazada circular
● Lista enlazada doblemente circular
Lista enlazada
Características de una lista enlazada:

● Una lista enlazada utiliza memoria adicional para almacenar enlaces.

● Durante la inicialización de la lista enlazada, no es necesario conocer el tamaño de los elementos.

● Las listas enlazadas se utilizan para implementar pilas, colas, gráficos, etc.

● El primer nodo de la lista enlazada se llama Head.

● El siguiente puntero del último nodo siempre apunta a NULL.

● En la lista enlazada, la inserción y eliminación es posible fácilmente.

● Cada nodo de la lista enlazada consta de un puntero/enlace que es la dirección del siguiente nodo.

● La lista vinculada puede reducirse o crecer fácilmente en cualquier momento.

Aplicaciones de la lista Enlazada:

● Las listas enlazadas se utilizan para realizar operaciones aritméticas con números enteros largos.

● Se utiliza en la asignación vinculada de archivos.

● Ayuda en la gestión de la memoria.

● Las listas enlazadas se utilizan para mostrar contenedores de imágenes. Los usuarios pueden visitar imágenes pasadas, actuales y siguientes.

● Se utilizan para almacenar el historial de la página visitada.


Pila

Stack es una estructura de datos lineal que sigue un orden


particular en el que se realizan las operaciones. El orden es
LIFO (Last in first out). Es posible ingresar y recuperar
datos desde un solo extremo. La entrada y recuperación de
datos también se denomina operación de inserción y
extracción en una pila. Hay diferentes operaciones posibles
en una pila, como invertir una pila usando recursividad,
ordenar, eliminar el elemento medio de una pila, etc.
Pila
Características de una pila:

● Stack se usa en muchos algoritmos diferentes como Tower of Hanoi, tree traversal, recursividad, etc.

● La pila se implementa a través de una matriz o una lista enlazada.

● Sigue la operación Último en entrar, primero en salir, es decir, el elemento que se inserta primero aparecerá en último lugar y viceversa.

● La inserción y eliminación ocurre en un extremo, es decir, desde la parte superior de la pila.

● 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:

● La estructura de datos de pila se utiliza en la evaluación y conversión de expresiones aritméticas.

● La pila se usa en recursividad.

● Se utiliza para comprobar paréntesis.

● Al invertir una cadena

● Stack se utiliza en la gestión de la memoria.

● También se utiliza para el procesamiento de llamadas a funciones.

● La pila se usa para convertir expresiones de infijo a sufijo.

● La pila se utiliza para realizar operaciones de deshacer y rehacer en procesadores de texto.

● La pila se usa en máquinas virtuales como JVM.


Cola

La cola es una estructura de datos lineal que sigue un


orden particular en el que se realizan las operaciones.
El orden es Primero en entrar, primero en salir (FIFO), es
decir, se accederá primero al elemento de datos
almacenado primero. En esto, ingresar y recuperar datos
no se realiza desde un solo extremo. Un ejemplo de una
cola es cualquier cola de consumidores de un recurso
donde se atiende primero al consumidor que llegó
primero. Se realizan diferentes operaciones en la cola,
como invertir una cola (con o sin usar la recursividad),
invertir los primeros elementos K de una cola, etc.
Algunas operaciones básicas realizadas en la cola son
poner en cola, quitar cola, adelante, atrás, etc.
Cola
Características de una cola:

● La cola es una estructura FIFO (primero en entrar, primero en salir).

● Para eliminar el último elemento de Queue, todos los elementos insertados antes del nuevo elemento en la cola deben eliminarse.

● Una cola es una lista ordenada de elementos de tipos de datos similares.

Aplicaciones de cola:

● La cola se utiliza para manejar el tráfico del sitio web.

● Ayuda a mantener la lista de reproducción en los reproductores multimedia.

● La cola se usa en los sistemas operativos para manejar interrupciones.

● Ayuda a atender solicitudes en un solo recurso compartido, como una impresora, programación de tareas de CPU, etc.

● Se utiliza en la transferencia asíncrona de datos para, p. tuberías, archivo IO, enchufes.

● Las colas se utilizan para la programación de trabajos en el sistema operativo.

● En las redes sociales se utiliza la cola para subir múltiples fotos o videos.

● Para enviar una estructura de datos de cola de correo electrónico se utiliza.

● Para manejar el tráfico del sitio web en un momento se utilizan colas.

● En el sistema operativo de Windows, para cambiar de aplicación múltiple.


Árbol

Un árbol es una estructura de datos no lineal y jerárquica donde


los elementos se organizan en una estructura similar a un árbol.
En un árbol, el nodo superior se llama nodo raíz. Cada nodo
contiene algunos datos, y los datos pueden ser de cualquier
tipo. Consiste en un nodo central, nodos estructurales y
subnodos que están conectados a través de los bordes. Las
diferentes estructuras de datos de árbol permiten un acceso más
rápido y fácil a los datos, ya que es una estructura de datos no
lineal. Un árbol tiene varias terminologías como Nodo, Raíz,
Borde, Altura de un árbol, Grado de un árbol, etc.

Hay diferentes tipos de árboles como

● Árbol binario,
● árbol de búsqueda binaria,
● árbol AVL,
● Árbol B, etc.
Árbol
Características de un árbol:

● Un árbol también se conoce como estructura de datos recursiva.


● En un árbol, la altura de la raíz se puede definir como el camino más largo desde el nodo raíz hasta el nodo hoja.
● En un árbol, también se puede calcular la profundidad desde la parte superior hasta cualquier nodo. El nodo raíz tiene una profundidad de 0.

Aplicaciones del á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 la vida real del árbol:

● En la vida real, la estructura de datos de árbol ayuda en el desarrollo de juegos.


● También ayuda en la indexación en bases de datos.
Grafo

Un grafo es una estructura de datos no lineal que


consta de vértices (o nodos) y aristas. Consiste en un
conjunto finito de vértices y un conjunto de aristas que
conectan un par de nodos. Un grafo se utiliza para
resolver los problemas de programación más
desafiantes y complejos. Tiene diferentes terminologías
que son Camino, Grado, Vértices adyacentes,
Componentes conectados, etc.
Grafo

Aplicaciones de Gráfico:

● El grafo se utiliza para representar el flujo de cálculo.


● Se utiliza en el modelado de gráficos.
● El sistema operativo utiliza el grafo para la asignación de recursos.
● También se utiliza en la World Wide Web, donde las páginas web representan los nodos.
● Aplicaciones de Graph en la vida real:
● Uno de los ejemplos más comunes del mundo real de un gráfico es Google Maps, donde las ciudades se ubican como vértices y las rutas
que conectan esos vértices se ubican como bordes del gráfico.
● Una red social también es un ejemplo del mundo real de un gráfico en el que cada persona en la red es un nodo y todas sus amistades
en la red son los bordes del gráfico.
● Un gráfico también se usa para estudiar moléculas en física y química.
MVC
TOMCAT
SERVLET
import javax.servlet.*;
import javax.servlet.http.*;

public class ClaseServlet extends HttpServlet


{
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException
{
// ... codigo para una peticion GET
}

public void doPost(HttpServletRequest request,


HttpServletResponse response)
throws ServletException, IOException

{
// ... 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.

3. Representa mediante un diagrama de clases la siguiente especificación:

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.

También podría gustarte