Ласло Краус |
СИ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.