- •1. Історія виникнення об’єктно-орієнтованої парадигми
- •6. Визначення класу. Опис класу з використанням мов програмування с, Java, Object Pascal.
- •7. Об’єкт. Створення та знищення об’єктів
- •8. Мова Java –об’єктно-орієнтована мова програмування.
- •16. Механізм перевизначення методів класу-нащадка.
- •17. Множинне наслідування та його проблеми.
- •18. Реалізація наслідування мовою Java.
- •19. Реалізація наслідування мовою Object Pascal.
- •22. Поняття інтерфейсу.
- •23.Програмування інтерфейсів.
- •24.Використання інтерфейсів.
- •25.Інтерфейс Comparable.)
- •26. Механізм зворотного виклику. Інтерфейс ActionListener.
- •29.Компоненти інтерфейсу користувача.
- •30.Використання об’єктів Timer і Date для об’єктно-орієнтованого моделювання процесів
- •31.Механізм об’єктних інтерфейсів в Delphi.
- •32.Клас tObject.
- •33.Об’єктні інтерфейси.
- •34.Обробники подій компнонентів Delphi.
- •35.Бібліотека awt компонентів інтерфейсу користувача
- •36.Бібліотека Swing компонентів інтерфейсу користувача
- •41.Поняття Java-аплета
29.Компоненти інтерфейсу користувача.
30.Використання об’єктів Timer і Date для об’єктно-орієнтованого моделювання процесів
package smallsmo;
public class TimeEndEvent {
private long time;
private String nameEvent;
public TimeEndEvent( long t, String s)
{
time = t;
nameEvent = s;
}
public long getTime()
{
return time;
}
public String getEvent()
{
return nameEvent;
}
}
package smallsmo;
import java.util.ArrayList;
import java.util.Date;
public class SMO extends smo_big
{
private long timeCurrent;
private long timeServ;
private long timeEntry;
private TimeEndEvent Ev;
private ArrayList<TimeEndEvent> ListEvent= new ArrayList<TimeEndEvent>();
public SMO(devices D, int tService)
{
super(D);
Date now = new Date();
timeCurrent = now.getTime();
timeServ = tService;
ListEvent.clear();
ListEvent.add( new TimeEndEvent(timeCurrent+timeEntry+(long)(-10+Math.random()*20),"Seize"));
}
public SMO(devices D,queue Q, int tService, int tEntry)
{
super(D,Q);
Date now = new Date();
timeCurrent = now.getTime();
timeServ = tService;
timeEntry = tEntry;
ListEvent.clear();
ListEvent.add( new TimeEndEvent(timeCurrent+timeEntry+(long)(-10+Math.random()*20),"Seize"));
}
public long getTimserv()
{
return timeServ;
}
public TimeEndEvent getTimeEndEvent()
{
return Ev;
}
@Override
public void seize()
{
super.seize();
ListEvent.add( new TimeEndEvent(timeCurrent+timeServ+(long)(-10+Math.random()*20),"Releize"));
ListEvent.add( new TimeEndEvent(timeCurrent+timeEntry+(long)(-1+Math.random()*2),"Seize"));
}
@Override
public void releize()
{
super.releize();
}
public TimeEndEvent getMinEvent()
{
TimeEndEvent a=ListEvent.get(0);
long min = a.getTime();
for (TimeEndEvent e:ListEvent)
if (e.getTime()<min)
{ min = e.getTime() ;
a = e;
}
return a;
}
public void doEvent()
{
TimeEndEvent minEvent = getMinEvent();
if(minEvent!=null)
{ ListEvent.remove(minEvent);
if(minEvent.getEvent().equalsIgnoreCase("Seize"))
this.seize();
else if(minEvent.getEvent().equalsIgnoreCase("Releize"))
this.releize();
}
else
System.out.println("Event==null");
System.out.println("TimeCurrent= "+timeCurrent+" TimeNextEvent= "+getMinEvent().getTime());
timeCurrent = getMinEvent().getTime();
}
public long getTimeNextEvent()
{
return getMinEvent().getTime();
}
}
package smallsmo;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Date;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.Timer;
public class ModelFrame extends JFrame
{private JTextArea text;
private JScrollPane scroll;
private JPanel panel;
public ModelFrame() //конструктор вікна
{
setTitle("Model SMO");
setSize(500,300);
this.setLocation(100,200);
panel = new JPanel(); //створення панелі
JButton ModelingButton = new JButton("Modeling");
JButton StopButton = new JButton("STOP");
JButton ResultsButton = new JButton("Results");
JButton ExitButton = new JButton("EXIT");
text = new JTextArea();
device[] groupD = new device[2];
for (int j=0;j<2;j++)
groupD[j] = new device();
devices D = new devices(groupD);
queueWithMax Q = new queueWithMax(0,10);
final SMO Model = new SMO(D,Q,10,2);
ModelingButton.addActionListener(
new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
Timer t = new Timer(1000,new ActionListener(){
public void actionPerformed(ActionEvent e) {
Date now = new Date();
long t= now.getTime();
text.append(" time= "+(now.getTime())+"\n");
if(Model.getTimeNextEvent()<t)
Model.doEvent();
text.append("Next event "+Model.getTimeEndEvent().getEvent()+"\n"
+" in SMO "+Model.getState()+" in devices "+Model.getDevices().getNumSeize()+" in queue "+Model.getQueue().getState()+"\n");
}
}
);
t.start();
}
}
);
StopButton.addActionListener(
new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
JOptionPane.showMessageDialog(null, "Зупинити моделювання?");
}
}
);
StopButton.addActionListener(
new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
JOptionPane.showMessageDialog(null, "Зупинити моделювання?");
}
}
);
ExitButton.addActionListener(
new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
JOptionPane.showMessageDialog(null, "Вихід?");
System.exit(0);
}
}
);
ResultsButton.addActionListener
(
new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
text.setText("\n Результати моделювання: \n\n\n") ;
text.append(" кількість необслугованих вимог = "+Model.getNumNeobsl()+"\n");
text.append(" кількість обслугованих вимог = "+Model.getNumObsl()+"\n");
text.append(" максимальна кількість у черзі = "+Model.getQueue().getMaxLength()+"\n");
}
}
);
panel.add(ModelingButton);
panel.add(StopButton);
panel.add(ResultsButton);
panel.add(ExitButton);
panel.add(text);
add(panel,BorderLayout.NORTH);
scroll = new JScrollPane(text);
add(scroll,BorderLayout.CENTER);
}}