Ласло Краус |
СИ2ОО2 Први колоквијум 27. 3. 2009. |
---|
Одговорити концизно (по једна или две реченице) и прецизно на следећа питaња:
а) Навести задатим редоследом подразумеване почетне вредности поља следећих типова: int
, float
, boolean
, char
, класни тип.
б) Да ли имена типова у два потпакета истог пакета могу бити једнака и зашто?
в) Ако се у изведеној класи дефинише поље са истим именом као у основној, да ли се и како пољу основне класе приступа из методе изведене класе?
Саставити на језику Java следећи пакет класа:
(
a,
b)
.
null
ако је кутија празна).
// Domina.java package igra; public class Domina { private int a, b; public Domina (int p, int q) { a = p; b = q; } public int a () { return a; } public int b () { return b; } public boolean ista (Domina d) { return a==d.a && b==d.b || b==d.a && a==d.b; } public Domina okreni () { int c = a; a = b; b = c; return this; } public String toString () { return "(" + a + "," + b + ")"; } } // Skup.java package igra; class Elem { Domina dom; Elem sled; Elem (Domina d, Elem s) { dom = d; sled = s; } } public abstract class Skup { protected Elem prvi, posl; public boolean ima (Domina d) { for (Elem tek=prvi; tek!=null; tek=tek.sled) if (d.ista (tek.dom)) return true; return false; } public abstract boolean dodaj (Domina d) ; public String toString () { String s = ""; for (Elem tek=prvi; tek!=null; tek=tek.sled) s += tek.dom; return s; } } // Kutija.java package igra; public class Kutija extends Skup { public boolean dodaj (Domina d) { if (ima (d)) return false; Elem novi = new Elem (d, null); if (prvi == null) prvi = novi; else posl.sled = novi; posl = novi; return true; } public Kutija napuni (int n) { prvi = posl = null; int m = n * (n+1) / 2; for (int i=0; i<m;) if (dodaj (new Domina ((int)(Math.random()*n), (int)(Math.random()*n)))) i++; return this; } public Domina uzmi () { if (prvi == null) return null; Domina d = prvi.dom; if ((prvi = prvi.sled) == null) posl = null; return d; } } // Tabla.java package igra; public class Tabla extends Skup { public boolean dodaj (Domina d) { if (ima (d)) return false; if (prvi==null || d.b()==prvi.dom.a()) naPocetak (d); else if (d.a() == posl.dom.b()) naKraj (d); else { d.okreni (); if (d.b() == prvi.dom.a()) naPocetak (d); else if (d.a() == posl.dom.b()) naKraj (d); else return false; } return true; } private void naPocetak (Domina d) { prvi = new Elem (d, prvi); if (posl == null) posl = prvi; } private void naKraj (Domina d) { Elem novi = new Elem (d, null); if (prvi == null) prvi = novi; else posl.sled = novi; posl = novi; } } // Test.java import igra.*; public class Test { public static void main (String[] varg) { int n = 4; Kutija k = new Kutija (); k.napuni (n); System.out.println ("Kutija: " + k); Tabla t = new Tabla (); Domina d; while ((d = k.uzmi ()) != null && t.dodaj (d)); System.out.println ("Tabla: " + t); } }(⇒ почетак)
Kutija: (2,3)(2,1)(0,3)(0,2)(2,2)(3,1)(0,0)(1,0)(1,1)(3,3) Tabla: (3,1)(1,2)(2,3)(3,0)(0,2)(2,2)
Copyright © 2010, Laslo Kraus
Последња ревизија: 30.8.2010.