SlideShare una empresa de Scribd logo
1 de 6
Desarrollar un programa que simule el interfaz software de entrada a una tarjeta de red siguiendo las
siguientes especificaciones.

La entrada está implementada mediante dos tipos de buffers. Un primer buffer donde van entrando todas las
tramas según van llegando, que tiene un espacio máximo de 4 tramas. Y un segundo buffer de espacio
ilimitado que tiene tres puertos (entendiendo por puertos, zonas de almacenamiento distintas). La entrada
debe implementar un mecanismo para mostrar el contenido de sus buffers.

Cuando el primer buffer se llene, enviará al segundo buffer de forma automática las primeras 2 tramas con
mayor prioridad. Y así sucesivamente.

Existen distintos tipos de tramas, aunque de momento solo tendremos en cuenta las tramas TCP y UDP (en
el futuro puede que tengamos que soportar más). Ahora bien, todas las tramas sean del tipo que sean,
contienen el puerto al que van dirigidas (1, 2 o 3), su prioridad (de 1 a 10, siendo 1 la mayor prioridad) y el
contenido de la trama.

Nota: ante dos tramas con el mismo valor de prioridad, tendrá más prioridad aquella cuyo contenido esté por
delante siguiendo el orden del abecedario.

Por último, crearemos una clase Actividad7 donde instanciaremos el sistema de entrada a la tarjeta de red y
le enviaremos 6 tramas de distintos tipos y con puertos y prioridades aleatorias. Una vez se hayan enviado
5 tramas, se mostrará el contenido de los buffers del sistema de entrada.

Realizar previamente el Diagrama de Clases UML.


OrdenarTramaPorPrioridad.java

import java.util.Comparator;

public class OrdenarTramaPorPrioridad implements Comparator<Object>{
        //Ordena las tramas primero por prioridad y después por contenido.
        public int compare (Object obj1, Object obj2){
                Trama trama1 = (Trama)obj1;
                Trama trama2 = (Trama)obj2;

                 if(trama1.getPrioridad() == trama2.getPrioridad()){
                        return trama1.getContenido().compareToIgnoreCase(trama2.getContenido());
                 }else{
                        return trama1.getPrioridad() - trama2.getPrioridad();
                 }
        }
}//Fin Clase




                                                      bitCoach::Juan Bautista Cascallar Lorenzo::Página 1
Trama.java
public class Trama {
       //ATRIBUTOS
       private int puerto; // 1, 2 o 3
       private int prioridad; //De 1 (máx) a 10 (mín)
       String contenido = "VACIO";


       //Constructor
       public Trama (int p, int pri, String co){
              puerto = p;
              prioridad = pri;
              contenido = co;
       }

       //SETTERS
       public void setPuerto(int param){
              puerto = param;
       }

       public void setPrioridad(int param){
              prioridad = param;
       }

       public void setContenido(String param){
              contenido = param;
       }

       //GETTERS
       public int getPuerto(){
              return puerto;
       }

       public int getPrioridad(){
              return prioridad;
       }

       public String getContenido(){
              return contenido;
       }
}


tramaUDP.java

public class tramaUDP extends Trama{

       private String id = "Soy trama TCP";

       //Constructor
       public tramaUDP(int p, int pri, String co){
              super(p,pri,co);
       }

       public String getId(){
              return id;
       }
}


tramaTCP.java
public class tramaTCP extends Trama{

       private String id = "Soy trama TCP";

       //Constructor
       public tramaTCP(int p, int pri, String co){
              super(p,pri,co);
       }

       public String getId(){
              return id;
       }
}




                                                   bitCoach::Juan Bautista Cascallar Lorenzo::Página 2
Buffer1.java

import java.util.ArrayList;
import java.util.Iterator;
import java.util.Collections;


public class Buffer1 {

       //Atributos
       private ArrayList<Object> buffer01 = new ArrayList<Object>();

       public void agregarTrama(Object trama){
              buffer01.add(trama);
              ordTramaPrioridad();
       }

       public Object extraerTramaMasPrioritaria(){
              Object trama = buffer01.get(0);
              buffer01.remove(0);
              return trama;
       }

       public int getTamanio(){
              return buffer01.size();
       }

       public void ordTramaPrioridad(){
              Collections.sort(buffer01, new OrdenarTramaPorPrioridad());
       }

       public void mostrarContenido(){

                System.out.println("===========================================================");
                System.out.println("CONTENIDO DEL PRIMER BUFFER [BUFFER1]");
                System.out.println("===========================================================");

                Iterator<Object> it = buffer01.iterator();

                while(it.hasNext()){

                         Object obj;
                         obj = it.next();

                         if(obj.getClass().getName().equals("tramaTCP")){
                                tramaTCP tcpAux;
                                tcpAux = (tramaTCP)obj;
                                System.out.println("--Trama TCP-----------------------");
                                System.out.println("PUERTO: " + tcpAux.getPuerto());
                                System.out.println("PRIORIDAD: " + tcpAux.getPrioridad());
                                System.out.println("CONTENIDO: " + tcpAux.getContenido());
                                System.out.println("--Trama TCP-----------------------");
                         }else{
                                tramaUDP udpAux;
                                udpAux = (tramaUDP)obj;
                                System.out.println("--Trama UDP-----------------------");
                                System.out.println("PUERTO: " + udpAux.getPuerto());
                                System.out.println("PRIORIDAD: " + udpAux.getPrioridad());
                                System.out.println("CONTENIDO: " + udpAux.getContenido());
                                System.out.println("--Trama UDP-----------------------");
                         }
                }
       }

}//Fin clase.




                                                    bitCoach::Juan Bautista Cascallar Lorenzo::Página 3
Buffer2.java

import java.util.ArrayList;
import java.util.Iterator;

public class Buffer2 {

       private ArrayList<Object> puerto01 = new ArrayList<Object>();
       private ArrayList<Object> puerto02 = new ArrayList<Object>();
       private ArrayList<Object> puerto03 = new ArrayList<Object>();


       //Otros métodos
       public void agregarTrama(Object trama){
              Trama obj = (Trama)trama;
              switch(obj.getPuerto()){
              case 1:
                      puerto01.add(trama);
                      break;
              case 2:
                      puerto02.add(trama);
                      break;
              case 3:
                      puerto03.add(trama);
                      break;
              }
       }//Fin function

       public void mostrarContenido(){

               System.out.println("===========================================================");
               System.out.println("CONTENIDO DEL SEGUNDO BUFFER [BUFFER2]");
               System.out.println("===========================================================");

               System.out.println("Tramas en Puerto 01");
               Iterator<Object> iterador = puerto01.iterator();
               leerPuerto(iterador);


               System.out.println("Tramas en Puerto 02");
               iterador = puerto02.iterator();
               leerPuerto(iterador);

               System.out.println("Tramas en Puerto 03");
               iterador = puerto03.iterator();
               leerPuerto(iterador);

       }

       private void leerPuerto(Iterator<Object> it){

               while(it.hasNext()){

                         Object obj;
                         obj = it.next();

                         if(obj.getClass().getName() == "tramaTCP"){
                                tramaTCP tcpAux;
                                tcpAux = (tramaTCP)obj;
                                System.out.println("--Trama TCP-----------------------");
                                System.out.println("PUERTO: " + tcpAux.getPuerto());
                                System.out.println("PRIORIDAD: " + tcpAux.getPrioridad());
                                System.out.println("CONTENIDO: " + tcpAux.getContenido());
                                System.out.println("--Trama TCP-----------------------");
                         }else{
                                tramaUDP udpAux;
                                udpAux = (tramaUDP)obj;
                                System.out.println("--Trama UDP-----------------------");
                                System.out.println("PUERTO: " + udpAux.getPuerto());
                                System.out.println("PRIORIDAD: " + udpAux.getPrioridad());
                                System.out.println("CONTENIDO: " + udpAux.getContenido());
                                System.out.println("--Trama UDP-----------------------");
                         }
               }
       }

}//Fin clase




                                                    bitCoach::Juan Bautista Cascallar Lorenzo::Página 4
InterfazRed.java
public class InterfazRed {

       //Atributos
       private Buffer1 bf1 = new Buffer1();
       private Buffer2 bf2 = new Buffer2();

       public void agregarTrama(Object trama){
              if(bf1.getTamanio() < 4){
                      bf1.agregarTrama(trama);
              }else{
                      //Extraer las dos primeras tramas del primer buffer.
                      bf2.agregarTrama(bf1.extraerTramaMasPrioritaria());
                      bf2.agregarTrama(bf1.extraerTramaMasPrioritaria());
                      bf1.agregarTrama(trama);
              }
       }//Fin function

       public void mostrarBuffers(){
              bf1.mostrarContenido();
              bf2.mostrarContenido();
       }

}//Fin Clase


TestTramas.java
public class TestTramas {

       /**
        * @param args
        */

       public static void main(String[] args) {
              // TODO Auto-generated method stub

               InterfazRed interfaz = new InterfazRed();

               //Creamos las   seis tramas (puerto,prioridad 1+..10-,datos)
               /*
               tramaTCP TCP1   = new tramaTCP(1,1,"d");
               tramaTCP TCP2   = new tramaTCP(2,1,"c");
               tramaTCP TCP3   = new tramaTCP(3,2,"b");
               */
               tramaTCP TCP1   = new tramaTCP((int) (Math.random()*3+1),(int)
(Math.random()*10+1),"a");
               tramaTCP TCP2   = new tramaTCP((int) (Math.random()*3+1),(int)
(Math.random()*10+1),"c");
               tramaTCP TCP3   = new tramaTCP((int) (Math.random()*3+1),(int)
(Math.random()*10+1),"e");
               //---
               /*
               tramaUDP UDP1   = new tramaUDP(1,1,"a");
               tramaUDP UDP2   = new tramaUDP(2,2,"b");
               tramaUDP UDP3   = new tramaUDP(3,2,"a");
               */
               tramaUDP UDP1   = new tramaUDP((int) (Math.random()*3+1),(int)
(Math.random()*10+1),"e");
               tramaUDP UDP2   = new tramaUDP((int) (Math.random()*3+1),(int)
(Math.random()*10+1),"e");
               tramaUDP UDP3   = new tramaUDP((int) (Math.random()*3+1),(int)
(Math.random()*10+1),"e");

               interfaz.agregarTrama(TCP1);
               interfaz.agregarTrama(TCP2);
               interfaz.agregarTrama(TCP3);
               interfaz.agregarTrama(UDP1);
               interfaz.agregarTrama(UDP2);
               interfaz.agregarTrama(UDP3);

               interfaz.mostrarBuffers();

       }//Fin Function

}//Fin Clase




                                                   bitCoach::Juan Bautista Cascallar Lorenzo::Página 5
Diagrama de Clases UML




                         bitCoach::Juan Bautista Cascallar Lorenzo::Página 6

Más contenido relacionado

La actualidad más candente

Quasi - Practicas de Programacion en C
Quasi - Practicas de Programacion en CQuasi - Practicas de Programacion en C
Quasi - Practicas de Programacion en C
degarden
 
Ejercicios
EjerciciosEjercicios
Ejercicios
Ezmee XD
 
Entrega de reporte no 1, lab 1
Entrega de reporte no 1, lab 1Entrega de reporte no 1, lab 1
Entrega de reporte no 1, lab 1
Antares Zehcnas
 

La actualidad más candente (20)

Programas en netbeans
Programas en netbeansProgramas en netbeans
Programas en netbeans
 
Java
JavaJava
Java
 
Groovy no es java sin punto y coma v3
Groovy no es java sin punto y coma v3Groovy no es java sin punto y coma v3
Groovy no es java sin punto y coma v3
 
Prac1
Prac1Prac1
Prac1
 
Analisis programacion de pc.
Analisis programacion de pc.Analisis programacion de pc.
Analisis programacion de pc.
 
DescripcióN De Codigo Y Interfaz
DescripcióN De Codigo Y InterfazDescripcióN De Codigo Y Interfaz
DescripcióN De Codigo Y Interfaz
 
PARADIGMAS FP Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONA
PARADIGMAS FP  Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONAPARADIGMAS FP  Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONA
PARADIGMAS FP Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONA
 
Programacion en python_2
Programacion en python_2Programacion en python_2
Programacion en python_2
 
Reporte viernes 24
Reporte viernes 24Reporte viernes 24
Reporte viernes 24
 
Semana 1 Estructuras de Datos en Java
Semana 1   Estructuras de Datos en JavaSemana 1   Estructuras de Datos en Java
Semana 1 Estructuras de Datos en Java
 
Resumen java
Resumen javaResumen java
Resumen java
 
Quasi - Practicas de Programacion en C
Quasi - Practicas de Programacion en CQuasi - Practicas de Programacion en C
Quasi - Practicas de Programacion en C
 
Taller interfaz 2
Taller interfaz 2Taller interfaz 2
Taller interfaz 2
 
1.2. kotlin (1)
1.2. kotlin (1)1.2. kotlin (1)
1.2. kotlin (1)
 
Semana 5 Java Swing
Semana 5   Java SwingSemana 5   Java Swing
Semana 5 Java Swing
 
Unidad iii pilas y colas
Unidad iii pilas y colasUnidad iii pilas y colas
Unidad iii pilas y colas
 
Ejercicios
EjerciciosEjercicios
Ejercicios
 
Interfaces con Java
Interfaces con JavaInterfaces con Java
Interfaces con Java
 
Entrega de reporte no 1, lab 1
Entrega de reporte no 1, lab 1Entrega de reporte no 1, lab 1
Entrega de reporte no 1, lab 1
 
Por pagar
Por pagarPor pagar
Por pagar
 

Destacado

Acciones JSP
Acciones JSPAcciones JSP
Acciones JSP
jubacalo
 
Jsp directiva page
Jsp directiva pageJsp directiva page
Jsp directiva page
jubacalo
 
Proyecto JSP
Proyecto JSPProyecto JSP
Proyecto JSP
jubacalo
 
Java Thread Cronometro
Java Thread CronometroJava Thread Cronometro
Java Thread Cronometro
jubacalo
 
Tienda virtual php_mysql
Tienda virtual php_mysqlTienda virtual php_mysql
Tienda virtual php_mysql
jubacalo
 

Destacado (18)

Explicación del código del Servlet HolaMundo
Explicación del código del Servlet HolaMundoExplicación del código del Servlet HolaMundo
Explicación del código del Servlet HolaMundo
 
Acciones JSP
Acciones JSPAcciones JSP
Acciones JSP
 
Jsp directiva page
Jsp directiva pageJsp directiva page
Jsp directiva page
 
Find File Servlet DB
Find File Servlet DBFind File Servlet DB
Find File Servlet DB
 
Proyecto JSP
Proyecto JSPProyecto JSP
Proyecto JSP
 
Elementos de script en JSP
Elementos de script en JSPElementos de script en JSP
Elementos de script en JSP
 
Servlets que manejan datos de formularios HTML
Servlets que manejan datos de formularios HTMLServlets que manejan datos de formularios HTML
Servlets que manejan datos de formularios HTML
 
Java AWT Calculadora
Java AWT CalculadoraJava AWT Calculadora
Java AWT Calculadora
 
Acceso a BBDD mediante un servlet
Acceso a BBDD mediante un servletAcceso a BBDD mediante un servlet
Acceso a BBDD mediante un servlet
 
Servlet Hola Mundo con Eclipse y Tomcat
Servlet Hola Mundo con Eclipse y TomcatServlet Hola Mundo con Eclipse y Tomcat
Servlet Hola Mundo con Eclipse y Tomcat
 
Java Thread Cronometro
Java Thread CronometroJava Thread Cronometro
Java Thread Cronometro
 
Java AWT Tres en Raya
Java AWT Tres en RayaJava AWT Tres en Raya
Java AWT Tres en Raya
 
jQuery Mobile :: Cuadros de diálogo
jQuery Mobile :: Cuadros de diálogojQuery Mobile :: Cuadros de diálogo
jQuery Mobile :: Cuadros de diálogo
 
Java Mail
Java MailJava Mail
Java Mail
 
Práctica Completa en Flash – ActionScript
Práctica Completa en Flash – ActionScriptPráctica Completa en Flash – ActionScript
Práctica Completa en Flash – ActionScript
 
jQuery Mobile :: Enlaces a páginas internas.
jQuery Mobile :: Enlaces a páginas internas.jQuery Mobile :: Enlaces a páginas internas.
jQuery Mobile :: Enlaces a páginas internas.
 
Tienda virtual php_mysql
Tienda virtual php_mysqlTienda virtual php_mysql
Tienda virtual php_mysql
 
Crear Base de Datos en Oracle
Crear Base de Datos en OracleCrear Base de Datos en Oracle
Crear Base de Datos en Oracle
 

Similar a Java ArrayList Iterator

Ejercicios en Netbeans
Ejercicios en NetbeansEjercicios en Netbeans
Ejercicios en Netbeans
edgar muñoz
 
Ejerciciosdeprogramacionconcurrente 111021172712-phpapp01
Ejerciciosdeprogramacionconcurrente 111021172712-phpapp01Ejerciciosdeprogramacionconcurrente 111021172712-phpapp01
Ejerciciosdeprogramacionconcurrente 111021172712-phpapp01
cursobeta
 
Sistemas Distribuidos y Paralelismo - Unidad 2
Sistemas Distribuidos y Paralelismo - Unidad 2Sistemas Distribuidos y Paralelismo - Unidad 2
Sistemas Distribuidos y Paralelismo - Unidad 2
ingnucious
 
Guia para examen java
Guia para examen javaGuia para examen java
Guia para examen java
tecno5
 

Similar a Java ArrayList Iterator (20)

Ejercicios en Netbeans
Ejercicios en NetbeansEjercicios en Netbeans
Ejercicios en Netbeans
 
Ejerciciosdeprogramacionconcurrente 111021172712-phpapp01
Ejerciciosdeprogramacionconcurrente 111021172712-phpapp01Ejerciciosdeprogramacionconcurrente 111021172712-phpapp01
Ejerciciosdeprogramacionconcurrente 111021172712-phpapp01
 
Informe Poo
Informe PooInforme Poo
Informe Poo
 
Multitarea e hilos en java con ejemplos
Multitarea e hilos en java con ejemplosMultitarea e hilos en java con ejemplos
Multitarea e hilos en java con ejemplos
 
Pila dinamica y pila estatica
Pila dinamica y pila estaticaPila dinamica y pila estatica
Pila dinamica y pila estatica
 
Apache Storm: Desarrollo
Apache Storm: DesarrolloApache Storm: Desarrollo
Apache Storm: Desarrollo
 
Desarrollo De Programas Ejemplos 01
Desarrollo De Programas Ejemplos 01Desarrollo De Programas Ejemplos 01
Desarrollo De Programas Ejemplos 01
 
Desarrollo de programas_ejemplos_01
Desarrollo de programas_ejemplos_01Desarrollo de programas_ejemplos_01
Desarrollo de programas_ejemplos_01
 
Practica 2
Practica 2Practica 2
Practica 2
 
Creacion de proyecto_en_netbeans
Creacion de proyecto_en_netbeansCreacion de proyecto_en_netbeans
Creacion de proyecto_en_netbeans
 
Resultset
ResultsetResultset
Resultset
 
Programas en netbeans
Programas en netbeansProgramas en netbeans
Programas en netbeans
 
NOTACIÓN POSTFIJA E INFIJA - JAVA
NOTACIÓN POSTFIJA E INFIJA - JAVANOTACIÓN POSTFIJA E INFIJA - JAVA
NOTACIÓN POSTFIJA E INFIJA - JAVA
 
6 Upv Solo Pruebas 2009
6 Upv Solo Pruebas 20096 Upv Solo Pruebas 2009
6 Upv Solo Pruebas 2009
 
Sistemas Distribuidos y Paralelismo - Unidad 2
Sistemas Distribuidos y Paralelismo - Unidad 2Sistemas Distribuidos y Paralelismo - Unidad 2
Sistemas Distribuidos y Paralelismo - Unidad 2
 
Sockets
SocketsSockets
Sockets
 
Tema3 p2%20
Tema3 p2%20Tema3 p2%20
Tema3 p2%20
 
Ejemplo de RPC (Servidor de Archivos) enviar archivo en Java utilizando RPC
Ejemplo de RPC (Servidor de Archivos) enviar archivo en Java utilizando RPCEjemplo de RPC (Servidor de Archivos) enviar archivo en Java utilizando RPC
Ejemplo de RPC (Servidor de Archivos) enviar archivo en Java utilizando RPC
 
⭐⭐⭐⭐⭐ SOLUCIÓN LECCIÓN SISTEMAS EMBEBIDOS, 2do Parcial (2020 PAO 1)
⭐⭐⭐⭐⭐ SOLUCIÓN LECCIÓN SISTEMAS EMBEBIDOS, 2do Parcial (2020 PAO 1)⭐⭐⭐⭐⭐ SOLUCIÓN LECCIÓN SISTEMAS EMBEBIDOS, 2do Parcial (2020 PAO 1)
⭐⭐⭐⭐⭐ SOLUCIÓN LECCIÓN SISTEMAS EMBEBIDOS, 2do Parcial (2020 PAO 1)
 
Guia para examen java
Guia para examen javaGuia para examen java
Guia para examen java
 

Más de jubacalo (15)

MIT App Inventor2 Pintar en Imagen
MIT App Inventor2 Pintar en ImagenMIT App Inventor2 Pintar en Imagen
MIT App Inventor2 Pintar en Imagen
 
Cronómetro con MIT App Inventor 2
Cronómetro con MIT App Inventor 2Cronómetro con MIT App Inventor 2
Cronómetro con MIT App Inventor 2
 
App Android MiniBanco
App Android MiniBancoApp Android MiniBanco
App Android MiniBanco
 
Configurar entorno Android
Configurar entorno AndroidConfigurar entorno Android
Configurar entorno Android
 
Web de noticias en Ajax
Web de noticias en AjaxWeb de noticias en Ajax
Web de noticias en Ajax
 
Escenarios
EscenariosEscenarios
Escenarios
 
Matrices02
Matrices02Matrices02
Matrices02
 
Gráficos
GráficosGráficos
Gráficos
 
Tabla Dinámica
Tabla DinámicaTabla Dinámica
Tabla Dinámica
 
Tabla de Datos
Tabla de DatosTabla de Datos
Tabla de Datos
 
Textura de agua
Textura de aguaTextura de agua
Textura de agua
 
Funciones lógicas y condicionales
Funciones lógicas y condicionalesFunciones lógicas y condicionales
Funciones lógicas y condicionales
 
Solver
SolverSolver
Solver
 
Word VBA
Word VBAWord VBA
Word VBA
 
Java Thread Cronometro
Java Thread CronometroJava Thread Cronometro
Java Thread Cronometro
 

Último

5.- Doerr-Mide-lo-que-importa-DESARROLLO PERSONAL
5.- Doerr-Mide-lo-que-importa-DESARROLLO PERSONAL5.- Doerr-Mide-lo-que-importa-DESARROLLO PERSONAL
5.- Doerr-Mide-lo-que-importa-DESARROLLO PERSONAL
MiNeyi1
 
Proyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdfProyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdf
patriciaines1993
 

Último (20)

AFICHE EL MANIERISMO HISTORIA DE LA ARQUITECTURA II
AFICHE EL MANIERISMO HISTORIA DE LA ARQUITECTURA IIAFICHE EL MANIERISMO HISTORIA DE LA ARQUITECTURA II
AFICHE EL MANIERISMO HISTORIA DE LA ARQUITECTURA II
 
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICA
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICABIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICA
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICA
 
2024 KIT DE HABILIDADES SOCIOEMOCIONALES.pdf
2024 KIT DE HABILIDADES SOCIOEMOCIONALES.pdf2024 KIT DE HABILIDADES SOCIOEMOCIONALES.pdf
2024 KIT DE HABILIDADES SOCIOEMOCIONALES.pdf
 
Interpretación de cortes geológicos 2024
Interpretación de cortes geológicos 2024Interpretación de cortes geológicos 2024
Interpretación de cortes geológicos 2024
 
Prueba libre de Geografía para obtención título Bachillerato - 2024
Prueba libre de Geografía para obtención título Bachillerato - 2024Prueba libre de Geografía para obtención título Bachillerato - 2024
Prueba libre de Geografía para obtención título Bachillerato - 2024
 
PIAR v 015. 2024 Plan Individual de ajustes razonables
PIAR v 015. 2024 Plan Individual de ajustes razonablesPIAR v 015. 2024 Plan Individual de ajustes razonables
PIAR v 015. 2024 Plan Individual de ajustes razonables
 
Unidad 3 | Metodología de la Investigación
Unidad 3 | Metodología de la InvestigaciónUnidad 3 | Metodología de la Investigación
Unidad 3 | Metodología de la Investigación
 
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLAACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
 
5.- Doerr-Mide-lo-que-importa-DESARROLLO PERSONAL
5.- Doerr-Mide-lo-que-importa-DESARROLLO PERSONAL5.- Doerr-Mide-lo-que-importa-DESARROLLO PERSONAL
5.- Doerr-Mide-lo-que-importa-DESARROLLO PERSONAL
 
INSTRUCCION PREPARATORIA DE TIRO .pptx
INSTRUCCION PREPARATORIA DE TIRO   .pptxINSTRUCCION PREPARATORIA DE TIRO   .pptx
INSTRUCCION PREPARATORIA DE TIRO .pptx
 
Dinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dDinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes d
 
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESOPrueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESO
 
SESION DE PERSONAL SOCIAL. La convivencia en familia 22-04-24 -.doc
SESION DE PERSONAL SOCIAL.  La convivencia en familia 22-04-24  -.docSESION DE PERSONAL SOCIAL.  La convivencia en familia 22-04-24  -.doc
SESION DE PERSONAL SOCIAL. La convivencia en familia 22-04-24 -.doc
 
SEPTIMO SEGUNDO PERIODO EMPRENDIMIENTO VS
SEPTIMO SEGUNDO PERIODO EMPRENDIMIENTO VSSEPTIMO SEGUNDO PERIODO EMPRENDIMIENTO VS
SEPTIMO SEGUNDO PERIODO EMPRENDIMIENTO VS
 
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...Procedimientos para la planificación en los Centros Educativos tipo V ( multi...
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...
 
LA LITERATURA DEL BARROCO 2023-2024pptx.pptx
LA LITERATURA DEL BARROCO 2023-2024pptx.pptxLA LITERATURA DEL BARROCO 2023-2024pptx.pptx
LA LITERATURA DEL BARROCO 2023-2024pptx.pptx
 
Medición del Movimiento Online 2024.pptx
Medición del Movimiento Online 2024.pptxMedición del Movimiento Online 2024.pptx
Medición del Movimiento Online 2024.pptx
 
Proyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdfProyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdf
 
Tema 11. Dinámica de la hidrosfera 2024
Tema 11.  Dinámica de la hidrosfera 2024Tema 11.  Dinámica de la hidrosfera 2024
Tema 11. Dinámica de la hidrosfera 2024
 
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
 

Java ArrayList Iterator

  • 1. Desarrollar un programa que simule el interfaz software de entrada a una tarjeta de red siguiendo las siguientes especificaciones. La entrada está implementada mediante dos tipos de buffers. Un primer buffer donde van entrando todas las tramas según van llegando, que tiene un espacio máximo de 4 tramas. Y un segundo buffer de espacio ilimitado que tiene tres puertos (entendiendo por puertos, zonas de almacenamiento distintas). La entrada debe implementar un mecanismo para mostrar el contenido de sus buffers. Cuando el primer buffer se llene, enviará al segundo buffer de forma automática las primeras 2 tramas con mayor prioridad. Y así sucesivamente. Existen distintos tipos de tramas, aunque de momento solo tendremos en cuenta las tramas TCP y UDP (en el futuro puede que tengamos que soportar más). Ahora bien, todas las tramas sean del tipo que sean, contienen el puerto al que van dirigidas (1, 2 o 3), su prioridad (de 1 a 10, siendo 1 la mayor prioridad) y el contenido de la trama. Nota: ante dos tramas con el mismo valor de prioridad, tendrá más prioridad aquella cuyo contenido esté por delante siguiendo el orden del abecedario. Por último, crearemos una clase Actividad7 donde instanciaremos el sistema de entrada a la tarjeta de red y le enviaremos 6 tramas de distintos tipos y con puertos y prioridades aleatorias. Una vez se hayan enviado 5 tramas, se mostrará el contenido de los buffers del sistema de entrada. Realizar previamente el Diagrama de Clases UML. OrdenarTramaPorPrioridad.java import java.util.Comparator; public class OrdenarTramaPorPrioridad implements Comparator<Object>{ //Ordena las tramas primero por prioridad y después por contenido. public int compare (Object obj1, Object obj2){ Trama trama1 = (Trama)obj1; Trama trama2 = (Trama)obj2; if(trama1.getPrioridad() == trama2.getPrioridad()){ return trama1.getContenido().compareToIgnoreCase(trama2.getContenido()); }else{ return trama1.getPrioridad() - trama2.getPrioridad(); } } }//Fin Clase bitCoach::Juan Bautista Cascallar Lorenzo::Página 1
  • 2. Trama.java public class Trama { //ATRIBUTOS private int puerto; // 1, 2 o 3 private int prioridad; //De 1 (máx) a 10 (mín) String contenido = "VACIO"; //Constructor public Trama (int p, int pri, String co){ puerto = p; prioridad = pri; contenido = co; } //SETTERS public void setPuerto(int param){ puerto = param; } public void setPrioridad(int param){ prioridad = param; } public void setContenido(String param){ contenido = param; } //GETTERS public int getPuerto(){ return puerto; } public int getPrioridad(){ return prioridad; } public String getContenido(){ return contenido; } } tramaUDP.java public class tramaUDP extends Trama{ private String id = "Soy trama TCP"; //Constructor public tramaUDP(int p, int pri, String co){ super(p,pri,co); } public String getId(){ return id; } } tramaTCP.java public class tramaTCP extends Trama{ private String id = "Soy trama TCP"; //Constructor public tramaTCP(int p, int pri, String co){ super(p,pri,co); } public String getId(){ return id; } } bitCoach::Juan Bautista Cascallar Lorenzo::Página 2
  • 3. Buffer1.java import java.util.ArrayList; import java.util.Iterator; import java.util.Collections; public class Buffer1 { //Atributos private ArrayList<Object> buffer01 = new ArrayList<Object>(); public void agregarTrama(Object trama){ buffer01.add(trama); ordTramaPrioridad(); } public Object extraerTramaMasPrioritaria(){ Object trama = buffer01.get(0); buffer01.remove(0); return trama; } public int getTamanio(){ return buffer01.size(); } public void ordTramaPrioridad(){ Collections.sort(buffer01, new OrdenarTramaPorPrioridad()); } public void mostrarContenido(){ System.out.println("==========================================================="); System.out.println("CONTENIDO DEL PRIMER BUFFER [BUFFER1]"); System.out.println("==========================================================="); Iterator<Object> it = buffer01.iterator(); while(it.hasNext()){ Object obj; obj = it.next(); if(obj.getClass().getName().equals("tramaTCP")){ tramaTCP tcpAux; tcpAux = (tramaTCP)obj; System.out.println("--Trama TCP-----------------------"); System.out.println("PUERTO: " + tcpAux.getPuerto()); System.out.println("PRIORIDAD: " + tcpAux.getPrioridad()); System.out.println("CONTENIDO: " + tcpAux.getContenido()); System.out.println("--Trama TCP-----------------------"); }else{ tramaUDP udpAux; udpAux = (tramaUDP)obj; System.out.println("--Trama UDP-----------------------"); System.out.println("PUERTO: " + udpAux.getPuerto()); System.out.println("PRIORIDAD: " + udpAux.getPrioridad()); System.out.println("CONTENIDO: " + udpAux.getContenido()); System.out.println("--Trama UDP-----------------------"); } } } }//Fin clase. bitCoach::Juan Bautista Cascallar Lorenzo::Página 3
  • 4. Buffer2.java import java.util.ArrayList; import java.util.Iterator; public class Buffer2 { private ArrayList<Object> puerto01 = new ArrayList<Object>(); private ArrayList<Object> puerto02 = new ArrayList<Object>(); private ArrayList<Object> puerto03 = new ArrayList<Object>(); //Otros métodos public void agregarTrama(Object trama){ Trama obj = (Trama)trama; switch(obj.getPuerto()){ case 1: puerto01.add(trama); break; case 2: puerto02.add(trama); break; case 3: puerto03.add(trama); break; } }//Fin function public void mostrarContenido(){ System.out.println("==========================================================="); System.out.println("CONTENIDO DEL SEGUNDO BUFFER [BUFFER2]"); System.out.println("==========================================================="); System.out.println("Tramas en Puerto 01"); Iterator<Object> iterador = puerto01.iterator(); leerPuerto(iterador); System.out.println("Tramas en Puerto 02"); iterador = puerto02.iterator(); leerPuerto(iterador); System.out.println("Tramas en Puerto 03"); iterador = puerto03.iterator(); leerPuerto(iterador); } private void leerPuerto(Iterator<Object> it){ while(it.hasNext()){ Object obj; obj = it.next(); if(obj.getClass().getName() == "tramaTCP"){ tramaTCP tcpAux; tcpAux = (tramaTCP)obj; System.out.println("--Trama TCP-----------------------"); System.out.println("PUERTO: " + tcpAux.getPuerto()); System.out.println("PRIORIDAD: " + tcpAux.getPrioridad()); System.out.println("CONTENIDO: " + tcpAux.getContenido()); System.out.println("--Trama TCP-----------------------"); }else{ tramaUDP udpAux; udpAux = (tramaUDP)obj; System.out.println("--Trama UDP-----------------------"); System.out.println("PUERTO: " + udpAux.getPuerto()); System.out.println("PRIORIDAD: " + udpAux.getPrioridad()); System.out.println("CONTENIDO: " + udpAux.getContenido()); System.out.println("--Trama UDP-----------------------"); } } } }//Fin clase bitCoach::Juan Bautista Cascallar Lorenzo::Página 4
  • 5. InterfazRed.java public class InterfazRed { //Atributos private Buffer1 bf1 = new Buffer1(); private Buffer2 bf2 = new Buffer2(); public void agregarTrama(Object trama){ if(bf1.getTamanio() < 4){ bf1.agregarTrama(trama); }else{ //Extraer las dos primeras tramas del primer buffer. bf2.agregarTrama(bf1.extraerTramaMasPrioritaria()); bf2.agregarTrama(bf1.extraerTramaMasPrioritaria()); bf1.agregarTrama(trama); } }//Fin function public void mostrarBuffers(){ bf1.mostrarContenido(); bf2.mostrarContenido(); } }//Fin Clase TestTramas.java public class TestTramas { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub InterfazRed interfaz = new InterfazRed(); //Creamos las seis tramas (puerto,prioridad 1+..10-,datos) /* tramaTCP TCP1 = new tramaTCP(1,1,"d"); tramaTCP TCP2 = new tramaTCP(2,1,"c"); tramaTCP TCP3 = new tramaTCP(3,2,"b"); */ tramaTCP TCP1 = new tramaTCP((int) (Math.random()*3+1),(int) (Math.random()*10+1),"a"); tramaTCP TCP2 = new tramaTCP((int) (Math.random()*3+1),(int) (Math.random()*10+1),"c"); tramaTCP TCP3 = new tramaTCP((int) (Math.random()*3+1),(int) (Math.random()*10+1),"e"); //--- /* tramaUDP UDP1 = new tramaUDP(1,1,"a"); tramaUDP UDP2 = new tramaUDP(2,2,"b"); tramaUDP UDP3 = new tramaUDP(3,2,"a"); */ tramaUDP UDP1 = new tramaUDP((int) (Math.random()*3+1),(int) (Math.random()*10+1),"e"); tramaUDP UDP2 = new tramaUDP((int) (Math.random()*3+1),(int) (Math.random()*10+1),"e"); tramaUDP UDP3 = new tramaUDP((int) (Math.random()*3+1),(int) (Math.random()*10+1),"e"); interfaz.agregarTrama(TCP1); interfaz.agregarTrama(TCP2); interfaz.agregarTrama(TCP3); interfaz.agregarTrama(UDP1); interfaz.agregarTrama(UDP2); interfaz.agregarTrama(UDP3); interfaz.mostrarBuffers(); }//Fin Function }//Fin Clase bitCoach::Juan Bautista Cascallar Lorenzo::Página 5
  • 6. Diagrama de Clases UML bitCoach::Juan Bautista Cascallar Lorenzo::Página 6