Programowanie Obiektowe w Javie (c.d.) Nguyen Hung Son Uniwersytet Warszawski Tematy Klasy abstrakcyjne Interfejsy Pakiety Przegląd pakietów w Javie Wprowadzenie do apletów Klasy abstrakcyjne SKŁADNIA KLAS [ModyfikatorKlasy] class NazwaKlasy [extends NadKlasa] [implements Interfejsy] { /* definicje metod i pól */ } abstract final public private Synchronizable ... Pola: Modyfikator TypWartości NazwaPola Metody: Modyfikator TypZwracanejWartości Nazwa (Typ Argument1, Typ Argument2, ...) { /* implementacja (kod) metody */ } Klasy abstrakcyjne W klasie abstrakcyjnej mamy: – definicję niektórych metod (z modyfikatorem abstract) bez implementacji implementacje tych metod są w klasach potomnych nie możemy bezpośrednio stworzyć obiektów dla klas abstrakcyjnych Klasy abstrakcyjne - przykład Figura Punkt Odcinek Trójkąt abstract Wielokąt Czworokąt Klasy abstrakcyjne Figura[] tab = new Figura[3]; Linia lin = new Linia(); Trojkat t = new Trojkat(); Wielokat w = new Czworokat(); ... tab[0] = lin; tab[1] = t; tab[2] = w; for(int i=0;i<3;i++){ tab[i].rysuj(); } Interfejs Interfejs opisuje zbiór właściwości, które klasa musi implementować Interfejs może dziedziczyć z innych interfejsów, ale nie może dziedziczyć z klas ! [modyfikator] interface NazwaInterfejsu [extends listaInterfejsów] { ... } Interfejsy (c.d.) Wszystkie metody w interfejsie są publiczne i abstrakcyjne pola są publiczne, finalne i statyczne interface Kolekcja { int MAXIMUM = 200; void dodaj(Object obj); Object znajdz(Object obj); int liczbaObiektow(); } Interfejs class Wektor implements Kolekcja{ private Object obiekty[] = new Object[MAXIMUM]; private short m_sLicznik = 0; public void dodaj(Object obj) { obiekty[m_sLicznik++]=obj; } public int liczbaObiektow(){ return m_sLicznik; } ....... } Temat nr 3 public Object znajdz(Object obj) { for (int i = 0; i<m_sLicznik;i++) { if (obiekty[i].getClass() == obj.getClass()) { System.out.println("Znaleziono obiekt klasy " + obj.getClass() ); return obiekty[i]; } } return null; } Pakiety (Package) Pakiety w Javie to są podzbiory bibliotek, które mają podobne funkcje Pakiety mogą zawierać interfejsy Najważniejsze pakiety w Javie: – java.lang.* – java.util.* – java.awt.* Przykład .../moje/graf/Kwadrat.java .../moje/graf/Punkt.java package moje.graf; public class Kwadrat { ... } package moje.graf; // ... ew. definicje innych klas niepublicznych public class Punkt { // definicja pól danych i metod klasy Punkt } Przykład import moje.graf; class Cos { Punkt p = Punkt(); public static void main(String[] a) { .... } } Przegląd Pakietów java.lang: Pakiet zawierający wszystkie podstawowe klasy Javy. Nie musi być jawnie importowany, ponieważ kompilator czyni to w sposób automatyczny. java.io: obsługi wejścia/wyjścia java.util: pomocnicze klasy użytkowe (np. generacja liczb losowych, operacje na ciągach znaków, kolekcje, ...) Przegląd pakietów java.net: Zawiera klasy konieczne do tworzenia oprogramowania wykorzystującego sieć. Wraz z pakietem "java.io" umożliwia dostęp do sieci w celu ładowania lub wysyłania plików. java.awt: klasy służące do tworzenia graficznego interfejsu użytkownika (GUI). java.applet: Pakiet zawierający klasy używane podczas tworzenia appletów. Przegląd pakietów Pakiet java.util.* Aplety import java.applet.Applet; import java.awt.Graphics; import java.awt.Color; public class SimpleApplet extends Applet { ... } Przykład apletu import java.applet.Applet; import java.awt.Graphics; public class HelloWorld extends Applet { public void paint(Graphics g) { g.drawString("Hello world!", 50, 25); } } Plik HelloWorld.class (binarny kod) <HTML><HEAD><TITLE> Przykładowy aplet </TITLE></HEAD> <BODY> Tutaj jest wynik działania apletu: <APPLET CODE="HelloWorld.class" WIDTH=150 HEIGHT=25></APPLET> </BODY> </HTML> Klasa java.applet.Applet Cykl życia apletu init - wywoływana tylko raz, gdy strona WWW zawierająca aplet zostanie po raz pierwszy "załadowana", jeśli opuścimy stronę WWW zawierającą aplet i wrócimy na nią, metoda init nie będzie wykonana ponownie, start - metoda jest wykonywana za każdym razem, gdy strona, na której znajduje się aplet, staje się stroną bieżącą w przeglądarce, stop - metoda ta jest wykonywana za każdym razem, gdy do przeglądarki ładowana jest następna strona WWW, destroy - wykonywana gdy aplet kończy swoje działanie. Cykl życia apletu Elementy pakietu awt