Ласло Краус |
ИР2ОО2 Други колоквијум 11. 7. 2008. |
---|
Одговорити концизно (по једна или две реченице) и прецизно на следећа питaња:
а) (Java) Како се може сачекати на завршетак неке нити и да ли се након завршетка дате нити може приступити стању објекта те нити?
б) (C#) Да ли .NET извршно окружење (CLR – Common Language Runtime) подржава интерпретацију међукода MSIL и коју алтернативну подржава?
в) (C#) Како и када се ослобађа меморија коју заузима неки примерак структуре (struct
)?
У пакету merenje
постоје следећи типови (ове типове није потребно реализовати):
Реализовати на језику Java следеће типове:
TextField
.
Panel
користећи задате боје за подлогу и за кружни исечак. Исечак од 360° представља потпуно урађен посао.
///////////////// Не припада решењу колоквијума /////////////////////// // Uporediv.java // // package merenje; // // public interface Uporediv { // int uporedi(Uporediv u); // } // // // Ceo.java // // package merenje; // // public class Ceo implements Uporediv { // private int vr; // // public Ceo(int vrednost) { vr = vrednost; } // // public int uporedi (Uporediv u) { return vr - ((Ceo)u).vr; } // } // // package merenje; // // public class GVrednost extends Exception{ // public String toString() {return"*** Nedozvoljena vrednost!";} // } // // // Merac.java // // package merenje; // // public abstract class Merac { // protected double vr = 0, max = 100; // // public void postaviMax(double max) throws GVrednost { // if (max <= 0) throw new GVrednost(); // this.max = max; vr = 0; prikazi(); // } // // public void postaviVr(double vr) throws GVrednost { // if (vr<0 || vr>max) throw new GVrednost(); // this.vr = vr; prikazi(); // } // // abstract void prikazi(); // // public String toString() { return vr + "/" + max; } // } // ///////////////// Не припада решењу колоквијума /////////////////////// // TksMerac.java package merenje; import java.awt.TextField; public class TksMerac extends Merac { private TextField tks; public TksMerac(TextField tks) { this.tks = tks; } public void prikazi() { tks.setText((int)(vr/max*100)+"%"); } } // GraMerac.java package merenje; import java.awt.*; public class GraMerac extends Merac { private Platno platno; private Color boja; public GraMerac(Panel ploca, Color b1, Color b2) { ploca.setLayout (new BorderLayout()); ploca.add(platno= new Platno ()); platno.setBackground(b1); boja = b2; } public void postaviMax(double max) throws GVrednost { super.postaviMax(max); platno.repaint(); } public void prikazi() { Graphics g = platno.getGraphics(); g.setColor(boja); g.fillArc(0, 0, platno.getWidth(), platno.getHeight(), 90, -(int)(vr/max*360)); } private class Platno extends Canvas { public void paint(Graphics g) { prikazi(); } } } ///////////////// Не припада решењу колоквијума /////////////////////// // Punjac.java // // package merenje; // // public interface Punjac { // void napuni(Object[] niz, Merac merac); // } // // package merenje; // // public class CeoPunjac implements Punjac{ // // public void napuni(Object[] niz, Merac merac) { // try { // int n = niz.length; // merac.postaviMax(n); // for (int i=0; i<n; i++) { // niz[i] = new Ceo((int)(Math.random()*1000)); // merac.postaviVr(i+1); // } // } catch (GVrednost g) {} // } // } // // // Uredjivac.java // // package merenje; // // public interface Uredjivac { // void uredi(Uporediv[] niz, Merac merac); // // void prekini(); // } // // // Izbor.java // // package merenje; // // public class Izbor implements Uredjivac { // private volatile boolean radi; // // public void uredi(Uporediv[] niz, Merac merac) { // try { // radi = true; // int n = niz.length; // merac.postaviMax(n*(n-1)/2); // for (int i=0; radi && i<n-1; i++) // for(int j=i+1; radi && j<n; j++) { // if (niz[j].uporedi(niz[i])<0) { // Uporediv u = niz[i]; // niz[i] = niz[j]; niz[j] = u; // } // merac.postaviVr(n*i+j-i*(i+3)/2); // } // } catch (GVrednost g) {} // } // // public void prekini() { radi = false; } // } // ///////////////// Не припада решењу колоквијума /////////////////////// // Program.java package merenje; import java.awt.*; import java.awt.event.*; public class Program extends Frame { private Button dgmNapuni = new Button("Napuni"), dgmUredi = new Button("Uredi"), dgmPrekini = new Button("Prekini"); private Panel ploMer = new Panel(); private TextField tksMer = new TextField("0%", 3); private Merac graMerac = new GraMerac(ploMer, Color.WHITE, Color.BLUE), tksMerac = new TksMerac(tksMer); private Uredjivac uredjivac = new Izbor(); private Punjac punjac=new CeoPunjac(); private Ceo[] niz = new Ceo [1000]; private TextField tksDuz = new TextField("1000", 3); private void popuniProzor() { setBackground(Color.LIGHT_GRAY); add(ploMer, "Center"); Panel plo = new Panel(); add(plo, "North"); plo.add(new Label("n:",Label.RIGHT)); plo.add(tksDuz); plo.add(dgmNapuni); plo.add(tksMer); add(plo = new Panel(), "South"); plo.add(dgmUredi); plo.add(dgmPrekini); dgmNapuni.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent d) { uredjivac.prekini(); niz = new Ceo [Integer.parseInt(tksDuz.getText())]; punjac.napuni(niz, tksMerac); } }); dgmUredi.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent d) { new Thread() { public void run() { uredjivac.uredi(niz, graMerac); } }.start(); } }); dgmPrekini.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent d) { uredjivac.prekini(); } }); } private Program() { super ("Uredjivanje"); setSize(250, 250); setResizable(false); addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent d) { uredjivac.prekini(); dispose(); } }); popuniProzor(); setVisible(true); } public static void main(String[] varg) { new Program(); } }(⇒ почетак)
Copyright © 2010, Laslo Kraus
Последња ревизија: 30.8.2010.