Język JAVA

advertisement
Język JAVA ‐ podstawy
Politechnika Gdańska,
Gdańska Inżynieria Biomedyczna
wykład 2, część 3
Jacek Rumiński
1
Język JAVA ‐ podstawy
Politechnika Gdańska,
Gdańska Inżynieria Biomedyczna
Plan wykładu:
1. Rodzaje programów w Javie
2. Tworzenie aplikacji
3. Tworzenie apletów
4. Obsługa archiwów
5 Wyjątki
5.
6. Klasa w klasie !
Jacek Rumiński
2
Język JAVA – archiwa
Politechnika Gdańska,
Gdańska Inżynieria Biomedyczna
Co to jest archiwum Javy (JAR – Java ARchive)?
Odpowiedź właściwie jest prosta: spakowane metodą ZIP pliki,
pliki
wchodzące w skład biblioteki, aplikacji, apletu, ...
W JDK dostępne
ęp jjest specjalne
p j
narzędzie
ę
jjar.exe.
W celu stworzenia archiwum z wszystkich klas zawartych w bieżącym
k l
katalogu
i nadać
d ć mu nazwę JediArchiwum
J diA hi
można
ż wywołać
ł ć polecenie:
l
i
jar ‐cf JediArchiwum
JediArchiwum.jar
.jar
jar *.class
class
‐c
‐t
‐x
‐u
‐f
Jacek Rumiński
stwórz nowe archiwum
pokaż zawartość archiwum
pobierz podane pliki z archiwum
aktualizuj archiwum
określenie nazwy archiwum
3
Język JAVA – archiwa
Politechnika Gdańska,
Gdańska Inżynieria Biomedyczna
Archiwum – demonstracja.
Stwórzmy archiwum złożone z kilku plików *.class dla przykładowego
apletu. Pliki źródłowe:
R
RycerzJedi.java
J di j
Sith.java
Rywalizacja.java (aplet)
Wszystkie przykładowe pliki
programów załączono na
stronie kursu (SZKOLENIA/JAVA)
http://uno.biomed.gda.pl
Jacek Rumiński
4
Język JAVA – archiwa
Politechnika Gdańska,
Gdańska Inżynieria Biomedyczna
Archiwa Javy
Warto zauważyć, że wszystkie dystrybuowane biblioteki Javy (zarówno
w JDK jak i inne) dostarczane są najczęściej w formie plików JAR.
Jeśli chcesz zobaczyć co jest zawartością pliku archiwum można
tymczasowo zmienić jego rozszerzenie na „.zip”
„.zip i rozpakować
(podgląd). Wówczas zobaczymy strukturę pakietów (czyli katalogów)
oraz zawarte pliki klas (.class) i ewentualnie inne pliki (zasoby).
Jacek Rumiński
5
Język JAVA – archiwa
Politechnika Gdańska,
Gdańska Inżynieria Biomedyczna
Archiwa Javy
Archiwa mają również ciekawe zastosowania dla potrzeb apletów.
Otóż jeśli aplet składa się z wielu plików to lepiej utworzyć archiwum
(któ b
(które
będzie
d i przesłane
ł
jjako
k jeden,
j d
skompresowany
k
plik)
lik) i wywoływać
ł
ć
główną klasę apletu względem archiwum.
<applet code="Rywalizacja.class" archive="JediArchiwum.jar"
width="400" height="300"></applet>
Ponadto archiwum można podpisać cyfrowo i po weryfikacji nadać
większe uprawnienia podpisanemu kodowi apletu.
Jacek Rumiński
6
Język JAVA ‐ podstawy
Politechnika Gdańska,
Gdańska Inżynieria Biomedyczna
Plan wykładu:
1. Rodzaje programów w Javie
2. Tworzenie aplikacji
3. Tworzenie apletów
4. Obsługa archiwów
5 Wyjątki
5.
6. Klasa w klasie !
Jacek Rumiński
7
Język JAVA – wyjątki
Politechnika Gdańska,
Gdańska Inżynieria Biomedyczna
Wyjątki.
Wyobraźmy
y
y sobie następujące
ęp ją sytuacje:
y
j
¾chcemy czytać z pliku o podanej nazwie, ale plik nie istnieje,
¾wywołujemy połączenie z komputerem, ale adres jest
nieprawidłowy,
¾przesyłamy dane,
dane ale zerwane zostało połączenie
¾itp.
Sytuacje
y
j takie nie sąą prawidłowe
p
czyy pożądane.
p ą
Jeśli możemyy
przewidzieć ich potencjalne wystąpienie to lepiej zabezpieczyć kod
źródłowy (zamiast otrzymać w czasie wykonywania programu coś typu
General Protection Fault).
Tym zabezpieczeniem jest oznaczenie określonych metod
metod, że mogą
potencjalnie być źródłem wyjątku.
Jacek Rumiński
8
Język JAVA –wyjątki
Politechnika Gdańska,
Gdańska Inżynieria Biomedyczna
Co to jest wyjątek?
Wyjątek
yją to instancja
j uniwersalnego
g typu
yp danych,
y , któryy ma wartości i
funkcje
‐ czyli
Æ wyjątek to obiekt, typ wyjątku to klasa!
Każdy wyjątek ma swoją nazwę (nazwę klasy), która zwykle sugeruje
jakiego rodzaju jest to wyjątek, np.:
w pakiecie java.io.*:
java io *:
FileNotFoundException ‐ brak pliku
InterruptedIOException
p
p
‐p
przerwanie operacji
p
j we/wy
/ y
IOException ‐ klasa nadrzędna wyjątków we/wy
w pakiecie java.lang.*:
ArrayIndexOutOfBoundsException ‐ przekroczenie zakresu tablicy,
ClassNotFoundException ‐ brak klasy,
klasy
Exception ‐ klasa nadrzędna wyjątków.
Jacek Rumiński
9
Język JAVA –wyjątki
Politechnika Gdańska,
Gdańska Inżynieria Biomedyczna
Skąd mam wiedzieć kiedy i jak obsługiwać wyjątki?
Jeśli używasz
y
jakiejś
j
j metody,
y, która może zwrócić wyjątek
yją wówczas
musisz obsłużyć wyjątek lub odpowiednio wprowadzić właściwą
deklarację.
Jeśli tego nie zrobisz (a wyjątek jest innego rodzaju niż
RuntimeException czy Error) wówczas kompilator poinformuje Cię
Cię, że
kompilacja się nie udała, bo brak wymaganej obsługi (deklaracji)
wyjątku.
yją
Ponadto p
poda informacje
j o jjaki wyjątek
yją ((nazwa klasy)
y) chodzi
i dla jakiej metody powinna być napisana obsługa wyjątku.
Zawsze możemy sprawdzić w dokumentacji klas, czy dana metoda
zwraca wyjątek.
Możemy tworzyć również własne typy wyjątków (czyli klasy) i
generować je (stwarzać i przesyłać obiekty).
Jacek Rumiński
10
Język JAVA –wyjątki
Politechnika Gdańska,
Gdańska Inżynieria Biomedyczna
Skąd mam wiedzieć kiedy i jak obsługiwać wyjątki?
Obsługa wyjątku:
try{
//1.tu wywołanie metody, która może wywołać wyjątek klasy Exception
//2 jeśli dojdziemy do drugiej linii kodu po 1
//2.
1. – wyjątek nie pojawił się
} catch (Exception e) {
//tu instrukcje związane z obsługą sytuacji wyjątkowej (np. komunikat)
}
Deklaracja (określanie) wyjątku:
public void mojaMetoda() throws Exception{
//(...)
//1.tu wywołanie metody, która może wywołać wyjątek klasy Exception
//(...)
}
Jacek Rumiński
11
Język JAVA –wyjątki
Politechnika Gdańska,
Gdańska Inżynieria Biomedyczna
Jak obsługiwać wyjątki?
Jedna metoda zwraca więcej niż jeden wyjątek?
try{
//1.tu wywołanie metody, która może wywołać wyjątki klas:
// Exception1 i Exception2
//2. jeśli dojdziemy do drugiej linii kodu po 1. – wyjątek nie pojawił się
} catch (Exception1 e1) {
//tu instrukcje związane z obsługą wyjątku Exception1
}catch (Exception2 e2){
//tu instrukcje związane z obsługą wyjątku Exception2
} finally{ //opcjonalne
//tu instrukcje, których wykonanie jest gwarantowane , np. zamknięcie
// ł
//połączenia
i sieciowego
i i
}
Jacek Rumiński
12
Język JAVA –wyjątki
Politechnika Gdańska,
Gdańska Inżynieria Biomedyczna
Kiedy nie chcemy obsługiwać wyjątku ‐
ponieważ ma być obsługiwany przez metody, korzystające z danej
metody
d zwracającej
j j wyjątek
j k ‐ wówczas
ó
d
deklarujemy
kl j
możliwość
żli ść
pojawienia się wyjątku poprzez użycie słowa kluczowego „throws” i
wyliczenie (po przecinkach) klas wyjątków:
wyjątków:
public void mojaMetoda() throws Exception{
//( )
//(...)
//1.tu wywołanie metody, która może wywołać wyjątek klasy Exception
//(...)
}
Jeśli ktoś będzie chciał użyć metody mojaMetoda() wówczas musi albo
obsłużyć wyjątek albo zadeklarować throws ...itd.
Jacek Rumiński
13
Język JAVA –aplety
Politechnika Gdańska,
Gdańska Inżynieria Biomedyczna
Jak samemu generować wyjątki ?
Do tego służy specjalne słowo kluczowe (instrukcja) „throw”.
//(...)
if (liczbaOdebranychPakietow < 10) //jeżeli nie spełniony jest warunek
throw
h
new Exception("Za
(" malo
l odebranych
d b
h pakietow!!!");
k
")
//(...)
Klasa Exception to jedna ze standardowych klas wyjątków (jedna z
najbardziej ogólnych, po której większość dziedziczy).
wyjątku np.
np MyException wówczas
Jeśli chcemy mieć własny typ wyjątku,
należy stworzyć nową klasę dziedzicząc po klasie np. Exception:
public class MyException extends Exception{
//tu treść – jak dla każdej klasy – o czym dalej
} //koniec class MyException
Jacek Rumiński
14
Język JAVA – wyjątki
Politechnika Gdańska,
Gdańska Inżynieria Biomedyczna
Wyjątki – demonstracja.
WyjatkowyJedi.java
MyException.java
Wszystkie przykładowe pliki
programów załączono na stronie
kursu (SZKOLENIA/JAVA)
http://uno.biomed.gda.pl
Jacek Rumiński
15
Język JAVA ‐ podstawy
Politechnika Gdańska,
Gdańska Inżynieria Biomedyczna
Plan wykładu:
1. Rodzaje programów w Javie
2. Tworzenie aplikacji
3. Tworzenie apletów
4. Obsługa archiwów
5 Wyjątki
5.
6. Klasa w klasie !
Jacek Rumiński
16
Język JAVA –klasy wewnętrzne
Politechnika Gdańska,
Gdańska Inżynieria Biomedyczna
Co jeszcze może zawierać klasa?
Oprócz
O
ó cech
h ((pól),
ól) kkonstruktora
k
oraz metod
d kl
klasa może
ż zawierać
i ć
jeszcze klasy wewnętrzne.
Klasę wewnętrzną definiujemy w obrębie nawiasów klamrowych klasy
zewnętrznej.
public class MasterJedi{
//pola i funkcje klasy MasterJedi
class StudentJedi {
//pola i funkcje klasy StudentJedi
}//koniec class StudentJedi
}//koniec class MasterJedi
Klasa wewnętrzna staje się częścią klasy zewnętrznej i dostęp do niej jest
poprzez podanie
klasy zewnętrznejj llub
do wywołania)
d i nazwy kl
b ((stosowanie
i d
ł i )
obiektu klasy zewnętrznej.
Jacek Rumiński
17
Język JAVA –klasy wewnętrzne
Politechnika Gdańska
Gdańska, Inżynieria Biomedyczna
public class MasterJedi {
public long mPesel;
public MasterJedi(long pes) {
mPesel = pes;
}
class
l
St d tJ di {
StudentJedi
public long sPesel;
public StudentJedi(long pes) {
sPesel=pes;
System.out.println("PESEL mistrza to: " +mPesel);
System.out.println("PESEL ucznia to: " +sPesel);
};
}//koniec class StudentJedi
public static void main(String args[]) {
MasterJedi mj = new MasterJedi(90100903890L);
MasterJedi.StudentJedi sj= mj.new StudentJedi(80081204591L);
}//koniec main()
}//koniec public class MasterJedi
Jacek Rumiński
18
Język JAVA –klasy wewnętrzne
Politechnika Gdańska,
Gdańska Inżynieria Biomedyczna
Klasy wewnętrzne
Klas wewnętrznych używamy – rzadko – najczęściej wtedy, gdy
chcemy
h
zgrupowaćć klasy,
kl
kktóre
ó są stosowane tylko
lk w jjednym,
d
d
danym
miejscu. Klasy wewnętrzne mogą być dynamiczne (jak w poprzednim
przykładzie) lub statyczne (czyli należą do klasy) oznaczone
specyfikatorem static .
Klasy wewnętrzne dynamiczne mogą bezpośrednio odwoływać się do
wszystkich pól i metod klasy zewnętrznej!
Klasy wewnętrzne statyczne mogą to zrobić wyłącznie przez
d ł i do
d obiektu
bi kt klasy
kl
t
j
odwołanie
zewnętrznej.
//w przykładzie MasterJedi.java:
public
bli StudentJedi(long
St d tJ di(l
pes)) {
sPesel=pes;
System.out.println("PESEL mistrza to: " +mPesel); //odwołanie do pola klasy zew.
System.out.println("PESEL ucznia to: " +sPesel);
};
Jacek Rumiński
19
Język JAVA –klasy wewnętrzne
Politechnika Gdańska,
Gdańska Inżynieria Biomedyczna
Klasy wewnętrzne
Do kl
D
klas wewnętrznych
h powrócimy
ó i omawiając
i j obsługę
bł
zdarzeń
d
ń
związanych z graficznym interfejsem użytkownika (czyli np. obsługę
wciśnięcia przycisku)
przycisku).
A teraz – zapraszam na kolejny wykład nr 3, w którym zapoznamy się z
zasadami
d ib
budowy
d
zmiennych,
i
h poznamy ttypy d
danych
h oraz podstawowe
dt
instrukcje sterowania programem jak pętle, instrukcje warunkowe,
itp.
itp
Jacek Rumiński
20
Download