Ласло Краус |
ИР2ОО2 Други колоквијум 7. 7. 2006. |
---|
У пакету statistika
постоје типови за рад са случајним бројевима који су приказани на слици. Ове типове није потребно реализовати.
Реализовати на језику Java следеће типове:
TextField
) на коме приказује сваку промену стања придруженог посматрача.
Одговорити концизно (по једна или две реченице) и прецизно на следећа питaња:
а) (Java) Шта представља контејнерска компонента у пакету java.awt
? Навести примере контејнерских компонената.
б) (Java) Како се може синхронизовати нит А са N других нити тако да нит А чека да те друге нити заврше метод run()
?
в) (C#) У чему су разлике између вредносних и указаних типова?
///////////////// Не припада решењу колоквијума /////////////////////// /// // Generator.java /// package statistika; /// public class Generator { /// int klica; double min, max; /// public Generator (int kl, double mi, double ma) /// { klica = kl; min = mi; max = ma; } /// public int slBrojCeo () /// { return klica = 314159621 * klica + 907633385; } /// public double slBroj () { /// return min + /// (max - min) * (slBrojCeo() + 2147483648.) / 4294967296.; /// } /// } /// /// // Posmatrac.java /// package statistika; /// public interface Posmatrac { /// void ispocetka (); /// void azuriraj (double b); /// double rezultat (); /// String toString (); /// } /// /// // Srednja.java /// package statistika; /// public class Srednja implements Posmatrac { /// private double s = 0; /// private int n = 0; /// public void ispocetka () { s = n = 0; } /// public void azuriraj (double b) { s += b; n++; } /// public double rezultat () { return s / n; } /// public String toString () { return "srednja"; } /// } /// /// ///////////////// Не припада решењу испита ////////////////////// /// /// /// // Minimum.java /// /// package statistika; /// /// public class Minimum implements Posmatrac { /// /// private double min = Double.MAX_VALUE; /// /// public void ispocetka () { min = Double.MAX_VALUE; } /// /// public void azuriraj (double b) { if (b < min) min = b; } /// /// public double rezultat () { return min; } /// /// public String toString () { return "minimum"; } /// /// } /// /// /// /// // Maximum.java /// /// package statistika; /// /// public class Maximum implements Posmatrac { /// /// private double max = Double.MIN_VALUE; /// /// public void ispocetka () { max = Double.MIN_VALUE; } /// /// public void azuriraj (double b) { if (b > max) max = b; } /// /// public double rezultat () { return max; } /// /// public String toString () { return "maximum"; } /// /// } /// /// /// /// ///////////////// Не припада решењу испита ////////////////////// /// /// // Subjekat.java /// package statistika; /// public abstract class Subjekat { /// private Elem prvi, posl; /// private class Elem { /// Posmatrac posm; Elem sled; /// Elem (Posmatrac p) { /// posm = p; /// if (prvi == null) prvi = this; /// else posl.sled = this; /// posl = this; /// } /// } /// public Subjekat prijavi (Posmatrac p) /// { new Elem (p); return this; } /// public Subjekat odjavi (Posmatrac p) { /// Elem tek = prvi, pret = null; /// while (tek!=null && tek.posm!=p) /// { pret = tek; tek = tek.sled; } /// if (tek != null) { /// if (pret == null) prvi = tek.sled; /// else pret.sled = tek.sled; /// if (tek == posl) posl = pret; /// } /// return this; /// } /// public void dostavi (double b) { /// for (Elem tek=prvi; tek!=null; tek=tek.sled) /// tek.posm.azuriraj (b); /// } /// } /// /// ///////////////// Не припада решењу колоквијума /////////////////////// // Analizator.java package statistika; public class Analizator extends Subjekat implements Runnable { private Thread nit; private Generator gen; private int n; public void radi (Generator gen, int n) { this.gen = gen; this.n = n; (nit = new Thread (this)).start (); } public void run () { for (int i=0; i<n; i++) dostavi (gen.slBroj()); } } // GrafPosmtrac.java package statistika; import java.awt.TextField; public class GrafPosmatrac implements Posmatrac { private Posmatrac posm; private TextField tks; public GrafPosmatrac (Posmatrac p, TextField t) { posm = p; tks = t; } public void ispocetka () { posm.ispocetka (); tks.setText (""); } public void azuriraj (double b) { posm.azuriraj (b); tks.setText(Double.toString (rezultat())); } public double rezultat () { return posm.rezultat (); } public String toString () { return posm.toString (); } } // Statistika.java package statistika; import java.awt.*; import java.awt.event.*; public class Statistika extends Frame implements ActionListener { private TextField tksKli = new TextField ("152763"), tksMin = new TextField ("0"), tksMax = new TextField ("1"), tksN = new TextField ("1000"); private TextField[] prikazi = { new TextField (10), new TextField (10), new TextField (10) }; private Posmatrac[] posmatraci = { new GrafPosmatrac (new Minimum(), prikazi[0]), new GrafPosmatrac (new Maximum(), prikazi[1]), new GrafPosmatrac (new Srednja(), prikazi[2]) }; private Analizator analizator = new Analizator(); public Statistika () { super ("Statistika"); setBounds (100, 100, 380, 200); setResizable (false); addWindowListener (new WindowAdapter () { public void windowClosing (WindowEvent d) { dispose (); } }); Button dgm = new Button ("Radi"); dgm.addActionListener (this); add (ploUnosParametara (), "North"); add (ploPrikazStatistike (), "Center"); add (dgm, "South"); } private Panel ploUnosParametara () { Panel plo = new Panel (); plo.add(new Label ("klica:", Label.RIGHT)); plo.add (tksKli); plo.add (new Label ("min:", Label.RIGHT)); plo.add (tksMin); plo.add (new Label ("max:", Label.RIGHT)); plo.add (tksMax); plo.add (new Label ("n:", Label.RIGHT)); plo.add (tksN); return plo; } private Panel ploPrikazStatistike () { Panel plo = new Panel (new GridLayout (0,1)); for (int i=0; i<posmatraci.length; i++) { Panel pl = new Panel (); plo.add (pl); pl.add (new Label (posmatraci[i] + ":")); pl.add (prikazi[i]); analizator.prijavi (posmatraci[i]); } return plo; } public void actionPerformed (ActionEvent d){ for (int i=0; i<posmatraci.length; i++) posmatraci[i].ispocetka (); analizator.radi ( new Generator ( Integer.parseInt (tksKli.getText()), Double.parseDouble (tksMin.getText()), Double.parseDouble (tksMax.getText()) ), Integer.parseInt (tksN.getText ()) ); } public static void main (String[] varg) { new Statistika ().setVisible (true); } }(⇒ почетак)
Copyright © 2010, Laslo Kraus
Последња ревизија: 30.8.2010.