Benemerita Universidad Autonoma de Puebla Facultad de Ciencias

Anuncio
Benemerita Universidad Autonoma de Puebla
Facultad de Ciencias de la Computacion
Materia: Programacion Concurrente y Paralela
Profesor: Ma. Del Carmen Ceron Garnica
Alumnos:
ROGELIO MENDOZA JUAREZ 200808730
PATRICIA DOMINGUEZ MIRON 200716025
IRASEMA VAZQUEZ PEREZ 200725469
Periodo: Primavera 2013
INTRODUCCION
Un grafo es un conjunto, no vacío, de objetos llamados vértices (o nodos) y una
selección de pares de vértices, llamados aristas (edges en inglés) que pueden
ser orientados o no. Típicamente, un grafo se representa mediante una serie de
puntos (los vértices) conectados por líneas (las aristas).
Un árbol es una estructura de datos ramificada (no lineal) que puede
representarse como un conjunto de nodos enlazados entre sí por medio de
ramas. La información contenida en un nodo puede ser de cualquier tipo
simple o estructura de datos.
PLANTEAMIENTO
Construir el Grafo Grafico del ejercicio 2 del cuestionario 1
DESARROLLO DE LA PRACTICA
CLASE FRAME
import javax.swing.BoxLayout;
import javax.swing.JFrame;
import javax.swing.JButton;
import javax.swing.JPanel;
import java.awt.event.*;
import java.awt.*;
public class Frame extends JFrame
{
private JButton aceptar=new JButton("Aceptar");
private JButton limpiar=new JButton("Limpiar");
Panel p=new Panel();
public Frame()
{
super("Grafo Grafico");
setSize(550,550);
setDefaultCloseOperation(EXIT_ON_CLOSE);
aceptar.setMnemonic('a');
aceptar.setToolTipText("Dibuja Grafo");
aceptar.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(java.awt.event.ActionEvent
evt)
{
accionBoton(evt);
}
});
limpiar.setMnemonic('l');
limpiar.setToolTipText("Limpia Pantalla");
limpiar.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(java.awt.event.ActionEvent
evt)
{
accionBoton(evt);
}
});
JPanel panel=new JPanel();
BoxLayout boxarriba=new BoxLayout(panel, BoxLayout.X_AXIS);
panel.setLayout(boxarriba);
panel.add(aceptar);
//panel.add(limpiar);
JPanel panel2=new JPanel();
BoxLayout boxabajo=new BoxLayout(panel2, BoxLayout.Y_AXIS);
panel2.setLayout(boxabajo);
panel2.add(p);
panel2.add(panel);
add(panel2);
setVisible(true);
}
public void accionBoton(java.awt.event.ActionEvent evt)
{
Object obj=evt.getSource();
if(obj==aceptar)
{
Thread S1=new Hilo(1000,"S1",p,200,50,200,50);
Thread S2=new Hilo(2000,"S2",p,150,150,200,50);
Thread S5=new Hilo(2020,"S5",p,250,150,200,50);
Thread S3=new Hilo(3000,"S3",p,100,250,150,150);
Thread S4=new Hilo(3020,"S4",p,200,250,150,150);
Thread S6=new Hilo(4000,"S6",p,250,380,250,150);
S1.start();
S2.start();
S3.start();
S4.start();
S5.start();
S6.start();
/////////////////////////////////////////////////////
/*Thread S1=new Hilo(1000,"S1",p,500,100,300,100);
Thread S2=new Hilo(2000,"S2",p,500,100,300,100);
Thread S5=new Hilo(2020,"S5",p,500,100,300,100);
Thread S3=new Hilo(3000,"S3",p,500,100,300,100);
Thread S4=new Hilo(3020,"S4",p,500,100,300,100);
Thread S6=new Hilo(4000,"S6",p,500,100,300,100);
S1.start();
S2.start();
S3.start();
S4.start();
S5.start();
S6.start();*/
}
}
public static void main(String[] args)
{
Frame F=new Frame();
}
}
CLASE HILO
public class Hilo extends Thread
{
int time;
String name;
Panel p;
int x, y;
int xo,yo;
public Hilo(int time, String name, Panel p,int x, int y,int xo,int yo)
{
this.time=time;
this.name=name;
this.p=p;
this.x=x;
this.y=y;
this.xo=xo;
this.yo=yo;
}
public void run()
{
try
{
sleep(time);
System.out.println(name);
p.Dibuja(x, y,xo,yo, name);
}catch(InterruptedException e){}
}
}
CLASE PANEL
import javax.swing.JPanel;
import java.awt.Color;
import java.awt.Graphics;
public class Panel extends JPanel
{
int x, y, xo, yo;
String name;
public void Dibuja(int x, int y, int xo, int yo, String name)
{
this.x=x;
this.y=y;
this.name=name;
this.xo=xo;
this.yo=yo;
paintComponent(this.getGraphics());
}
public void paintComponent(Graphics g)
{
g.setColor(Color.lightGray);
g.fillOval(x,y,50,50);
g.setColor(Color.GREEN);
g.drawString(name, x+18, y+30);
if(name!="S1")
{
g.setColor(Color.BLACK);
g.drawLine(x+25, y, xo+25, yo+50);
}
if(name=="S6")
{
g.setColor(Color.BLACK);
g.drawLine(x+25, y, 100+25, 250+50);
g.drawLine(x+25, y, 200+25, 250+50);
}
}
}
CONCLUSION
Logramos apreciar de una mejor forma el comportamiento de los hilos con
clase extends utilizando una representacion grafica.
Descargar