SlideShare una empresa de Scribd logo
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

PDF
Java HashMap
PDF
Sincronizar Threads
PDF
Java::Acceso a Bases de Datos
PDF
Programa Java que gestiona los productos que comercializan varios viveros
PDF
Java Applet:::Pelota que rebota en un recinto.
PDF
Ejercicios de programacion concurrente
DOCX
Reporte de grafos con semagforos de 3,3,4 y 6 procesos
PDF
5 c iterative
Java HashMap
Sincronizar Threads
Java::Acceso a Bases de Datos
Programa Java que gestiona los productos que comercializan varios viveros
Java Applet:::Pelota que rebota en un recinto.
Ejercicios de programacion concurrente
Reporte de grafos con semagforos de 3,3,4 y 6 procesos
5 c iterative

La actualidad más candente (20)

DOCX
Programas en netbeans
DOCX
PDF
Groovy no es java sin punto y coma v3
DOCX
Analisis programacion de pc.
PDF
DescripcióN De Codigo Y Interfaz
PDF
PARADIGMAS FP Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONA
PDF
Programacion en python_2
DOCX
Reporte viernes 24
PDF
Semana 1 Estructuras de Datos en Java
PDF
Resumen java
PDF
Quasi - Practicas de Programacion en C
DOCX
Taller interfaz 2
PDF
1.2. kotlin (1)
PDF
Semana 5 Java Swing
PDF
Unidad iii pilas y colas
PDF
Ejercicios
PPTX
Interfaces con Java
DOCX
Entrega de reporte no 1, lab 1
DOCX
Programas en netbeans
Groovy no es java sin punto y coma v3
Analisis programacion de pc.
DescripcióN De Codigo Y Interfaz
PARADIGMAS FP Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONA
Programacion en python_2
Reporte viernes 24
Semana 1 Estructuras de Datos en Java
Resumen java
Quasi - Practicas de Programacion en C
Taller interfaz 2
1.2. kotlin (1)
Semana 5 Java Swing
Unidad iii pilas y colas
Ejercicios
Interfaces con Java
Entrega de reporte no 1, lab 1
Publicidad

Destacado (18)

PDF
Explicación del código del Servlet HolaMundo
PDF
Acciones JSP
PDF
Jsp directiva page
PDF
Find File Servlet DB
PDF
Proyecto JSP
PDF
Elementos de script en JSP
PDF
Servlets que manejan datos de formularios HTML
PDF
Java AWT Calculadora
PDF
Acceso a BBDD mediante un servlet
PDF
Servlet Hola Mundo con Eclipse y Tomcat
PDF
Java Thread Cronometro
PDF
Java AWT Tres en Raya
PDF
jQuery Mobile :: Cuadros de diálogo
PDF
PDF
Práctica Completa en Flash – ActionScript
PDF
jQuery Mobile :: Enlaces a páginas internas.
PDF
Tienda virtual php_mysql
PDF
Crear Base de Datos en Oracle
Explicación del código del Servlet HolaMundo
Acciones JSP
Jsp directiva page
Find File Servlet DB
Proyecto JSP
Elementos de script en JSP
Servlets que manejan datos de formularios HTML
Java AWT Calculadora
Acceso a BBDD mediante un servlet
Servlet Hola Mundo con Eclipse y Tomcat
Java Thread Cronometro
Java AWT Tres en Raya
jQuery Mobile :: Cuadros de diálogo
Práctica Completa en Flash – ActionScript
jQuery Mobile :: Enlaces a páginas internas.
Tienda virtual php_mysql
Crear Base de Datos en Oracle
Publicidad

Similar a Java ArrayList Iterator (20)

PDF
Ejercicios en Netbeans
PDF
Ejerciciosdeprogramacionconcurrente 111021172712-phpapp01
DOC
DOCX
Multitarea e hilos en java con ejemplos
PDF
Pila dinamica y pila estatica
PPTX
Apache Storm: Desarrollo
DOCX
Ejercicio #9..docx de ingenieria de software
PDF
Desarrollo De Programas Ejemplos 01
PDF
Desarrollo de programas_ejemplos_01
PDF
Practica 2
PDF
Creacion de proyecto_en_netbeans
DOCX
Programas en netbeans
DOCX
NOTACIÓN POSTFIJA E INFIJA - JAVA
PPT
6 Upv Solo Pruebas 2009
PPT
Sistemas Distribuidos y Paralelismo - Unidad 2
DOCX
PDF
Ejemplo de RPC (Servidor de Archivos) enviar archivo en Java utilizando RPC
PDF
⭐⭐⭐⭐⭐ SOLUCIÓN LECCIÓN SISTEMAS EMBEBIDOS, 2do Parcial (2020 PAO 1)
Ejercicios en Netbeans
Ejerciciosdeprogramacionconcurrente 111021172712-phpapp01
Multitarea e hilos en java con ejemplos
Pila dinamica y pila estatica
Apache Storm: Desarrollo
Ejercicio #9..docx de ingenieria de software
Desarrollo De Programas Ejemplos 01
Desarrollo de programas_ejemplos_01
Practica 2
Creacion de proyecto_en_netbeans
Programas en netbeans
NOTACIÓN POSTFIJA E INFIJA - JAVA
6 Upv Solo Pruebas 2009
Sistemas Distribuidos y Paralelismo - Unidad 2
Ejemplo de RPC (Servidor de Archivos) enviar archivo en Java utilizando RPC
⭐⭐⭐⭐⭐ SOLUCIÓN LECCIÓN SISTEMAS EMBEBIDOS, 2do Parcial (2020 PAO 1)

Más de jubacalo (15)

PDF
MIT App Inventor2 Pintar en Imagen
PDF
Cronómetro con MIT App Inventor 2
PDF
App Android MiniBanco
PDF
Configurar entorno Android
PDF
Web de noticias en Ajax
PDF
Escenarios
PDF
Matrices02
PDF
Gráficos
PDF
Tabla Dinámica
PDF
Tabla de Datos
PDF
Textura de agua
PDF
Funciones lógicas y condicionales
PDF
Solver
PDF
Word VBA
PDF
Java Thread Cronometro
MIT App Inventor2 Pintar en Imagen
Cronómetro con MIT App Inventor 2
App Android MiniBanco
Configurar entorno Android
Web de noticias en Ajax
Escenarios
Matrices02
Gráficos
Tabla Dinámica
Tabla de Datos
Textura de agua
Funciones lógicas y condicionales
Solver
Word VBA
Java Thread Cronometro

Último (20)

PDF
Salvese Quien Pueda - Andres Oppenheimer Ccesa007.pdf
PDF
Educación Artística y Desarrollo Humano - Howard Gardner Ccesa007.pdf
PDF
Breve historia de los Incas -- Patricia Temoche [Temoche, Patricia] -- Breve ...
PDF
Guia de Tesis y Proyectos de Investigacion FS4 Ccesa007.pdf
PDF
COMUNICACION EFECTIVA PARA LA EDUCACION .pdf
PDF
biología es un libro sobre casi todo el tema de biología
PDF
Habitos de Ricos - Juan Diego Gomez Ccesa007.pdf
PDF
Fundamentos_Educacion_a_Distancia_ABC.pdf
PDF
ciencias-1.pdf libro cuarto basico niños
PDF
Escuelas Desarmando una mirada subjetiva a la educación
PDF
Didactica de la Investigacion Educativa SUE Ccesa007.pdf
PDF
OK OK UNIDAD DE APRENDIZAJE 5TO Y 6TO CORRESPONDIENTE AL MES DE AGOSTO 2025.pdf
PDF
Escuela Sabática 6. A través del Mar Rojo.pdf
PDF
Lección 6 Escuela Sab. A través del mar rojo.pdf
PDF
Integrando la Inteligencia Artificial Generativa (IAG) en el Aula
PPT
Cosacos y hombres del Este en el Heer.ppt
DOCX
2 GRADO UNIDAD 5 - 2025.docx para primaria
PDF
Conecta con la Motivacion - Brian Tracy Ccesa007.pdf
PPTX
caso clínico iam clinica y semiología l3.pptx
DOCX
Tarea De El Colegio Coding For Kids 1 y 2
Salvese Quien Pueda - Andres Oppenheimer Ccesa007.pdf
Educación Artística y Desarrollo Humano - Howard Gardner Ccesa007.pdf
Breve historia de los Incas -- Patricia Temoche [Temoche, Patricia] -- Breve ...
Guia de Tesis y Proyectos de Investigacion FS4 Ccesa007.pdf
COMUNICACION EFECTIVA PARA LA EDUCACION .pdf
biología es un libro sobre casi todo el tema de biología
Habitos de Ricos - Juan Diego Gomez Ccesa007.pdf
Fundamentos_Educacion_a_Distancia_ABC.pdf
ciencias-1.pdf libro cuarto basico niños
Escuelas Desarmando una mirada subjetiva a la educación
Didactica de la Investigacion Educativa SUE Ccesa007.pdf
OK OK UNIDAD DE APRENDIZAJE 5TO Y 6TO CORRESPONDIENTE AL MES DE AGOSTO 2025.pdf
Escuela Sabática 6. A través del Mar Rojo.pdf
Lección 6 Escuela Sab. A través del mar rojo.pdf
Integrando la Inteligencia Artificial Generativa (IAG) en el Aula
Cosacos y hombres del Este en el Heer.ppt
2 GRADO UNIDAD 5 - 2025.docx para primaria
Conecta con la Motivacion - Brian Tracy Ccesa007.pdf
caso clínico iam clinica y semiología l3.pptx
Tarea De El Colegio Coding For Kids 1 y 2

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