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).