Ласло Краус |
СИ2ОО2 Први колоквијум 20. 3. 2013. |
---|
Одговорити концизно (по једна или две реченице) и прецизно на следећа питaња:
а) Како се методама прослеђују параметри примитивних, односно класних, типова: по вредности или референци?
б) Зашто класе на Јави немају деструкторе? Како и зашто се компензује њихов недостатак?
в) Да ли је могућа комбинација модификатора abstract
final
за (1) класу (2) метод и зашто?
Саставити на језику Java следећи пакет класа:
B
– биљном или Z
– животињском), ниска назива врсте, као и једнословна ознака царства чијим се јединкама храни (N
– за бића која се не хране ни биљном ни животињском храном). Може да се провери да ли биће једе задато биће и да се састави текстуални опис који у угластим заградама садржи ознаку царства којем припада, назив врсте и ознаку царства чијим се јединкама храни, раздвојене двотачком.
Vu
) које се храни храном животињског порекла, коза је биће животињског царства (назив врсте Ko
) које се храни храном биљног порекла, а купус је (неживо) биће биљног царства (назив врсте Ku
) које се (више) не храни.
C{
биће}
.
(15 поена) Написати на језику Java програм (класу са главном функцијом) у којем се стварају један вук, једна коза и један купус, смештају у дружину на једној обали реке, а затим неколико пута чамцем пребацују из дружине на једној обали у дружину на другој обали (у оба смера), уз исписивање дружина на обе обале и чамца после сваке акције над дружином на обали. Није потребно водити рачуна о логичкој исправности редоследа пребацивања, односно избора бића, нити је потребно проверавати статус успеха после операција над дружинама.
// Bice.java package bica; public abstract class Bice { public static final char BILJ = 'B', ZIV = 'Z', NE = 'N'; abstract public char carstvo(); abstract public String vrsta(); abstract public char hrana(); public boolean jede(Bice b) { return hrana() == b.carstvo(); } public String toString() { return "[" + carstvo() + ":" + vrsta() + ":" + hrana() + "]"; } } // Vuk.java package bica; public class Vuk extends Bice { public char carstvo(){return ZIV;} public String vrsta(){return "Vu";} public char hrana(){return ZIV;} } // Koza.java package bica; public class Koza extends Bice { public char carstvo(){return ZIV;} public String vrsta(){return "Ko";} public char hrana(){return BILJ;} } // Kupus.java package bica; public class Kupus extends Bice { public char carstvo(){return BILJ;} public String vrsta(){return "Ku";} public char hrana(){return NE;} } // Druzina.java package bica; public class Druzina { private Bice[] bica = new Bice[3]; private int brBica; public boolean dodaj(Bice b) { if (brBica==3) return false; for (int i=0; i<brBica; i++) if (b.vrsta().equals(bica[i].vrsta())) return false; if (brBica==1 && (b.jede(bica[0]) || bica[0].jede(b))) return false; bica[brBica++] = b; return true; } public Bice uzmi(String vr) { int i = 0; while (i<brBica && !vr.equals(bica[i].vrsta())) i++; if (i == brBica) return null; if (brBica == 3) { Bice b1=bica[(i+1)%3], b2=bica[(i+2)%3]; if (b1.jede(b2) || b2.jede(b2)) return null; } Bice b = bica[i]; bica[i] = bica[brBica-1]; bica[--brBica] = null; return b; } public Bice zameni(Bice b, String vr) { if (brBica == 3) return null; Bice bb = uzmi(vr); if (bb == null) return null; if (dodaj(b)) return bb; dodaj(bb); return null; } public String toString() { String rez = "{"; for (int i = 0; i < brBica; i++) { if (i > 0) rez += ","; rez += bica[i]; } return rez + "}"; } } // Camac.java package bica; public class Camac { Bice b; public boolean smesti(Bice bb) { if (b != null) return false; b = bb; return true; } public Bice uzmi() { Bice bb = b; b = null; return bb; } public String toString() { return "C{" + (b!=null ? b : "") + "}"; } } // Program.java import bica.*; public class Program { private static Druzina lObala=new Druzina(); private static Druzina dObala=new Druzina(); private static Camac camac = new Camac(); private static void pisi() { System.out.println(lObala + " " + camac + " " + dObala); } public static void main(String[] argv) { lObala.dodaj(new Vuk()); lObala.dodaj(new Kupus()); lObala.dodaj(new Koza()); pisi(); camac.smesti(lObala.uzmi("Ko")); pisi(); dObala.dodaj(camac.uzmi()); pisi(); camac.smesti(lObala.uzmi("Vu")); pisi(); camac.smesti(dObala.zameni(camac.uzmi(), "Ko")); pisi(); camac.smesti(lObala.zameni(camac.uzmi(), "Ku")); pisi(); dObala.dodaj(camac.uzmi()); pisi(); camac.smesti(lObala.uzmi("Ko")); pisi(); dObala.dodaj(camac.uzmi()); pisi(); } }(⇒ почетак)
{[Z:Vu:Z],[B:Ku:N],[Z:Ko:B]} C{} {} {[Z:Vu:Z],[B:Ku:N]} C{[Z:Ko:B]} {} {[Z:Vu:Z],[B:Ku:N]} C{} {[Z:Ko:B]} {[B:Ku:N]} C{[Z:Vu:Z]} {[Z:Ko:B]} {[B:Ku:N]} C{[Z:Ko:B]} {[Z:Vu:Z]} {[Z:Ko:B]} C{[B:Ku:N]} {[Z:Vu:Z]} {[Z:Ko:B]} C{} {[Z:Vu:Z],[B:Ku:N]} {} C{[Z:Ko:B]} {[Z:Vu:Z],[B:Ku:N]} {} C{} {[Z:Vu:Z],[B:Ku:N],[Z:Ko:B]}
Copyright © 2013, Laslo Kraus
Последња ревизија: 23.4.2013.