Ласло Краус |
СИ2ОО2 Први колоквијум 3. 4. 2007. |
---|
Одговорити концизно (по једна или две реченице) и прецизно на следећа питaња:
а) У чему је основна разлика на језицима Javа и C++ при стварању и уништавању објеката?
б) Да ли је следећи програм исправан? Образложити.
class A{ protected int p=10;} class B{ public static void main(String[] arg) {A a=new A(); System.out.println(a.p);} }
в) За сваку од група модификатора, навести да ли се на одговарајућу методу у језику Java примењује динамичко везивање: (а) public
final
, (б) private
, (в) public
static
?
Саставити на језику Java следећи пакет класа:
(
снага)
.
[
потрошач,…,
потрошач]
.
null
уместо потрошача, ослобађа се одабрано прикључно место извора. Текстуални опис извора у првом реду садржи називну снагу и тренутно оптерећење извора, а у наредним редовима текстуалне описе прикључених потрошача, по један потрошач у сваком реду.
(20 поена) Написати на језику Java класу која садржи функцију за читање једног потрошача произвољног типа с главног улаза и главну функцију која читајући податке направи један извор, додаје потрошаче док је то могуће и испише на главном излазу завршно стање извора. На располагању стоји класа Citaj
у пакету usluge
која садржи заједничке методе за читање свих стандардних типова података.
// Potrosac.java package struja; public abstract class Potrosac { public abstract double snaga (); public abstract String toString (); } // Uredjaj.java package struja; public class Uredjaj extends Potrosac { private String naziv; private double snaga; public Uredjaj (String n, double s) { naziv = n; snaga = s; } public double snaga () { return snaga; } public String toString () { return naziv + "(" + snaga + ")"; } } // Grupa.java package struja; class Elem { Potrosac potr; Elem sled; Elem (Potrosac p) { potr = p; } } public class Grupa extends Potrosac { private Elem prvi, posl; double snaga; public Grupa dodaj (Potrosac p) { Elem novi = new Elem (p); if (prvi == null) prvi = novi; else posl.sled = novi; posl = novi; snaga += p.snaga (); return this; } public double snaga () { return snaga; } public String toString () { String s = "["; for (Elem tek=prvi; tek!=null; tek=tek.sled) { s += tek.potr; if (tek.sled != null) s += ","; } return s + "]"; } } // Izvor.java package struja; public class Izvor { private Potrosac[] niz; private double snaga, opter; public Izvor (double s, int k) { niz = new Potrosac [k]; snaga = s; } public double snaga () { return snaga; } public double opterecenje () { return opter; } public int brMesta () { return niz.length; } public boolean prikljuci(Potrosac p, int i){ if (i<0 || i>niz.length-1) return false; if (niz[i] != null) { opter -= niz[i].snaga (); niz[i] = null; } if (p == null) return true; double s = p.snaga (); if (opter+s > snaga) return false; niz[i] = p; opter += s; return true; } public String toString () { String s = opter + "/" + snaga + "\n"; for (int i=0; i<niz.length; i++) s += i + ": " + (niz[i]!=null ? niz[i] : "<< prazno >>") + "\n"; return s; } } // Struja.java import struja.*; import usluge.Citaj; public class Struja { private static Potrosac citaj () { System.out.print ("Tip (U,G,.)? "); switch (Citaj.Char ()) { case 'u': case 'U': { System.out.print ("Vrsta? "); String v = Citaj.String (); System.out.print ("Snaga? "); double s = Citaj.Double (); return new Uredjaj (v, s); } case 'g': case 'G': { Grupa g = new Grupa (); Potrosac p = null; while ((p=citaj()) != null) g.dodaj (p); return g; } default: return null; } } public static void main (String[] varg) { System.out.print ("Snaga izvora? "); double s = Citaj.Double (); System.out.print ("Broj prikljucaka? "); int k = Citaj.Int (); Izvor izv = new Izvor (s, k); Potrosac p; int i; do { p = citaj (); System.out.print ("Prikljucak? "); i = Citaj.Int(); } while (izv.prikljuci (p, i)); System.out.print (izv); } }(⇒ почетак)
Snaga izvora? 1000 Broj prikljucaka? 5 Tip (U,G,.)? u Vrsta? sijalica Snaga? 100 Prikljucak? 3 Tip (U,G,.)? g Tip (U,G,.)? u Vrsta? tv Snaga? 300 Tip (U,G,.)? u Vrsta? radio Snaga? 150 Tip (U,G,.)? . Prikljucak? 1 Tip (U,G,.)? u Vrsta? reso Snaga? 1000 Prikljucak? 0 550.0/1000.0 0: << prazno >> 1: [tv(300.0),radio(150.0)] 2: << prazno >> 3: sijalica(100.0) 4: << prazno >>
Copyright © 2010, Laslo Kraus
Последња ревизија: 30.8.2010.