Your SlideShare is downloading. ×
Java ArrayList Iterator
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Java ArrayList Iterator

1,618
views

Published on

Published in: Education

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,618
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
0
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Desarrollar un programa que simule el interfaz software de entrada a una tarjeta de red siguiendo lassiguientes especificaciones.La entrada está implementada mediante dos tipos de buffers. Un primer buffer donde van entrando todas lastramas según van llegando, que tiene un espacio máximo de 4 tramas. Y un segundo buffer de espacioilimitado que tiene tres puertos (entendiendo por puertos, zonas de almacenamiento distintas). La entradadebe 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 conmayor prioridad. Y así sucesivamente.Existen distintos tipos de tramas, aunque de momento solo tendremos en cuenta las tramas TCP y UDP (enel 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 elcontenido de la trama.Nota: ante dos tramas con el mismo valor de prioridad, tendrá más prioridad aquella cuyo contenido esté pordelante siguiendo el orden del abecedario.Por último, crearemos una clase Actividad7 donde instanciaremos el sistema de entrada a la tarjeta de red yle enviaremos 6 tramas de distintos tipos y con puertos y prioridades aleatorias. Una vez se hayan enviado5 tramas, se mostrará el contenido de los buffers del sistema de entrada.Realizar previamente el Diagrama de Clases UML.OrdenarTramaPorPrioridad.javaimport 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.javapublic 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.javapublic 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.javapublic 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.javaimport 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.javaimport 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.javapublic 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 ClaseTestTramas.javapublic 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