Ласло Краус |
СИ2ОО2 Први колоквијум 9. 4. 2006. |
---|
Саставити на језику Java следећи пакет класа:
(
x,
y)
, где су x и y координате тачке.
(10 поена) Саствити на језику Java класу с главном функцијом која прочита врсту криве и потребне коефицијенте за ту криву, прочита граничне вредности и корак промене параметра, приказује криву на главном излазу и понавља претходне кораке све док корисник не да сигнал за завршетак. На располагању стоји класа Citaj
у пакету usluge
која садржи заједничке методе за читање свих стандардних типова података.
Одговорити концизно (по једна или две реченице) и прецизно на следећа питaња:
а)Да ли се може догодити да се неки објекат на који показује нека референца уклони од стране сакупљача ђубрета (garbage collector)? Зашто?
б)Да ли protected
члановима класе могу да приступају методе других класа из истог пакета, ако те друге класе нису изведене из дате класе? Зашто?
в)Чему је намењен оператор instanceof
? Навести пример коришћења.
// Tacka.java package krive; public class Tacka { private double x, y; public Tacka (double xx, double yy) { x = xx; y = yy; } public Tacka (double xx) { x = xx; } public Tacka () {} public double x () { return x; } public double y () { return y; } public String toString () { return "(" + x + "," + y + ")"; } } // Kriva.java package krive; public abstract class Kriva { public abstract Tacka tacka (double p); } // Spirala.java package krive; public class Spirala extends Kriva { private double a, b; public Spirala (double aa, double bb) { a = aa; b = bb; } public Spirala () { a= 1; } public Tacka tacka (double p) { return new Tacka (a*p*Math.cos(b+p), a*p*Math.sin(b+p)); } } // Oscil.java package krive; public class Oscil extends Kriva { private double a, b, c; public Oscil (double aa, double bb, double cc) { a = aa; b = bb; c = cc; } public Oscil () { a = b = 1; } public Tacka tacka (double p) { return new Tacka (p, a*Math.sin(b*p+c)); } } // Prikazivac.java package krive; public abstract class Prikazivac { public void prikazi (Kriva k, double pmin, double pmax, double dp) { for (double p=pmin; p<=pmax; p+=dp) prikaziTacku (k, p); } protected abstract void prikaziTacku (Kriva k, double p); } // Konzola.java package krive; public class Konzola extends Prikazivac { protected void prikaziTacku (Kriva k, double p) { System.out.println (p + "\t" + k.tacka (p)); } } // KriveT.java import krive.*; import usluge.Citaj; public class KriveT { public static void main (String[] varg) { radi: while (true) { Kriva k = null; System.out.print ("Kriva (S, O, .)? "); switch (Citaj.Char ()) { case 's': case 'S': System.out.print ("a,b? "); k = new Spirala (Citaj.Double(), Citaj.Double()); break; case 'o': case 'O': System.out.print ("a,b,c? "); k = new Oscil (Citaj.Double(), Citaj.Double(), Citaj.Double()); break; case '.': break radi; } if (k != null) { System.out.print ("pmin,pmax,dp? "); double pmin = Citaj.Double (), pmax = Citaj.Double (), dp = Citaj.Double (); System.out.println ("\np\t(x(p),y(p))\n=================="); new Konzola ().prikazi (k, pmin, pmax, dp); } } } }
Kriva (S, O, .)? s a,b? 2 1 pmin,pmax,dp? 0 6.28 0.628 p (x(p),y(p)) ================== 0.0 (0.0,0.0) 0.628 (-0.0718086,1.2539455) 1.256 (-1.5896707,1.9450169) 1.884 (-3.6436788,0.9599107) 2.512 (-4.6832721,-1.8186637) 3.14 (-3.4015104,-5.2790270) 3.768 (0.4188686,-7.5243501) 4.396 (5.5529986,-6.8164118) 5.024 (9.7123877,-2.5752336) 5.652 (10.5438660,4.0752059) 6.28 (6.8198275,10.5472058) Kriva (S, O, .)? o a,b,c? 2 .5 3.14 pmin,pmax,dp? -3.14 3.14 .628 p (x(p),y(p)) ================== -3.14 (-3.14,1.9999993) -2.512 (-2.512,1.9027027) -1.884 (-1.884,1.6193435) -1.2559999 (-1.2559999,1.1776311) -0.6279999 (-0.6279999,0.6207598) 2.2204460E-16 (2.2204460E-16,0.0031853) 0.628 (0.628,-0.6147006) 1.256 (1.256,-1.1724759) 1.884 (1.884,-1.6155965) 2.512 (2.512,-1.9007302) Kriva (S, O, .)? .
Copyright © 2010, Laslo Kraus
Последња ревизија: 30.8.2010.