Podstawy Programowania Laboratorium 4 Aplety Aplety są programami javy stosowane głównie w internecie i uruchamiane głównie w przeglądarkach www. Przykładowy program kompilujemy za pomoca polecenia javac simple.java Uruchamiamy poleceniem appletviewer simple.java Przykład 1 /* <applet code="simple" width=300 height=60> public class simple extends Applet public void paint (Graphics g) g.drawstring("prosty aplet",30,30); Można też użyć środowiska Netbeans dla utworzenia podanego przykładu. W tym celu tworzymy nowy projekt i nazywamy go np. ProstyAplet. Odznaczamy opcję Set as Main Project oraz Create Main Class.
Do projektu dodajemy Applet: Uzupełniamy treść apletu zgodnie z poprzednim przykładem, kompilujemy i uruchamiamy nasz aplet. Szkielet apletu Przykład 2
/* <applet code="szkielet" width=500 height=50> public class Szkielet extends Applet public void init() // metoda wywoływana jako pierwsza public void start() // metoda wywoływana jako druga i po każdym wznowieniu działania programu public void stop() // metoda wywoływana przed zakończeniem działania programu public void destroy() // metoda wywoływana jest jako ostatnia public void paint(graphics g) // ponowne wyświetlenie zawartości okna Przykład 3 Uwaga należy kompilować z przełącznikiem Xlint (javac Klawisze.java Xlint) /* <applet code="klawisze" width=500 height=50> public class Klawisze extends Applet String msg=""; public boolean keydown(event evtobj, int key) msg+=(char) key; repaint(); showstatus("klawisz nacisniety"); return true; public boolean keyup(event evtobj, int key) showstatus("klawisz puszczony"); return true; public void paint(graphics g) g.drawstring(msg,10,10);
Przykład 4 Proste uogólnianie class Pojazd public class Holder<T> private T a; public Holder(T a) this.a = a; public void set(t a) this.a = a; public T get() return a; Holder<Pojazd> h = new Holder<Pojazd>(new Pojazd()); Pojazd a = h.get(); // Bez rzutowania Pojazd b = new Pojazd(); h.set(b); a = h.get(); Przykład 5 Uogólniona klasa Stosu package stos; public class Stos<T> private static class Node<U> U item; Node<U> next; Node() item = null; next = null; Node(U item, Node<U> next) this.item = item; this.next = next; boolean end() return item == null && next == null; private Node<T> top = new Node<T>(); // Znacznik końca public void push(t item) top = new Node<T>(item, top); public T pop() T result = top.item; if(!top.end()) top = top.next; return result; Stos<String> lss = new Stos<String>(); for(string s : "Java to prosty język programowania!".split(" ")) lss.push(s); String s; while((s = lss.pop())!= null) System.out.println(s); Przykład 6 Uogólnianie interfejsów package generator; public interface Generator <T>T next(); package generator; public class Fibonacci implements Generator<Integer> private int count = 0; public Integer next() return fib(count++); private int fib(int n) if(n < 2) return 1; return fib(n-2) + fib(n-1); Fibonacci gen = new Fibonacci(); for(int i = 0; i < 18; i++) System.out.print(gen.next() + " "); Przykład 7 Uogólnianie metod public class GenericMethods
public <T> void f(t x) System.out.println(x.getClass().getName()); GenericMethods gm = new GenericMethods(); gm.f(""); gm.f(1); gm.f(1.0); gm.f(1.0f); gm.f('c'); gm.f(gm); Przykład 8 Krotki (grupy obiektów ujętych w innym obiekcie) package krotka; class DwuKrotka <A,B> public final A first; public final B second; public DwuKrotka(A a, B b) first=a; second=b; public String tostring()return "("+first+","+second+")"; class TrzyKrotka <A,B,C> extends DwuKrotka<A,B> public final C third; public TrzyKrotka(A a, B b,c c) super(a,b); third=c; public String tostring()return "("+first+","+second+","+third+")"; class Amfibia class Pojazd public class Krotka static DwuKrotka<String,Integer> f() return new DwuKrotka<String,Integer>("hej", 47); static TrzyKrotka<Amfibia,String,Integer> g() return new TrzyKrotka<Amfibia, String, Integer>( new Amfibia(), "hej", 47); static TrzyKrotka<Pojazd,String,Integer> h() return new TrzyKrotka<Pojazd, String, Integer>( new Pojazd(), "hop", 44); DwuKrotka<String,Integer> ttsi = f(); System.out.println(ttsi); DwuKrotka<String,Integer> dwukrotka = new DwuKrotka<String,Integer>("ho", 45); System.out.println(dwukrotka); TrzyKrotka<Pojazd,String,Integer> trzykrotka = new TrzyKrotka<Pojazd,String,Integer>(new Pojazd(), "sa", 43); System.out.println(trzykrotka); System.out.println(g()); System.out.println(h()); System.out.println(trzykrotka.first); System.out.println(trzykrotka.second); System.out.println(trzykrotka.third); System.out.println(trzykrotka.second.equals(dwukrotka.second)); Zadanie 1 Na podstawie przykładu 8 utwórz konstrukcję dowolnej czterokrotki oraz dowolnej pięciokrotki.