Home
SIMUCOM: Simulador de un Conmutador Multietapa
Contents
1. Si Se repite el y bloque de entrada Bloqueo en la MI Si Se depura el ag vector de No conexiones ok1 MI e No Coincide alguna con Si nuestro bloque de salida No No Se repite el No bloque de salida Si en la MI Se introduce en la MI nuestra entrada y salida Se introduce la MI en la Bloqueo vx Se depura el ok2 conexi n actual n vector de MI indice 3 MI conexiones ok1 0 ok2 0 Figura 14 Diagrama de flujo del m todo resuelveAlgoritmoA 30 Cap tulo 5 Implementaci n de la aplicaci n No Si y Se obtiene conexi n del vector Se obtiene la entrada y salida de la conexi n Y Se obtienen las entradas de las conexiones anteriores hasta indice Coincide alguna con nuestro bloque de entrada No Se repite el bloque de entrada Bloqueo en la MI Si Se depura el Y vector de No conexiones ok1 MI No Coincide alguna con Si nuestro bloque de salida No No Se repite el No bloque de salida Si en la MI Se introduce en la MI nuestra entrada y salida Bloqueo Se introduce la MI en la q a Se depura el ok2 conexi n actual VAST vector de MI indice Ft conexiones MI 0 ok1 0 ok2 0 e Figura 15 Diag
2. case 0 return a utilizaOut modulo case 1 return b utilizaOut modulo case 2 return c utilizaOut modulo case 3 return d utilizaOut modulo default return false Definici n Devuelve el vector de conexiones Par metros de entrada Devuelve vector de conexiones By public Vector getConexiones return conexiones Definici n Escogemos algoritmo Par metros de entrada int Algoritm Devuelve ng public void AlgoritmoEscogido int Algoritm f switch Algoritm case 0 resuelveAlgoritmoA break case 1 f resuelveAlgoritmoB break case 2 resuelveAlgoritmoC break default System out println Error Definici n Con este metodo queremos que el vector conexiones solo tenga las conexiones que han sido realizadas Par metros de entrada int indiceMax corresponde a la conexion bloqueada Devuelve ey private void DepurarConexiones int indiceMax f for int i indiceMax 1 i lt 16 i conexiones removeElementAt indiceMax 1 indiceMax corresponde a la conexion bloqueada con lo q la estamos respetando conexiones removeRange indiceMax 16 borramos desde hasta ineluidos Archivo C Documents and Settings Gregorio Escritorio opcionA Imagen java Imagen java Created on 12 de mayo de 2003 11 20 may xx Qauthor Gregorio Con
3. den q se producen jMenuI JLabel02 J JLabel20 Label5 Label19 a F g r MI 2 9 JTex 4 tem6 Label03 JLabel22 Label7 Label21 TO not modify GEN BEGIN variables jMenuItem5 jMenuItem4 jMenultem3 JLabel3 JLabel4 JLabel23 Label9 Label10 Label24 Label25 JLabel6 JLabel8 Label11 Label26 Label12 Label01 tField2 variables declaration GEN END variables 8 El numero Algoritmo indica el tipo desblog conc descnx de conexiones q provienen de algoritmo2 private int pasos 0 totales conexiones desconexiones perdidas maxima nejecuciones 1000 entradaAnt salidaAnt private static Graphics g private static Label etiqE new Label 1 new Label 2 new Label 3 new Label 4 new Label 5 new Label 6 new Label 7 new Label 8 new Label 9 new Label 10 new Label 11 new Label 12 new Label 13 new Label 14 new Label 15 new Label 16 private static Label etigs new Label 1 new Label 2 new Label 3 new Label 4 new Label 5 new Label 6 new Label 7 new Label 8 new Label 9 new Label 10 new Label 11 new Label 12 new Label 13 new Label 14 Archivo C Documents and Settings Gregorio Escritorio opcionB opcionC java new Label 15 new Label 16 private s
4. windowActivate public void windowDeactivated java awt event WindowEvent evt System out println WindowListener Ventana desactivada windowDeactivate p img addMouseListener new java awt event MouseAdapter public void mousePressed java awt event MouseEvent evt jPanelMousePressed evt Na img setBounds 0 O 707 437 getContentPane add img jButtonl setText PASO ADELANTE jButtonl addActionListener new java awt event ActionListener Archivo C Documents and Settings Gregorio Escritorio opcionA opcionA java public void actionPerformed java awt event ActionEvent evt jButtonlActionPerformed evt NG jButtonl setBounds 10 670 150 40 int x int y int width int height getContentPane add jButtonl jButton2 setText EJECUCI N jButton2 addActionListener new java awt event ActionListener public void actionPerformed java awt event ActionEvent evt jButton2ActionPerformed evt NG jButton2 setBounds 180 670 150 40 getContentPane add jButton2 jButton3 setText NUEVA EJECUCI N OTE jButton3 addActionListener new java awt event ActionListener public void actionPerformed java awt event ActionEvent evt jButton3ActionPerformed evt jButton3 setBounds 350 670 150 40 getContentPane add jButton3 jButton4 setText REINICIAR jButton4 setForeground Color red jButton4 addActionListener n
5. Archivo C Documents and Settings Gregorio Escritorio opcionB Algoritmo2 java nmi si supera o iguala el nmi es que hay Bloqueo ponemos como desconectada la conexi n actual en el vector conexiones con Desconectar Conexiones conevt new Conexiones con false true puntero 5 nmi conectado false bloqueado true eventos addElement conevt Afiadimos esta conexi n al vector de eventos SetSalida le dejamos puesta a la conexiones desconectadas una nueva conexion return 1 if bloqueOut cot getSalida getBloque while ok1 ok2 lt nmi ahora hay que comprobar si el bloqueOut se ha repetido en esa MI si es true es que s if compruebaMO puntero nmi bloqueOut ok2 puntero a 0 BloqueoutVisto true else break if ok2 nmi okl ok2 gt nmi ponemos la conexi n como desconectada desconexion o bloqueo ef con Desconectar 7 Conexiones conevt new Conexiones con false true puntero nmi conectado false bloqueado true eventos addElement conevt SetSalida le dejamos puesta a la conexiones desconectadas una nueva conexion return 1 if bloqueOut if BloqueinVisto false amp amp BloqueoutVisto trus con esto hacemos que si hemos incrementado el ptero y no ha mirado la entrada que la mire f if bloqueIn cot getEntrada getBloque whi
6. Nuestro objetivo es programar un simulador did ctico de un conmutador espacial multietapa de caracter sticas similares a uno ya realizado el Matswit con el fin de introducir algunas mejoras en el mismo y disponer del c digo fuente para posibles modificaciones Estas mejoras consistir n en Modernizaci n de la interfaz gr fica haciendo m s agradable el entorno visual al alumno Facilitar las comprensi n de los algoritmos de distribuci n del Matswit Corregir ciertos aspectos te ricos para facilitarle la comprensi n de los conceptos que se intentan ense ar con este simulador Integraci n de diversos apartados del programa inicial en uno solo consiguiendo 2 modos Uno simple con una duraci n de las llamadas infinita y otro continuo con llamadas de duraci n finita Dejar el c digo abierto a posibles mejoras futuras Hacer que el programa sea portable que podamos ejecutarlo en cualquier sistema operativo Windows LINUX 23 2 switch Figura 1 Ejemplo de conmutador espacial multietapa Cap tulo 2 Objetivos 10 Cap tulo 3 An lisis y dise o 3 1 Ingenier a inversa Nuestro objetivo principal es realizar un programa que se comporte de manera parecida a otro ya hecho por lo que debemos recurrir a la ingenier a inversa La ingenier a inversa consiste en desmontar un objeto para ver c mo funciona y de ese modo duplicar o mejorar el mismo En el mbito inform tico ex
7. comparo el bloque entrada actual si coincide con alguno de los anteriores if bloqueIn cot getEntrada getBloque f while okl ok2 lt nmi f if compruebaMI puntero 3 nmi bloqueIn ahora hay quq comprobar si el bloqueln se ha repetido en esa Matriz Int si es true es que s f t84 No se puede por este bloque de entrada bloqueln ir por esta MI puntero nmi ORL puntero a 0 con a 0 comparamos el nuevo puntero con la Entr desde el principio BloqueinVisto true else f break if okl nmi ok1 ok2 gt nmi si supera o iguala el nmi es que hay Bloqueo f con Desconectar ponemos la conexi n como desconectada desconexi n o bloqueo Conexiones conevt new Conexiones con false true puntero 3 nmi conectado false bloqueado true eventos addElement conevt SetSalida le dejamos puesta a la conexiones desconectadas una nueva conexidn return 1 if bloqueOut cot getSalida getBloque f while okl ok2 lt nmi if compruebaMO puntero 3 nmi bloqueOut No se puede por este bloke de salida bloqueOut ir por esta MI puntero nmi ok2 puntero a 0 BloqueoutVisto true Archivo C Documents and Settings Gregorio Escritorio opcionB Algoritmo2 java else break al salir de este bucle while tenemos ok con un valor si es 4 tendremos un bloqueo if ok2 nmi okl
8. getBloque while ok1 ok2 lt 4 f if compruebaMO puntero 3 4 bloqueOut f No se puede por este bloque de salida elsek b ok2 puntero a 0 BloqueoutVisto true else break al salir de este bucle while tenemos ok con un valor si es 4 tendremos un bloqueo if ok2 4 ok1l ok2 gt 4 bloqueo f DepurarConexiones indice return 1 if bloqueOut if BloqueinVisto false amp amp BloqueoutVisto true con esto hacemos que si hemos incrementado el ptero y no ha mirado la entrada que la mire f if bloqueln Conexiones conexiones elementAt a getEntrada getBloque f while ok1 ok2 x 4 f o if compruebaMI puntero 4 bloqueIn f na No se puede por este bloque de entrada ir por la MI puntero 4 okl puntero a 0 BloqueinVisto true elise break if ok1l 4 ok1l ok2 gt 4 DepurarConexiones indice return 1 fin if bloquevisto false for int a 0 a lt indice att introducimos en una MI la entrada y salida asignada seleccionaMI puntero 3 4 bloqueIn bloqueOut con setMI puntero 4 a adimos la MI q corresponde a la conexion actual indice puntero int Math random 16 1 Algoritmo aleatorio ok1 0 Archivo C Documents and Settings Gregorio Escritorio opcionA Algoritmo java ok2 0 BloqueinVisto fal
9. al final del vector solamente Tendremos al final 16 entradas for int a 0 a lt 50 a barajamos unas 50 veces int numero int Math random salidas size cojo una salida al azar del vector conexiones Salida sal Salida salidas elementAt numero salidas add sal a ado al vector la salida escogida al azar salidas remove numero borro esa salida con del vector de esta forma estara al final del vector solamente Tendremos al final 16 salidas Definici n Se va a adiendo al vector de conexiones nuevas conexiones con entrada secuencial 1 2 3 hastal6 y salida aleatoria de la 16 sin que se repita ninguna salida Par metros de entrada Devuelve v public void generaConexion f eventos removeAllElements conexiones removeAllElements int con 0 int sumador 0 int numerosal 0 while con 16 numerosal int Math random 16 1 numero aleatorio entre 0 y 16 sumador 0 for int a 0 a lt conexiones size att if numerosal Conexiones conexiones elementAt a getSalida getld sumador else 1 break if sumador conexiones size asignamos acada entrada secuencialmente una salida aleatoria fijandonos en no repetir salida conexiones addElement new Conexiones new Entrada con 1 new Salida numerosal con desordenar A
10. ga private void CalculaMedia float ejecuciones float NConexiones for int i 0 NConexiones 0 MediaConexiones 0 i lt estadisticas length i NConexiones estadisticas 1 MediaConexiones String SMedia if NConexiones ejecuciones Float toString MediaConexiones SMedia length gt 4 SMedia SMedia substring 0 5 JLabelMedia setText SMedia Definici n Par metros de entrada KAHA HY Le pasa a la clase algoritmo el algoritmo de conexiones i 4 escogido Archivo C Documents and Settings Gregorio Escritorio opcionA opcionA java Devuelve ta private void escogeAlgoritmo Algor AlgoritmoEscogido Algoritmo NH HH HH X private void Contadorl ejecuciones Algor con g g2 Definicion Parametros de entrada Devuelve 0 0 Devuelv Limpia la imagen la tabla y las etiquetas de estad sticas new Algoritmo Algor generaConexiones escogeAlgoritmo Algor getConexiones OA setConexiones con img update 92 limpiaTabla limpiaEstadisticas img getGraphics Graphics2D limpiamos el dibujo g limpiamos la tabla limpia jlabel estadisticas param args the command line arguments tj public static void main String args Algor OA con new Algoritmo Algor generaConexiones Algor AlgoritmoEscogido Algorit
11. getSalida getBloque while ok1 ok2 lt 4 if compruebaMO puntero 3 4 bloqueOut No se puede por este bloque de salida ir por la MI puntero 4 ok2 puntero a 0 Archivo C Documents and Settings Gregorio Escritorio opcionA Algoritmo java BloqueoutVisto true else break al salir de este bucle while tenemos ok con un valor si es 4 tendremos un bloqueo if ok2 4 ok1l ok2 gt 4 bloqueo DepurarConexiones indice return 1 if bloqueOut if BloqueinVisto false amp amp BloqueoutVisto true con esto hacemos que si hemos incrementado el ptero y no ha mirado la entrada que la mire f if bloqueln Conexiones conexiones elementAt a getEntrada getBloque f while okl ok2 x 4 f 9 if compruebaMI puntero 4 rueueou f No se puede por este bloque de entrada ir por la MI puntero 4 okl puntero a 0 BloqueinVisto true else break if ok1l 4 okl ok2 gt 4 bloqueo DepurarConexiones indice return 1 fin if bloquevisto false for int a 0 a lt indice at introducimos en una MI la entrada y salida asignada seleccionaMI puntero 4 bloqueln bloqueOut con setMI puntero 4 a adimos la MI q corresponde a la conexion actual indice puntero algoritmo rotacion aumentamos MI ok1
12. if Contadorl 16 TamafioVector 17 para el caso de no bloqueo aviso new Frame d new DIALOGO aviso true d mensaje No hay m s conexiones has llegado a la ltima Archivo C Documents and Settings Gregorio Escritorio opcionA opcionA java Tama oVector 1 d CentraDialogo dibuja lineas if Contadorl lt Algor getConexiones size Contadorl pinta y avanza contadorl img setContador Contadorl g img getGraphics g2 Graphics2D g img dibuja g2 else pinta pero no incrementes contadorl que has llegado al final img setContador Contadorl g img getGraphics g2 Graphics2D g img dibuja g2 Definici n Caja de texto para introducir el n mero de ejecuciones kara private void JTextFieldlActionPerformed java awt event ActionEvent evt String Seje Seje JTextFieldl getText int eje 1000 try 1 eje Integer parselnt Seje catch NumberFormatException nfe aviso new Frame d new DIALOGO aviso true d mensaje Introduce un N MERO entero menor de 10000 d CentraDialogo if eje lt 10000 amp amp eje gt 0 jButton5 setText eje EJECUCIONES NumeroSecuencias eje else 1 No introduzcas mas de 10000 ejecuciones aviso new Frame d new DIALOGO aviso true d mensaje Introduce un N MERO entero menor de 10000 d CentraDialogo Definici n Repintara la imagen
13. Created on 17 de mayo de 2003 Bi import import import import import import import publig 18 47 java awt java awt event javax swing javax swing JFrame java awt image java util Vector java io File class opcionC extends JFrame Creates new form opcionc public opcionc setTitle MATSWIT OPCION B eventos new Vector initComponents private void initComponents GEN BEGIN initComponents jButtonl new JButton jButton2 new JButton jButton3 new JButton jButton4 new JButton jMenuBarl new JMenuBar jMenul new JMenu jMenulteml new JMenuItem jMenuItem2 new JMenuItem jMenuItem3 new JMenuItem jMenu2 new JMenu jMenuItem4 new JMenuItem jMenuItem5 new JMenuItem jMenuItem6 new JMenuItem jMenuItem7 new JMenuItem Label01 new Label El diagrama muestra Label02 new Label el n de la matriz de distribuci n Label03 new Label o B si hay bloqueo Labell new Label eventos Label2 new Label En Curso JLabel3 new JLabel meteremos el estado de la conexione en curso JLabel4 new JLabel la e s de la conexion en curso Label5 new Label Total JLabel6 new JLabel meteremos el total Label7 new Label Conexiones JLabel8 new JLabel meteremos las conectadas JTextFieldl new JTextField para meter
14. MATSWIT OPCI N A xl Algoritmo A ETAPA DE ENTRADA ETAPA DE DISTRIBUCI N ETAPA DE SALIDA CONEXI N ENTRADA SALIDA DISTRIBUCI N MEDIA DE CONEXIONES CONEXIONES N CONEXIONES PORCENTAJE Introduce aqu el n de ejecuciones a realizar PASO ADELANTE EJECUCI N NUEVA EJECUCI N REINICIAR 1000 EJECUCIONES PASO ATR S Figura 22 Opci n A ejecutada 5 3 Opci n B En esta opci n se simula un conmutador espacial de 3 etapas en r gimen continuo Las llamadas ser n de duraci n finita Se tienen por tanto situaciones de conexi n desconexi n y de bloqueo Una situaci n de bloqueo no hace que la ejecuci n del programa se pare solamente que se pierda esa conexi n Las matrices intermedias pueden variar de 4 hasta 7 Por lo que las matrices de crossbar de entrada y salida se ver n modificadas para cada caso 41 Cap tulo 5 Implementaci n de la aplicaci n Las tres etapas consisten en cuatro matrices crossbar 4X 4 5 6 7 en la entrada y cuatro matrices crossbar 4 5 6 7 X4 en la salida En la etapa intermedia podr contener de cuatro a siete matrices crossbar de 4X4 Las llamadas se ir n conectando y desconectando de forma aleatoria La probabilidad de que ocurra uno u otro evento ir en base a un factor de actividad a introducir Se muestra un diagrama de conexiones consistente en 16
15. dibujo como en la tabla El aspecto del bot n ejecuci n es 82 Anexo A Manual de usuario EJECUCI N Figura 50 Bot n Ejecuci n de la opci n A Nueva ejecuci n Empieza una nueva ejecuci n dispuesta para ser pintada y mostrada A ade a las estad sticas la ejecuci n anterior El aspecto del bot n Nueva ejecuci n es NUEVA EJECUCI N Figura 51 Bot n Nueva ejecuci n de la opci n A Reiniciar Limpia las tablas y los dibujos El aspecto del bot n Reiniciar es REINICIAR Figura 52 Bot n Reiniciar de la opci n A 1000 ejecuciones Realiza seguidas 1000 ejecuciones que se a adir n a las estad sticas ver Caja de Texto n mero de ejecuciones El aspecto del bot n 1000 ejecuciones es 1000 EJECUCIONES Figura 53 1000 ejecuciones de la opci n A Paso atr s Es complementario a Paso adelante Muestra las conexiones anteriores borrando la actual El aspecto del bot n Paso atr s es PASO ATR S Figura 54 Bot n Paso atr s de la opci n A Caja de Texto n mero de ejecuciones Podemos modificar el n mero de ejecuciones seguidas a realizar mediante el bot n de 1000 ejecuciones La etiqueta del bot n se ajusta al nuevo valor 83 Anexo A Manual de usuario Introduce aqu el n de ejecuciones a realizar 4500 4500 EJECUCIONES Figura 55 Caja de Texto n mero de ejecuciones y el bot
16. ok2 gt nmi con Desconectar Conexiones conevt new Conexiones con false true puntero 3 nmi conectado false bloqueado true eventos addElement conevt SetSalida le dejamos puesta a la conexiones desconectadas una nueva conexion return 1 if bloqueOut if BloqueinVisto false gg BloqueoutVisto true con esto hacemos que si hemos incrementado el ptero y no ha mirado la entrada que la mire f if bloqueIn cot getEntrada getBloque f while okl ok2 lt nmi if compruebaMI puntero nmi bloqueln f 4 No se puede por este bloke de entrada bloqueIn ir por esta MI puntero 53 4 okl puntero tt a 0 BloqueinVisto true else break if okl nmi ok1 ok2 gt nmi con Desconectar Conexiones conevt new Conexiones con false true puntero nmi conectado false bloqueado true eventos addElement conevt SetSalida le dejamos puesta a la conexiones desconectadas una nueva conexion return 1 fin if bloquevisto false for int a 0 a lt indice a con Conectar Conexiones conevt new Conexiones con true false puntero 3 nmi conectado true bloqueado false eventos addElement conevt con setMI puntero nmi seleccionaMI puntero nmi bloqueIn bloqueOut puntero int Math random 4 nmi 1 elegimos una MI al azar 4 matrices nmi cad
17. puntero int Math random 4 nmi 1 Se muestran a continuaci n los diagramas de flujo de los m todos correspondientes a los tres algoritmos 54 Cap tulo 5 Implementaci n de la aplicaci n D indice 16 No Fin Si y Se obtiene la conexi n en la posici n ndice del vector Se obtiene la entrada y salida de la conexi n Se obtienen las entradas de las conexiones anteriores a indice Coincide alguna con el bloque de Si entrada actual ok1 ok2 4 No Si Y Se repite el 1 Bloqueo bloque de entrada Conexi n como desconectada y en la MI Si bloqueada l Se a ade la nueva conexi n al No vector de eventos ok1 SetSalida MI C Fin ia No Coincide alguna con el si bloque de salida actual No No Se repite el bloque de salida si en la MI Conexi n como conectada Se a ade la nueva conexi n al vector de eventos Bloqueo ok2 Se introduce en la MI la entrada y la salida Conexi n como desconectada y MI Se introduce la MI en la conexi n actual bloqueada indice Se a ade la nueva conexi n al MI vector de eventos ok1 0 ok2 0 nconexiones SetSalida Fin Figura 28 Diagrama de flujo del m todo AlgoritmoA 55 Cap tulo 5 Implementaci n de la aplicaci n T 1 y indice lt 16
18. Algor getConexiones size int Conexiones if Tama oVector lt 16 Conexiones Tama oVector 1 else Conexiones Tama oVector no se bloquea en la 16 estadisticas Conexiones 4 ejecucionestt obtenemos estadisticas for int a 0 a lt estadisticas length a int npor estadisticas a float porciento npor ejecuciones 100 String Sporciento Float toString porciento String Snpor Integer toString npor if Sporciento length gt 4 Sporciento Sporciento substring 0 5 etigq 1 a setText Snpor etigq 2 a setText Sporciento CalculaMedia ejecuciones g img getGraphics limpiamos el dibujo g2 Graphics2D g img update 92 limpiaTabla Definici n Se ejecuta al pinchar el bot n Reiniciar 7 private void jButton4ActionPerformed java awt event ActionEvent evt Reiniciar Definici n Se ejecuta al pinchar el bot n Nueva Ejecuci n introducimos la ejecucion el el cuadro de estadisticas Y creamos una nueva private void jButton3ActionPerformed java awt event ActionEvent evt g img getGraphics limpiamos el dibujo g2 Graphics2D g img update 92 limpiaTabla limpiamos la tabla Tama oVector Algor getConexiones size int Conexiones if Tama oVector lt 16 Conexiones Tama oVector 1 else 1 Conexiones Tama oVector no se bloquea en la 16 las conexione
19. Es el m s utilizado para crear sistemas operativos y aplicaciones de sistema El lenguaje C se clasifica como un lenguaje compilado En lenguajes compilados se convierte el c digo fuente a c digo objeto compilaci n y ste a c digo ejecutable enlazado Este es el Caso del lenguaje C Podemos decir que el lenguaje C es un lenguaje de nivel medio ya que combina elementos de lenguaje de alto nivel con la funcionalidad del lenguaje ensamblador Es un lenguaje estructurado ya que permite crear procedimientos en bloques dentro de otros procedimientos Hay que destacar que el C es un lenguaje portable en el sentido de que permite utilizar el mismo c digo en diferentes equipos y sistemas inform ticos el lenguaje es independiente de la arquitectura de cualquier m quina en particular Es muy eficiente pero limita mucho nuestras posibilidades al no ser orientado a objetos y no tener una portabilidad total no podemos ejecutar el programa en distintas plataformas sin necesidad de recompilar el c digo C Se crea a mediados de los 80 con el fin del paso de la programaci n tradicional C a estilos de abstracci n de datos y orientaci n a objetos Conserva caracter sticas del C y a ade nuevos conceptos como el de Clase por lo que a ade objetos a C Conserva la eficiencia portabilidad y disponibilidad de C Java Lenguaje de prop sito general orientado a Objetos Su sintaxis inspirada en la de C C Se trat
20. Las variables de clase son el entero id que representa el n mero de matriz y los objetos de la clase Vector in out Estos objetos contienen las matrices de 46 Cap tulo 5 Implementaci n de la aplicaci n entrada y salida que han conectado por la matriz de distribuci n a la que representa nuestra clase A la hora programar esta clase se ha reutilizado la clase del mismo nombre de la opci n A aunque debemos a adir nuevos m todos Antiguos m todos e introduceBloqueIn A ade al vector de entradas in un bloque de entradas public void introduceBloqueln int bloque in add new Integer bloque e introduceBloqueOut A ade al vector de salidas out un bloque de salidas public void introduceBloque0ut int bloque out add new Integer bloque e utilizaIn Indica si el valor que le pasamos como par metro estaba ya almacenado en el vector de entradas de nuestra matriz intermedia devolviendo true en caso afirmativo Devuelve false en el caso de que se pueda utilizar dicha matriz intermedia esto significa que no se utiliz una misma matriz de entrada 2 veces para nuestra matriz intermedia public boolean utilizaln int valor for int i 0 i lt in size 1 int e Integer in elementAt i intValue if valor Integer in elementAt i intValue f return true 47 Cap tulo 5 Implementaci n de la aplic
21. Paso adelante paso Exit the Application private void exitForm java awt event WindowEvent evt GEN FIRST event_exitForm try Obtienes un Runtime Runtime r Runtime getRuntime Le mandas ejecutar el comando Process p r exec java Jar SIMUCOM jar Llamamos al men de incio System exit 0 catch Exception e f System exit 0 GEN LAST event exitForm Definici n Situa nuestro JFrame en el centro dela pantalla y ocupando enteramente 1024 x 768 p xeles Par metros de entrada JFrame jf Devuelve ny private void pantallaCompleta JFrame jf f Dimension screenSize Toolkit getDefaultToolkit getScreenSize Dimension frameSize jf getSize if frameSize height gt screenSize height frameSize height screenSize height if frameSize width gt screenSize width frameSize width screenSize width jf setSize screenSize width screenSize height jf setVisible true Definici n Le pasa al objeto de la clase Algoritmo2 el algoritmo de encaminamiento elegido Par metros de entrada Devuelve E private void escogeAlgoritmo eje Algor setAlgoritm Algoritmo Algor AlgoritmoEscogido Archivo C Documents and Settings Gregorio Escritorio opcionB opcionC java Definici n Realiza un evento Par metros de entrada Devuelve l private void paso etigE entradaAnt setForeground null etigS salid
22. TIEMPO DE OBSERVACION RANURAS indice 0 while logro false return 0 resuelveAlgoritmo Definici n Algoritmo de Rotacion intenta primero por la MI 0 luego la 1 si no puedo por alguna lo intento con el siguientes Par metros de entrada Devuelve int private int AlgoritmoA int ok1 0 0k2 0 nos van a indicar el numero de veces seguidas que se ha rechazado una MI por la entrada en caso de okl o por la salida en ok2 cogemos elemento del vector Conexiones con Conexiones conexiones elementAt indice miramos en que bloque de entrada esta actualmente int bloqueIn con getEntrada getBloque miramos que bloque de salida esta actualmente int bloqueOut con getSalida getBloque miramos en que bloque intermedio le toca puntero nmi for int a 0 a lt conexiones size att Conexiones cot Conexiones conexiones elementAt a comparo el bloque entrada actual si coincide con alguno de los bloques de entrada de conexiones if bloqueln cot getEntrada getBloque while okl ok2 lt nmi if compruebaMI puntero nmi bloqueIn ahora hay que comprobar si el bloqueln se ha repetido en esa MI si es true es que si f okl puntero a 0 con a 0 comparamos el nuevo puntero con la Entr desde el principio BloqueinVisto true else break if okl nmi okl ok2 gt
23. Tambi n limpia el diagrama de conexiones Se dispone de dos cajas de texto para introducir valores e El factor de actividad Valor comprendido entre 0 1 y 15 9 que va a determinar la probabilidad de que se intente conectar o desconectar e N mero de ejecuciones a realizar Determina el m ximo n mero de eventos que se realizar n al pulsar los botones de ejecuci n o 1000 ejecuciones El valor introducido se ver reflejado en este ltimo bot n El l mite son 10 000 ejecuciones En la opci n B se incorporan dos novedades importantes respecto a la opci n A que son la posibilidad de aumentar las matrices intermedias hasta siete n tese que la representaci n matricial del conmutador es muy adecuada para esta caracter stica y 42 Cap tulo 5 Implementaci n de la aplicaci n la contemplaci n de que la llamada se desconectar trascurrido un tiempo r gimen continuo Uno de los datos que el programa nos pide es lo que el Matswit llama Tr fico Ofrecido m s tarde se ver que este no es tal Debido a esto se obtienen nuevos valores tales como Tr fico Cursado Tr fico Perdido conexiones en curso conexiones perdidas y m ximas conexiones que ha habido en curso Por el uso de la representaci n matricial del conmutador la representaci n de las conexiones es simb lica en lugar de gr fica Para programar este apartado nos hemos valido de las siguientes clases Entrada En su constructor hay que pas
24. conexion actual indice puntero 0 Algoritmo secuencial ok1 0 ok2 0 BloqueinVisto false BloqueoutVisto false while indice lt 16 return 0 Definici n Algoritmo aleatorio Cuando no pueda conectar por una MI lo intenta con la siguiente Se conectar o bloquear Par metros de entrada Devuelve Int sy public int resuelveAlgoritmoC int puntero 0 int indice 0 int ok1 0 0k2 0 while indice lt 16 cogemos elemento del vector Conexiones con Conexiones conexiones elementAt indice miramos en que bloque de entrada esta int bloqueIn con getEntrada getBloque miramos que bloque de salida le toca int bloqueOut con getSalida getBloque puntero int Math random 16 1 miramos en que bloquee intermedio le toca puntero 4 for int a 0 a lt indice a if bloqueln Conexiones conexiones elementAt a getEntrada getBloque f while ok1 ok2 lt 4 f if compruebaMI puntero 9 4 bloqueIn No se puede por este bloque de entrada ir por la MI puntero 4 okl puntero tt a 0 BloqueinVisto true Archivo C Documents and Settings Gregorio Escritorio opcionA Algoritmo java else break if okl 4 ok1 ok2 gt 4 bloqueo DepurarConexiones indice return 1 if bloqueOut Conexiones conexiones elementAt a getSalida
25. conexiones add con conexiones remove numero Definici n Algoritmo de Rotaci n intenta primero por la MI 0 luego la 1 Cuando no pueda conectar por una MI lo intenta con la siguiente Se conectar o bloquear Par metros de entrada Devuelve int A public int resuelveAlgoritmoA f int puntero 0 int indice 0 int ok1 0 0k2 0 while indice lt 16 f cogemos elemento del vector Conexiones con Conexiones conexiones elementAt indice miramos en que bloque de entrada esta int bloqueIn con getEntrada getBloque miramos en que bloque de salida le toca int bloqueOut con getSalida getBloque miramos en que bloque intermedio le toca puntero 4 for int a 0 a lt indice a if bloqueln Conexiones conexiones elementAt a getEntrada getBloque comprobamos si coincide algun bloque de entrada de los anteriores con el actual f while okl ok2 lt 4 f if compruebaMI puntero 3 4 bloqueIn miramos que el bloque de entrada pertenece ala MI actual f No se puede por este bloque de entrada ir por la MI puntero 4 okl puntero a 0 con a 0 comparamos el nuevo puntero con la E desde el principio BloqueinVisto true elm f break if ok1l 4 okl ok2 gt 4 bloqueo DepurarConexiones indice returm i if bloqueOut Conexiones conexiones elementAt a
26. de entradas y salidas de la conexi n actual Entrada anterior Entrada actual Salida anterior Salida actual Ranuras tiempo discreto transcurrido en obtener eventos tObserva tObserva ranuras volumen encurso ranuras TC volumenTotal tObserva TP perdidas tObserva pasos Fin Figura 37 Diagrama de flujo del m todo paso 67 Cap tulo 5 Implementaci n de la aplicaci n e private double acortaNumero double T M todo para acortar un n mero evitando as n meros con muchos decimales le quitamos precisi n al n mero pero podemos escribirlo sin problemas en etiquetas y similares e private String precisa String s M todo para evitar n meros del orden 10 o menores y poder mostrarlos escritos sin el s mbolo E n siendo n el orden de la exponencial Por ejemplo el n mero 1 222222E 6 despu s de pasar por este m todo ser a 0 00000122 Para sta clase no se ha representado su diagrama UML por no considerarlo apropiado debido a las numerosas variables de clase como botones etiquetas etc que contiene y que no son determinantes a la hora de la comprensi n del programa Dialogo Clase que extiende de JDialog creada para que se muestre cada vez que haya que avisar al usuario del programa de cualquier eventualidad por ejemplo de que introduzca datos correctos en las cajas de texto e public void CentraDialogo Sirve para situar y dar tama o al Dialogo e public vo
27. ent c borraBloqueOut sal break case 3 d borraBloqueIn ent d borraBloqueOut sal break case 4 e borraBloqueIn ent e borraBloqueOut sal break case 5 f borraBloqueln ent f borraBloqueQut sal break case 6 g borraBloqueIn ent g borraBloqueOut sal break Archivo C Documents and Settings Gregorio Escritorio opcionB Algoritmo2 java Definici n Comprueba si esta la entrada modulo en la MI valor Par metros de entrada int valor MI int modulo entrada Devuelve boolean Ey private boolean compruebaMI int valor int modulo switch valor case 0 return a utilizaIn modulo case 1 return b utilizaIn modulo case 2 return c utilizaIn modulo case 3 Def d utilizaIn modulo case 4 return e utilizaIn modulo case 5 return f utilizaIn modulo case 6 return g utilizaIn modulo default return false Definici n Comprueba si esta la salida modulo en la MI valor Par metros de entrada int valor MI int modulo salida Devuelve boolean sut private boolean compruebaMO int valor int modulo switch valor case 0 return a utilizaOut modulo case 1 return b utilizaOut modulo case 2 return c utilizaOut modulo case 3 return d utilizaOut modulo case 4 return e utilizaOut modulo case 5 return f utilizaOut modulo case 6
28. img dibuja g2 fe Definici n Situamos el JDialog en el centro de la pantalla y ocupandola toda 1024 x 768 p xeles Par metros de entrada JDialog jf Devuelve uh private void pantallaCompleta JDialog jf f Dimension screenSize Toolkit getDefaultToolkit getScreenSize Dimension frameSize jf getSize if frameSize height gt screenSize height frameSize height screenSize height if frameSize width gt screenSize width frameSize width screenSize width jf setSize screenSize width screenSize height jf setVisible true Definici n Le pasa al objeto imagen el vector conexiones Par metros de entrada Vector vc ser el de conexiones Devuelve ty private void setConexiones Vector vc img setConexiones vc Definici n M todo para la rellenar la tabla de conexiones Par metros de entrada Devuelve t private void rellenaTabla for int i 0 i lt Tama oVector 1 i Conexiones conx Conexiones con elementAt i int IdIn conx getEntrada getId int bloqueIn conx getEntrada getBloque int IdOut conx getSalida getId int bloqueOut conx getSalida getBloque int Matriz conx getMI int fila 0 int columna 0 String indice Integer toString i 1 Archivo C Documents and Settings Gregorio Escritorio opcionA opcionA java String idEntrada S
29. mmy any CUY CUY Coe CUY nm uy Gee Gn Ng m 201 my r LA new Label new Label new Label new Label new Label new Label y mew habel new Label new Label new Label y private int entradaAnterior salidaAnterior private boolean fuedesconectado Definici n Constructor Par metros de entrada Devuelve ti public Paneles f super llamamos al costructor de la clase JPanel GridLayout GridLayoutl new GridLayout etiq length etiq 0 length GridLayoutl setHgap 2 separamos los labels horizontalmente por una distancia 27 GridLayoutl setVgap 2 separamos los labels verticalmente por una distancia 2f setLayout GridLayout1 for int i 0 isetiq length i f for int 3 0 j lt etiq 0 length j f Archivo C Documents and Settings Gregorio Escritorio opcionB Paneles java etiq il 3 setBackground Color white etiq il 3 setAlignment Label CENTER add etig i j if 18 3 i 7 amp amp i 12 if 9 lt 3 11 3 gt 7 amp amp 3 12 etiq i j setBackground new java awt Color 102 153 255 if i gt 3 amp amp i lt 8 i 11 amp amp i 16 if G gt 3 8 3 lt 8 9 gt 11 amp amp 3 lt 16 etiq i j setBackground new java awt Color 102 153 255 Font new Font Arial Font BOLD 16 15 setFont f Definici
30. new Vector a new MatrizIntermedia 0 b new MatrizIntermedia 1 c new MatrizIntermedia 2 d new MatrizIntermedia 3 bo Definici n Rellena el vector conexiones con objetos del tipo Conexiones que constar n de entradas y salidas del 1 al 16 distribuidas al azar y procurando que nos se repitan ninguna entrada y ninguna salida Par metros de entrada Devuelve tf public void generaConexiones este m todo crea un vector de Conexiones con entradas y salidas del 1 al 16 desordenadas procurando que nos se repitan tanto entradas como salidas conexiones removeAllElements inicializamos el vector int con 0 while con 16 int numero int Math random 16 1 int sumador 0 for int a 0 a lt conexiones size a f if numero Conexiones conexiones elementAt a getSalida getld sumador else break if sumador conexiones size conexiones addElement new Conexiones new Entrada con 1 new Salida numero con desordenar Definici n Desordena el vector de conexiones Par metros de entrada ox OF Devuelve private void desordenar Archivo C Documents and Settings Gregorio Escritorio opcionA Algoritmo java for int a 0 a lt 50 att int numero int Math random 16 Conexiones con Conexiones conexiones elementAt numero
31. perdidas Gq tigE entrada getId 1 setForeground new java awt Color 204 0 0 tiqS salida getId 1 setForeground new java awt Color 204 0 0 ont fuente new Font Arial Font BOLD 15 tigE entrada getId 1 setFont fuente tiqS salida getId 1 setFont fuente entradaAnt entrada getld 1 salidaAnt salida getld 1 oo oO oO obtendremos el TC y TP double volumen volumen encurso ranuras volumenTotal volumenTotal volumen TC volumenTotal tObserva tr fico cursado TC acortaNumero TC evitamos que el nuemro sea muy largo no mas de 8 decimales JLabel20 setText Double toString TC TP perdidas 120 tObserva String STP precisa Double toString TP if STP length gt 8 STP STP substring 0 9 si el numero tiene mas de 4 decimales nos quedamos con lo 3 1 try TP Double parseDouble STP catch NumberFormatException nfe 24 TP No es un numero Archivo C Documents and Settings Gregorio Escritorio opcionB opcionC java pu JLabel22 setText STP pasos Definici n Par metros de entrada Devuelve tg private void Reiniciar Reinicia variable limpia diagrama de conexiones y etiquetas tiqE tiqs tiqE tiqs 0000 Label JLabel Label Label q Ey Es entradaAnt setForeground null salidaAnt setForeground null entradaAnt setFont null s
32. que representa al factor de actividad del programa En el caso de que nuestro n mero tenga m s de tres decimales se ignorar n los siguientes decimales Si se introducen caracteres no apropiados como letras u otros o un n mero fuera del rango saltar un mensaje de aviso e JTextField2ActionPerformed Se ejecutar cuando introduzcamos algo en la caja de texto JTextField2 Llamamos al m todo Reiniciar Se debe introducir un valor entero entre O y 10 000 este valor ser el n mero de ejecuciones que se podr n realizar seguidas cuando se pulse el bot n de 1000 ejecuciones cambiando por tanto el texto del bot n al introducir estos datos Tambi n sirve como l mite para el bot n Ejecuci n en el caso de que no se encuentre un bloqueo en ese n mero de ejecuciones Tanto si se introduce un n mero con decimales caracteres inapropiados o un n mero mayor de 10 000 saltar un mensaje de aviso e jButtonlActionPerformed M todo que se ejecuta al pulsar el bot n Paso Adelante Se llama al m todo paso de esta misma clase e jButton2ActionPerformed M todo que se ejecuta al pulsar el bot n Ejecuci n Con este bot n se realizan ejecuciones hasta que se produzca un bloqueo o se hayan superado las m ximas ejecuciones permitidas seguidas Se llamar a m todo paso hasta que la conexi n est bloqueada En el caso de que se superen superado las m ximas ejecuciones permitidas seguidas se most
33. DE DISTRIBUCI N ETAPA DE SALIDA ii Figura 19 Dibujo proveniente del archivo modificado al pasar por el m todo paintComponent Graphics g 36 Cap tulo 5 Implementaci n de la aplicaci n Imagen imagen1 TexturePaint rectangulo Rectangle con Vector contador int ruta String Imagen static getBufferedlmage String fichero Component c Bufferedlmage static cargalmagen Image imagen Component c boolean paintComponent Graphics g dibuja Graphics2D g2 NumerosFondo Graphics2D g2 LineasFondo Graphics2D g2 PintaLinea Graphics2D g2 setConexiones Vector vectorconexiones setContador int cont Figura 20 Diagrama UML de la clase Imagen de la opci n A OpcionA Clase principal de nuestro programa que extiende de JDialog En ella se encuentra el m todo main En esta clase vamos a definir e inicializar todos los objetos del entorno gr fico tales como botones cajas de texto pesta as etiquetas tablas y un objeto de la clase Imagen Muchos de estos objetos estar n escuchando eventos Vamos a citar los m todos que estos objetos proporcionan para que se ejecuten cuando se recibe el evento e jMenuItemlActionPerformed Se ejecuta al seleccionar la opci n A del men Algoritmo Llama al m todo Reiniciar que pone a O todas las variables limpia la tabla los paneles de estad sticas y la imagen Finalmente deja seleccionado el algoritmo A
34. En caso de desconexi n mostrar de forma parpadeante la conexi n a desconectar Por lo tanto por cada evento se tiene una celda del que se sabe su fila entrada y columna salida Dentro de esa celda est el estado de dicho evento y su matriz de distribuci n en caso de que no se haya bloqueado En esta opci n se tiene la posibilidad de aumentar las matrices intermedias hasta siete Uno de los datos que el programa nos pide es lo que el Matswit llama Tr fico Ofrecido m s tarde veremos que este no es tal Debido a esto se obtienen nuevos valores tales como Tr fico Cursado Tr fico Perdido conexiones en curso perdidas y m ximas conexiones que ha habido en curso La distintas posibilidades de ejecuci n son e Step Se podr ir paso a paso en la ejecuci n se mostrar en cada turno si ha habido conexi n desconexi n o bloqueo e Run Empezar la simulaci n y finalizarla cuando se produzca un evento de bloqueo e Fast Run Finalizar la simulaci n transcurrido un n mero determinado de eventos 15 Cap tulo 3 An lisis y dise o Tambi n se ofrece la posibilidad de guardar los resultados obtenidos en archivos 16 Cap tulo 4 mbito de aplicaci n 4 1 Elecci n del lenguaje de desarrollo En primer lugar para escoger el lenguaje de desarrollo elegido se tomaron en cuenta los siguientes lenguajes C C es un lenguaje creado a principios de los afios 70 para escribir el sistema operativo Unix
35. MI MI Definici n Devuelve por que MI conect Par metros de entrada Devuelve int MI e Archivo C Documents and Settings Gregorio Escritorio opcionB Conexiones java public int getMI return MI Definici n Se pone la conexi n como conectada Par metros de entrada Devuelve tg public void Conectar conectado true Definici n Se pone la conexi n como desconectada Par metros de entrada Devuelve E public void Desconectar conectado false Definici n Dice si la conexi n esta conectada o no Par metros de entrada Devuelve boolean conectado public boolean getConectado return conectado Definici n Se pone la conexi n como bloqueada Par metros de entrada Devuelve Ey public void Bloquear 1 bloqueado true Definici n Se pone la conexi n como desbloqueada Par metros de entrada Devuelve ua public void Desbloquear f bloqueado false Definici n Dice si la conexi n esta bloqueada o no Par metros de entrada Devuelve boolean bloqueado public boolean getBloqueado return bloqueado Archivo C Documents and Settings Gregorio Escritorio opcionB MatrizIntermedia java MatrizIntermedia java iua import java util Vector public class MatrizIntermedia private int id private Vector in out Def
36. Pane add Labe119 tBounds 160 480 480 tBounds 320 480 e P Pane add Labe121 e P Label22 Font Labelll setText CONEXIONES 390 BU getContentPane add Labelll 420 60 getContentPane add Label12 abel13 setBounds 160 420 Label13 30 BOLD 30 30 30 60 30 tContentPane add Labell4 abell5 setBounds 280 420 Labell5 30 30 0 39 7 tContentPane add Labell6 Labell7 setBounds 400 420 Label17 30 90 Label120 30 30 30 30 60 20 7 100 400 30 30 25 12 JLabel23 setText Introduce el m ximo de ejecuciones a realizar JLabel23 setBounds 160 600 Label23 JTextField2ActionPerformed evt JTextField2 setBounds 555 600 60 25 getContentPane add JTextField2 Label24 setFont 3 Label25 setFont 3 Label24 setForeground Color blue Label25 setForeground Color blue Font 4 new Font bold Font BOLD 16 Label26 setFont 4 Label26 setForeground Color black Label25 setBounds 420 573 80 15 getContentPane add Label25 Label24 setBounds 415 20 70 15 getContentPane add Label24 Label26 setBounds 625 10 270 25 getContentPane add Label26 jButtonl setText PASO ADELANTE jButtonl addActionListener new java awt event ActionListener public void actionPerformed java awt event ActionEv
37. a los dos diferentes programas implementados La ventana del men de inicio tiene este aspecto UNIVERSIDAD POLIT CNICA DE CARTAGENA E T S de Ingenier a de Telecomunicaci n rea de Ingenier a Telem tica DEMOSTRACI N Y EJERCICIOS DE UN CONMUTADOR MULTIETAPA OPCI N A Conmutador multietapa en modo simple OPCI N B Conmutador multietapa en modo continuo Figura 44 Men de inicio del SIMUCOM Mediante esta botonera se ejecutan cada una de las aplicaciones que componen el simulador A 3 Opci n A Este simulador es un simulador de un conmutador multietapa en modo simple esto es que la duraci n de las llamadas es infinita No se termina la llamada durante la ejecuci n El simulador muestra el encaminamiento de llamadas las cuales son elegidas al azar dentro de nuestro conmutador de 3 etapas Aspecto de la opci n A iniciada 80 Anexo A Manual de usuario MATSWIT OPCION A Algoritmo 4 xl ETAPA DE ENTRADA ETAPA DE DISTRIBUCI N ETAPA DE SALIDA conexi n ENTRADA SALIDA ousrrrsuci n i E E E E MEDIA DE CONEXIONES Introduce aqu el n de ejecuciones a realizar PASO ADELANTE EJECUCION NUEVA EJECUCION CONEXIONES N CONEXIONES PORCENTAJE REINICIAR 1000 EJECUCIONES PASO ATR S Figura 45 Opci n A del SIMUCOM Los elementos de la opci n A s
38. bloqueado a false Se le asigna la matriz intermedia por la que se realiza dicha conexi n La a adimos al vector de eventos Conexiones conevt new Conexiones con true false 9 puntero nmi eventos addElement conevt Se anade la entrada y la salida a los vectores in y out de la Matriz de distribuci n escogida 9 seleccionaMI puntero nmi bloqueIn bloqueOut Se incrementa la variable puntero para que apunte a la siguiente matriz Se incrementa la variable nconexiones para llevar la cuenta de las conexiones realizadas Se inicializan las variables ok1 y ok2 8 public int AlgoritmoB Esta m todo implementa el algoritmo B o secuencial La descripci n es similar a la del m todo AlgoritmoA pero teniendo en cuenta que las matriz intermedia por la que se va a intentar conectar es la 0 por lo que cada vez que se haga una conexi n no ha habido bloqueo pondremos el puntero a 0 9 public int AlgoritmoC Esta m todo implementa el algoritmo C o aleatorio La descripci n es similar a la del m todo AlgoritmoA pero teniendo en cuenta que las matriz intermedia por la que se va a intentar conectar es una al azar por lo que cada vez que se haga una conexi n no ha habido bloqueo se le da a la 53 Cap tulo 5 Implementaci n de la aplicaci n variable puntero un valor al azar entre 1 y 4 por nmi que representa al n mero de matrices intermedias de la simulaci n
39. class Paneles extends JPanel Label etiq new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label Fy new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label fi new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label Ie new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label Tos new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label new
40. command line arguments i public static void main String args Simucom new Simucom Simucom setSize 608 410 Simucom setResizable false Simucom show Nariables declaration do not modify java jar opcionB jar evt private EscudoTeleco escudo2 private EscudoUPCT escudol private javax swing JButton jButton2 private java awt Label labell private javax swing JButton jButtonl private javax swing JLabel jLabel4 private javax swing JLabel jLabel3 private javax swing JLabel jLabel2 private javax swing JLabel jLabell Archivo C Documents and Settings Gregorio Escritorio menu inicio Simucom java private static Simucom Simucom End of variables declaration Archivo C Documents and Settings Gregorio Escritorio menu inicio EscudoUPCT java EscudoUPCT java AU import java awt import javax swing import java io File public class EscudoUPCT extends Canvas Image img EscudoUPCT String fichero f img getToolkit getImage Imagenes File separator fichero public void paint Graphics g Tama o ajustable al tama o del canvas g drawImage img 0 O this getSize width this getSize height this Archivo C Documents and Settings Gregorio Escritorio menu iniciolXEscudoTeleco jJava EscudoTeleco java AU import java awt import javax swing import java io File public class EscudoTeleco extends Canvas I
41. como algoritmo de encaminamiento e jMenultem2ActionPerformed Se ejecuta al seleccionar la opci n B del men Algoritmo Llama al m todo Reiniciar que pone a O todas las variables limpia la tabla los paneles de estad sticas y la imagen Finalmente deja seleccionado el algoritmo B como algoritmo de encaminamiento 37 Cap tulo 5 Implementaci n de la aplicaci n e jMenuItem3ActionPerformed Se ejecuta al selecionar la opci n C del men Algoritmo Llama al m todo Reiniciar que pone a 0 todas las variables limpia la tabla los paneles de estad sticas y la imagen Finalmente deja seleccionado el algoritmo C como algoritmo de encaminamiento e jButtonlActionPerformed Se ejecuta al pinchar en el bot n Paso Adelante Seg n pinchamos en el bot n se va incrementando un contador que tendr un tope en el tama o del vector de conexiones Este contador hace que se pinten en el dibujo el numero de conexiones que indica Se va escribiendo tambi n en la tabla las conexiones realizadas e jButton2ActionPerformed Se ejecuta al pinchar en el bot n Ejecuci n Pinta en el dibujo y escribe en la tabla todas las conexiones hechas en esa ejecuci n e jButton3ActionPerformed Se ejecuta al pinchar en el bot n Nueva Ejecuci n A ade a las etiquetas de estad sticas el numero de conexiones realizadas en la ejecuci n en curso Limpia la tabla de conexiones y la imagen Por lti
42. con anterioridad discreta representada por ranuras Las variables aleatorias se han tratado siguiendo una distribuci n uniforme La forma correcta ser a haber hecho una distribuci n exponencial o de Poisson pero se puede demostrar matem ticamente que la distribuci n de Poisson coincide con la binomial para un n mero de experimentos muy alto y probabilidad muy baja As tomando las ranuras lo suficientemente pequefias cada una de un segundo y eventos de probabilidades muy bajas el programa se comporta como si se hubiera programado con la distribuci n de Poisson 74 Cap tulo 6 Uso acad mico de la aplicaci n 6 6 Trabajo a realizar por el alumno Seleccionando la opci n A del simulador e Para la red de conexi n que se representa responder a las siguientes preguntas Tiene accesibilidad completa Porqu Cu ntos puntos de cruce requiere y qu porcentaje de ahorro representa respecto a una matriz cuadrada 16x16 e Describir el modo de operaci n de los distintos algoritmos Etiquetar cada uno de dichos algoritmos mediante una de las siguientes palabras rotante aleatorio o secuencial e Seleccionar uno de los algoritmos por ejemplo el a y explicar mediante un ejemplo porqu se introducen situaciones de bloqueo interno Para cada algoritmo intentar 10 secuencias de forma r pida y observar cu ntas han tenido xito Comparar los resultados obtenidos Qu algoritmo prev mejor desde el punto de vista de bl
43. el uso de un array de im genes e public void dibuja Graphics2D g2 Este m todo se encarga de dibujar las l neas que se van a ir pintando en la ejecuci n del programa Se vale del m todo PintaLinea 92 e public void PintaLinea Graphics2D g2 Seg n el valor de la entrada la salida el bloque de entrada el de salida y la matriz de distribuci n pinta en azul las l neas que forman el camino tomado por las conexiones a pintar e public void NumerosFondo Graphics2D g2 Pinta los n meros del 1 al 16 que representan las entradas y salidas Estos n meros se quedan permanentemente en el panel y sobre el dibujo 35 Cap tulo 5 Implementaci n de la aplicaci n Tambi n escribe sobre cada etapa de distribuci n su nombre e public void LineasFondo Graphics2D g2 Dibuja permanentemente sobre la imagen todas las l neas que unen a las etapas de distribuci n en un color gris claro e public void setConexiones Vector vectorconexiones Se le asigna a la variable con de nuestra clase la variable vectorconexiones e public void setContador int cont Se le asigna a la variable contador de nuestra clase la variable cont e public void paintComponent Graphics g ste m todo sirve para pintar los objetos que a adimos al dibujo tales como el recuadro que lo enmarca los n meros de fondo las l neas de fondo y el nombre de las etapas de distribuci n ETAPA DE ENTRADA ETAPA
44. esta clase a ado a un JPanel una imagen fichero jpg y la encuadro en un rect ngulo xf package opcionA import java awt import java awt event import java awt geom import java awt image import javax swing import java util Vector import java io File public class Imagen extends JPanel private TexturePaint imagenl una imagen dentro de un rectangulo o figura geom private Rectangle rectangulo private Vector con private int contador private String ruta Definici n Constructor String ruta del directorio donde se encuentra la imagen BufferedImage imagen Rectangle rectangulo para recuadrar imagen TexturePaint imagenl Devuelve ah public Imagen ruta new String Imagenes File separator sincrossbar jpg BufferedImage imagen getBufferedImage ruta this rectangulo Recuadro para encuadrar el dibujo new Rectangle 10 10 imagen getWidth imagen getHeight imagenl new TexturePaint imagen rectangulo Par metros de entrada Definici n M todo para crear un objeto Image a partir de un fichero que se guarda en un buffer Par metros de entrada String fichero Component c Devuelve y public static BufferedImage getBufferedImage String fichero Component c Image imagen c getToolkit getImage fichero cargalmagen imagen c BufferedImage buffImagen new BufferedImage imagen getWidth c imagen ge
45. false dispose Archivo C Documents and Settings Gregorio Escritorio opcionA DIALOGO java Definici n Introduce un mensaje en la etiqueta Par metros de entrada String ms mensaje de aviso Devuelve sy public void mensaje String ms jLabell setText ms Definici n Situa el Dialogo 87 public void CentraDialogo f Dimension screenSize Toolkit getDefaultToolkit getScreenSize Dimension frameSize this getSize if frameSize height gt screenSize height frameSize height screenSize height if frameSize width gt screenSize width frameSize width screenSize width this setLocation screenSize width frameSize width 2 screenSize height frameSize height 2 this setSize screenSize width 3 screenSize height 5 this setVisible true param args the command line arguments T Nariables declaration do not modify private JPanel buttonPanel private JButton okButton private JLabel jLabell End of variables declaration private int returnStatus RET_CANCEL Anexo B C digo fuente de la aplicaci n C digo Fuente de la aplicaci n B 3 Opci n B 133 Anexo B C digo fuente de la aplicaci n 134 Archivo C Documents and Settings Gregorio Escritorio opcionB Entrada java Entrada java ur public class Entrada private int id bloque Definici n Constructor Par metr
46. filas y 16 columnas representando a las entradas y salidas respectivamente en las casillas del diagrama representamos la matriz de distribuci n de la conexi n con su n mero correspondiente en color negro si hay conexi n en rojo si se desconecta y con una B si hay bloqueo Este diagrama representa las conexiones que hay en curso en ese momento Por lo tanto cada conexi n queda representada mirando el n mero de la fila y columna que estar n pintados en rojo en ese instante para saber la entrada y salida Dentro del diagrama miraremos para saber el n mero de matriz de distribuci n la primera es la 0 la segunda la 1 y as o una B en el caso de que la conexi n no se haya podido llevar a cabo Dispondremos de las siguientes pesta as e Algoritmo Para introducir el algoritmo de encaminamiento A B o C e Matrices Intermedias Para asignar al conmutador el n mero de matrices de distribuci n De cuatro a siete Se pueden usar los siguientes botones e Paso Adelante Realiza un evento de conexi n desconexi n o bloqueo seg n se determine e Ejecuci n Realiza eventos hasta que haya un bloqueo En caso de que no lo haya en un n mero m ximo de ejecuciones se parar al llegar a ese n mero indic ndolo mediante un mensaje de aviso e 1000 ejecuciones Producir tantos eventos como le hayamos indicado por defecto 1000 e Reiniciar Reinicia todos los valores los pone al valor que ten an a iniciar el programa
47. id 1 4 Definici n Devuelve la salida Par metros de entrada ox ok x RM Devuelve int id la salida public int getId return id Definici n Devuelve el bloque de salida Par metros de entrada Devuelve int bloque bloque de salida public int getBloque f return bloque Archivo C Documents and Settings Gregorio Escritorio opcionA Conexiones java Conexiones java ie public class Conexiones private Entrada in private Salida out private int MI matriz intermedia por la que pasa la conexi n Definici n Constructor Par metros de entrada Entrada in contiene el n mero de entrada Salida out contiene el n mero de salida Devuelve y public Conexiones Entrada in Salida out this in in this out out Definici n Introduce la MI Par metros de entrada int MI Devuelve m public void setMI int MI f this MI MI Definici n Obtiene el objeto de entrada Par metros de entrada KAHA FH OF Devuelve Entrada in E public Entrada getEntrada return in Definici n Obtiene el objeto de salida Par metros de entrada Devuelve Salida out E public Salida getSalida f return out Definici n Obtiene la MI Par metros de entrada Devuelve int MI wy public int getMI ob
48. la opci n B del mismo en una sola ventana con una mayor comprensi n de los experimentos en modo simple El c digo fuente se ha dejado disponible quedando as el simulador abierto a posibles modificaciones y mejoras Al haber programado la aplicaci n en Java se ha conseguido que sea portable por lo que podemos ejecutarlo en cualquier sistema operativo Windows LINUX Machintosh Solaris donde Sun Microsystems haya desarrollado m quina virtual Java 7 2 L neas futuras La especificaci n de este Proyecto Final de Carrera consisti en una serie de objetivos claramente definidos y que se han conseguido en su totalidad El definir unas l neas futuras para l va a depender de las necesidades did cticas que se puedan ir encontrando durante la utilizaci n de la herramienta a lo largo de los cursos acad micos Se tiene que producir un proceso de retroalimentaci n en el que los usuarios alumnos y profesores dependiendo de hipot ticas necesidades futuras que el simulador pudiera ofrecer Esta retroalimentaci n permitir a modificaciones en el programa para ajustarlo a necesidades futuras 77 Cap tulo 7 Conclusiones y l neas futuras 78 Anexos Anexo A Manual de usuario A 1 Introducci n La aplicaci n ha sido programada en el lenguaje de programaci n Java por lo que se debe tener instalado el JRE Java Runtime Environment para su ejecuci n JRE es el entorno m nimo para ejecutar programas Ja
49. m todos e public void setMI int MI Asigna a la variable de clase MI el valor introducido en la funci n public void setMI int BloqueIntermedio f this MI MI e public Entrada getEntrada Devuelve el objeto del tipo Entrada in e public Salida getSalida Devuelve el objeto del tipo Salida out e public int getMI Devuelve MI e public void Conectar Pone la variable conectado a true e public void Desconectar Pone la variable conectado a false e public boolean getConectado Obtenemos la variable conectado 45 Cap tulo 5 Implementaci n de la aplicaci n e public void Bloquear Pone la variable bloqueado a true e public void Desbloquear Pone la variable bloqueado a false e public boolean getBloqueado Obtenemos la variable bloqueado Conexiones in Entrada out Salida conectado boolean bloqueado boolean MI int Conexiones Entrada in Salida out Conexiones Conexiones c boolean conectado boolean bloqueado int MI setMl int MI getEntrada Entrada getSalida Salida getMI int Conectar Desconectar getConectado boolean Bloquear Desbloquear getBloqueado boolean Figura 25 Diagrama UML de la clase Conexiones de la opci n B MatrizIntermedia Como par metro en el constructor hay que pasarle un entero que se llama id
50. matriz est ocupada se intentar con la siguiente y as Si se llegara a tercera matriz y no se pudiera conectar estar amos en una situaci n de bloqueo no habr amos podido conectar por ninguna Por su comportamiento se denomina algoritmo secuencial 3 Algoritmo C M todo aleatorio Escoge la matriz de distribuci n al azar Si no se pudo conectar por ninguna de las matrices 4 intentos fallidos la conexi n se bloquear a y la ejecuci n de la secuencia habr a terminado Las posibilidades de ejecutar el programa son e Step en la que se avanza en la ejecuci n estableciendo conexiones de una en una paso a paso e Run en la que se ejecuta el simulador hasta que se bloquee o se hayan realizado las 16 conexiones sin problemas e Fast Run es igual que Run pero no dibuja las conexiones solo se reflejan en el cuadro inferior Las conexiones realizadas se muestran en una tabla que consta de las entradas salidas y matrices de distribuci n de cada una de las 16 posibles conexiones 3 3 Opci n B La Opci n B realiza un n mero de ejecuciones determinado el proceso de la Opci n A Se reflejan los resultados finales en un cuadro de estad sticas 13 Cap tulo 3 An lisis y dise o Statistics of 3 number of successful connections Figura 4 Matswit Opci n B Cada vez que se realiza una ejecuci n se pueden conseguir de 4 a 16 conexiones As el cuadro contiene el n mero de ejecuciones que s
51. r 665 99 g2 drawString s665 116 g2 drawString ign 665 154 g2 drawString r 665 ITL r r g2 drawString 665 188 g2 drawString Rena ia d g2 drawString g2 drawString g2 drawString g2 drawString g2 drawString g2 drawString g2 drawString g2 drawString ETAPA DE ENTRADA 67 35 g2 drawString ETAPA DE DISTRIBUCI N 282 35 g2 drawString ETAPA DE SALIDA 540 35 dibujamos las lineas grises de fondo Definici n Dibuja las lineas de fondo Par metros de entrada Graphics2D g2 Devuelve el private void LineasFondo Graphics2D 92 g2 setPaint Color lightGray g2 draw new Line2D Double 170 62 304 62 g2 draw new Line2D Double 170 79 304 151 g2 draw new Line2D Double 170 96 304 240 g2 draw new Line2D Double 170 113 304 329 g2 draw new Line2D Double 170 151 304 79 g2 draw new Line2D Double 170 168 304 168 g2 draw new Line2D Double 170 185 304 257 g2 draw new Line2D Double 170 202 304 346 g2 draw new Line2D Double 170 240 304 96 g2 draw new Line2D Double 170 257 304 185 g2 draw new Line2D Double 170 274 304 274 g2 draw new Line2D Double 170 291 304 363 g2 draw new Line2D Double 170 329 304 113 g2 draw new Line2D Double 170 346 304 202 g2 draw new Line2D Double 170 363 304 291 g2 draw new Line2D Double 170 380 304 380 g2 dra
52. return g utilizaOut modulo default return false Definici n Seg n la variable algortim escogemos un algoritmo u otro Par metros de entrada Archivo C Documents and Settings Gregorio Escritorio opcionB Algoritmo2 java Devuelve a public void AlgoritmoEscogido switch Algoritm case 0 f AlgoritmoA break case l AlgoritmoB break case 2 f AlgoritmoC break default System out println Error Definici n Cambiamos desde opcionC la variable TO Par metros de entrada double sto nuevo TO Devuelve T public void setTO double sto f TO sto Definici n Cambiamos desde opcionC la variable algoritm Par metros de entrada int a Devuelve ti public void setAlgoritm int a f if a gt 0 amp amp a lt 2 Algoritm a else System out println Error en setAlgoritm esto no va pasar Definici n Devuelve el vector con los eventos Par metros de entrada Devuelve Vector eventos E public Vector getEventos f return eventos Definici n Devuelve la duraci n en ranuras de un evento Par metros de entrada Devuelve int tiempo a public int getTiempo f return tiempo Archivo C Documents and Settings Gregorio Escritorio opcionB Paneles java Paneles java ef import java awt import javax swing import java applet import java awt Font public
53. si hubo conexi n desconexi n o se bloque Se escribe en cada paso en las etiquetas de eventos la entrada la salida y el estado del evento conectado bloqueado o desconectado Tambi n se va contando con unas variables el n mero de veces que se ha producido un tipo de evento Con estas variables se obtienen datos como el m ximo n mero de conexiones que ha habido en curso o las que hay actualmente Con la variable ranuras obtenida de la clase Algoritmo2 en la que se llama tiempo se pueden calcular una serie de datos estad sticos como Tr fico Perdido o Tr fico Cursado En esta clase tambi n se pintan de rojo las etiquetas que corresponden a la numeraci n de entradas y salidas En cada ejecuci n se cambia a rojo el color de la etiqueta de entrada y de salida 66 Cap tulo 5 Implementaci n de la aplicaci n Dejamos como al principio los n de entradas y salidas de la conexi n anterior Resolvemos conexi n y la obtenemos de la posici n pasos vector eventos La pintamos en el diagrama totales Conectado true Si 4 conexiones Desconectado true 88 Bloqueado false desconexiones No Desconectado true 88 Bloqueado true perdidas Y encurso conexiones desconexiones encurso gt maxima maxima encurso v Resaltamos los n
54. si pulsamos en la imagen private void jPanelMousePressed java awt event MouseEvent evt Tama oVector Contadorl para el caso de que se hayan realizado las 16 conexiones sin bloqueo queremos que repinte todo if TamafioVector 16 img setContador TamafioVector g img getGraphics g2 Graphics2D g img update g2 img dibuja g2 Exit the Application private void exitForm java awt event WindowEvent evt try 1 Obtienes un Runtime Runtime r Runtime getRuntime Le mandas ejecutar el comando Process p r exec java jar SIMUCOM jar No redirijas la salida a un fichero no hace falta System exit 0 catch Exception e System exit 0 Archivo C Documents and Settings Gregorio Escritorio opcionA opcionA java Definici n Para cuando de active la ventana repinta la imagen ES private void windowActivate Tama oVector Contadorl para el caso de que se hayan realizado las 16 conexiones sin bloqueo queremos que repinte todo if Tama oVector 16 img setContador TamafioVector g img getGraphics g2 Graphics2D g img update g2 img dibuja g2 Definici n Para cuando de desactive la ventana repinta la imagen f private void windowDeactivate Tama oVector Contadorl if Tama oVector 16 img setContador TamafioVector g img getGraphics g2 Graphics2D g img update 92
55. variable TO que representa al factor de actividad del programa y mediante la suposici n de que la llamada dura por media dos minutos Se recorre el vector conexiones buscando alguna que no est conectada Cuando la encuentre mediante la probabilidad de conexi n se decidir si se debe intentar la conexi n Si es as de llamar al m todo AlgoritmoEscogido que intentar conectar mediante el algoritmo que se est usando Si la conexi n est conectada se mira la probabilidad de desconexi n y la compramos con un n mero aleatorio para desconectarla Cuando se desconecte o bloquee una conexi n en el caso de no poder conectar se renovar n las conexiones que no est n conectadas Cuando se llegue al final del vector conexiones tama o 16 se volver a analizarlo desde el principio y se incrementar la variable tiempo que simboliza las ranuras Todo esto se realiza hasta que se obtenga una conexi n desconexi n o bloqueo El siguiente diagrama de flujo clarifica el m todo resuelveAlgoritmos 50 Cap tulo 5 Implementaci n de la aplicaci n v logro false yt Se definen las probabilidades de conectar y de desconectar pconectar TO 16 120 TO 119 pdesconectar 1 0 120 0 Se analiza la conexi n Conexi n conectada poc Se genera n mero Aleatorio Aleatorio rae Se genera n mero Aleatori
56. 0 ok2 0 BloqueinVisto false BloqueoutVisto false while indice lt 16 return 0 Definici n Algoritmo secuencial se intenta conectar siempre por la matriz 0 Cuando no pueda conectar por una MI lo intenta con la siguiente Se conectar o bloquear Par metros de entrada Devuelve int a public int resuelveAlgoritmoB f int puntero 0 int indice 0 int ok1 0 0k2 0 while indice lt 16 cogemos elemento del vector Archivo C Documents and Settings Gregorio Escritorio opcionA Algoritmo java Conexiones con Conexiones conexiones elementAt indice miramos en que bloque de entrada esta int bloqueIn con getEntrada getBloque miramos que bloquee de salida le toca int bloqueOut con getSalida getBloque miramos en que bloque intermedio le toca puntero 4 for int a 0 a lt indice a if bloqueln Conexiones conexiones elementAt a getEntrada getBloque f while ok1 ok2 x 4 f if compruebaMI puntero 3 4 bloqueIn f kf x No se puede por este bloque de entrada ir por la MI puntero 4 okl puntero a 0 con a 0 comparamos el nuevo puntero con la E desde el principio BloqueinVisto true else f break if ok1l 4 okl ok2 gt 4 bloqueo DepurarConexiones indice returm i if bloqueOut Conexiones conexiones elemen
57. 04 62 89 Matriz g2 draw new Line2D Double 90 62 17 Idin 1 4 150 62 17 Matriz break case 1 g2 draw new Line2D Double 170 151 17 Matriz 304 79 89 Matriz g2 draw new Line2D Double 90 151 17 IdIn 1 3 4 150 151 17 Matriz break case 2 g2 draw new Line2D Double 170 240 17 Matriz 304 96 89 Matriz g2 draw new Line2D Double 90 240 17 IdIn 1 3 4 150 240 17 Matriz break case 3 g2 draw new Line2D Double 170 329 17 Matriz 304 113 89 Matriz g2 draw new Line2D Double 90 329 17 IdIn 1 3 4 150 329 17 Matriz break default System out println Error switch Matriz case 0 g2 draw new Line2D Double 325 62 17 bloqueIn 385 62 17 bloqueOut break case 1 g2 draw new Line2D Double 325 151 17 bloqueln 385 151 17 bloqueOut break case 2 g2 draw new Line2D Double 325 240 17 bloqueln 385 240 17 bloqueOut break case 3 g2 draw new Line2D Double 325 329 17 bloqueln 385 329 17 bloqueOut break default System out println Error 3 3 switch bloqueOut case 0 Archivo C Documents and Settings Gregorio Escritorio opcionA Imagen java g2 draw new Line2D Double 406 62 89 Matriz 540 62 17 Matriz g2 draw new Line2D Doubl
58. 2 Devuelve public g2 setS if contador Par metros de entrada troke new BasicStroke 1 8f Definici n Va dibujando las l neas Graphics2D g2 void dibuja Graphics2D g2 grosor de linea 1 8 16 solo para que pinte todo si no hay bloqueo esto se puede hacer por q nunca se bloquea en el 16 PintaLinea 92 Af con tador con size para que no pinte la conexion bloqueada contador PintaLinea 92 if con tador lt con size PintaLinea 92 else No HAY ka Definicion Parametros de entrada Devuelve hay mas conexiones hechas Dibuja los n meros de fondo Graphics2D g2 private void NumerosFondo Graphics2D g2 nameros de entrada draws draws draws draws draws draws draws draws draws draws draws tring tring tring tring tring tring tring tring tring tring tring g2 I 8 G5 Cio 38 B8 3 35 89 Mn 35 1157 Co 38 155 6 38 171 uy 385 100 19 38 208 9 35 249 10 35 260 115 38 290 Archivo C Documents and Settings Gregorio Escritorio opcionA Imagen java g2 drawString 12 35 294 g2 drawString l13 35 332 g2 drawString 14 35 349 g2 drawString 15 35 366 g2 drawString 16 35 383 n meros de salida oe 1 6657 659 g2 drawString 665 Qa g2 drawString
59. 3 Datos y resultados de la opci n B 87 Figura 64 Bot n Paso adelante de la opci n B 87 Figura 65 Bot n Ejecuci n de la opci n B 88 Figura 66 Bot n 1000 ejecuciones de la opci n B 88 Figura 67 Bot n Reiniciar de la opci n B 88 172
60. Bounds 310 210 50 30 getContentPane add JLabel8 metemos las conectadas 0 E DD OD tk MD OD tk Cau 440 E pun Eu Y Label9 setFont 2 Label 9 setForeground Color black Label9 setText DATOS Y RESULTADOS Label9 setBounds 50 300 250 30 getContentPane add Label9 DATOS Y RESULTADOS Label10 setBounds 70 350 260 30 getContentPane add Label10 JTextFieldl addActionListener new java awt event ActionListener public void actionPerformed java awt event ActionEvent evt JTextFieldlActionPerformed evt Archivo C Documents and Settings Gregorio Escritorio opcionB opcionC java JTextFieldl setBounds 350 350 07 getContentPane add JTextFieldl Font f3 new Font Ar Labelll setFont f3 Labelll setBounds 70 Label12 setBounds 90 tContentPane add J be114 setBounds 210 MD OD tk tContentPane add J be116 setBounds 330 MD OD tk Em Ae Eu pr E getContentPane ada J Label18 setFont 3 Label18 setBounds 70 Labell9 s getConten Label20 etConten abel21 s etConten Label22 etContentPane add J tBounds 90 ane ada J Bounds 250 utotuned do Q ya Ka y getContentPane add J tal 420 420 Labell8 setText TR FICO 450 80 getContentPane add Label18 480 60
61. ESCUELA T CNICA SUPERIOR DE INGENIER A DE TELECOMUNICACI N UNIVERSIDAD POLIT CNICA DE CARTAGENA Proyecto Fin de Carrera SIMUCOM Simulador de un Conmutador Multietapa AUTOR Gregorio Ca avate Cruzado DIRECTOR Francesc Burrull i Mestres Enero 2004 Gregorio Ca avate Cruzado Francesc Burrull i Mestres SIMUCOM Simulador de un Conmutador Multietapa Simulador Conmutaci n Espacial Res men Un elemento esencial en las redes de conmutaci n de circuitos son los conmutadores propiamente dichos Como complemento a su estudio se pueden utilizar simuladores did cticos que permiten una mejor comprensi n de los conmutadores as como la obtenci n de datos estad sticos En este proyecto se ha realizado un simulador de un conmutador multietapa herramienta que servir para la docencia en la Escuela T cnica Superior de Ingenier a en Telecomunicaciones E T S I T de la Universidad Polit cnica de Cartagena U P C T disponiendo adem s del c digo fuente de la herramienta Titulaci n Ingeniero T cnico de Telecomunicaci n Intensificaci n Telem tica Departamento Departamento de Tecnolog as de la informaci n y las comunicaciones Fecha de Presentaci n Enero 2004 ndice General 1 INTRODUCCI N 7 2 OBJETIVOS 9 3 AN LISIS Y DISE O 11 3 1 Ingenier a inversa 11 3 2 Opci n A 12 3 3 Opci n B 13 3 4 Opci n C 14 4 MBITO DE APLICACI N 17 4 1 Elecci n del lenguaje de desarr
62. Files For Help press F1 In 1 Colt ms num Figura 6 Kawa 19 Cap tulo 4 mbito de aplicaci n 20 Cap tulo 5 Implementaci n de la aplicaci n 5 1 Descripci n Se desarrolla una herramienta de simulaci n de un conmutador espacial multietapa Empezaremos ofreciendo un men de inicio para poder seleccionar una de las dos opciones que vamos a desarrollar T G4 SIMUCOM UNIVERSIDAD POLIT CNICA DE CARTAGENA E T S de Ingenier a de Telecomunicaci n rea de Ingenier a Telem tica DEMOSTRACI N Y EJERCICIOS DE UN CONMUTADOR MULTIETAPA OPCI N A Conmutador multietapa en modo simple OPCI N B Conmutador multietapa en modo continuo Figura 7 Men de inicio del SIMUCOM La clase que implementa este men de inicio se llama InicioCE Se trata de una clase que extiende de JFrame y que contiene 2 botones Cada uno de estos botones tiene asociado un m todo que ejecuta el comando que abre cada una de las 2 opciones de nuestro simulador Por ejemplo para el m todo del bot n que ejecuta la opci n A tendr amos Process p r exec java opcionA Las dos opciones son 21 Cap tulo 5 Implementaci n de la aplicaci n 5 2 Opci n A Con 4 matrices crossbar 4X4 tanto en la entrada como en la salida como en la etapa intermedia Podremos ver el comportamiento de tres algoritmos de distribuci n mediante unas l neas que ir n mostrando el camino elegido para realiz
63. IALOGO java awt Frame parent boolean modal super parent modal constructor de la superclase initComponents return the return status of this dialog one of RET OK or RET CANCEL public int getReturnStatus return returnStatus Definici n Inicia los componentes del Dialogo 7 private void initComponents buttonPanel new JPanel okButton new JButton jLabell new JLabel setTitle MENSAJE DE AVISO addWindowListener new java awt event WindowAdapter public void windowClosing java awt event WindowEvent evt closeDialog evt Na buttonPanel setLayout new java awt FlowLayout java awt FlowLayout RIGHT okButton setText OK okButton addActionListener new java awt event ActionListener public void actionPerformed java awt event ActionEvent evt okButtonActionPerformed evt Na buttonPanel add okButton getContentPane add buttonPanel java awt BorderLayout SOUTH jLabell setText getContentPane add jLabell java awt BorderLayout CENTER pack Definici n Cierra el dialogo cuando pulsas el bot n OK El private void okButtonActionPerformed java awt event ActionEvent evt doClose RET OK Definici n Cierra el dialogo ay private void closeDialog java awt event WindowEvent evt doClose RET CANCEL private void doClose int retStatus returnStatus retStatus setVisible
64. Integer parselnt Sejecuciones catch NumberFormatException nfe aviso new Frame d new DIALOGO aviso true d mensaje Hay que introducir un N MERO entero d CentraDialogo if ejecuciones lt 10000 amp amp ejecuciones gt 0 f Reiniciar jButton3 setText ejecuciones EJECUCIONES nejecuciones ejecuciones else aviso new Frame d new DIALOGO aviso true d mensaje Hay que introducir un n mero entero menor de 10 000 d CentraDialogo Definici n el private void jButton4ActionPerformed java awt event ActionEvent evt Reiniciar Reiniciar Definici n da private void jButton3ActionPerformed java awt event ActionEvent evt Bot n 1000 ejecuciones int 1 0 do paso i Archivo C Documents and Settings Gregorio Escritorio opcionB opcionC java while i nejecuciones Definicion private void jButton2ActionPerformed java awt event ActionEvent evt Bot n Ejecucion hasta bloqueo int 1 0 do f paso itt jwhile Conexiones eventos elementAt pasos 1 getBloqueado false amp amp i lt nejecuciones if i nejecuciones f aviso new Frame d new DIALOGO aviso true d mensaje No hubo bloqueo en nejecuciones ejecuciones d CentraDialogo Definici n it private void jButtonlActionPerformed java awt event ActionEvent evt Bot n
65. Label new Label Fy new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label I new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label Fy new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label new Label LA new Label new Label new Label new La
66. MatrizIntermedia 0 b new MatrizIntermedia 1 c new MatrizIntermedia 2 d new MatrizIntermedia 3 e new MatrizIntermedia 4 break case 6 a new MatrizIntermedia 0 b new MatrizIntermedia 1 c new MatrizIntermedia 2 d new MatrizIntermedia 3 e new MatrizIntermedia 4 f new MatrizIntermedia 5 break case 7 a new MatrizIntermedia 0 b new MatrizIntermedia 1 c new MatrizIntermedia 2 d new MatrizIntermedia 3 e new MatrizIntermedia 4 f new MatrizIntermedia 5 g new MatrizIntermedia 6 break default System out println Error Introduzca un n 2 que se producen de entrada de cada M I de entrada de cada M I que tarda cada evento realizadas con exito Su par metro numero de matrices intermedias entre 4 y 7 Archivo C Documents and Settings Gregorio Escritorio opcionB Algoritmo2 java Definici n Desordenamos las conexiones para que las entradas no sean en orden Par metros de entrada Devuelve E private void desordenarEnSal for int a 0 a lt 50 a barajamos unas 50 veces int numero int Math random entradas size cojo una conexion al azar del vector conexiones Entrada en Entrada entradas elementAt numero entradas add en a ado al vector la entrada escogida al azar entradas remove numero borro esa entrada con del vector de esta forma estara
67. Out conx getSalida getId int bloqueOut conx getSalida getBloque int Matriz conx getMI int fila 0 int columna ct er eh er ck CA 0 ntb i 1 Tablel setValueAt Tablel setValueAt Tablel setValueAt Tablel setValueAt pie Ei null null nall null columna columna 1 columna 2 Columna 3 ooo00 tring indice Integer toString i 1 tring idEntrada Integer toString IdIn tring idSalida Integer toString IdOut tring matriz Integer toString Matriz Tablel setValueAt indice i columna Tablel setValueAt idEntrada i columna 1 Tablel setValueAt idSalida i columna 2 Tablel setValueAt matriz i columna 3 E 2 CC CIO N 1 else optamos por no avisar que ya no quedan conexiones por no ser muy necesario y poder perjudicar a la gr fica det aviso new Frame AL d new DIALOGO aviso true d mensaje No hay conexiones ff d CentraDialogo Archivo C Documents and Settings Gregorio Escritorio opcionA opcionA java Definici n Se ejecuta al pinchar el bot n EJECUTAR n SECUENCIAS 1000 por defecto private void jButton5ActionPerformed java awt event ActionEvent evt for int i 0 i lt NumeroSecuencias i Algor new Algoritmo nueva tirada Algor generaConexiones escogeAlgoritmo con Algor getConexiones OA setConexiones con Tama oVector
68. Si y Se obtiene la conexi n en la posici n ndice del vector Se obtiene la entrada y salida de la conexi n y Se obtienen las entradas de las conexiones anteriores a indice Coincide alguna con el bloque de entrada actual D ok1 ok2 lt 4 No Si Se repite el Conexi n como desconectada y Se a ade la nueva conexi n al v Bloqueo bloque de entrada en la MI bloqueada Si vector de eventos SetSalida ok1 MI Coincide alguna con el y Fin ok1 0 ok2 0 nconexiones SetSalida Figura 29 Diagrama de flujo del m todo AlgoritmoB 56 Si bloque de salida actual No No Se repite el bloque de salida Si en la MI Conexi n como conectada l Se a ade la nueva conexi n al vector de eventos Bloqueo ok2 Se introduce en la MI la entrada y la salida Conexi n como desconectada y MI Se introduce la MI en la conexi n actual bloqueada indice Se a ade la nueva conexi n al MI 0 vector de eventos Cap tulo 5 Implementaci n de la aplicaci n p indice lt 16 No Fin Si y Se obtiene la conexi n en la posici n ndice del vector Se obtiene la
69. TO JTextField2 new JTextField para meter maximo de ejecuciones Label9 new Label Label10 new Label Factor de Actividad TO de 0 b a 15 9 ds Label11 new Label Label12 new Label En Curso JLabel13 new JLabel Labe114 new Label M ximo JLabel15 new JLabel Labell6 new Label Perdidas JLabell7 new JLabel Labell8 new Label Labell9 new Label Cursado JLabel20 new JLabel Label21 new Label Perdido JLabel22 new JLabel JLabel23 new JLabel Label24 new Label ENTRADAS Label25 new Label SALIDAS Label26 new Label DIAGRAMA DE CONEXIONES ImageIcon logo new Imagelcon setIconImage logo getImage panel new Paneles Imagenes File separator upctrelieve jpg Archivo C Documents and Settings Gregorio Escritorio opcionB opcionC java getContentPane setLayout null addWindowListener new java awt event WindowAdapter public void windowClosing java awt event WindowEvent evt exitForm evt Na jpanel panel setBounds 470 40 528 528 getContentPane add panel 470 int valorl 480 int valor2 450 for int i 0 i etigS length i if i 9 valorl 477 valor2 444 etigS i setBounds valorl i 33 570 20 20 getContentPane add etigS i 470 etigE i setBounds valor2 47 i 33 20 20 getContentPane add etiqE i 470 texto de ay
70. WindowListener new java awt event WindowAdapter public void windowClosing java awt event WindowEvent evt exitForm evt Ni getContentPane add escudol escudol setBounds 0 0 130 130 getContentPane add escudo2 escudo2 setBounds 130 0 130 130 Labell setText UNIVERSIDAD POLIT u00c9CNICA DE CARTAGENA Labell setToolTipText null Labell setBackground new java awt Color 204 204 204 etContentPane add jLabel1 Labell setBounds 260 0 340 40 AG Gh Les etContentPane add jLabel2 Label2 setBounds 260 40 340 40 uu etContentPane add jLabel3 Label3 setBounds 261 87 340 40 uu jButtonl setText OPCINu00d3N A Conmutador multietapa en modo simple jButtonl addActionListener new java awt event ActionListener public void actionPerformed java awt event ActionEvent evt jButtonlActionPerformed evt p getContentPane add jButtonl jButtonl setBounds 0 220 600 30 jButton2 setText OPCI u00d3N B Conmutador multietapa en modo continuo jButton2 addActionListener new java awt event ActionListener public void actionPerformed java awt event ActionEvent evt jButton2ActionPerformed evt Na getContentPane add jButton2 jButton2 setBounds 0 250 600 27 Label2 setText E T S de Ingenier u00eda de Telecomunicaci u00f3n Label3 setText u00clrea de Ing
71. a MI ok1 0 ok2 0 BloqueinVisto false BloqueoutVisto false return 0 Definici n Introduce en una MI la entrada y salida asignada Par metros de entrada int valor MI int entrada bloque entrada int salida bloque salida Devuelve ri private void seleccionaMI int valor int entrada int salida f switch valor f case 0 a introduceBloqueIn entrada Archivo C Documents and Settings Gregorio Escritorio opcionB Algoritmo2 java a introduceBloqueOut salida break case 1 b introduceBloqueln entrada b introduceBloqueOut salida break case 2 c introduceBloqueIn entrada c introduceBloqueOut salida break case 3 d introduceBloqueln entrada d introduceBloqueOut salida break case 4 e introduceBloqueIn entrada e introduceBloqueOut salida break Oase 5 f introduceBloqueIn entrada f introduceBloqueOut salida break case 6 g introduceBloqueIn entrada g introduceBloqueOut salida break Definici n Borra de una MI la entrada y salida asignada Par metros de entrada int valor MI int entrada bloque entrada int salida bloque salida Devuelves El private void borraInOut int valor int ent int sal switch valor case 0 a borraBloqueln ent a borraBloque0ut sal break case 1 b borraBloqueln ent b borraBloqueOut sal break case 2 c borraBloqueIn
72. a de un lenguaje multiplataforma Los programas Java se ejecutan sin variaci n sin recompilar en cualquier plataforma soportada Windows UNIX Mac Es un lenguaje compilado e interpretado El compilador produce un c digo intermedio independiente del sistema denominado bytecode El int rprete a c digo m quina dependiente de la plataforma se llama Java Virtual Machine JVM y debe ser instalada en nuestro ordenador Adem s es gratuito Creado por SUN Microsystems que distribuye gratuitamente el producto base denominado JDK Java Development Kit o actualmente J2SE Java 2 Standard Edition La API distribuida con el J2SE es muy amplia y tiene su c digo fuente disponible Tambi n nos da 17 Cap tulo 4 mbito de aplicaci n bastantes posibilidades a la hora de manejar entornos gr ficos muy necesarios a priori para nuestro programa Lenguaje de desarrollo elegido C se descart por no ser orientado a objetos y no tener una portabilidad total Se ha decidido por Java sobre C debido a la portabilidad de Java que no depende de la plataforma usada pudiendo usar las clases ya compiladas tanto en UNIX como Windows Fue decisivo tambi n el alto nivel de la programaci n orientada a objetos propio de Java 4 2 Elecci n del entorno de desarrollo Una vez escogido JAVA para la elecci n del entorno de programaci n se tuvieron en cuenta los siguientes Kawa Entorno de m ltiples ventanas Se parte de un proyec
73. aAnt setForeground null etigE entradaAnt setFont null etigS salidaAnt setFont null Algor resuelveAlgoritmos resolvemos y usamos eventos Algor getEventos Conexiones evento Conexiones eventos elementAt pasos Entrada entrada Entrada evento getEntrada Salida salida Salida evento getSalida panel setConexion evento pintamos la conexion totales ranuras Algor getTiempo tiempo que ha pasado desde el ultimo evento tObserva tObserva ranuras t total de observacion que vamos acumulando if Conexiones eventos elementAt pasos getConectado true f conexiones JLabel3 setText Conectado if Conexiones eventos elementAt pasos getConectado false amp amp Conexiones eventos elementAt pasos getBloqueado false f JLabel3 setText Desconectado desconexiones if Conexiones eventos elementAt pasos getConectado false amp amp Conexiones eventos elementAt pasos getBloqueado true JLabel3 setText Bloqueado perdidas int encurso conexiones desconexiones JLabel4 setText entrada getId con salida getId JLabel6 setText Integer toString totales JLabel8 setText Integer toString conexiones JLabell3 setText Integer toString encurso if encurso gt maxima maxima encurso Label15 setText Integer toString maxima Label17 setText Integer toString
74. aci n return false e utilizaOut Indica si el valor que le pasamos como par metro estaba ya almacenado en el vector de salidas de nuestra matriz intermedia devolviendo true en caso afirmativo Devuelve false en el caso de que se pueda utilizar dicha matriz intermedia esto significa que no se utiliz una misma matriz de entrada 2 veces para nuestra matriz intermedia public boolean utilizaOut int valor for int i 0 i lt out size i int s Integer out elementAt i intValue if valor Integer out elementAt 1 intValue return true return false Nuevos m todos e public void borraBloqueln int ent Borra el bloque de entrada del vector de entradas de la matriz intermedia Esto se puede hacer debido a que en este vector de entradas en teoria y debido a al clase Algoritmo2 no va a haber mas de un tipo de bloque de entrada Por eso al borrarlo del vector se esta seguro de que es ese bloque el que se quiere borrar Este m todo se debe a que el programa se va a contemplar la opci n de desconexi n e public void borraBloqueOut int sal Borra el bloque de salida del vector de salidas de la matriz intermedia Esto se puede hacer debido a que en este vector de salidas en teor a y debido a al clase Algoritmo2 no va a haber mas de un tipo de bloque de salida Por eso 48 Cap tulo 5 Implementaci n de la aplicaci n al borrarlo del vecto
75. alidaAnt setFont null 3 setText 4 setText 6 setText 8 setText ee y y y y Label Label Label JLabel 113 setText 115 setText 117 setText 120 setText JLabel pasos conexiones desconexiones totales 0 122 setText 0 0 ts ranuras 0 volumenTotal tObserva 0 st NN panel Limpiar eventos clear Algor Algor setTO TO 0 Label10 setText Factor de Actividad JTextFieldl setText new Algoritmo2 MI TO de 0 1 a 15 9 Algor generaConexion nueva conexion escogeAlgoritmo Definici n M todo para acortar un n mero Par metros de entrada Devuelve double double TO el n mero modificado private double acortaNumero double T Deb ty private String ST Double toString T if ST length gt 7 ST ST substring 0 8 si el numero tiene mas de decimales nos quedamos con los 3 1 try T Double parseDouble ST catch NumberFormatException nfe e ser un munero return 0 return T Definici n poder sacarlos como 0 00000122 Par metros de entrada Devuelve String modificado String precisa String s String e String E E s substring s length 3 metodo para evitar numeros del tipo 1 222222E 6 y s length 2 DM Archivo C Documents and Settings Gregorio Escritorio opcionB opcionC java if e compareTo E 0 f Str
76. alidas devuelve false si se puede utilizar no se utiliz la MI por un mismo bloque 2 veces Par metros de entrada int valor bloque de salida a comprobar Devuelve boolean 7 public boolean utilizaOut int valor for int i 0 i lt out size itt int s Integer out elementAt i intValue if valor Integer out elementAt i intValue return true return false Definici n indica si el valor introducido estaba ya almacenado en el vector Archivo C Documents and SettingsAGregoriolEscritoriolopcionAWMatrizIntermedia java Archivo C Documents and Settings Gregorio Escritorio opcionA Algoritmo java Algoritmo java Tg import java util Vector public class Algoritmo f public Vector conexiones queremos leer esta variable cuando dibujemos private MatrizIntermedia a b c d las 4 matrices intermedias de nuestro programa private boolean BloqueinVisto false Con esta variable nos aseguramos que se mire el bloque de entrada de cada M Intermedia private boolean BloqueoutVisto false Con esta variable nos aseguramos que se mire el bloque de entrada de cada M Intermedia Constr ctor se crea un objeto del tipo Vector que se llama conexiones y que contendr objetos del tipo Conexiones Tambi n creamos 4 objetos del tipo MatrizIntermedia a b C d Par metros de entrada ng public Algoritmo conexiones
77. amino que ha seguido la conexi n desde su entrada hasta la salida Va rellenando en la tabla la conexi n entrada salida y matriz de distribuci n correspondientes Ejecuci n Muestra todas las conexiones hechas en esa ejecuci n tanto en el dibujo como en la tabla Nueva ejecuci n Empieza una nueva ejecuci n dispuesta para ser pintada y mostrada A ade a las estad sticas la ejecuci n anterior Reiniciar Limpia las tablas y los dibujos 1000 ejecuciones Realiza seguidas 1000 ejecuciones para a adir a las estad sticas ver Caja de Texto n mero de ejecuciones Paso atr s Es complementario a Paso adelante Muestra las conexiones anteriores borrando la actual Pesta a Algoritmo Sirve para escoger el algoritmo de encaminamiento A B o C Caja de Texto n mero de ejecuciones Podemos modificar el n mero de ejecuciones seguidas a realizar mediante el bot n de 1000 ejecuciones La etiqueta del bot n se ajusta al nuevo valor Comentaremos las distintas clases con sus m todos que se han programado para implementar este apartado Despu s de la descripci n de cada clase y sus m todos representaremos un diagrama UML de esa clase y diagramas de flujo de los m todos que consideremos necesario Entrada En su constructor hay que pasarle un entero que llamaremos id que representa el n mero de entrada Con este id obteniendo su residuo de la divisi n entre 4 id Yo 4 obtenemos un valor que guardare
78. ar la conexi n Este camino tambi n se refleja en una tabla que anota el n mero de conexi n la entrada la salida y la matriz de distribuci n NSO D AZTM SALIDAS Figura 8 Matriz crossbar 4X4 Las matrices crossbar no se van a representar de la forma tradicional esto es con las lineas de entrada y salidas cruzadas formando una matriz de tantas filas como entradas y tantas columnas como salidas y con un punto en cada interseccion de fila con columna La forma que se representara sera en forma rectangular con las entradas a un lado y las salidas en el lado opuesto Esto se ha decidido asi para facilitar la visualizaci n del camino seguido por la conexi n De este modo se esconden los detalles internos de las matrices crossbar y aumenta la facilidad de seguimiento del encaminamiento de los algoritmos alcanzando uno de los objetivos que se plantearon en un principio VPO M PRO rap Figura 9 Matriz crossbar 4X4 usada en la implementaci n 22 Cap tulo 5 Implementaci n de la aplicaci n Paneles Una serie de paneles muestran los siguientes datos estad sticos El n mero de veces que se han realizado determinadas conexiones de 4 a 16 El porcentaje en que se produjo cada una La media total de conexiones hechas por simulaci n El programa contendr una serie de botones cajas de texto y pesta as que se enumeran y describen a continuaci n Botones Paso adelante Muestra cada vez que se pulsa el c
79. ariable puntero para que apunte a la siguiente matriz En caso de bloqueo llamamos al m todo private void DepurarConexiones int indiceMax 4 public int resuelveAlgoritmoB Este metodo implementa el algoritmo B o secuencial La descripci n es similar a la del al m todo resuelveAlgoritmoA pero teniendo en cuenta que las matriz intermedia por la que vamos a intentar conectar es la 0 por lo que cada vez que hagamos una conexi n no ha habido bloqueo pondremos el puntero a 0 5 public int resuelveAlgoritmoC Este m todo implementa el algoritmo C o aleatorio La descripci n es similar a la del al m todo resuelveAlgoritmoA pero teniendo en cuenta que las matriz intermedia por la que vamos a intentar conectar es una al azar por lo que cada vez que hagamos una conexi n no ha habido bloqueo le daremos a puntero un valor al azar entre 1 y 16 puntero int Math random 16 1 Simplificando el c digo en java se obtienen los 3 diagramas de flujo de los 3 ltimos m todos consiguiendo de esta manera mayor claridad 29 Cap tulo 5 Implementaci n de la aplicaci n No Fin Si y Se obtiene conexi n del vector Se obtiene la entrada y salida de la conexi n Y Se obtienen las entradas de las conexiones anteriores hasta indice Coincide alguna con nuestro bloque de entrada
80. ariable llamada puntero apunte a la siguiente matriz intermedia ya que nuestro algoritmo es el A o de rotaci n Para saber la matriz intermedia que estamos analizando haremos puntero 4 con lo que la variable entera puntero se incrementa pasando de la matriz 3 a la O al aumentarla Con las salidas repetimos las mismas operaciones pero aumentando la variable ok2 Si una de estas variables ok1 U ok2 son iguales a 4 o su la suma de ambos supera o iguala a 4 se habr producido un bloqueo Esto es as porque dada una matriz intermedia el algoritmo empieza comprobando si es posible 28 Cap tulo 5 Implementaci n de la aplicaci n conectar la matriz de entrada a alguna matriz intermedia Cada vez que no se consigue conexi n se incrementa ok1 Una vez conseguida la conexi n suponiendo que se haya conseguido se continua por la siguiente matriz intermedia a la utilizada con las matrices de salida esta vez incrementando ok2 Al final de cada una de las iteraciones que hemos hecho para comprobar que podemos conectar nuestra entrada y salida por alguna matriz intermedia hemos comprobado que no hay bloqueo a adimos la entrada y la salida a los vectores in y out de la Matriz de distribuci n escogida En la conexi n actual de nuestro vector de conexiones le asignamos a la variable Bloquelntermedio de esa conexi n el valor de la matriz intermedia actual con el m todo SetMI puntero 4 de la clase Conexiones Incrementamos la v
81. arle un entero que se llama id que representa el n mero de entrada Con este id obteniendo su residuo de la divisi n entre 4 id 3 4 se tiene un valor que se guarda en la variable entera bloque que representa el bloque de entrada M todos e public int getId Devuelve id e public int getBloque Devuelve bloque Entrada id int bloque int Entrada int id getld int getBloque int Figura 23 Diagrama UML de la clase Entrada de la opci n B Salida En su constructor hay que pasarle un entero que se llamar id que representa el n mero de salida Con este id obteniendo su residuo de la divisi n entre 4 id 4 se tiene un valor que guardaremos en la variable entera bloque que representa el bloque de salida M todos e public int getId Devuelve id e public int getBloque 43 Cap tulo 5 Implementaci n de la aplicaci n Devuelve bloque Salida id int bloque int Salida int id getld int getBloque int Figura 24 Diagrama UML de la clase Salida de la opci n B Conexiones Variables de clase in del tipo Entrada out del tipo Salida conectado y bloqueado del tipo boolean y MI del tipo entero Esta clase es la representaci n de una conexi n con su entrada su salida su matriz intermedia MI y variables que indican si la conexi n esta conectada o bloqueada Definimos dos construct
82. bel 0 new JLabel 0 Label 0 Label 0 new JLabel 0 new JLabel 0 new JLabel 0 Label 0 new JLabel 0 new JLabel 0 new JLabel 0 Label 0 new JLabel 0 new JLabel 0 new JLabel 0 Label 0 tatic int estadisticas new int 13 tatic int Contadorl 0 NumeroSecuencias 1000 Archivo C Documents and Settings Gregorio Escritorio opcionA opcionA java private static int Tama oVector el tama o del vector conexiones private static int Algoritmo 0 El numero Algoritmo indica el tipo de alg escogido 0 A 1 B 2 C private static float ejecuciones 0 cuentaEjecuciones 0 private static Algoritmo Algor private static Vector con private static Graphics g private static Graphics2D g2 private static opcionA OA private static DIALOGO d private static Frame aviso End of variables declaration Archivo C Documents and Settings Gregorio Escritorio opcionA DIALOGO java DIALOGO java NG import javax swing import java awt public class DIALOGO extends JDialog A return status code returned if Cancel button has been pressed public static final int RET_CANCEL 0 A return status code returned if OK button has been pressed public static final int RET_OK 1 Definici n Constructor Par metros de entrada Frame parent boolean modal Devuelve vector de conexiones pad public D
83. bel new Label new Label new Label new Label new Label new Label we new Label new Label new Label new Label we r new Label new Label new Label new Label new Label we new Label new Label new Label new Label we we new Label new Label new Label new Label we new Label new Label new Label we new Label new Label new Label new Label new Label new Label new Label we new Label new Label new Label new Label we new Label new Label new Label mor new Label new Label any CUY any dy 7 7 n m um m ww om 77 m 7 dy 7 0 ow a um Um dy H T Ng y 09 Gre 79 um wu uh 7 pu qn Um Qu n uU 7 n Qu 109 um m n err m CUE o uU um uy new Label new Label new Label CV CV pu uy Crs nm My um cen Cu Ga p om Qu 7 uo CU 7 CA yy um uy pu dy CVY om pu on qu 7 Qn any CUY any pu pu ry UY CHE
84. ci n de la aplicaci n public Algoritmo conexiones new Vector a new MatrizIntermedia 0 b new MatrizIntermedia 1 Q Il new MatrizIntermedia 2 o ll new MatrizIntermedia 3 M todos 1 public void generaConexiones Este m todo rellena el vector conexiones con objetos del tipo Conexiones que constar n de entradas y salidas del 1 al 16 distribuidas al azar y procurando que no se repitan ninguna entrada y ninguna salida Para distribuir al azar las conexiones del vector llamamos al m todo desordenar 2 private void desordenar Este m todo coge un elemento del vector al azar llamando a la funci n Math random creando un numero aleatorio entre O y 1 que multiplic ndolo por el n mero de elementos del vector y redondeando indica un elemento del vector Este elemento se a ade al final del vector y se borra de la posici n original Esta operaci n se realiza 50 veces Por decirlo de alguna manera con este m todo barajamos el vector de conexiones 3 public int resuelveAlgoritmoA Este m todo implementa el algoritmo A o de rotaci n Recorremos el vector conexiones buscando una matriz de entrada que coincida con alguna de las anteriores En ese caso comprobamos que el bloque de entrada est en la matriz intermedia que deber amos escoger seg n nuestro algoritmo A En caso afirmativo aumentamos una variable entera llamada oki y hacemos que otra v
85. como algoritmo de encaminamiento e jMenultem4ActionPerformed Se ejecuta al seleccionar la opci n 4 del men Matrices Intermedias Llama al m todo Reiniciar Este m todo principalmente pone la variable MI a 4 especificando que en la simulaci n se tendr n cuatro matrices intermedias e jMenuItemb5bActionPerformed Se ejecuta al seleccionar la opci n 5 del men Matrices Intermedias Llama al m todo Reiniciar Este m todo principalmente pone la variable MI a 5 especificando que en la simulaci n se tendr n cinco matrices intermedias e jMenuItem ActionPerformed Se ejecuta al seleccionar la opci n 6 del men Matrices Intermedias Llama al m todo Reiniciar Este m todo principalmente pone la variable MI a 6 especificando que en la simulaci n se tendr n seis matrices intermedias e jMenuItem7ActionPerformed 64 Cap tulo 5 Implementaci n de la aplicaci n Se ejecuta al seleccionar la opci n 7 del men Matrices Intermedias Llama al m todo Reiniciar Este m todo principalmente pone la variable MI a 7 especificando que en la simulaci n se tendr n siete matrices intermedias e jTextFieldlActionPerformed Se ejecutar cuando introduzcamos algo en la caja de texto JTexFieldl correspondiente al factor de actividad Se llama al m todo Reiniciar Se debe introducir en la caja de texto un n mero entre 0 1 y 15 9 Este valor se guardar en la variable TO
86. conexiones e private void limpiaEstadisticas Borra el texto de las etiquetas que se encargan de reflejar las estad sticas e private void CalculaMedia float ejecuciones Calcula la media de conexiones de las ejecuciones totales que se han realizado Usa para ello el array estadisticas Escribe el resultado en la etiqueta correspondiente a la media de conexiones JLabelMedi a e private void escogeAlgoritmo M todo para decirle al objeto de la clase Algoritmo el algoritmo que se ha elegido Para la clase opcionA no se ha representado su diagrama UML por no considerarlo apropiado debido a las numerosas variables de clase como botones etiquetas etc que contiene y que no son determinantes a la hora de la comprensi n del programa Dialogo Clase que extiende de JDialog creada para que se muestre cada vez que haya que avisar al usuario del programa de cualquier eventualidad por ejemplo de que introduzca datos correctos en las cajas de texto M todos e public void CentraDialogo Sirve para situar y dar tama o al Dialogo e public void mensaje String ms Introduce el mensaje que para cada caso mas conveniente en una etiqueta dentro de Dialogo 40 Cap tulo 5 Implementaci n de la aplicaci n ES MENSAJE DE AVISO xj introduce un N MERO entero menor de 10000 pH Figura 21 Ejemplo de Dialogo Mostramos ahora la opci n A ejecutada pero sin realizar operaci n alguna
87. d seleccionaMI int valor int entrada int salida Seg n la variable valor a adiremos en un matriz intermedia u otra los valores de entrada y salida a los vectores in y out Se llama a los m todos introduceBloqueln entrada y introduceBloque0ut salida de la clase MatrizIntermedia 7 private boolean compruebaMI int valor int modulo Seg n valor llamaremos en una matriz intermedia u otra a utilizaln modulo 8 private boolean compruebaMO int valor int modulo Seg n valor llamaremos en una matriz intermedia u otra a utilizaOut modulo 9 public Vector getConexiones Devuelve el vector de conexiones 10 public void AlgoritmoEscogido int Algoritm Llamar seg n el valor de la variable Algoritm a los m todos resuelveAlgoritmoA resuelveAlgoritmoB resuelveAlgoritmoC 11 private void DepurarConexiones int indiceMax A este metodo lo Ilamamos en caso de que haya habido bloqueo y se encarga de borrar del vector conexiones las conexiones posteriores al bloqueo 33 Cap tulo 5 Implementaci n de la aplicaci n Algoritmo conexiones Vector a MatrizIntermedia b MatrizIntermedia c MatrizIntermedia d MatrizIntermedia BloqueinVisto boolean BloqueoutVisto boolean Algoritmo generaConexiones desordenar resuelveAlgoritmoA int resuelveAlgoritmoB int resuelveAlgoritmoC int selecc
88. d setMI int MI this MI MI e public Entrada get a EN trada Devuelve el objeto del tipo Entrada in e public Salida getSalida Devuelve el objeto del tipo Salida out e public int getMI Devuelve MI Conexiones in Entrada out Salida MI int setMl int MI getSalida Salida getMI int Conexiones Entrada in Salida out getEntrada Entrada Figura 12 Diagrama UML de la clase Conexiones de la opci n A MatrizIntermedia Como parametro en el constructor hay que pasarle un entero que llamamos id Las variables de clase son el entero id que representa el n mero de matriz y los objetos de la clase Vector in out Estos objetos contienen las matrices de entrada y salida que han conectado por la matriz de distribuci n a la que representa nuestra clase 25 Cap tulo 5 Implementaci n de la aplicaci n M todos e introduceBloqueIn A ade al vector de entradas in un bloque de entradas public void introduce in add new BloqueIn int bloque Integer bloque e introduceBloqueOut A ade al vector de salidas out un bloque de salidas public void introduce out add new In BloqueOut int bloque teger bloque e utilizaIn Indica si el valor introducido estaba ya almacenado en el vector de entradas devolviend
89. das 70 Cap tulo 6 Uso acad mico de la aplicaci n por ejemplo N 1000 10 puntos de cruce alcanzando para valores elevados de N soluciones demasiado costosas o no implementables Aparece entonces la necesidad de nuevas arquitecturas que permitan mantener las caracter sticas del crossbar disminuyendo el n mero de puntos de cruce Un primer intento seria usar 2 conmutadores de 1000 entradas y 100 salidas disminuyendo el n mero de puntos de cruce a 2 10 Figura 40 Conmutador de matriz cuadrada o crossbar 1000 x 100 100x 1000 Figura 41 Dos conmutadores crossbar 1000x100 y 100x1000 implementando un conmutador 1000x1000 El problema de esta soluci n es que a pesar de presentar accesibilidad total presenta bloqueo en sentido estricto imposible establecer 101 enlaces simult neos Otra posibilidad ser a desdoblar el crossbar en varios por ejemplo 10 unidades de crossbars de 100 X 10 Ahora el n mero de puntos de cruce ha disminuido a 2 X 100X10 X 10 2 X 10 pero aparece un nuevo problema adem s de bloqueo interno se ha perdido la accesibilidad total ya no existe interconexi n posible entre distintas unidades Finalmente la soluci n a utilizar es la red multietapa que representa accesibilidad completa Este tipo de red en funci n del n mero de etapas intermedias y del tama o de las etapas presentar o no bloqueo y mejorar o no el n mero de puntos de cruce 71 Cap tulo 6 Uso acad m
90. e java util Vector java lang Integer java lang Math class Algoritmo2 Vector conexiones introducimos las 16 conexiones que se realizarian en principio si no hubiera descox ni bloqueo private vectores private private en este vector se va a private private private private private private Con private Con private private private private private Definici n Par metros de entrada mu Vector entradas para manejar Vector salidas Vector eventos entradas y salidas por separado guardar los eventos en el orden a b C d f 9 de Matrices Intermedias MatrizIntermedia int nmi Numero int puntero 0 int indice 0 int Algoritm 0 el algoritmo escogido boolean BloqueinVisto false esta variable nos aseguramos que se mire el bloque boolean BloqueoutVisto false esta variable nos aseguramos que se mire el bloque int tiempo 0 variable que cuenta las ranuras int maxEventos 1 int nconexiones cuenta el n mero de conexiones boolean logro double TO 8 Constructor crea distinto n int nmi de MI seg n Devuelve public Algoritmo2 this nmi conexiones eventos int nmi nmi new Vector new Vector switch nmi case 4 a new MatrizIntermedia 0 b new MatrizIntermedia 1 c new MatrizIntermedia 2 d new MatrizIntermedia 3 break case 5 a new
91. e 560 62 17 Matriz 620 62 17 Id0ut 1 4 4 break case 1 g2 draw new Line2D Double 406 79 89 Matriz 540 151 17 Matriz g2 draw new Line2D Double 560 151 17 Matriz 620 151 17 dour Xi 4 ANII break case 2 g2 draw new Line2D Double 406 96 89 Matriz 540 240 17 Matriz g2 draw new Line2D Double 560 240 17 Matriz 620 240 17 IdOut 1 3 4 break case 3 g2 draw new Line2D Double 406 113 89 Matriz 540 329 17 Matriz g2 draw new Line2D Double 560 329 17 Matriz 620 329 17 IdOut 1 43 2 break default System out println Error end switch end for Definici n Introduce el vector de conexiones Par metros de entrada Vector vectorconexiones Devuelve public void setConexiones Vector vectorconexiones con vectorconexiones Definici n Nos pasa el contador Par metros de entrada int id n mero de entrada Devuelve public void setContador int cont contador cont Archivo C Documents and Settings Gregorio Escritorio opcionA opcionA java opcionA java A import java awt import java awt event import javax swing import javax swing JFrame import java awt image import java util Vector import java awt geom import java lang String public class opcionA extends javax swin
92. e ejecuta al pinchar el bot n Paso Adelante e private void jButtonlActionPerformed java awt event ActionEvent evt Tama oVector Algor getConexiones size if Contadorl lt Tama oVector rellena tabla Conexiones conx Conexiones con elementAt Contadorl int IdIn conx getEntrada getId int bloqueIn conx getEntrada getBloque int IdOut conx getSalida getId int bloqueOut conx getSalida getBloque int Matriz conx getMI int fila 0 int columna 0 String indice Integer toString Contadorl 1 String idEntrada Integer toString IdIn String idSalida Integer toString IdOut String matriz Integer toString Matriz jTablel setValueAt indice Contadorl columna jTablel setValueAt idEntrada Contadorl columna 1 jTablel setValueAt idSalida Contadorl columna 2 jTablel setValueAt matriz Contadorl columna 3 para el ultimo elemento del vector si no es el 16 if Contadorl Tama oVector 1 amp amp Tama oVector 16 esto se puede hacer xq no se va a bloquear en la conexion 16 nunca se haran 15 conexiones jTablel setValueAt jTablel setValueAt jTablel setValueAt jTablel setValueAt indice Contadorl columna idEntrada Contadorl columna 1 idSalida Contadorl columna 2 Bloqueo Contadorl columna 3 Contadorl es mayor que el tama o del vector se ha llegado al final de la ejecuci n else
93. e han conseguido realizar un n mero de conexiones de 4 a 16 de manera satisfactoria as como el porcentaje en que se produjeron cada una y la media total de conexiones hechas por simulaci n Tambi n se nos da la posibilidad de guardar los resultados en ficheros N tese que la opci n B simula la misma situaci n que la opci n A repetida tantas veces como se indique Por tanto se justifica uno de los objetivos del proyecto que es integrar estas 2 primeras opciones en una presentaci n com n 3 4 Opci n C En esta opci n las llamadas son de duraci n finita y en r gimen continuo por lo que en esta opci n habr situaciones de conexi n desconexi n y bloqueo Un bloqueo no supone la terminaci n de la simulaci n tan solo se habr perdido esa conexi n y el programa seguir su curso 14 Cap tulo 3 An lisis y dise o s operation of a 3 stage Figura 5 Matswit Opci n C Esto se nos muestra es un diagrama de conexiones que est formado por una matriz con 16 filas representando a las entradas y 16 columnas representando a las salidas En l se ve la entrada la salida y el n mero de matriz intermedia por la que se ha conectado Esta matriz se ver reflejada dentro de la celda que resulta de la intersecci n de la fila y columna Como en las opciones anteriores se puede escoger entre 3 algoritmos de selecci n de matriz intermedia El programa mostrar una B dentro de la celda si ha habido un bloqueo
94. eado bloqueado true private boolean conectado false private boolean bloqueado false private int MI la matriz intermedia por la que esta conectada actualmente Definici n Constructor Par metros de entrada Entrada in objeto con la entrada Salida out objeto con la salida Devuelve public Conexiones Entrada in Salida out this in in this out out Definici n Constructor sirve para crear una nueva conexion apartir de otra Par metros de entrada Conexiones c conexi n apartir de la que queremos crear otra boolean conectado Le especificamos el valor de esta variable de clase boolean bloqueado Le especificamos el valor de esta variable de clase int MI Le especificamos el valor de esta variable de clase Devuelve wy public Conexiones Conexiones c boolean conectado boolean bloqueado int MI this in c getEntrada this out c getSalida this conectado conectado this bloqueado bloqueado this MI MI Definici n Devuelve la entrada Par metros de entrada Devuelve Entrada in EY public Entrada getEntrada return in Definici n Devuelve la salida Par metros de entrada Devuelve Salida out su public Salida getSalida return out Definici n Se le especifica por que MI conect Par metros de entrada int MI Devuelve EJ public void setMI int MI this
95. el evento anterior se borra lo que hab a en su etiqueta correspondiente tenemos su entrada y salida almacenadas y seg n haya conexi n desconexi n o bloqueo en la actual se har Conexi n Pintar de negro el n mero de matriz intermedia de la conexi n en la etiqueta que le corresponde 2 MATSWIT OPCI N B Algoritmo A Matrices Intermedias 4 DERADAS DIAGRAMA DE CONEXIONES go MI BRAS maA EVENTOS En Curso Conectado 15 con 14 Total 73 Conexiones 40 DATOS Y RESULTADOS Factor de Actividad 8 de 0 1 a 15 9 CONEXIONES EnCurso 10 M ximo 11 Perdidas 3 TR FICO Cursado 6 91346 Perdido 0 0188699 SALIDAS 1 Introduce el m ximo de ejecuciones a realizar no m s de 10000 EJECUCI N 1000 EJECUCIONES REINICIAR Figura 33 Situaci n de conexi n Desconexi n Pintar de rojo el n mero de matriz intermedia de la desconexi n en la etiqueta que le corresponde 61 Cap tulo 5 Implementaci n de la aplicaci n s MATSWIT OPCI N B Figura 34 Situaci n de desconexi n Bloqueo Pintar una B roja en la etiqueta que le corresponder a si hubiera conexi n 62 Cap tulo 5 Implementaci n de la aplicaci n G2 MATSWIT OPCI N B Figura 35 Situaci n de bloqueo Al final se guarda la entrada y salida de esta conexi n en las variables de entradaAnterior y salidaAnterior e Limpiar Borra el contenido de todas las etiquetas del dia
96. enier u00eda Telem u00eltica Archivo C Documents and Settings Gregorio Escritorio menu inicio Simucom java Label4 setText pack DEMOSTRACI u00d3N Y EJERCICIOS DE UN CONMUTADOR MULTIETAPA jLabel4 setForeground new java awt Color 51 0 255 jLabel4 setFont new java awt Font Dialog 1 14 getContentPane add jLabel4 jLabel4 setBounds 60 170 480 30 labell setFont new java awt Font Arial 3 12 labell setBackground new java awt Color 160 167 164 labell setForeground new java awt Color 51 0 51 labell setText Autor Gregorio CaNu00flavate Cruzado labell setAlignment java awt Label CENTER getContentPane add labell labell setBounds 0 330 600 60 private void jButtonlActionPerformed java awt event ActionEvent evt try Obtienes un Runtime Runtime r Runtime getRuntime Le mandas ejecutar el comando Process p r exec no hace falta System exit 0 a un fichero catch Exception e Java jar opcionA jar No redirijas la salida private void jButton2ActionPerformed java awt event ActionEvent evt try Obtienes un Runtime Runtime r Runtime getRuntime Le mandas ejecutar el comando Process p r exec System exit 0 catch Exception e f Exit the Application private void exitForm java awt event WindowEvent System exit 0 param args the
97. ent evt jButtonlActionPerformed evt jButtonl setBounds 150 640 getContentPane add jButtonl 150 jButton2 setText EJECUCI N jButton2 addActionListener new java awt event ActionListener public void actionPerformed java awt event ActionEvent evt 30 jButton2ActionPerformed evt jButton2 setBounds 320 640 150 getContentPane add jButton2 30 no mas de 10000 JTextField2 addActionListener new java awt event ActionListener public void actionPerformed java awt event ActionEvent evt pas Archivo C Documents and Settings Gregorio Escritorio opcionB opcionC java jButton3 setText nejecuciones EJECUCIONES jButton3 addActionListener new java awt event ActionListener public void actionPerformed java awt event ActionEvent evt jButton3ActionPerformed evt NG jButton3 setBounds 490 640 180 30 getContentPane add jButton3 jButton4 setText REINICIAR jButton4 setForeground Color red jButton4 addActionListener new java awt event ActionListener public void actionPerformed java awt event ActionEvent evt jButton4ActionPerformed evt 7 jButton4 setBounds 690 640 150 30 getContentPane add jButton4 jMenul setText Algoritmo A jMenulteml setText A jMenuIteml addActionListener new java awt event ActionListener public void actionPerformed java awt e
98. enta las desconexiones y bloqueos entradas removeAllElements salidas removeAllElements Definici n Con este m todo se decide si se quiere desconectar o intentar conectar Par metros de entrada Devuelve wg public int resuelveAlgoritmos f logro false do double pconectar double pdesconectar pconectar TO 16 120 TO 119 llamadas de 2 min con TO 8 es 0 00826 pdesconectar 1 0 120 0 0 008333 Conexiones conect Conexiones conexiones elementAt indice if conect getConectado false esta desconectado double monedac double Math random if monedac lt pconectar f AlgoritmoEscogido logro true conecta Archivo C Documents and Settings Gregorio Escritorio opcionB Algoritmo2 java else esta conectado double monedad double Math random if monedad lt pdesconectar conect Desconectar Conexiones desconect new Conexiones conect false false conect getMI creamos un nuevo objeto igual a conect pero que no apunta a l conectado bloqueado false eventos addElement desconect borraInOut conect getMI conect getEntrada getBloque conect getSalida getBloque MI ent sal nconexiones SetSalida le dejamos puesta a esa entrada del vector conexiones una nueva salida logro true desconecta else esta conectado indice if indice 16 tiempo
99. entrada y salida de la conexi n MI Aleatorio 0 nmi v Se obtienen las entradas de las conexiones anteriores a indice Coincide alguna con el bloque de Si entrada actual ok1 ok2 4 No Si i y Se repite el Bloqueo bloque de entrada Conexi n como desconectada y en la MI Si bloqueada l Se a ade la nueva conexi n al No vector de eventos ok1 SetSalida MI C Fin No Coincide alguna con el Si bloque de salida actual No No Se repite el bloque de salida Si en la MI Conexi n como conectada Se a E nueva FERE al MR bond Bloqueo ok2 e INNOQUCE ena a entrada yna Salga Conexi n como desconectada y MI Se introduce la MI en la conexi n actual Naga bloqueada indice A S MI 0 Se a ade la nueva conexi n al m vector de eventos MI Aleatorio 0 nmi SetSalida ok1 0 ok2 0 nconexiones t Fin Figura 30 Diagrama de flujo del m todo AlgoritmoC 57 Cap tulo 5 Implementaci n de la aplicaci n 10 private void seleccionaMI int valor int entrada int salida Seg n la variable valor se a ade a un matriz intermedia u otra los valores de entrada y salida a los vectores in y out Se llama a los m todos introduceBloqueln entrada y introduceBloque0ut salida de la clase MatrizIntermedia 11 private void borraInOut int valor int ent int sal Seg n la variable valor se borran en un matriz int
100. ermedia u otra los valores de entrada y salida en los vectores in y out Se llama a los m todos borraBloqueIn entrada y borraBloqueIOut salida dela clase MatrizIntermedia Se llama a este m todo cuando se desconecte una conexi n 12 private boolean compruebaMI int valor int modulo Seg n la variable valor se llamar en una matriz intermedia u otra a utilizaIn modulo 13 private boolean compruebaMO int valor int modulo Seg n la variable valor se llamar en una matriz intermedia u otra a utilizaOut modulo 14 public void setTO double sto Se cambia la variable TO desde la clase opcionc 15 public void setAlgoritm int a Determina el algoritmo de distribuci n a escoger 16 public Vector getEventos Devuelve el vector de eventos 17 public int getTiempo Devuelve la variable tiempo que simboliza las ranuras 58 Cap tulo 5 Implementaci n de la aplicaci n Algoritmo2 conexiones Vector entradas Vector salidas Vector eventos Vector a MatrizIntermedia b MatrizIntermedia c MatrizIntermedia d MatrizIntermedia nmi int puntero int indice int Algoritm int BloqueinVisto boolean BloqueoutVisto boolean tiempo int nconexiones int logro boolean TO double 8 Algoritmo2 nmi desordenarEnSal generaConexion desordenar SetSalida getVector Vector resuelveAlgoritm
101. ew java awt event ActionListener public void actionPerformed java awt event ActionEvent evt jButton4ActionPerformed evt jButton4 setBounds 520 670 150 40 getContentPane add jButton4 jButton5 setText NumeroSecuencias EJECUCIONES jButton5 addActionListener new java awt event ActionListener public void actionPerformed java awt event ActionEvent evt jButton5ActionPerformed evt jButton5 setBounds 690 670 150 40 getContentPane add jButton5 jButton6 setText PASO ATR S jButton6 addActionListener new java awt event ActionListener public void actionPerformed java awt event ActionEvent evt jButton6ActionPerformed evt jButton6 setBounds 860 670 150 40 getContentPane add jButton6 JTextFieldl addActionListener new java awt event ActionListener public void actionPerformed java awt event ActionEvent evt JTextFieldlActionPerformed evt JTextFieldl setBounds 730 630 60 30 getContentPane add JTextFieldl jTablel setToolTipText jTablel setModel new javax swing table DefaultTableModel new Object null null null null nuil null sull null inull null null null auil null nulli null null mull null null null noll null null null mall null null inull null null null inull mull nuli null tnull null null null mull null null null ull m ll null null nu
102. exiones con entrada secuencial 1 2 3 hasta 16 y salida aleatoria de 1 a 16 sin que se repita ninguna salida 49 Cap tulo 5 Implementaci n de la aplicaci n 2 private void desordenar Este m todo coge un elemento del vector al azar llamando a la funci n Math random creando un n mero aleatorio entre O y 1 que multiplic ndolo por el n mero de elementos del vector y redondeando indica un elemento del vector Este elemento se a ade al final del vector y se borra de la posici n original Esta operaci n se realiza 50 veces Por decirlo de alguna manera con este m todo barajamos el vector de conexiones 3 private void SetSalida En este m todo se buscan en el vector conexiones las que tengan la variable conectado a false De estas conexiones se extraen las entradas y salidas y se a aden por separado a dos nuevos vectores entradas y salidas Se desordenan estos vectores Se cambian las conexiones con la variable conectado a false por otras nuevas creadas a partir de los 2 vectores desordenados 4 private void desordenarEnSal Desordena los vectores entradas y salidas con el fin de que luego tengamos nuevas conexiones que intentar conectar 5 public Vector getVector Devuelve el vector conexiones 6 public int resuelveAlgoritmos Se definen dos variables que van a representar a las probabilidades de conexi n y a la de desconexi n Estas probabilidades se determinan mediante la
103. formed java awt event ActionEvent evt okButtonActionPerformed evt Na buttonPanel add okButton getContentPane add buttonPanel java awt BorderLayout SOUTH jLabell setText getContentPane add jLabell java awt BorderLayout CENTER pack Definici n Cierra el dialogo cuando pulsas el bot n OK El private void okButtonActionPerformed java awt event ActionEvent evt doClose RET OK Definici n Cierra el dialogo ay private void closeDialog java awt event WindowEvent evt doClose RET CANCEL private void doClose int retStatus returnStatus retStatus setVisible false dispose Archivo C Documents and Settings Gregorio Escritorio opcionB DIALOGO java Definici n Introduce un mensaje en la etiqueta Par metros de entrada String ms mensaje de aviso Devuelve p public void mensaje String ms jLabell setText ms Definici n Situa el Dialogo A public void CentraDialogo f Dimension screenSize Toolkit getDefaultToolkit getScreenSize Dimension frameSize this getSize if frameSize height gt screenSize height frameSize height screenSize height if frameSize width gt screenSize width frameSize width screenSize width this setLocation screenSize width frameSize width 2 3 screenSize height frameSize height 4 this setSize screenSize width 3 screenSize height 5 this setV
104. g JDialog public opcionA setResizable false setTitle MATSWIT OPCION A initComponents private void initComponents jButtonl new JButton Button2 new JButton Button3 new JButton Button4 new JButton Button5 new JButton Button6 new JButton Tablel new JTable MenuBarl new JMenuBar Menul new JMenu Menulteml new JMenuItem MenuItem2 new JMenuItem MenuItem3 new JMenuItem isle Kala eee Gl e Cer edere Leis CONEXIONES N CONEXIONES JLabell new JLabel JLabel2 new JLabel JLabel3 new JLabel PORCENTAJE JLabel4 new JLabel MEDIA DE CONEXIONES JLabel5 new JLabel Introduce aqu el n de ejecuciones a realizar JLabell setForeground Color black JLabel4 setForeground Color black JLabel4 setBackground Color blue JLabelMedia new JLabel JLabelMedia setForeground Color black JLabelMedia setBorder BorderFactory createLineBorder Color black TextFieldl new JTextField img new Imagen Container hereda de jpanel g img getGraphics setVisible true getContentPane setLayout null addWindowListener new java awt event WindowAdapter public void windowClosing java awt event WindowEvent evt exitForm evt public void windowActivated java awt event WindowEvent evt ft System out println WindowListener Ventana Activada
105. grama de conexiones Paneles Etiq Label entradaAnterior int salidaAnterior int fuedesconectado boolean Paneles setConexion Conexiones con Limpiar Figura 36 Diagrama UML de la clase Paneles de la opci n B 63 Cap tulo 5 Implementaci n de la aplicaci n OpcionC Clase principal de nuestro programa que extiende de JFrame En ella se encuentra el metodo main En esta clase vamos a definir e inicializar todos los objetos del entorno grafico tales como botones cajas de texto pesta as etiquetas tablas y un objeto de la clase Paneles Muchos de estos objetos estar n escuchando eventos Se citan los m todos que estos objetos proporcionan para que se ejecuten cuando se recibe el evento e jMenuItemlActionPerformed Se ejecuta al seleccionar la opci n A del men Algoritmo Llama al m todo Reiniciar que les devuelve el valor inicial a todas las variables limpia el diagrama de conexiones y las etiquetas de estad sticas Finalmente deja seleccionado el algoritmo A como algoritmo de encaminamiento e jMenultem2ActionPerformed Se ejecuta al seleccionar la opci n B del men Algoritmo Llama al m todo Reiniciar Finalmente deja seleccionado el algoritmo B como algoritmo de encaminamiento e jMenuItem3ActionPerformed Se ejecuta al seleccionar la opci n C del men Algoritmo Llama al m todo Reiniciar Finalmente deja seleccionado el algoritmo C
106. hace puntero nmi con lo que la variable entera puntero se incrementa pasando de la matriz nmi 1 nmi de 4 a 7 a la 0 al aumentarla Con las salidas se repiten las mismas operaciones pero aumentando la variable ok2 Si alguna de estas variables ok1 u ok2 es igual a nmi o su suma supera o iguala a nmi se habr producido un bloqueo Se pone la conexi n actual como desconectada con Desconectar Se crea una nueva conexi n con las mismas entrada y salida pas ndole como par metro del constructor la conexi n actual poniendo la variable conectado a false y bloqueado a true Se le indica tambi n la matriz intermedia por la que habr a pasado Conexiones conevt new Conexiones con false true puntero nmi Se a ade esta conexi n al vector de eventos eventos addElement conevt Por ltimo se dejan las conexiones que est n en estado de desconexi n o bloqueo las cuales se renovar n para poder luego intentar nuevas conexiones SetSalida Al final de cada una de las iteraciones que se han hecho para comprobar que se puede conectar la entrada y salida por alguna matriz intermedia se ha comprobado que no hay bloqueo 52 Cap tulo 5 Implementaci n de la aplicaci n Se pone la conexi n actual como conectada con Conectar Se le asigna la matriz de distribuci n por la que ha conectado 9 con setMI puntero nmi Se crea una nueva conexi n con las variables conectado a true y
107. ico de la aplicaci n wW whoa 100 x 10 10 x 100 100 100 wi w t3 100 x 10 10 x 100 10 wi w t3 l Fili 100x 10 MEA 10 x 100 Figura 42 Etapas de 100 10 implementando un conmutador 1000X1000 100 100 Para comparar el conmutador multietapa con el crossbar hay que estudiar el n mero de puntos de cruce que presenta el conmutador multietapa Siendo b N n el n mero de etapas tanto de entradas de tama o n x k como de salida con un tama o de k x n y k el n mero de etapas intermedia de tama o b x b el n mero de puntos de cruce M viene dado por M 2 x n x k x N n N n x k 6 4 Condici n de Clos Es la condici n para la que una red multietapa no presenta bloqueo interno en sentido estricto Si se tiene que en una etapa de entrada de la red de tama o n x k se han realizado todas las conexiones excepto una se puede solicitar la conexi n por n 1 An logamente tambi n se puede tener una etapa de salida con n 1 conexiones realizadas Por tanto en el peor caso posible que es que ninguna de las n 1 conexiones de la matriz de entrada sea con alguna de las n 1 l neas conectadas de la matriz salida se ocupar n 2 x n 1 etapas de distribuci n Entonces para que no haya posibilidad de bloqueo el n mero de etapas de distribuci n deber a ser mayor o igual a 2 x n 1 1 2n 1 esto es la condici n de Clos Se prescinde de la demostraci n matem tica y solo se comenta de fo
108. id mensaje String ms Introduce el mensaje que para cada caso mas conveniente en una etiqueta dentro de Dialogo ES MENSAJE DE AVISO E xj Hay que introducir un N MERO por ejemplo 9 32 KI Figura 38 Ejemplo de Dialogo para la opci n B 68 Cap tulo 6 Uso acad mico de la aplicaci n 6 1 Teor a de conmutaci n En este apartado se comentar brevemente una serie de conceptos b sicos de conmutaci n antes de describir los posibles usos acad micos de nuestro programa Conmutaci n Por conmutaci n de Circuitos se entiende la t cnica que permite que dos terminales emisor y receptor se comuniquen a trav s de un circuito nico y espec fico establecido para tal prop sito antes del inicio de la misma y liberando una vez que ha terminado quedando en este caso a disposici n de otros usuarios para su Utilizaci n La conmutaci n est asociada principalmente a una central telef nica y consta de dos partes b sicas 1 El establecimiento mantenimiento y liberaci n de la comunicaci n procesamiento de la llamada coordinados por el control 2 El establecimiento de la v a f sica por la cual se produce la comunicaci n realizada por la red de conexi n Los Tipos de conmutaci n se pueden dividir de acuerdo a Seg n su operaci n Manual y autom tica Anal gica y Digital Espacial y Temporal Seg n el tipo de servicio De circuitos De paquetes Seg n su utilizaci n Privadas P blica
109. ing nd s substring s length 1 aqui tengo el n de decimales if Double parseDouble nd lt 6 al ser del orden de 6 lo ponemos a 0 f st 0 for int i 0 i lt Double parseDouble nd 1 i st st concat 0 st st concat s substring 0 1 st st concat s substring 2 4 nos saltamos el punto return st else f st 0 return st else return s no hay que modificarla xx x param args the command line arguments xy public static void main String args OC new opcionC OC pantallaCompleta OC OC show Algor new Algoritmo2 MI Algor setTO TO Algor generaConexion generamos al principio un vector de conexiones Variables declaration do Button Button Button Button JMenu y tton4 tton3 jButton2 private jButtonl private tem jMenuItem7 jMenuItem2 jMenulteml private private private jBu jBu J J J J private J private J private J JLabel13 private Label Label14 Label02 MenuBar jMenuBarl Menu jMenul jMenu2 Label JLabel01 JLabell5 JLabel17 Labell Label2 Labell6 Label18 Label03 private JTextField JTextFiel End of private private private private private private de alg private en este vector se va a guardar el blog en el or tatic opcionC OC tatic Paneles panel tatic DIALOGO d Frame aviso Algoritmo2 Al int Algoritmo escogido 0A 1 B Vector eventos
110. inici n Constructor Par metros de entrada int id Devuelve t7 public MatrizIntermedia int id in new Vector out new Vector this id id Definici n Se a ade el bloque de entrada al vector entradas Par metros de entrada int bloque bloque entrada Devuelve el public void introduceBloqueln int bloque in add new Integer bloque Definici n Se a ade el bloque de salida al vector salidas Par metros de entrada int bloque bloque salida Devuelve public void introduceBloqueOut int bloque out add new Integer bloque Definici n Borra el bloque de entrada del vector entradas este metodo es para el caso de desconexi n Par metros de entrada int ent el bloque de entrada que queremos borrar Devuelve y public void borraBloqueIn int ent Ant 1 for i 0 i lt in size itt if Integer in elementAt i intValue ent in remove i break Definici n Borra el bloque de salida del vector salidas este metodo es para el caso de desconexi n Par metros de entrada int sal el bloque de salida que queremos borrar Devuelve public void borraBloque0ut int sal borramos el bloque de salida del vector salidas este metodo es para el caso de desconexion int i for i 0 i lt out size 1 if Integer out elementAt i intValue sal out remo
111. inicial al algoritmo elegido A y el n mero de matrices intermedias 4 El aspecto del bot n Reiniciar es Remcmr Figura 67 Bot n Reiniciar de la opci n B 88 Anexo B C digo Fuente de la aplicaci n 90 Anexo B C digo fuente de la aplicaci n C digo Fuente de la aplicaci n B 1 Men de Inicio 91 Anexo B C digo fuente de la aplicaci n 92 Archivo C Documents and Settings Gregorio Escritorio menu inicio Simucom java Simucom java af import java awt import javax swing import java io File public class Simucom extends JFrame Creates new form Simucom public Simucom setTitle SIMUCOM initComponents This method is called from within the constructor to initialize the form WARNING Do NOT modify this code The content of this method is always regenerated by the Form Editor Ey private void initComponents escudol new EscudoUPCT upctrelieve jpg escudo2 new EscudoTeleco etsit jpg jLabell new javax swing JLabel jLabel2 new javax swing JLabel jLabel3 new javax swing JLabel jButtonl new javax swing JButton jButton2 new javax swing JButton jLabel4 new javax swing JLabel labell new java awt Label Imagelcon logo new Imagelcon Imagenes File separator upctrelieve jpg setIconImage logo getImage getContentPane setLayout null add
112. ionaMI int valor int entrada int salida compruebaMI int valor int modulo boolean compruebaMQ int valor int modulo boolean getConexiones Vector AlgoritmoEscogido int Algoritm DepurarConexiones int indiceMax Figura 17 Diagrama UML de la clase Algoritmo de la opci n A Imagen Esta clase extiende de JPanel por lo que implementa un panel sobre el que pondremos un dibujo proveniente de un fichero El dibujo representa al conmutador espacial de 3 etapas con sus 4 matrices crossbar en la entrada salida y etapa intermedia Sobre este JPanel se ir dibujando y repintando las l neas que ir n recorriendo las matrices desde su entrada hasta su salida pasando por la etapa central o de distribuci n 34 Cap tulo 5 Implementaci n de la aplicaci n itt POPE ih PG Figura 18 Imagen que contiene el fichero sincrossbar jpg tr Hd uuu uuu M todos e public static BufferedImage getBufferedlmage String fichero Component c M todo para crear un objeto del tipo Image a partir de un fichero que se guarda en un buffer e public static boolean cargalmagen Image imagen Component c Este m todo toma un objeto Image asociado a un fichero y espera hasta que la carga se haya completado Nota Este es el uso m s simple de MediaTracker si se van a cargar varias im genes no debe usarse este m todo en sucesivas llamadas sino que es mucho mejor
113. isible true xx x param args the command line arguments V Nariables declaration do not modify private JPanel buttonPanel private JButton okButton private JLabel jLabell End of variables declaration private int returnStatus RET CANCEL Bibliograf a D Bertsekas and R Gallager Data Networks Prentice Hall New Jersey second edition 1992 ISBN 0132016745 Broadband Integrated Networks Mischa Schwartz Prentice Hall 1996 ISBN 0135192404 Notas de clase de Conmutaci n 2 curso Ingenier a Telem tica Notas de clase de Programaci n 2 curso Ingenier a Telem tica Notas de clase de Redes y Servicios 2 curso Ingenier a Telem tica Manuales de Java e Java 1 2 al descubierto Jamie Jaworski ISBN 848322061X e Como programar en Java Harvey Deitel ISBN 9701700449 e The JFC Swing Tutorial Kathy Walrath y Mary Campione ISBN 0201433214 169 Bibliograf a 170 ndice de figuras Figura 1 Ejemplo de conmutador espacial multietapa 9 Figura 2 Matswit Men de inicio 12 Figura 3 Matswit Opci n A 12 Figura 4 Matswit Opci n B 14 Figura 5 Matswit Opci n C 15 Figura 6 Kawa 19 Figura 7 Men de inicio del SIMUCOM 21 Figura 8 Matriz crossbar 4X4 22 Figura 9 Matriz crossbar 4X4 usada en la implementaci n 22 Figura 10 Diagrama UML de la clase Entrada de la opci n A 24 Figura 11 Diagrama UML de la clase Salida de la opci n A 24 Figura 12 Diagrama UML de la c
114. isten dos maneras de llevarla a cabo Empleando m todos de caja negra que consiste en observar desde fuera el comportamiento de un programa al que se somete a una serie de casos de uso Esto es factible en programas peque os El otro consistir a en descompilar un programa de modo que se obtenga el c digo fuente del mismo a partir del c digo que ejecutamos en nuestro ordenador Esto ser a posible si el c digo se hubiera dejado a nuestro alcance por el programador Es la nica manera con programas grandes como sistemas operativos En nuestro caso hemos considerado que lo m s apropiado era utilizar el m todo de caja negra tanto por no tratarse de un programa grande como por no necesitar obtener un calco del programa original como por no disponer de la informaci n de depuraci n Nos disponemos a comentar las principales caracter sticas del programa del que partimos el Matswit 11 Cap tulo 3 An lisis y dise o Blocking in a multi stage switch Switch performance statistics Continuous switch operation Version 1 2 Serial no 1843 Distributor Feedback Instruments Ltd Copyright Cc 1992 P J Banks Crowborough East Sussex TN6 2QR UK Figura 2 Matswit Men de inicio El conmutador de este programa se compone de 16 entradas y 16 salidas Internamente consta de 3 etapas Matrices de entrada matrices intermedias o de distribuci n y matrices de salida El simulador tiene tres opci
115. lase Conexiones de la opci n A 25 Figura 13 Diagrama UML de la clase MatrizIntermedia de la opci n A 27 Figura 14 Diagrama de flujo del m todo resuelveAlgoritmoA 30 Figura 15 Diagrama de flujo del m todo resuelveAlgoritmoB 31 Figura 16 Diagrama de flujo del m todo resuelveAlgoritmoC 32 Figura 17 Diagrama UML de la clase Algoritmo de la opci n A 34 Figura 18 Imagen que contiene el fichero sincrossbar jpg 35 Figura 19 Dibujo proveniente del archivo modificado al asar por el m todo paintComponent Graphics 36 Figura 20 Diagrama UML de la clase Imagen 37 Figura 21 Ejemplo de Dialogo 41 Figura 22 Opci n A ejecutada 41 Figura 23 Diagrama UML de la clase Entrada de la opci n B 43 Figura 24 Diagrama UML de la clase Salida de la opci n B 44 Figura 25 Diagrama UML de la clase Conexiones de la opci n B 46 Figura 26 Diagrama UML de la clase MatrizIntermedia de la opci n B 49 Figura 27 Diagrama de flujo del m todo resuelveAlgoritmos 51 Figura 28 Diagrama de flujo del m todo AlgoritmoA 55 Figura 29 Diagrama de flujo del m todo AlgoritmoB 56 Figura 30 Diagrama de flujo del m todo AlgoritmoC 57 Figura 31 Diagrama UML de la clase Algoritmo2 de la opci n B 60 Figura 32 Panel que representa al diagrama de conexiones 60 Figura 33 Situaci n de conexi n 61 171 ndice de Figuras Figura 34 Situaci n de desconexi n 62 Figura 35 Situaci n de bloqueo 63 Figura 36 Diagrama UML de la clase Paneles de la opci n B 63 Fig
116. le ok1 ok2 lt nmi if compruebaMI puntero 3 nmi bloqueln okl puntero a 0 BloqueinVisto true else break if okl nmi okl ok2 gt nmi f con Desconectar Conexiones conevt new Conexiones con false true puntero nmi conectado false bloqueado true eventos addElement conevt SetSalida le dejamos Archivo C Documents and Settings Gregorio Escritorio opcionB Algoritmo2 java puesta a la conexiones desconectadas y bloqueadas un nuevo objeto conexion return 1 fin if bloquevisto false y for int a 0 a lt indice a con Conectar con setMI puntero nmi introducimos la MI escogida en nuestra conexi n Conexiones conevt new Conexiones con true false puntero nmi conectado true bloqueado false eventos addElement conevt afiadimos la entrada y la salida a los vectores in y out de la Matriz de distribuci n escogida seleccionaMI puntero 3 nmi bloqueIn bloqueOut puntero buscamos conectar por la MI siguiente nconexiones ok1 0 ok2 0 BloqueinVisto false BloqueoutVisto false return 0 Definici n Algoritmo Secuencial se intentara siempre por la conexion 0 si no se puede por una lo intento con la siguiente Par metros de entrada Devuelve int ng private int AlgoritmoB f int ok1 0 0k2 0 nos van a indicar el numero de veces seguida
117. ll null full null null noll null null NON ON ON GN GN 5 GS GM S SM M Arch ivo C Documents and Settings1GregoriolEscritoriolopcionAlopcionA java jull mad 1 null null null null full null null LA new String Cabeceras de las columnas de la tabla CONEXION ENTRADA SALIDA DISTRIBUCION A boolean false canEdit false new boolean false false y public boolean isCellEditable int rowIndex int columnIndex return canEdit columnIndex Tablel Tablel Tablel Tablel se jTablel se getContent jTablel ge jTablel ge getContent jTablel ge Tablel ge se se se tRowHeight 20 tName null tAutoResizeMode javax swing JTable AUTO RESIZE OFF tRowSelectionAllowed false tBounds 725 50 280 320 Pane add jTablel int x int y int ancho int largo tTableHeader setFont new Font Dialog 2 9 tTableHeader setBounds 725 30 280 20 Pane add jTablel getTableHeader tTableHeader setReorderingAllowed false tTableHeader setResizingAllowed false Js de Codd e jpanel para estadisticas JPanel panel new JPanel panel setLayout new GridLayout etiq length for int i 0 ix etig length i for int j 0 J lt etig 0 length j etiq i j setHorizontalAlignment JLabel CENTER if i Y poc 8 etig il j setBackground Color red else etiq i etiq i eti
118. mage img EscudoTeleco String fichero img getToolkit getImage Imagenes File separator fichero public void paint Graphics g Tamafio ajustable al tamafio del canvas g drawImage img O O this getSize width this getSize height this Anexo B C digo fuente de la aplicaci n C digo Fuente de la aplicaci n B 2 Opci n A 99 Anexo B C digo fuente de la aplicaci n 100 Archivo C Documents and Settings Gregorio Escritorio opcionA Entrada java Entrada java ar public class Entrada private int id bloque Definici n Constructor Par metros de entrada int id n mero de entrada Devuelve Ef public Entrada int id this id id bloque id 1 4 Definici n Devuelve la entrada Par metros de entrada Devuelve int id la entrada xy public int getId return id Definici n Devuelve el bloque de entrada Par metros de entrada Devuelve int bloque bloque de entrada 7 public int getBloque devuelve el bloque de entrada return bloque Archivo C Documents and Settings Gregorio Escritorio opcionA Salida java Salida java gi public class Salida f private int id bloque Definici n Constructor Par metros de entrada int id n mero de salida Devuelve public Salida int id f this id id bloque
119. mero de la matriz intermedia en negro La desconexi n se representa mediante su entrada su salida ambas en rojo y el n mero de la matriz intermedia en rojo El bloqueo se representa mediante su entrada su salida ambas en rojo y una B roja El diagrama de conexiones tiene este aspecto 85 Anexo A Manual de usuario DAS DIAGRAMA DE CONEXIONES B E dJ a B SALIDAS 2 SS cao s bi Cr 8 39 AO 11 122 343 NA N5 STR Figura 59 Diagrama de conexiones de la opcion B e Etiquetas de eventos Estas etiquetas muestran el estado de la conexi n en curso su entrada y su salida Se muestra el n mero de eventos realizados y el total de eventos que han sido una conexi n Estas son las etiquetas de eventos EVENTOS En Curso X Bloqueado 4 con 10 Total 74 Conexiones 41 Figura 60 Etiquetas de eventos de la opci n B e Men de Algoritmos Con este men se puede escoger entre los 3 distintos algoritmos de encaminamiento a trav s de nuestro conmutador El men de Algoritmos tiene este aspecto Figura 61 Men de Algoritmos de la opci n B e Men de Matrices Intermedias Con este men se puede escoger el n mero de matrices intermedias 4 5 6 o 7 86 Anexo A Manual de usuario El men de Matrices intermedias tiene este aspecto Figura 62 Men de Matrices intermedias de la opci n B e Datos y resultados Compuesto una caja de texto y de etiquetas En la caja de texto se debe introduci
120. mo new opcionA Algor getConexiones OA setConexiones con OA pantallaCompleta OA OA show Variables declaration do not modify priva priva priva priva priva priva priva priva priva priva priva priva priva priva Le Le Le Le Le Le Le Le Le Le Le Le Le Le private JLabel private new new new new rn A new new new new rn A new new new new y private private Cg eee ae ly tl Code Gd id is pt Ey o avax swing y JTable jTablel magen img avax swing JButton jButton6 avax swing JButton jButton5 avax swing JButton jButton4 avax swing JButton jButton3 avax swing JButton jButton2 avax swing JButton jButtonl avax swing JMenuItem jMenuItem3 avax swing JMenuItem jMenuItem2 avax swing JMenuItem jMenulteml avax swing JMenuBar jMenuBarl avax swing JMenu jMenul TextField JTextFieldl Label JLabell JLabel2 JLabel3 JLabel4 JLabel5 JLabelMedia para el cuadro de conexiones tatic JLabel etiq Label 4 new JLabel 5 new JLabel 6 new JLabel 7 Label 8 new JLabel 9 new JLabel 10 new JLabel 11 Label 12 new JLabel 13 new JLabel 14 new JLabel 15 Label 16 Label 0 new JLabel 0 new JLabel 0 new JLabel 0 Label 0 new JLabel 0 new JLabel 0 new JLabel 0 Label 0 new JLabel 0 new JLa
121. mo deja resuelta una nueva ejecuci n e jButton4ActionPerformed Se ejecuta al pinchar en el bot n Reiniciar Llama al m todo Reiniciar por tanto la nica funci n de este bot n es limpiar la imagen la tabla de conexiones devolver a las variables a su estado por defecto e jButtond5ActionPerformed Se ejecuta al pinchar en el bot n 1000 Ejecuciones Este m todo realiza tantas ejecuciones como se haya indicado 1000 por defecto Estas ejecuciones se ver n reflejadas en las etiquetas de estad sticas Limpia la tabla de conexiones y la imagen e JButton6ActionPerformed Se ejecuta al pinchar en el bot n Paso Atr s Conforme pinchamos en este bot n se ira decrementando la variable Contador1 que se incrementaba al pulsar el bot n Paso Adelante El m nimo valor que podr tomar ser O Por lo tanto con este bot n se repinta la imagen con el n mero nuevo de conexiones Tambi n va borrando la ltima fila escrita de la tabla de conexiones e TextFieldlActionPerformed 38 Cap tulo 5 Implementaci n de la aplicaci n Se ejecuta al introducir caracteres en el campo de texto JTextField1 Al introducir un n mero entero menor de 10 000 puede determinar el n mero de ejecuciones que se podr n hacer al pulsar el bot n de 1000 Ejecuciones El texto del bot n cambiar seg n el valor que se introduzca Si se introduce un n mero mayor o igual a 10 000 o caracteres que n
122. mos en la variable entera bloque que representa el bloque de entrada M todos 23 Cap tulo 5 Implementaci n de la aplicaci n e public int getld Devuelve id e public int getBloque Devuelve bloque Entrada id int bloque int Entrada int id getld int getBloque int Figura 10 Diagrama UML de la clase Entrada de la opci n A Salida En su constructor hay que pasarle un entero que llamaremos id que representa el n mero de salida Con este id obteniendo su residuo de la divisi n entre 4 id 4 obtenemos un valor que guardaremos en la variable entera bloque que representa el bloque de salida M todos e public int getId Devuelve id e public int getBloque Devuelve bloque Salida id int bloque int Salida int id getld int getBloque int Figura 11 Diagrama UML de la clase Salida de la opci n A Conexiones Hay que pasarle como par metros un objeto del tipo entrada y otro del tipo salida Tambi n lleva una variable entera MI que sirve para indicar la matriz de distribuci n por la que pasa esa conexi n Esta clase es la representaci n de una conexi n entrada salida y matriz intermedia 24 Cap tulo 5 Implementaci n de la aplicaci n M todos e public void setMI int MI Asigna a la variable de clase MI el valor introducido en la funci n public voi
123. n Seg n la conexi n pinta en el diagrama de conexiones Par metros de entrada Conexiones con Devuelve a public void setConexion Conexiones con f int MI con getMI String SMI Integer toString MI boolean b con getBloqueado boolean c con getConectado Entrada entrada Entrada con getEntrada Salida salida Salida con getSalida int e entrada getId int s salida getId if fuedesconectado true AA aac T c true M etig e 1 s 1 setForeground Color black etiq e 1 s 1 setText SMI fuedesconectado false else Desconexion etigle 1 s 1 setForeground Color red etiq e 1 s 1 setText SMI fuedesconectado true if b true ff Bloqueado etig e 1 s 1 setForeground Color red no es realmente necesario cogeria el clor rojo de la anterior condicion etig e 1 s 1 setText B fuedesconectado true entradaAnterior e 1 salidaAnterior s 1 Definici n Limpia el diagrama de conexiones Par metros de entrada KI x Devuelve public void Limpiar for int i 0 i lt xetiq length i for int 3 0 j lt etiq 0 length j Archivo C Documents and Settings Gregorio Escritorio opcionB Paneles java etig i j setText Archivo C Documents and Settings Gregorio Escritorio opcionB opcionC java opcionc java
124. n modificado por el nuevo n mero de ejecuciones introducido e Tabla de estad sticas Tabla que indica las veces que se produjo en cada ejecuci n un n mero de conexiones as como el porcentaje de cada una El aspecto de la Tabla de estad sticas es CONEXIONES N CONEXIONES Figura 56 Tabla de estad sticas de la opci n A e Media de conexiones Refleja la media total de conexiones hechas por simulaci n MEDIA DE CONEXIONES 10 78 Figura 57 Media de conexiones de la opci n A A 4 Opci n B Este simulador es un simulador de un conmutador multietapa en modo continuo esto es que la duraci n de las llamadas es finita Aspecto de la opci n B iniciada 84 Anexo A Manual de usuario TE MATSWIT OPCI N B ixl Algoritmo A Matrices Intermedias 4 DIAGRAMA DE CONEXIONES Total Conexiones EVENTOS En Curso DATOS Y RESULTADOS Factor de Actividad 8 de 0 1 a 15 9 CONEXIONES En Curso M ximo Perdidas TR FICO Cursado Perdido S aA IA 5914 5 515 18 Introduce el m ximo de ejecuciones a realizar no m s de 10000 PASO ADELANTE EJECUCION 1000 EJECUCIONES REINICIAR Figura 58 Opci n B iniciada Los elementos de la opci n B son e Diagrama de conexiones El simulador muestra mediante el diagrama de conexiones los eventos de conexi n desconexi n y bloqueo La conexi n se representa mediante su entrada su salida ambas en rojo y el n
125. o Aleatorio desconectar No pconectar Si Si Se desconecta la conexi n AlgoritmoEscogido Se afiade la nueva conexi n al Conectado o vector de eventos Y Bloqueado Se borra entrada y salida de MI logro 7 true SetSalida nconexiones logro true indice pa indice 16 n indice 0 tiempo No ubo un evento logro true Si Fin Figura 27 Diagrama de flujo del m todo resuelveAlgoritmos 51 Cap tulo 5 Implementaci n de la aplicaci n 7 private int AlgoritmoA Este es el m todo que se utiliza para intentar conectar cuando hemos elegido en nuestro programa el algoritmo de encaminamiento A o de rotaci n Se mira la conexi n situada en la posici n que corresponda del vector de conexiones y se obtiene su bloque de entrada y de salida Se recorre el vector conexiones buscando una matriz de entrada que coincida con alguna de las anteriores En ese caso se comprueba que el bloque de entrada est en la matriz intermedia que se debe escoger seg n nuestro algoritmo A En caso afirmativo se aumenta una variable entera llamada ok1 y se hace que otra variable llamada puntero apunte a la siguiente matriz intermedia ya que el algoritmo es el A o de rotaci n La variable que indica el n mero de matrices intermedias que hay es nmi Para saber la matriz intermedia que se est analizando se
126. o 1 Reiniciar Definici n Deja seleccionado el algoritmo A como algoritmo de encaminamiento 7 private void jMenultemlActionPerformed java awt event ActionEvent evt jMenul setText Algoritmo A Algoritmo 0 Reiniciar Definici n Campo de texto para introducir El factor de actividad Ef private void JTextFieldlActionPerformed java awt event ActionEvent evt String STO STO JTextFieldl getText double TO 8 Archivo C Documents and Settings Gregorio Escritorio opcionB opcionC java if STO length gt 4 STO STO substring 0 5 si el numero tiene mas de 3 decimales nos quedamos con los 3 1 try TO Double parseDouble STO catch NumberFormatException nfe aviso new Frame d new DIALOGO aviso true d mensaje Hay que introducir un N MERO por ejemplo 9 32 d CentraDialogo if TO lt 15 9 amp amp TO gt 0 1 f Reiniciar lo quitamos y solo cambiamos el TO sin borrar los datos actuales Label10 setText Factor de Actividad TO de 0 1 a 15 9 Algor setTO TO else aviso new Frame d new DIALOGO aviso true d mensaje El F A debe estar entre 0 1 y 15 9 d CentraDialogo Definici n my private void JTextField2ActionPerformed java awt event ActionEvent evt String Sejecuciones Sejecuciones JTextField2 getText int ejecuciones 100 try f ejecuciones
127. o sean n meros se obtiene un mensaje de aviso en forma de un JDialog e jPanelMousePressed La imagen est escuchando hasta que se produce un clic de rat n en ella Cuando esto sucede se repinta la imagen con todas las l neas que se hab an dibujado en ella e windowActivate El JDialog opcionA est escuchando hasta que se activa la ventana esto es que pasa de un segundo plano a un primero Cuando este evento pasa se repinta la imagen con todas las l neas que se hab an dibujado en ella e windowDeactivate El JDialog opcionA est escuchando hasta que se desactiva la ventana esto es que pasa de un primer plano a un segundo Cuando este evento pasa se repinta la imagen con todas las l neas que se hab an dibujado en ella e exitForm java awt event WindowEvent evt Cierra la ventana Otros m todos de esta clase e pantallaCompleta JDialog jf Con este m todo se logra que el JDialog opcionA se sit e ocupando el tama o de la pantalla La configuraci n de la pantalla debe estar a 1024 por 768 p xeles para que la visualizaci n de la opcionA sea completa e private void setConexiones Vector vc Pasa el vector conexiones al objeto de la clase Imagen e private void rellenaTabla M todo que rellena toda la tabla de conexiones con el contenido del vector de conexiones e private void limpiaTabla 39 Cap tulo 5 Implementaci n de la aplicaci n Se encarga de borrar la tabla de
128. o true Devuelve false si se puede utilizar no se utiliz una misma matriz de entrada 2 veces para nuestra matriz intermedia public boolean utilizaln int valor for int i 0 i lt in si e i Integer in elementAt i intValue if valor Integer in elementAt 1 intValue f return true return false 26 Cap tulo 5 Implementaci n de la aplicaci n e utilizaOut Indica si el valor introducido estaba ya almacenado en el vector de salidas devolviendo true Devuelve false si se puede utilizar no se utiliz una misma matriz de salida 2 veces para nuestra matriz intermedia public boolean utilizaO0ut int valor for int i 0 i lt out size i int s Integer out elementAt i intValue if valor Integer out elementAt i intValue return true return false MatrizIntermedia in Vector out Vector id int MatrizIntermedia int id tintroduceBloqueln int bloque introduceBloqueOut int bloque utilizaln int valor boolean utilizaOut int valor boolean Figura 13 Diagrama UML de la clase MatrizIntermedia de la opci n A Algoritmo En el constructor de esta clase creamos un objeto del tipo Vector que se llama conexiones y que contendr objetos del tipo Conexiones Tambi n se crean cuatro objetos del tipo MatrizIntermedia a b C d 27 Cap tulo 5 Implementa
129. ollo 17 4 2 Elecci n del entorno de desarrollo 18 5 IMPLEMENTACI N DE LA APLICACI N 21 5 1 Descripci n 21 5 2 Opci n A 22 5 3 Opci n B 41 6 USO ACAD MICO DE LA APLICACI N 69 6 1 Teor a de conmutaci n 69 6 2 Objetivos acad micos de la aplicaci n 70 6 3 Conmutador de matriz crossbar y conmutador multietapa 70 6 4 Condici n de Clos T2 6 5 Trafico en redes 73 6 6 Trabajo a realizar por el alumno 75 7 CONCLUSIONES Y L NEAS FUTURAS 77 7 1 Conclusiones 17 7 2 L neas futuras TT ANEXOS 79 ANEXO A MANUAL DE USUARIO 79 A 1 Introducci n 79 A 2 Men de inicio 80 A 3 Opci n A 80 A 4 Opci n B 84 ANEXO B C DIGO FUENTE DE LA APLICACI N 89 B 1 Men de inicio 91 B 2 Opci n A 133 B 3 Opci n B Bibliograf a 169 ndice de figuras 171 ndice General Cap tulo 1 Introducci n Un elemento esencial en las redes de conmutaci n de circuitos son los conmutadores propiamente dichos Como complemento a su estudio se pueden utilizar simuladores did cticos que permiten una mejor comprensi n de los conmutadores as como la obtenci n de datos estad sticos En este proyecto se ha realizado un simulador de un conmutador multietapa herramienta que servir para la docencia en la Escuela T cnica Superior de Ingenier a en Telecomunicaciones E T S I T de la Universidad Polit cnica de Cartagena U P C T disponiendo adem s del c digo fuente de la herramienta Cap tulo 1 Introducci n Cap tulo 2 Objetivos
130. on e Dibujo del conmutador Por el que se van a ver las conexiones dibujadas mostrando su encaminamiento ETAPA DE ENTRADA ETAPA DE DISTRIBUCI N ETAPA DE SALIDA pl Le P amp Bee lt lt 1 Figura 46 Dibujo del conmutador de la opci n A 81 Anexo A Manual de usuario Tabla de conexiones Se representa en esta tabla las conexiones realizadas Consta de 4 columnas Conexi n Entrada Salida y Distribuci n y 16 filas correspondientes a las 16 posibles conexiones que se pueden realizar La tabla de conexiones es esta CONEXI N ENTRADA SALIDA DISTRIBUCI N 1 15 11 0 2 11 lg 11 3 lg 113 2 4 13 13 13 5 Ir 8 0 6 16 112 2 7 5 1 0 8 6 l2 Ir 9 14 5 1 10 4 4 l2 11 2 16 3 12 3 6 Bloqueo Figura 47 Tabla de conexiones de la opci n A Men de algoritmos Con este men se puede escoger entre los 3 distintos algoritmos de encaminamiento a trav s de nuestro conmutador El men de Algoritmos tiene este aspecto Figura 48 Men de algoritmos de la opci n A Los botones de la opci n A son Paso adelante Muestra cada vez que se pulsa el camino que ha seguido la conexi n desde su entrada hasta la salida Va rellenando en la tabla la conexi n entrada salida y matriz de distribuci n correspondientes El aspecto del bot n Paso adelante es PASO ADELANTE Figura 49 Bot n Paso adelante de la opci n A Ejecuci n Muestra todas las conexiones hechas en esa ejecuci n tanto en el
131. ones Opci n A opci n B y opci n C 3 2 Opci n A La opci n A nos muestra el camino que sigue la llamada desde una entrada aleatoria hasta otra salida tambi n aleatoria Ese camino o matriz de distribuci n intermedia se decide en base a tres algoritmos diferentes La principal funci n de esta opci n A es mostrar el comportamiento de estos algoritmos La llamada ser de duraci n infinita con lo que una vez que se establezca no se terminar hasta que finalice el programa Blocking in a multi stage switch ut F8 Main menu Figura 3 Matswit Opcion A En la etapa de entrada se tiene 4 matrices crossbar 4X4 esto es con 4 entradas y 4 salidas Lo mismo pasa con la etapa intermedia y lo mismo con la etapa de salida 12 Cap tulo 3 An lisis y dise o Los tres algoritmos para la elecci n de la matriz de distribuci n son 1 Algoritmo A En primer lugar intenta conectar la entrada y la salida por la primera matriz intermedia la matriz 0 luego ir variando en una unidad la matriz por la que quiere conectar si el camino est ocupado y no se puede conectar por esa matriz pasar a la siguiente Al llegar a la ltima la 3 la siguiente matriz volver a ser la primera la O Si no se pudo por ninguna de las matrices la conexi n se habr bloqueado Este Algoritmo se denomina de rotaci n 2 Algoritmo B Siempre se intenta pasar por la matriz intermedia 0 si no se es posible y esa
132. oqueo en sentido estricto Comparar este valor con el n mero de puntos de cruce que precisa el crossbar 16x16 A la vista del resultado anterior en qu condiciones es ventajoso dise ar una red de Clos 75 Cap tulo 6 Uso acad mico de la aplicaci n 76 Cap tulo 7 Conclusiones y l neas futuras 7 1 Conclusiones Observando la aplicaci n finalizada se pueden obtener una serie de conclusiones La conclusi n principal es que se ha conseguido programar un simulador did ctico de un conmutador espacial multietapa que engloba dos simuladores Uno en modo simple en el que la duraci n de las llamadas es infinita y otro en modo continuo con la duraci n de las llamadas finita En ambos casos se ha conseguido una modernizaci n de la interfaz gr fica haciendo m s intuitivo y agradable el entorno visual al alumno Como consecuencia de haber cambiado la forma de representar las matrices crossbar en la opci n A se ha facilitado la comprensi n de los algoritmos de distribuci n de la aplicaci n Se corrigieron ciertos aspectos te ricos para facilitar la comprensi n de los conceptos que se intentan ense ar con este simulador Se integraron las opciones A y B del Matswit en una sola del SIMUCOM la opci n A Estas dos opciones eran de modo simple con la duraci n de llamadas infinita por lo que se ha integrado los experimentos realizados con la opci n A del Matswit y los experimentos realizados con
133. oqueo interno e Para cada algoritmo realiza dos pruebas r pidas de 1000 ejecuciones y obtener en cada prueba el n mero medio de conexiones realizadas y el porcentaje de ejecuciones con xito Hallar los valores medios de dichos par metros y comparar el comportamiento de los diferentes algoritmos e Cu l es el n mero m nimo de conexiones que puede realizar cada algoritmo sin tener bloqueo interno Seleccionando la opci n B del simulador e Explicar mediante un ejemplo sencillo c mo se representan las conexiones en el diagrama mostrado e Pulsando el bot n de ejecuci n obtener una situaci n de bloqueo A la vista de las matrices de distribuci n conectadas a las correspondientes matrices de entrada y de salida de la conexi n bloqueada c mo se refleja dicha situaci n de bloqueo en el diagrama de conexiones e Mediante una ejecuci n r pida de 5000 eventos establecer la relaci n entre el tr fico cursado TC el tr fico rechazado TP las conexiones hechas Cm y los intentos de conexi n rechazados Cl Seleccionando la opci n B del simulador con un factor de actividad de 15 Erlangs responder a las siguientes preguntas e Cu l es el n mero m nimo de matrices de distribuci n para no tener bloqueo interno en sentido estricto Depende dicho resultado del algoritmo seleccionado Comprobar ambas respuestas mediante simulaci n e Cu ntos puntos de cruce se requieren para garantizar la condici n de no bl
134. ores En el primero hay que pasarle como par metros Un objeto del tipo Entrada y otro del tipo Salida En el segundo constructor los par metros a introducir son e Un objeto del tipo conexiones e Variable del tipo boolean que llamamos conectado indican si la conexi n est conectada e Variable del tipo boolean que llamamos bloqueado indican si la conexi n est bloqueada e Una variable entera llamada MI que indica la Matriz intermedia por la que se realiz la conexi n public Conexiones Conexiones c boolean conectado boolean bloqueado int MI this in c getEntrada this out c getSalida this conectado conectado this bloqueado bloqueado this MI MI 44 Cap tulo 5 Implementaci n de la aplicaci n Este segundo constructor tiene como objeto el crear una nueva conexi n que tenga la entrada y salida de la conexi n que le pasamos como par metro De esta manera esta nueva conexi n no apuntar a la antigua podremos modificarla sin modificar la antigua y se le especificar n los valores de las variables conectado bloqueado y MI Estas variables se les asignar n a las variables de clase con el mismo nombre Esta clase es m s complicada que su correspondiente a la opci n A Se ha reutilizado a adiendo nuevas variables constructores y m todos para realizar la clase conexi n de la opci n B Ya hemos visto el nuevo constructor estos son los
135. os int AlgoritmoA int AlgoritmoB int AlgoritmoC int seleccionaMI int valor int entrada int salida borralnOut int valor int ent int sal compruebaMI int valor int modulo boolean compruebaMO int valor int modulo boolean getConexiones Vector AlgoritmoEscogido setAlgoritm int a setTO double sto 59 Cap tulo 5 Implementaci n de la aplicaci n getEventos Vector getTiempo int Figura 31 Diagrama UML de la clase Algoritmo2 de la opci n B Paneles Clase que extiende de JPanel y que implementa el diagrama de conexiones del programa Sus variables de clase son e etiq Una array de 2 dimensiones de Labels de 16 por 16 Las filas corresponder n a la entrada de la conexi n y las columnas a la salida e EntradaAnterior Entero que guarda el n mero de la entrada de la conexi n anterior e SalidaAnterior Entero que guarda el n mero de la salida de la conexi n anterior e Fuedesconectado Del tipo boolean que indicar si hubo desconexi n o bloqueo en la ejecuci n anterior HM EB m Figura 32 Panel que representa al diagrama de conexiones 60 Cap tulo 5 Implementaci n de la aplicaci n M todos e setConexion Conexiones con Del objeto del tipo conexiones que se le pasa obtenemos su entrada y salida con esto se sabe la fila y columna del array de etiquetas que representa al diagrama Si hubo desconexi n o bloqueo en
136. os de entrada int id n mero de entrada Devuelve Ef public Entrada int id this id id bloque id 1 4 Definici n Devuelve la entrada Par metros de entrada Devuelve int id la entrada ie int getId return id Definici n Devuelve el bloque de entrada Par metros de entrada Devuelve int bloque bloque de entrada Ef public int getBloque devuelve el bloque de entrada f return bloque Archivo C Documents and Settings Gregorio Escritorio opcionB Salida java By Salida java public class Salida f private int id bloque Definici n Constructor Par metros de entrada int id Devuelve F public Salida int id this id id bloque id 1 4 Definici n Devuelve la salida Par metros de entrada Devuelve int id Bf public int getId return id Definici n Devuelve el bloque de salida Par metros de entrada Devuelve int bloque ua int getBloque i return bloque Archivo C Documents and Settings Gregorio Escritorio opcionB Conexiones java Conexiones java ae public class Conexiones f private Entrada in vectores para trabajar con las entradas y private Salida out salidas por separado variables que indican el estado de la conexi n conectado conectado true desconectado desconectado true bloqu
137. q i j setBorder BorderFactory createLineBorder Color black panel add etiq i 4j etiq 0 length 3 setBackground Color blue 3 setForeground Color black panel setBounds 125 450 800 getContentPane add panel JLabell setBounds 25 450 100 4 150 50 y r de las add y Label2 setBounds 25 etContentPane add J Label3 setBounds 25 etContentPane add J Label4 setBounds 750 etContentPane add J LabelMedia setBounds etContentPane add J Label5 setBounds 450 getContentPane add J ya ya ya ya C Labell 500 100 Label2 550 X00 Label3 390 159 Label4 900 390 50 LabelMedia 630 350 30 Label5 50 950 50 30 fin jpanel para estadisticas jMenul setText Algoritmo A jMenuIteml setText A jMenuIteml addActionListener new java awt event ActionListener public void actionPerformed java awt event ActionEvent evt jMenuItemlActionPerformed evt FIF jMenul add jMenuIteml jMenuItem2 setText B jMenuItem2 addActionListener new java awt event ActionListener public void actionPerformed java awt event ActionEvent evt jMenuItem2ActionPerformed evt jMenul add jMenuItem2 jMenuItem3 setText C jMenuItem3 addActionListener new java awt event ActionListener public void actionPerformed java awt event ActionEvent evt jMenuItem3ActionPerfo
138. r el factor de actividad del programa Este debe ser un n mero entre 0 1 y 15 9 En las etiquetas se tienen dos apartados Etiquetas de conexiones en las que se muestran las conexiones en curso el m ximo de conexiones que se han tenido en curso y las conexiones perdidas Etiquetas de tr fico en las que se muestra el Tr fico Cursado y el Tr fico Perdido Los datos y resultados se muestran as DATOS Y RESULTADOS Factor de Actividad 8 de 0 1 a 15 9 12 5 CONEXIONES En Curso 9 M ximo 11 Perdidas 1 TR FICO Cursado 7 906396 Perdido 8 0 0083699 Figura 63 Datos y resultados de la opci n B El programa consta de los siguientes botones e Paso adelante Ejecuta cada vez que se pulsa un nuevo evento El aspecto del bot n Paso adelante es PASO ADELANTE Figura 64 Boton Paso adelante de la opcion B e Ejecuci n Realiza eventos hasta que se produzca alguno de bloqueo El aspecto del bot n ejecuci n es 87 Anexo A Manual de usuario EJECUCI N Figura 65 Bot n Ejecuci n de la opci n B e 1000 ejecuciones Realiza seguidos 1000 eventos que se ver n reflejados en las eventos y resultados Ver Caja de Texto n mero de ejecuciones El aspecto del bot n 1000 ejecuciones es 1000 EJECUCIONES Figura 66 Bot n 1000 ejecuciones de la opci n B e Reiniciar Limpia el diagrama de conexiones los datos los resultados los eventos y retorna a su valor
139. r se est seguro de que es ese bloque el que se quiere borrar Este m todo se debe a que en el programa se va a contemplar la opci n de desconexi n e public int getInOutSize Devuelve el tama o de los vectores de entradas y salidas tama os que se comprueban son los mismos MatrizIntermedia in Vector out Vector id int MatrizIntermedia int id tintroduceBloqueln int bloque introduceBloqueOut int bloque borraBloqueln int ent borraBloqueOut int sal utilizaln int valor boolean utilizaOut int valor boolean Figura 26 Diagrama UML de la clase MatrizIntermedia de la opci n B Algoritmo2 En el constructor se observa que a los objetos de esta clase se les pasar como par metro un n mero entero Este n mero entero simboliza el n mero de matrices intermedias que queremos que lleve nuestro objeto Este n mero de matrices intermedias ir de cuatro a siete Tambi n se crean dos objetos de la clase predefinida vector que se llamar n conexiones y eventos En el vector conexiones se guardan los objetos de tipo Conexiones con los que trabajar nuestro programa El vector eventos llevar objetos del tipo conexiones que hayan sufrido una conexi n una desconexi n o un bloqueo Durante la ejecuci n del programa para luego ir mostrando este vector en el diagrama de conexiones M todos 1 public void generaConexion Se va afiadiendo al vector de conexiones nuevas con
140. rama de flujo de resuelveAlgoritmoB 31 Cap tulo 5 Implementaci n de la aplicaci n No Si y Se obtiene conexi n del vector MI Aleatorio 0 3 Se obtiene la entrada y salida de la conexi n Y Se obtienen las entradas de las conexiones anteriores hasta indice Coincide alguna con nuestro bloque de entrada Fin E Figura 16 Diagrama de flujo de resuelveAlgoritmoC 32 Si Se repite el y bloque de entrada Bloqueo en la MI Si Se depura el Y vector de No conexiones Ok1 MI No Coincide alguna con r Si nuestro bloque de salida No No Se repite el No bloque de salida Si 3 en la MI Se introduce en la MI nuestra entrada y salida Se introduce la MI en la Bloquea ig Se depura el ok2 conexi n actual Dn vector de MI indice t conexiones MI Aleatorio 0 3 ok1 0 ok2 0 Cap tulo 5 Implementaci n de la aplicaci n La simplificaci n principal en los diagramas esconde la necesidad de crear dos variables para saber si hemos analizado los bloques de entrada y los de salida BloqueinVisto BloqueoutVisto En el caso de haber analizado los de salida y no los de entrada nos veremos en la necesidad de volver a analizar los de entrada despu s de los de salida 6 private voi
141. rar un mensaje de aviso e jButton3ActionPerformed Se ejecuta al pulsar el bot n 1000 ejecuciones Llama al m todo paso tantas veces como le hayamos indicado en el campo de texto JTextField2 1000 por defecto 65 Cap tulo 5 Implementaci n de la aplicaci n e jButton4ActionPerformed Se ejecuta al pulsar el bot n Reiniciar Llama al m todo Reiniciar Otros m todos de esta clase e private void Reiniciar Devuelve el valor inicial a todas las variables limpia el diagrama de conexiones y las etiquetas de estad sticas e private void pantallaCompleta JFrame jf Con este m todo se consigue que el JFrame se sit e ocupando toda la pantalla La configuraci n de la pantalla debe estar a 1024 por 768 p xeles para que la visualizaci n de la opci n A sea completa e private void escogeAlgoritmo Se llama a m todos de la clase Algoritmo2 para cambiar el tipo de algoritmo de encaminamiento a utilizar en esa clase seg n la variable Algoritmo e private void paso Llama al m todo de la clase algoritmo resuelveAlgoritmos que se ejecutar hasta obtener un evento ya sea conexi n desconexi n o bloqueo Estos eventos se van obteniendo de la cima del vector de eventos Se obtiene cada vez que se ejecute este m todo un objeto del tipo conexi n que es analizado Son extra das su entrada salida matriz de distribuci n y se determina mediante las variables conectado y bloqueado
142. rchivo C Documents and Settings Gregorio Escritorio opcionB Algoritmo2 java Definici n Desordenar el vector conexiones Par metros de entrada Devuelve iud private void desordenar for int a 0 a lt 50 att int numero int Math random 16 Conexiones con Conexiones conexiones elementAt numero conexiones add con conexiones remove numero Definici n Las conexiones de vector conexiones que no est n conectadas se renuevan Par metros de entrada Devuelve if private void SetSalida f entradas new Vector salidas new Vector int contador 0 for int a 0 a lt conexiones size att f Conexiones cs Conexiones conexiones elementAt a if cs getConectado false vamos a adiendo a los vectores entradas y salidas las conexiones que esten bloqueadas o desconectadas f entradas addElement cs getEntrada salidas addElement cs getSalida desordenarEnSal obtenemos las entradas y salidas barajadas en ambos vectores for int a 0 a lt conexiones size att Conexiones cs Conexiones conexiones elementAt a if cs getConectado false sustituimos las entradas y salidas por otras barajadas f Conexiones nuevacon new Conexiones Entrada entradas elementAt contador Salida salidas elementAt contador conexiones setElementAt nuevacon a este metodo borra la antigua conexion contador cu
143. rio Escritorio opcionB Algoritmo2 java return 1 if bloqueOut cot getSalida getBloque f while okl t ok2 x nmi if compruebaMO puntero nmi bloqueOut No se puede por este bloque de salida bloqueOut ir por esta MI puntero nmi ok2 puntero a 0 BloqueoutVisto true else break al salir de este bucle while tenemos ok con un valor si es 4 tendremos un bloqueo if ok2 nmi ok1 ok2 gt nmi con Desconectar ponemos la conexi n como desconectada desconexion o bloqueo Conexiones conevt new Conexiones con false true puntero 3 nmi conectado false bloqueado true eventos addElement conevt SetSalida le dejamos puesta a la conexiones desconectadas una nueva conexion return 1 if bloqueOut if BloqueinVisto false amp amp BloqueoutVisto true con esto hacemos que si hemos incrementado el ptero y no ha mirado la entrada que la mire if bloqueln cot getEntrada getBloque while ok1 ok2 lt nmi if compruebaMI puntero nmi bloqueIn pry No se puede por este bloque de entrada bloqueln ir por esta MI puntero nmi Okl puntero tt a 0 BloqueinVisto true else f break if okl nmi ok1 ok2 gt nmi con Desconectar ponemos la conexi n como desconectada desconexion o bloqueo Conexiones cone
144. rlangs nos indicar el n mero medio de enlaces ocupados esta medida ser 2 M Cuando una cierta cantidad de tr fico es ofrecido a una red Tr fico Ofrecido TO sta puede cursarlo de manera parcial Tr fico Cursado TC y rechazar el resto Tr fico Perdido TP Estos valores ir n relacionados entre s por la probabilidad de bloqueo de la red Pb Asi se tiene TP TO x Pb y TC TO x 1 Pb Para nuestra opci n B se ha supuesto que las llamadas por media duran dos minutos 120 segundos El tiempo en el simulador es discreto va representado por ranuras o slots cada ranura representar un segundo de tiempo real por lo que una llamada por media ocupar 120 slots La probabilidad de colgar ser el inverso de la duraci n media de la llamada q 1 120 La probabilidad de que se produzca una llamada vendr definida por ax qi PAA l a axq Esto viene de la definici n del factor de actividad a o V __ Va l u 1 A 1 q1 q2 p2 73 Cap tulo 6 Uso acad mico de la aplicaci n e Ngiye ipa 11u TIA t Figura 43 Diagrama que muestra el tiempo medio de servicio 1 1 y tiempo medio entre llegadas 1 1 Como se ha definido q 1 120 como la probabilidad de colgar esto es el inverso de la duraci n media de una llamada en slots se tiene que pac K 120 119xa Finalmente l o a recs NN 120x16 112 120x16 La representaci n del tiempo utilizada es como se ha comentado
145. rma intuitiva 72 Cap tulo 6 Uso acad mico de la aplicaci n Observar que si tenemos 2n 1 etapas de distribuci n con la situaci n anterior Es decir 2 x n 1 ocupadas s lo quedar a una libre y el encaminamiento por tanto se producir a trav s suyo ya que no queda ning n otro camino libre En el programa se tiene 4 matrices de entrada 4XN y 4 matrices de salida NX4 Para que se cumpla la condici n de Clos deberemos tener 2 x 4 1 7 etapas intermedias En la opci n B se puede escoger el n mero de matrices intermedias de 4 a 7 si se escoge 7 matrices se puede observar que no habr bloqueo en ning n caso 6 5 Tr fico en redes Cuando se habla de tr fico de manera intuitiva uno puede hacerse una idea bastante cercana al concepto matem tico del tr fico Sup ngase que se dispone de un enlace entre 2 puntos Dicho enlace si siempre estuviese ocupado se dir que transporta tr fico unitario mientras que si nunca se ocupara transportar a tr fico cero Ahora sup ngase que el enlace en cuesti n a veces est ocupado y a veces no el tr fico que transportar estar situado entre O y 1 independientemente del modo en que haya estado ocupado o libre el enlace Esta relaci n de ocupaci n de un enlace o medida del tr fico transportado por este enlace se medir en Erlangs siendo en este simple caso el tr fico m nimo de O Erlangs y el m ximo de 1 Erlang En general M enlaces una medida de tr fico en E
146. rmed evt Archivo C Documents and Settings Gregorio Escritorio opcionA opcionA java jMenul add jMenuItem3 jMenuBarl add jMenul setJMenuBar jMenuBarl pack Definici n Deja seleccionado el algoritmo C como algoritmo de encaminamiento el private void jMenuItem3ActionPerformed java awt event ActionEvent evt jMenul setText Algoritmo C Algoritmo 2 Reiniciar Definici n Deja seleccionado el algoritmo B como algoritmo de encaminamiento ty private void jMenultem2ActionPerformed java awt event ActionEvent evt jMenul setText Algoritmo B Algoritmo 1 Reiniciar Definici n Deja seleccionado el algoritmo A como algoritmo de encaminamiento 7 private void jMenultemlActionPerformed java awt event ActionEvent evt jMenul setText Algoritmo A Algoritmo 0 Reiniciar Definici n Se ejecuta al pinchar en el bot n Paso Atr s y private void jButton6ActionPerformed java awt event ActionEvent evt if Contadorl gt 0 img dibuja g2 Contadorl decrementamos lineas a dibujar img setContador Contador1l g img getGraphics g2 Graphics2D g img update g2 img dibuja g2 TamafioVector Contadorl A rellena Tabla for int i 0 i lt Tama oVector 1 i Conexiones conx Conexiones con elementAt i int IdIn conx getEntrada getId int bloqueIn conx getEntrada getBloque int Id
147. rramientas XML para publicaci n e integraci n de datos de negocios en dispositivos cruzados Entorno elegido Finalmente se decidi escoger por el Netbeans para realizar la parte m s sencilla de la interfaz gr fica debido a la facilidad con la que podemos implementarla con este programa El Kawa se utiliz para el resto de la programaci n debido a su facilidad de uso y su potencia Para resolver problemas durante la programaci n se us el depurador del Netbeans por las muchas posibilidades que ofrece tales como la visualizaci n de variables durante el proceso de depuraci n ES Kawa kawa simucom kawa kwx File Edit View Text Project Build Packages Info Customize Plugin Tools Window Help De Eg amp Ha increnenta 18 BR EN e gt e scs 5 B 19 EA simucom java kawa Projects mport java awt E simucom import javax swing t import java io File Bi EscudoTeleco java P 1 B EscudoUPCT java public class Simucon extends JFrame Bi Simucom java il x Creates new form Simucom public Simucom 4 setTitle SIMUCOM initComponents This method is called from within the constructor to initialize the forn WARNING Do NOT modify this code The content of this method is always regenerated by the Form Editor private void initComponents 1 escudol new EscudoUPCT upctrelieve jpg escudo2 new EscudoTeleco etsit jpg jLabell new javax swing Jlabel Output Build Findin
148. s El tipo de conmutaci n que ocupa al simulador a implementar es de circuitos y espacial Conmutaci n de circuitos Es una t cnica en la que los equipos que se comunican entre s utilizan un canal f sico dedicado extremo a extremo que se mantiene durante el tiempo de duraci n de la llamada o por el periodo de contrataci n 69 Cap tulo 6 Uso acad mico de la aplicaci n Conmutaci n espacial M todo de conmutaci n de circuitos en el que cada conexi n que pasa por el circuito sigue una v a separada 6 2 Objetivos acad micos de la aplicaci n El objetivo de la herramienta de simulaci n es que el alumno entienda que es un conmutador espacial multietapa y que ventajas e inconvenientes presenta respecto al conmutador de matriz cuadrada crossbar de una sola etapa mcus qb b N n b N n Figura 39 Conmutador Multietapa 6 3 Conmutador de matriz crossbar y conmutador multietapa El conmutador de matriz cuadrada o crossbar es la soluci n m s simple al problema de interconectar N entradas con N salidas Esta soluci n presenta accesibilidad total ya que desde cualquier entrada se puede seleccionar cualquier salida y no presenta bloqueo interno ya que cada par entrada salida dispone de su punto de cruce Por otra parte el n mero de puntos de cruce de un conmutador crossbar de N entradas y N salidas es de N X N es decir el n mero de puntos de cruce crece en proporci n al cuadrado del n mero de entra
149. s que se ha rechazado una MI por la entrada en caso de okl o por la salida en ok2 cogemos elemento del vector Conexiones con Conexiones conexiones elementAt indice miramos en que bloque de entrada esta actualmente int bloqueIn con getEntrada getBloque miramos que bloque de salida esta actualmente int bloqueOut con getSalida getBloque miramos en que bloque intermedio le toca puntero nmi for int a 0 a lt conexiones size att f Conexiones cot Conexiones conexiones elementAt a comparo el bloque entrada actual si coincide con alguno de los anteriores if bloqueIn cot getEntrada getBloque while ok1 ok2 lt nmi if compruebaMI puntero 3 nmi bloqueIn ahora hay q comprobar si el bloqueln se ha repetido en esa Matriz Int si es true es que si f ORL puntero a 0 con a 0 comparamos el nuevo puntero con la Entrada desde el principio BloqueinVisto true else f break if oki nmi okl ok2 gt nmi si supera o iguala el nmi es que hay Bloqueo con Desconectar ponemos la conexi n como desconectada desconexion o bloqueo Conexiones conevt new Conexiones con false true puntero 3 nmi conectado false bloqueado true eventos addElement conevt SetSalida le dejamos puesta a la conexiones desconectadas una nueva conexi n Archivo C Documents and Settings Grego
150. s van de la 4 a la 16 ya que 4 es el minimo de conexiones que se podran realizar en una ejecucion estadisticas Conexiones 4 cuadro de conexiones int ncon ncon Integer parseInt etiq 1 Conexiones 4 getText ncon String sncon Integer toString ncon etiq 1 Conexiones 4 setText sncon ncon Integer parseInt sncon Archivo C Documents and Settings Gregorio Escritorio opcionA opcionA java float porciento npor ejecuciones for int c 0 o lt 137 c 1 npor Float parseFloat etig 1 c getText porciento npor ejecuciones 100 String Sporciento Float toString porciento si el numero tiene mas de 3 decimales nos quedamos con lo 3 1 if Sporciento length gt 4 Sporciento Sporciento substring 0 5 etig 2 c setText Sporciento Algor new Algoritmo nueva ejecuci n Algor generaConexiones escogeAlgoritmo con Algor getConexiones OA setConexiones con Contadorl 0 Metodo para calcular la media de conexiones realizadas CalculaMedia ejecuciones Definici n Se ejecuta al pinchar el bot n Ejecuci n j private void jButton2ActionPerformed java awt event ActionEvent evt dibujamos Contadorl Algor getConexiones size Tama oVector Contadorl img setContador TamafioVector g img getGraphics g2 Graphics2D g img dibuja g2 rellena tabla rellenaTabla Definici n S
151. se BloqueoutVisto false while indice lt 16 return 0 Definici n Introduce en una MI la entrada y salida asignada Par metros de entrada int valor MI int entrada bloque entrada int salida bloque salida Devuelve private void seleccionaMI int valor int entrada int salida switch valor case 0 a introduceBloqueIn entrada a introduceBloqueOut salida break Case 1 b introduceBloqueln entrada b introduceBloqueOut salida break case 2 c introduceBloqueIn entrada c introduceBloqueOut salida break case 3 d introduceBloqueIn entrada d introduceBloqueOut salida break Definici n Comprueba si esta la entrada modulo en la MI valor Par metros de entrada ant valor MI int modulo entrada Devuelve boolean wy private boolean compruebaMI int valor int modulo switch valor case 0 return a utilizaIn modulo case 1 return b utilizaIn modulo case 2 return c utilizaIn modulo case 3 return d utilizaIn modulo default return false Definici n Comprueba si esta la salida modulo en la MI valor Par metros de entrada int valor MI int modulo salida Devuelve boolean Bi private boolean compruebaMO int valor int modulo switch valor Archivo C Documents and Settings Gregorio Escritorio opcionA Algoritmo java
152. tAt a getSalida getBloque while ok1 ok2 lt 4 f if compruebaMO puntero 3 4 bloqueOut f P No se puede por este bloque de salida ir por la MI puntero 4 ok2 puntero a 0 con a 0 comparamos el nuevo puntero con la S desde el principio BloqueoutVisto true lse break al salir de este bucle while tenemos ok con un valor si es 4 tendremos un bloqueo if ok2 4 ok1l ok2 gt 4 bloqueo f DepurarConexiones indice return 1 if bloqueOut if BloqueinVisto false amp amp BloqueoutVisto true con esto hacemos que si hemos incrementado el ptero y no ha mirado la entrada que la mire f if bloqueln Conexiones conexiones elementAt a getEntrada getBloque f while ok1 ok2 x 4 f if compruebaMI puntero 3 4 bloqueln Archivo C Documents and Settings Gregorio Escritorio opcionA Algoritmo java No se puede por este bloque de entrada ir por la MI puntero 4 okl puntero a 0 BloqueinVisto else f break EUs if ok1l 4 okl ok2 gt 4 bloqueo DepurarConexiones indice return 1 fin if bloquevisto false for int a 0 a lt indice att introducimos en una MI la entrada y salida asignada seleccionaMI puntero 4 bloqueIn bloqueOut con setMI puntero 3 4 a adimos la MI q corresponde a la
153. tHeight c BufferedImage TYPE INT RGB Graphics2D g2 bufflmagen createGraphics g2 drawImage imagen 0 0 c return buffImagen Definici n Este m todo toma un objeto Image asociado a un fichero y espera hasta que la carga se haya completado ste es el uso m s simple de MediaTracker si se van a cargar varias im genes no debe usarse este m todo en sucesivas llamadas sino que es mucho mejor el uso de un array de im genes Par metros de entrada Image imagen Component c Devuelve boolean Archivo C Documents and Settings Gregorio Escritorio opcionA Imagen java 87 public static boolean cargalmagen Image imagen MediaTracker tracker addImage imagen try tracker wai catch e printStac Component c new MediaTracker c 0 tracker tForAll InterruptedException e kTrace return tracker isErrorAny Definici n Dibuja la imagen b sica Par metros de entrada Graphics g Devuelve ES public void paintComponent Graphics g super pain Graphics2D setPain SetStroke setPain g2 setPain g2 setStroke g2 setPain tComponent g Graphics2D extiende d Graphics Graphics2D g t Color blue new BasicStroke 5 t imagenl fill rectangulo t Color black draw rectangulo new BasicStroke 1 8f LineasFondo 92 Color black NumerosFondo g
154. tatic double ranuras 0 tObserva 0 volumenTotal 0 TC private static String st TP ts Archivo C Documents and Settings Gregorio Escritorio opcionB DIALOGO java DIALOGO java NG import javax swing import java awt public class DIALOGO extends JDialog A return status code returned if Cancel button has been pressed public static final int RET_CANCEL 0 A return status code returned if OK button has been pressed public static final int RET_OK 1 Definici n Constructor Par metros de entrada Frame parent boolean modal Devuelve vector de conexiones pad public DIALOGO java awt Frame parent boolean modal super parent modal constructor de la superclase initComponents return the return status of this dialog one of RET OK or RET CANCEL public int getReturnStatus return returnStatus Definici n Inicia los componentes del Dialogo 7 private void initComponents buttonPanel new JPanel okButton new JButton jLabell new JLabel setTitle MENSAJE DE AVISO addWindowListener new java awt event WindowAdapter public void windowClosing java awt event WindowEvent evt closeDialog evt Na buttonPanel setLayout new java awt FlowLayout java awt FlowLayout RIGHT okButton setText OK okButton addActionListener new java awt event ActionListener public void actionPer
155. tenemos la MI f return MI Archivo C Documents and Settings Gregorio Escritorio opcionA MatrizIntermedia java MatrizIntermedia java as import java util Vector public class MatrizIntermedia private int id private Vector in out Definici n Constructor Par metros de entrada int id la MI E Devuelve EN public MatrizIntermedia int id in new Vector out new Vector this id id Definici n A adimos el bloque de entrada al vector entradas Par metros de entrada int bloque Matriz de entrada Devuelve ng public void introduceBloqueln int bloque in add new Integer bloque Definici n A adimos el bloque de salida al vector entrasalidadas Par metros de entrada int bloque Matriz de salida Devuelve Es public void introduceBloque0ut int bloque out add new Integer bloque de entradas devuelve false si se puede utilizar no se utiliz la MI por un mismo bloque 2 veces HY Par metros de entrada int valor bloque de entrada a comprobar Devuelve boolean uA public boolean utilizaln int valor for int i 0 i lt in size i int e Integer in elementAt i intValue if valor Integer in elementAt i intValue return true return false Definici n indica si el valor introducido estaba ya almacenado en el vector de s
156. to lleva dos m dulos uno con soporte HTML y otro para Java Se pueden visualizar las clases variables Sencillo y potente Netbeans El Entorno de Desarrollo Integrado IDE NetBeans es un entorno de programaci n para varios lenguajes incluyendo a Java y C Este desarrollo es de fuente abierto es decir se proporciona el c digo fuente del entorno para que se pueda modificar de acuerdo a ciertos par metros de licencia Destacamos este entorno por su f cil manejo y por su muy buen depurador Es muy til para la programaci n de la interfaz gr fica Nos ahorra tiempo en escribir c digo redundante ya que solo necesitamos pinchar los componentes que necesitamos y arrastrarlos con el rat n Un aspecto negativo de este entorno es la gran cantidad de recursos que consume JBuilder Dise ador visual para Enterprise JavaBeans 2 0 para desarrollo r pido de aplicaciones Java 2 Distribuci n hacia los servidores de aplicaci n l deres incluyendo Borland Enterprise Server BEA WebLogic IBM WebSphere e Planet Application Server 18 Cap tulo 4 mbito de aplicaci n Asistentes herramientas y componentes para simplificar el desarrollo y la distribuci n de aplicaciones de bases de datos Desarrollo y distribuci n de aplicaciones Web con JSP y servlets Visualizaci n de c digo UML Reconstructores de c digo y probadores de unidades Integraci n con sistemas l deres en el control de versiones He
157. tring idSalida String matriz jTablel jTablel jTablel dInringatel Integer toString IdIn Integer toString IdOut Integer toString Matriz setValueAt indice i columna setValueAt idEntrada i columna 1 setValueAt idSalida i columna 2 setValueAt matriz i columna 3 NG para el ultimo elemento del vector si no es if i Tama oVector 1 amp amp TamafioVector no se va a bloquear en la conexion 16 nunca f jTablel jTablel jTablel jTablel setValueAt setValueAt setValueAt setValueAt indice i idEntrada idSalida Bloqueo columna i iy iy columna 2 Definici n Limpia tabla de conexiones Par metros de entrada Devuelve NAA XX private void limpiaTabla f for Imt f f lt 16 ftt for int c 0 a 43 cr jTablel setValueAt null f 0 c el 16 16 esto se puede hacer xq se haran 15 conexiones columna 1 columna 3 Definici n Limpia cuadros de estad sticas Par metros de entrada Devuelver El private void limpiaEstadisticas for int fT 1t FB 44 Ad for int c r a 13 ert 1 etiq f c setText 0 jlabels JLabelMedia setText for int i 0 i lt estadisticas length estadisticas i 0 i 4 Definici n M todo para calcular la media Par metros de entrada float ejecuciones Devuelve
158. uda en el frame Font f1 new Font ITALIC Font ITALIC 14 lletLayoutont setFont f1 Label02 setFont f1 Label03 setFont f1 Label01 setAlignment Label CENTER Label02 setAlignment Label CENTER Label03 setAlignment Label CENTER Label01 setBackground new java awt Color 0 153 153 Label02 setBackground new java awt Color 0 153 153 Label03 setBackground new java awt Color 0 153 153 Label01 setBounds 135 20 205 30 getContentPane add Label01 Label02 setBounds 135 50 205 30 getContentPane add Label02 Label03 setBounds 135 80 205 30 getContentPane add Label03 fin de texto ayuda Font f2 new Font Arial Font BOLD 15 Labell setFont 2 Labell setForeground Color black Labell setText EVENTOS Label2 setForeground Color black Label5 setForeground Color black Label7 setForeground Color black Labell setBounds 50 150 150 30 getContentPane add Labell Label2 setBounds 70 180 80 30 getContentPane add Label2 abel3 setBounds 150 180 120 30 tContentPane add JLabel3 para el estado abel4 setBounds 250 180 80 30 tContentPane add JLabel4 para la e s bel5 setBounds 70 210 60 30 tContentPane add Label5 total abel6 setBounds 130 210 50 30 tContentPane add JLabel6 metemos el total bel7 setBounds 210 210 80 30 tContentPane add Labe17 conexiones Label8 set
159. ura 37 Diagrama de flujo del m todo paso 67 Figura 38 Ejemplo de Dialogo para la opci n B 68 Figura 39 Conmutador Multietapa 70 Figura 40 Conmutador de matriz cuadrada o crossbar 71 Figura 41 Dos conmutadores crossbar 1000x100 y 100x1000 implementando un conmutador 1000x1000 71 Figura 42 Etapas de 100 10 implementando un conmutador 1000X1000 72 Figura 43 Diagrama que muestra el tiempo medio de servicio 1 u tiempo medio entre llegadas 1 A 74 Figura 44 Men de inicio del SIMUCOM 80 Figura 45 Opci n A del SIMUCOM 81 Figura 46 Dibujo del conmutador de la opci n A 81 Figura 47 Tabla de conexiones de la opci n A 82 Figura 48 Men de algoritmos de la opci n A 82 Figura 49 Bot n Paso adelante de la opci n A 82 Figura 50 Bot n Ejecuci n de la opci n A 83 Figura 51 Bot n Nueva ejecuci n de la opci n A 83 Figura 52 Bot n Reiniciar de la opci n A 83 Figura 53 1000 ejecuciones de la opci n A 83 Figura 54 Bot n Paso atr s de la opci n A 83 Figura 55 Caja de Texto n mero de ejecuciones y el bot n modificado por el nuevo n mero de ejecuciones introducido 84 Figura 56 Tabla de estad sticas de la opci n A 84 Figura 57 Media de conexiones de la opci n A 84 Figura 58 Opci n B iniciada 85 Figura 59 Diagrama de conexiones de la opci n B 86 Figura 60 Etiguetas de eventos de la opci n B 86 Figura 61 Men de Algoritmos de la opci n B 86 Figura 62 Men de Matrices intermedias de la opci n B 87 Figura 6
160. va 2 Incluye la JVM Java Virtual Machine y la API Est incluida en el J2SE Java 2 Standard Edition aunque puede descargarse e instalarse separadamente En aquellos sistemas donde se vayan a ejecutar programas Java pero no compilarlos el JRE es suficiente Si nuestro prop sito es modificar el c digo de la aplicaci n y luego compilarlo se debe instalar J2SE Se puede descargar todo este software de http java sun com j2se La aplicaci n se compone de 3 ficheros con extensi n jar Uno para la opci n A opcionA jar otro para la opci n B opcionB jar y otro para el men de inicio que abre estas 2 opciones SIMUCOM jar En el mismo directorio donde se instalen estos ficheros se debe grabar la carpeta Im genes que contiene los ficheros e sincrossbar jpg con la imagen que usa la opci n A para representar el conmutador e etsitipg y upctrelieve jpg con los escudos de la E T S I T y de la Universidad Polit cnica de Cartagena respectivamente cuyo prop sito es el de dar un aspecto corporativo a la aplicaci n Para ejecutar la aplicaci n se debe ejecutar el fichero SIMUCOM jar mediante la sentencia java jar SIMUCOM jar Para la correcta visualizaci n del programa la configuraci n de rea de pantalla debe ser de 1024 por 768 p xeles 79 Anexo A Manual de usuario A 2 Men de Inicio Este men de inicio es una interfaz gr fica sencilla desde la cual se pueden llamar
161. va awt event ActionEvent evt Archivo C Documents and Settings Gregorio Escritorio opcionB opcionC java jMenuItem7ActionPerformed evt p jMenu2 add jMenuItem 7 jMenuBarl add jMenu2 setJMenuBar jMenuBarl pack GEN END initComponents Definici n Deja seleccionadas 7 MI Ey private void jMenuItem7ActionPerformed java awt event ActionEvent evt jMenu2 setText Matrices Intermedias 7 MI 7 Reiniciar Definici n Deja seleccionadas 6 MI El private void jMenuItem6ActionPerformed java awt event ActionEvent evt jMenu2 setText Matrices Intermedias 6 MI 6 Reiniciar Definici n Deja seleccionadas 5 MI private void jMenultem5ActionPerformed java awt event ActionEvent evt jMenu2 setText Matrices Intermedias 5 MI 5 Reiniciar Definici n Deja seleccionadas 4 MI Ey private void jMenuItem4ActionPerformed java awt event ActionEvent evt jMenu2 setText Matrices Intermedias 4 MI 4 Reiniciar Definici n Deja seleccionado el algoritmo C como algoritmo de encaminamiento ES private void jMenultem3ActionPerformed java awt event ActionEvent evt jMenul setText Algoritmo C Algoritmo 2 Reiniciar Definici n Deja seleccionado el algoritmo B como algoritmo de encaminamiento uA private void jMenuItem2ActionPerformed java awt event ActionEvent evt jMenul setText Algoritmo B Algoritm
162. ve i break Definici n Devuelve el tama o del vector de entradas y el de salidas Par metros de entrada Devuelve int tama o vector i Archivo C Documents and Settings Gregorio Escritorio opcionB MatrizIntermedia java public int getInOutSize if in size out size return out size el tamafio del vector in y el de out debe ser igual else 1 return 1 Definici n Indica si el valor introducido estaba ya almacenado en el vector de entradas devuelve false si se puede utilizar no se utiliz la MI por un mismo bloque 2 veces Par metros de entrada Devuelve boolean public boolean utilizaln int valor for int i 0 ix in size i int e Integer in elementAt i intValue if valor e return true return false Definici n Indica si el valor introducido estaba ya almacenado en el vector de salida devuelve false si se puede utilizar no se utiliz la MI por un mismo bloque 2 veces Par metros de entrada Devuelve boolean f public boolean utilizaOut int valor for int i 0 i lt out size itt int s Integer out elementAt i intValue if valor s return trus return false Archivo C Documents and Settings Gregorio Escritorio opcionB Algoritmo2 java Algoritmo2 java Ng import import import public f privat
163. vent ActionEvent evt jMenuItemlActionPerformed evt Na jMenul add jMenuIteml jMenuItem2 setText B jMenuItem2 addActionListener new java awt event ActionListener public void actionPerformed java awt event ActionEvent evt jMenuItem2ActionPerformed evt Na jMenul add jMenuItem2 jMenuItem3 setText C jMenuItem3 addActionListener new java awt event ActionListener public void actionPerformed java awt event ActionEvent evt jMenuItem3ActionPerformed evt Na jMenul add jMenuItem3 jMenuBarl add jMenu1l setJMenuBar jMenuBarl jMenu2 setText Matrices Intermedias 4 jMenuItem4 setText 4 jMenuItem4 addActionListener new java awt event ActionListener public void actionPerformed java awt event ActionEvent evt jMenuItem4ActionPerformed evt Na jMenu2 add jMenuItem4 jMenuItem5 setText 5 jMenuItem5 addActionListener new java awt event ActionListener public void actionPerformed java awt event ActionEvent evt jMenuItem5ActionPerformed evt Na jMenu2 add jMenuItem5 jMenuItem6 setText 6 jMenuItem6 addActionListener new java awt event ActionListener public void actionPerformed java awt event ActionEvent evt jMenuItem6ActionPerformed evt Na jMenu2 add jMenuItem6 jMenuBarl add jMenu2 setJMenuBar jMenuBar1 jMenuItem7 setText 7 jMenuItem7 addActionListener new java awt event ActionListener public void actionPerformed ja
164. vt new Conexiones con false true puntero 5 nmi conectado false bloqueado true eventos addElement conevt SetSalida le dejamos puesta a la conexiones desconectadas una nueva conexion return 1 fin if bloquevisto false for int a 0 a lt indice a con Conectar 7 Conexiones conevt new Conexiones con true false puntero nmi conectado true bloqueado false eventos addElement conevt afiadimos al vector de eventos la conexi n con setMI puntero 3 nmi Archivo C Documents and Settings Gregorio Escritorio opcionB Algoritmo2 java 9 seleccionaMI puntero nmi bloqueIn bloqueOut puntero 0 buscamos conectar por la MI 0 ok1 0 ok2 0 BloqueinVisto false BloqueoutVisto false return 0 Definici n Algoritmo Aleatorio escoge siempre una MI al azar Par metros de entrada Devuelve int we private int AlgoritmoC int ok1 0 0k2 0 puntero int Math random 4 nmi 1 cogemos elemento del vector Conexiones con Conexiones conexiones elementAt indice miramos en que bloque de entrada esta actualmente int bloqueIn con getEntrada getBloque miramos que bloque de salida esta actualmente int bloqueOut con getSalida getBloque miramos en que bloque intermedio le toca puntero nmi for int a 0 a lt conexiones size att f Conexiones cot Conexiones conexiones elementAt a
165. w new Line2D Double 406 62 540 62 g2 draw new Line2D Double 406 151 540 79 g2 draw new Line2D Double 406 240 540 96 g2 draw new Line2D Double 406 329 540 113 g2 draw new Line2D Double 406 79 540 151 g2 draw new Line2D Double 406 168 540 168 g2 draw new Line2D Double 406 257 540 185 g2 draw new Line2D Double 406 346 540 202 g2 draw new Line2D Double 406 96 540 240 g2 draw new Line2D Double 406 185 540 257 g2 draw new Line2D Double 406 274 540 274 g2 draw new Line2D Double 406 363 540 291 g2 draw new Line2D Double 406 113 540 329 g2 draw new Line2D Double 406 202 540 346 g2 draw new Line2D Double 406 291 540 363 g2 draw new Line2D Double 406 380 540 380 para pintar la lineas que representan las conexiones Definici n Pinta las l neas conectadas Archivo C Documents and Settings Gregorio Escritorio opcionA Imagen java Par metros de entrada Graphics2D g2 X Devuelve s7 public void PintaLinea Graphics2D g2 for int i 0 i contador itt 4 Conexiones conx Conexiones con elementAt i int IdIn conx getEntrada getId int bloqueIn conx getEntrada getBloque int IdOut conx getSalida getId int bloqueOut conx getSalida getBloque int Matriz conx getMI g2 setPaint Color blue switch bloqueIn case 0 g2 draw new Line2D Double 170 62 17 Matriz 3
Download Pdf Manuals
Related Search
Related Contents
Object-oriented virtual environment for visualization of OpenOffice.org 1.1 CECH-ZKB1ES - PlayStation 取扱説明書 - 三菱電機 10.5 L & 12.5 L Diesel Engines Base Engine TECHNICAL INSTRUCTION - North American HVAC Products SUUNTO EON STEEL 1.1 Guía de usuario - Simrad Yachting Avaya Personal Call Manager BCM Rls 6.0 User's Manual Copyright © All rights reserved.
Failed to retrieve file