Ласло Краус |
ИР2ОО2 Kолоквијум 25. 4. 2009. |
---|
Одговорити концизно (по једна или две реченице) и прецизно на следећа питaња:
а) Шта означава: (1) this.a
, (2) this(a)
, (3) super.a
и (4) super(a)
?
б) Које су разлике између интерфејса и апстрактне класе?
в) Шта је локална класа и да ли анонимна класа мора да буде локална класа?
Написати на језику Java следећи пакет типова (грешке пријављивати изузецима опремљеним текстовима порука):
(5 поена) Написати на језику Java програм (класу с главном функцијом) који направи један општински суд, две особе, власнички лист за прву особу, купопродајни уговор где је прва особа продавац а друга купац, поништи власнички лист прве особе, направи власнички лист за другу особу и испише на главном излазу дупликате уговора и власничких листова обе особе. Користити константне параметре (не треба ништа учитавати).
// Osoba.java package potvrde; public class Osoba { private String ime; private long jmbg; public Osoba( String im, long mb) {ime=im; jmbg=mb;} public String ime() { return ime; } public long jmbg() { return jmbg; } } // Potvrda.java package potvrde; public interface Potvrda { String naziv(); int idBroj(); } // Akt.java package potvrde; public abstract class Akt implements Potvrda, Cloneable { private String naziv; private static int ukId = 0; final private int idBroj = ++ukId; private boolean original = true; protected Akt( String naz) { naziv = naz; } public String naziv() { return naziv; } public int idBroj() { return idBroj; } public Akt clone() throws CloneNotSupportedException{ if (!original) throw new CloneNotSupportedException(); Akt akt = (Akt)super.clone(); akt.original = false; return akt; } public String toString() { return naziv + "(" + idBroj + ")" + (original ? "" : " - duplikat"); } } // GIsteOsobe.java package potvrde; public class GIsteOsobe extends Exception { public String toString() { return "*** Iste osobe!"; } } // KupoProdUgovor.java package potvrde; public class KupoProdUgovor extends Akt { private Osoba prodavac, kupac; public KupoProdUgovor( Osoba prod, Osoba kup) throws GIsteOsobe { super( "Kupoprodajni ugovor"); if ((prodavac=prod) == (kupac=kup)) throw new GIsteOsobe(); } public Osoba prodavac() { return prodavac; } public Osoba kupac() { return kupac; } } // VlasList.java package potvrde; public class VlasList extends Akt { private Osoba vlasnik; private boolean vazeci = true; public VlasList( Osoba vlas) { super( "Vlasnicki list"); vlasnik = vlas; } public Osoba vlasnik() { return vlasnik; } public boolean vazeci() { return vazeci; } public VlasList ponisti() { vazeci = false; return this; } public VlasList clone() throws CloneNotSupportedException { if (! vazeci) throw new CloneNotSupportedException(); return (VlasList)super.clone(); } } // GNemaPotv.java package potvrde; public class GNemaPotv extends Exception { public String toString() { return "*** Nema potvrde!"; } } // GNemaPravo.java package potvrde; public class GNemaPravo extends Exception { public String toString () { return "*** Nema Pravo!"; } } // OpstinskiSud.java package potvrde; public class OpstinskiSud { private String naziv; private int brPotv = 0; private Elem arhiva, posl; private class Elem { Potvrda potv; Elem sled; Elem (Potvrda p) { potv = p; if (arhiva==null) arhiva = this; else posl.sled = this; posl = this; } } public OpstinskiSud( String naz) { naziv = naz; } public int brPotv() { return brPotv; } public int kupoProdUgovor( Osoba prodavac, Osoba kupac) throws GNemaPotv, GIsteOsobe { KupoProdUgovor ugovor = new KupoProdUgovor( prodavac, kupac); new Elem( ugovor); brPotv++; return ugovor.idBroj(); } public KupoProdUgovor kupoProdUgovor( Osoba osoba, int broj) throws GNemaPotv, GNemaPravo { Elem tek=arhiva; while (tek!=null && tek.potv.idBroj()!=broj) tek = tek.sled; if (tek==null || !(tek.potv instanceof KupoProdUgovor)) throw new GNemaPotv(); KupoProdUgovor ugovor = (KupoProdUgovor)tek.potv; if (osoba!=ugovor.prodavac() && osoba!=ugovor.kupac()) throw new GNemaPravo(); try { return (KupoProdUgovor)ugovor.clone(); } catch (CloneNotSupportedException g) { return null; } } public int vlasList( Osoba osoba) { VlasList list = new VlasList( osoba); new Elem( list); brPotv++; return list.idBroj(); } public VlasList vlasList( Osoba osoba, int broj) throws GNemaPotv, GNemaPravo { Elem tek=arhiva; while (tek!=null && tek.potv.idBroj()!=broj) tek = tek.sled; if (tek==null || !(tek.potv instanceof VlasList)) throw new GNemaPotv(); VlasList list = (VlasList)tek.potv; if (osoba!=list.vlasnik()) throw new GNemaPravo(); try { return list.clone(); } catch (CloneNotSupportedException g) { return null; } } } // Test.java import potvrde.*; public class Test { public static void main(String[] vpar) { try { OpstinskiSud sud = new OpstinskiSud( "Prvi beogradski"); Osoba marko = new Osoba( "Marko", 2902976780012L); Osoba zoran = new Osoba( "Zoran", 1312955525013L); int idList1 = sud.vlasList(marko); int idUgovor = sud.kupoProdUgovor(marko, zoran); sud.vlasList( idList1).ponisti(); int idList2 = sud.vlasList(zoran); System.out.println( sud.kupoProdUgovor(marko,idUgovor)); System.out.println( sud.vlasList( marko, idList1)); System.out.println( sud.vlasList( zoran, idList2)); } catch (Exception g) { System.out.println( g); } } }(⇒ почетак)
Kupoprodajni ugovor(2) - duplikat Vlasnicki list(1) - duplikat Vlasnicki list(3) - duplikat
Copyright © 2010, Laslo Kraus
Последња ревизија: 30.8.2010.