Ласло Краус |
ИР2ОО2 Први колоквијум 9. 5. 2008. |
---|
Одговорити концизно (по једна или две реченице) и прецизно на следећа питaња:
а) На којој идеји се заснива добра преносивост програма писаних на језику Java?
б) Да ли се у два имплементирана интерфејса могу налазити методе са истим именима и:
(1) истим листама аргумената и бацаних изузетака, а различитим повратним типовима;
(2) различитим листама аргумената и бацаних изузетака и различитим повратним типовима;
(3) истим листама аргумената и бацаних изузетака и истим повратним типовима
в) Да ли се из анонимне класе може приступати формалним аргументима и локалним променљивама окружујуће функције?
Написати на језику Java следећи пакет типова (грешке пријављивати изузецима опремљеним текстовима порука):
(
x,
y,
z)
".
String
.
(
x,
y,
z)
".
[
t1,…,
tn]
", где је ti текстуални опис i-тог темена.
(5 поена) Написати на језику Java програм (класу с главном функцијом) који направи многоугао, направи његову копију, помери копију за задати вектор помака, испише на главном излазу оба многоугла са одговарајућим растојањима тежишта од координатног почетка. Сви параметри треба да буду константе (не треба ништа учитавати).
// Vektor.java package figure; public class Vektor { private double x, y, z; public Vektor( double a, double b, double c) { x = a; y = b; z = c; } public Vektor( Vektor v) { x = v.x; y = v.y; z = v.z; } public Vektor dodaj( Vektor v) { x += v.x; y += v.y; z += v.z; return this; } public Vektor pomnozi( double s) { x *= s; y *= s; z *= s; return this; } public double intenzitet() { return Math.sqrt (x*x + y*y + z*z); } public String toString() { return "(" + x + "," + y + "," + z + ")"; } } // Imenovan.java package figure; public interface Imenovan { String dohvatiIme(); } // Figura.java package figure; public abstract class Figura implements Imenovan, Cloneable { private String ime; protected Figura( String i) { ime = i; } public String dohvatiIme() { return ime; } public Figura clone() { try { return (Figura)super.clone(); } catch (CloneNotSupportedException g) { return null; } } public String toString() { return ime; } } // Pokretljiv.java package figure; public interface Pokretljiv { void pomeri( Vektor pomak); Vektor polozaj(); } // Tacka.java package figure; public class Tacka implements Pokretljiv, Imenovan, Cloneable { private char ime; private Vektor polozaj; public Tacka( char i, Vektor p) { ime = i; polozaj = p; } public String dohvatiIme() { return Character.toString( ime); } public void pomeri( Vektor pomak) { polozaj.dodaj( pomak); } public Vektor polozaj() { return polozaj; } public Tacka clone() { try { Tacka t = (Tacka)super.clone( ); t.polozaj = new Vektor( polozaj); return t; } catch (CloneNotSupportedException g) { return null; } } public String toString() { return dohvatiIme() + polozaj; } } // GGotov.java package figure; public class GGotov extends Exception { public String toString( ) { return "*** Mnogougao je vec gotov!"; } } // Mnogougao.java package figure; public class Mnogougao extends Figura implements Pokretljiv { private Tacka[] tem; private int n; public Mnogougao ( String ime, int brTem) { super( ime); tem = new Tacka [brTem]; } public Mnogougao dodaj(Tacka teme)throws GGotov { if (n == tem.length) throw new GGotov( ); tem[n++] = teme; return this; } public void pomeri( Vektor pomak) { for (int i=0; i<n; tem[i++].pomeri(pomak)); } public Vektor polozaj( ) { Vektor tez = new Vektor( 0, 0, 0); for (int i=0; i<n; tez.dodaj(tem[i++].polozaj())); return tez.pomnozi( 1./n); } public Mnogougao clone() { Mnogougao m = (Mnogougao)super.clone( ); m.tem = tem.clone(); for (int i=0; i<n; i++) m.tem[i] = (Tacka)tem[i].clone(); return m; } public String toString() { StringBuffer s = new StringBuffer ( super.toString()); s.append( '['); for (int i=0; i<n; i++) { if (i>0) s.append( ','); s.append( tem[i]); } return s.append( ']').toString( ); } } // Program.java import figure.*; public class Program { public static void main (String[] varg) { try { Mnogougao m1 = new Mnogougao( "abc", 3); m1.dodaj( new Tacka('A', new Vektor(0,0,0))) .dodaj( new Tacka('B', new Vektor(1,1,1))) .dodaj( new Tacka('C', new Vektor(3,2,1))); Mnogougao m2 = m1.clone(); m2.pomeri (new Vektor(1,2,3)); System.out.println( m1 + " - " + m1.polozaj().intenzitet()); System.out.println( m2 + " - " + m2.polozaj().intenzitet()); } catch (GGotov g) { System.out.println( g); } } }(⇒ почетак)
abc[A(0.0,0.0,0.0),B(1.0,1.0,1.0),C(3.0,2.0,1.0)] - 1.7950549357115013 abc[A(1.0,2.0,3.0),B(2.0,3.0,4.0),C(4.0,4.0,4.0)] - 5.280993172584953
Copyright © 2011, Laslo Kraus
Последња ревизија: 29.3.2011.