1. Vytvořte rozhraní IResizable, která bude umožňovat získání a nastavení velikosti daného objektu. Vytvořte rozhraní ITransformable, která bude zároveň IResizable a IMovable.
2. Zapojte posouvač do GUI.
3. Pro třídu MyDate umožněte porovnání objektů dle hodnot instančních proměnných – je nutno překrýt metodu equals.
4. Pro třídy reprezentující tvary dodělejte společného předka abstraktní třídu AbtractShape, která bude obsahovat společné vlastnosti – možnost nastavení polohy(bude IMovable) a že je IPaintable .
5. Procvičte si generika – vytvořte třídu s jedním generickým parametrem.
public class Test<T> { private T var; public T get(){ return this.var; } public void set(T t){ this.var=t; System.out.println("var="+var+";"); System.out.println("var is "+var.getClass()+";"); } public static void main(String args[]){ Test<String> type = new Test<String>(); type.set("Text"); //type.set(10); Test type1 = new Test(); //raw type type1.set("Text"); //valid type1.set(10); //valid and autoboxing support } }
Generický kód využívá parametrizované typy (generický typ T <T>), které jsou nahrazeny konkrétními typy v době použití kódu. Princip generik je znám také z jiných jazyků a především z jazyka C++.
Domácí úkol:
Vytvořte třídu Transformer, jejíž instance budou pracovat s objekty, které jsou ITransformable, prostřednictvím metody transform, která jako parametr dostane objekt pro transformaci, souřadnice a faktor zvětšení (hodnota typu double, která při hodnotě menší než 1 bude znamenat zmenšení). Tato metoda pak provede animovaný přesun objektu spolu s plynulým zvětšením(zmenšením) na požadovaný faktor.
Vytvořte generickou třídu zásobník, která bude mít metody push, pop, size – využijte třídu ArrayList.
Bonus (za 1 bod): Použití třídy Transformer zapojte do GUI – vytvořte tlačítko a editační políčko pro zadání faktoru zvětšení. Dále vytvořte obslužnou metodu pro tlačítko a v ní na novém vlákně použijte Transformer – viz použití posouvače (úkol 2).