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 [extends NadKlasa] [implements Interfejsy] { abstract final public private Synchronizable ... SKŁADNIA KLAS [ModyfikatorKlasy] class NazwaKlasy [extends NadKlasa] [implements Interfejsy] { /* definicje metod i pól */ } Pola: Modyfikator TypWartości NazwaPola Metody: Modyfikator TypZwracanejWartości Nazwa (Typ Argument1, Typ Argument2, ...) { /* implementacja (kod) metody */ }
Klasy abstrakcyjne W klasie abstrakcyjnej mamy: 2017-03-26 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 abstract Punkt Odcinek Wielokąt Trójką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 package moje.graf; package moje.graf; public class Kwadrat .../moje/graf/Kwadrat.java .../moje/graf/Punkt.java package moje.graf; public class Kwadrat { ... } // ... ew. definicje innych klas niepublicznych package moje.graf; 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 Plik HelloWorld.class (binarny kod) 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