Java wstep12 id 226647 Nieznany

background image

Podstawy j

ęzyka Java 2

1


J

ędrzej Ułasiewicz – Inst. Informatyki Automatyki i Robotyki PWr

Podstawy j

ęzyka JAVA

Spis tre

ści:

1. Wstęp do programowania w języku Java............................................................. 2

1.1

Historia ......................................................................................................... 2

1.2

Aplety i aplikacje ........................................................................................... 2

1.3

Pakiet JDK (Java Developers Kit)................................................................. 2

1.4

Uruchomienie programu ............................................................................... 5

2. Instrukcje, wyrażenia, zmienne i typy danych ...................................................... 6

2.1

Instrukcje i wyra

żenia ................................................................................... 6

2.2

Tworzenie zmiennych ................................................................................... 6

2.3

Typy zmiennych:........................................................................................... 6

2.4

Litera

ły .......................................................................................................... 7

2.5

Operatory...................................................................................................... 8

2.6

Instrukcje przypisania ................................................................................... 9

2.7

Operacje na

łańcuchach: .............................................................................. 9

3. Obiekty w języku Java ....................................................................................... 10

3.1

Wst

ęp do obiektów ..................................................................................... 10

3.2

Tworzenie klas............................................................................................ 11

3.3

Tworzenie metod ........................................................................................ 12

3.4

Dziedziczenie.............................................................................................. 16

3.5

Tworzenie nowych obiektów, konstruktory ................................................. 18

3.6

Przes

łanianie metod ................................................................................... 21

3.7

Dost

ęp do zmiennych klasy i zmiennych obiektu........................................ 22

3.8

Odwo

łania do obiektów............................................................................... 22

3.9

Rzutowanie i konwersja .............................................................................. 24

3.10 Porównywanie obiektów ............................................................................. 25

4. Tablice ............................................................................................................... 26

4.1

Deklaracja zmiennej tablicowej................................................................... 26

4.2

Tworzenie obiektów tablicowych................................................................. 26

4.3

Odwo

łąnie do elementów tablic .................................................................. 28

4.4

Tablice wielowymiarowe ............................................................................. 29

5. Instrukcje sterujące ............................................................................................ 30

5.1

Polecenia blokowe...................................................................................... 30

5.2

Instrukcja warunkowa if .............................................................................. 30

5.3

Instrukcja warunkowa switch ...................................................................... 31

5.4

P

ętla for ...................................................................................................... 32

5.5

P

ętle while i do............................................................................................ 32

5.6

Przerywanie dzia

łania pętli, instrukcje break i continue.............................. 33

6. Pakiety ............................................................................................................... 36

6.1

Poj

ęcie pakietu ........................................................................................... 36

6.2

Udost

ępnianie pakietów.............................................................................. 36

6.3

Lokalizacja klas........................................................................................... 37

6.4

Modyfikatory dost

ępności ........................................................................... 38

7. Wyjątki ............................................................................................................... 39

7.1

Hierarchia wyj

ątków.................................................................................... 39

7.2

Obs

ługa wyjątków – klauzula catch ............................................................ 40

7.3

Generowanie wyj

ątków............................................................................... 43

8. Literatura............................................................................................................ 46

PDF created with pdfFactory trial version

www.pdffactory.com

background image

Podstawy j

ęzyka Java 2

2


J

ędrzej Ułasiewicz – Inst. Informatyki Automatyki i Robotyki PWr

1. Wst

ęp do programowania w języku Java

1.1 Historia

J

ęzyk powstał około roku 1995 w firmie Sun i był pierwotnie przeznaczony do

programowania systemów wbudowanych. Mia

ł zapewnić przenośność

oprogramowania. Wywodzi si

ę z C++ z którego wyeliminowano konstrukcje

potencjalnie prowadz

ące do błędów. Zyskał popularność dzięki zastosowaniom

sieciowym.

kompilacja

wykonanie

kod bajtowy

kod

źródowy

naszyna wirtualna

Kompilator

prog.java

prog.class


Cechy jezyka Java:

1. Bezpiecze

ństwo – class loader, byte code verifier, security manager.

2. Otwarte standardy i przeno

śność - Java Core API (API - Aplication

Programming Interface).

3. Wieloplatformowo

ść (od urządzeń wbudowanych do serwerów).

4. J

ęzyk zorientowany obiektowo.

5. Wielow

ątkowość.

6. Wsparcie dla aplikacji sieciowych rozproszonych.

1.2 Aplety i aplikacje

Programy w Javie dziel

ą się na dwie grupy:

1. Aplikacje – wykonywane

środowisku systemu operacyjnego

2. Aplety - programy osadzone w dokumencie WWW i wykonywane w

środowisku przeglądarki.

1.3 Pakiet JDK (Java Developers Kit)

Aby tworzy

ć aplikacje w Javie należy dysponować odpowiednim oprogramowaniem

narz

ędziowym. Jest to Pakiet JDK (Java Developers Kit) który można sciągnąć z

witryny firmy Sun (

http://java.sun.com/

).


Plik dla wersji 1.4.2 dla Windows: j2sdk-1_4_2_02-windows-i586-p.exe

Instalacja: uruchomienie programu: j2sdk-1_4_2_02-windows-i586-p.exe

PDF created with pdfFactory trial version

www.pdffactory.com

background image

Podstawy j

ęzyka Java 2

3


J

ędrzej Ułasiewicz – Inst. Informatyki Automatyki i Robotyki PWr

Konfiguracja:

1.

Zmienna

środowiska PATH powinna zawierać katalog w którym umieszczone

s

ą programy wykonywalne pakietu:

Path=C:\ProgramFiles\j2sdk\bin;...;

2.

Zmienna

środowiska CLASSPATH powinna być usunięta lub zawierać katalog

...\j2sdk\lib\tools.jar

Program

Opis

javac

Kompilator Javy – przetwarza plik

żródłowy prog.java na kod

bajtowy prog.class

java

Interpreter javy (maszyna wirtualna) – uruchamia i wykonuje kod
bajtowy prog.class

jdb

Program uruchomieniowy (debugger) - wykonuje kod bajtowy
prog.class w trybie sprawdzania

javadoc

Program dokumentacyjny – przetwarza plik

żródłowy prog.java na

plik dokumentacyjny w formacie HTML.

javah

Generuje pliki nag

łówkowe do C, C++

apletviewer

Interpreter Javy – uruchamia aplety Javy z plików HTML

javap

Dissasembler Javy

Tabela 1-1 Podstawowe narz

ędzia pakietu JDK

Edytor

javac

javah

javadoc

prog.java

naszyna

wirtualna

Kompilator

kod

źródowy

kod bajtowy

prog.class

javac

wej

ście

wyj

ście

dokumentacja

w HTML

pliki

naglówkowe

C, C++

jdb

debugger

Rys. 1-1 Tworzenie aplikacji w pakiecie JDK

PDF created with pdfFactory trial version

www.pdffactory.com

background image

Podstawy j

ęzyka Java 2

4


J

ędrzej Ułasiewicz – Inst. Informatyki Automatyki i Robotyki PWr

Edytor

javac

javah

javadoc

prog.java

plik

sieciowy

lub lokalny

Kompilator

kod

źródowy

kod bajtowy

prog.class

dokumentacja

w HTML

pliki

naglówkowe

C, C++

Edytor

dokument

HTML

przegl

ądarka

Ekran

Rys. 1-2 Tworzenie apletów w pakiecie JDK

PDF created with pdfFactory trial version

www.pdffactory.com

background image

Podstawy j

ęzyka Java 2

5


J

ędrzej Ułasiewicz – Inst. Informatyki Automatyki i Robotyki PWr

1.4 Uruchomienie programu


1. Utworzy

ć plik Hello.java dowolnym edytorem tekstu np. programem notepad i

zapisa

ć go w jakimś katalogu np. C:\java\prog

class Hello {
public static void main(String args[]) {
System.out.println("Pierwszy program w Javie!");
}
}

Przyk

ład 1-1 Pierwszy program w Javie – Hello.java


2. Uruchomi

ć okno poleceń MS-DOS poprzez Programy / Uruchom i wpisanie

polecenia:

cmd

3. Zmieni

ć katalog bieżący na:

C:\java\prog

4. Uruchomi

ć kompilator poprzez polecenie:

javac Hello.java

5. Uruchomi

ć interpreter:

java Hello

Przyk

ład 1-2 Uruchomienie programu Hello.java

PDF created with pdfFactory trial version

www.pdffactory.com

background image

Podstawy j

ęzyka Java 2

6


J

ędrzej Ułasiewicz – Inst. Informatyki Automatyki i Robotyki PWr

2. Instrukcje, wyra

żenia, zmienne i typy danych

2.1 Instrukcje i wyra

żenia


Instrukcja – polecenie powoduj

ące wykonanie pewnej czynności. Instrukcja jest

zako

ńczona średnikiem.

System.out.printl(”JAVA”);


Blok – grupa instrukcji zamkni

ęta w nawiasach klamrowych.

{ instr1; instr2; ... ,instrN}


Wyra

żenie – polecenie które zwraca pewną wartość (numeryczną, logiczną)


Komentarz – dodatkowa informacja zamieszczona w kodzie

żródłowym ignorowana

przez kompilator.

Zmienne – obszary w pami

ęci do przechowywania informacji. Zawartość zmiennej

mo

że się w trakcie działania programu zmieniać. Zmienna ma nazwę i wartość

2.2 Tworzenie zmiennych

Przy tworzeniu zmiennych musi by

ć podany typ i ewentualnie wartość początkowa.

int masa = 10;


Nazwa zmiennej w JAVA musi rozpoczyna

ć się od litery, znaku podkreślenia _ lub

dolara $. J

ęzyk JAVA wykorzystuje zestaw znaków Unicode.


Poza nazw

ą zmiennej należy określić jej typ.

2.3 Typy zmiennych:


W j

ęzyku JAVA występują następujące typy zmiennych

1. Typ elementarny (pierwotnie zdefiniowany)
2. Nazwa klasy lub interfejsu
3. Tablica

PDF created with pdfFactory trial version

www.pdffactory.com

background image

Podstawy j

ęzyka Java 2

7


J

ędrzej Ułasiewicz – Inst. Informatyki Automatyki i Robotyki PWr

byte

8

-128

+127

short

16

-2

15

(-32,768)

+2

15

-1 (32,767)

int

32

-2

31

(-2,147,483,648) +2

31

-1 (2,147,483,647)

long

64

-2

63

+2

63

-1

char

16

Unicode 0

Unicode 2

16

-1

boolean 8

false

true

float

32

32-bit IEEE 754 floating-point numbers

double

64

64-bit IEEE 754 floating-point numbers

void

Tabela 2-1 Typy elementarne



Zmienna ustalona – (sta

ła) wartość jej nie ulega zmianie podczas wykonywania

programu. Oznaczana s

łowem kluczowym

final

. Stosowana do polepszenia

czytelno

ści kodu.

final int wymiar = 8;

2.4 Litera

ły


Litera

ł – Liczba, tekst lub inna informacja reprezentująca ustaloną wartość.



123L

long

0777

ósemkowa

0xF2

szesnastkowa

12.4

double

Tabela 2-2 Litera

ły numeryczne


Litera

ły boolean: true i false


Litera

ły znakowe: znak ujęty w apostrofy np. ‘x’

Litera

ły znakowe mogą być znakami specjalnymi.


\n

Nowa linia

\r

Pocz

ątek wiersza

\xd

Liczba HEX

\ud

Znak w unicode

Tabela 2-3 Znaki specjalne


Litera

ły łańcuchowe: ciąg znaków ujetych w cudzysłów np. ”napis w java”

Litera

ły łańcuchowe przechowywane w obiektach typu String.

PDF created with pdfFactory trial version

www.pdffactory.com

background image

Podstawy j

ęzyka Java 2

8


J

ędrzej Ułasiewicz – Inst. Informatyki Automatyki i Robotyki PWr

2.5 Operatory


Operatory – symbole specjalne stosowane do wykonywania dzia

łań arytmetycznych,

niektórych przypisa

ń i porównań logicznych


+

Dodawanie

-

Odejmowanie

*

Mno

żenie

/

Dzielenie

%

Dzielenie modulo

Tabela 2-4 Operatory arytmetyczne


Inkrementacja: z = ++x; z = x++;
Dekrementacja: z = - -x; z = x--;

int x,y,z;
z = (x * y) +2;

==

Równe

!=

żne

<

Mniejsze

>

Wi

ększe

<=

Mniejsze lub równe

>=

Wi

ększe lub równe

Tabela 2-5 Operatory porównania


Wynik operatora porównania – true albo false

If(x<=j) y = 2; else y = 13;

AND

& lub &&

OR

| lub ||

XOR

^

NOT

!

Tabela 2-6 Operatory logiczne


Priorytety operatorów:
1. Inkrementacja i dekrementacja
2. Operacje arytmetyczne
3. Porównania
4. Operacje logiczne
5. Operacje przypisania

PDF created with pdfFactory trial version

www.pdffactory.com

background image

Podstawy j

ęzyka Java 2

9


J

ędrzej Ułasiewicz – Inst. Informatyki Automatyki i Robotyki PWr

2.6 Instrukcje przypisania

Zmienna = warto

ść;

x = 3;
a = b = c = 33;

x+=y

x = x + y

x-=y

x = x - y

x*=y

x = x * y

x/=y

x = x / y


2.7 Operacje na

łańcuchach:

Operator + ma podwójne znaczenie. Oznacza te

ż konkatenację łańcuchów.

Je

żeli jakikolwiek element konkatenacji jest typu String to pozostałe elementy będą

te

ż traktowane jako łańcuchy.

System.out.println("Sum = " + sum);

public class BasicDemo {
public static void main(String[] args) {
int sum = 0;
for (int i = 1; i <= 10; i++) {
sum += i;
System.out.println(" i=" + i + " sum= " + sum);
}
System.out.println("Sum = " + sum);
}

}

Przyk

ład 2-1 Operacje na łańcuchach

PDF created with pdfFactory trial version

www.pdffactory.com

background image

Podstawy j

ęzyka Java 2

10


J

ędrzej Ułasiewicz – Inst. Informatyki Automatyki i Robotyki PWr

3. Obiekty w j

ęzyku Java

W j

ęzyku Java prawie wszystko wykonywane jest prze pomocy obiektów

3.1 Wst

ęp do obiektów

W j

ęzyku C, Pascalu i innych definiowane są struktury

struct Osoba {
int pesel;
int rok_urodzenia;
String nazwisko;
String imie;
}

struct kowalski;
kowalski.pesel = 65112300234;

Struktura jest szablonem wedle którego mo

żna utworzyć nową zmienną. Nie określa

jednak dzia

łań na zmiennych. Obiekt definiuje zarówno zmienne jak i działające na

nich procedury.


Obiekt (ang. object) – element programu grupuj

ący zbiór cech (atrybutów) i

wykonywanych na nich dzia

łań (metod). Konkretny obiekt nazywa się instancją klasy.




Klasa (ang. class) – szablon za pomoc

ą którego tworzy się obiekty.




Atrybuty – informacje opisuj

ące cechy obiektu. Atrybuty są zmiennymi.




Zmienne instancji (zmienne obiektowe) – okre

ślają atrybuty danego obiektu. Dla

żnych obiektów mają różne wartości.




Zmienna klasowa – okre

śla atrybut całej klasy. Dla wszystkich instancji klasy ma ona

jednakow

ą wartość.



PDF created with pdfFactory trial version

www.pdffactory.com

background image

Podstawy j

ęzyka Java 2

11


J

ędrzej Ułasiewicz – Inst. Informatyki Automatyki i Robotyki PWr

Metoda – grupa powi

ązanych ze sobą działań na atrybutach. Odpowiada funkcji w

proceduralnym j

ęzyku programowania.



3.2 Tworzenie klas

Definicja klasy rozpoczyna si

ę od słowa kluczowego class po którym następuje

nazwa klasy i dalej cia

ło klasy.

class nazwa_klasy {
// Cia

ło klasy

}

Cia

ło klasy składa się z:
1. Zmiennych
2. Metod

3.2.1 Tworzenie zmiennych

Zmienne dziel

ą się na:

1. Obiektowe - indywidualne dla obiektu
2. Klasowe

- jedna kopia dla wszystkich obiektów klasy

3. Lokalne

- indywidualne dla bloku


Zmienne obiektowe
Zmienne obiektowe s

ą to zmienne zdefiniowane w danej klasie, nie poprzedzone

s

łowem

static

i zdefiniowane poza metodami.

Wed

ług zwyczajowej konwencji deklarowane na początku klasy.


Zmienne klasowe
Odnosz

ą się do klasy jako całości a nie do utworzonych z niej obiektów. Zmienne

klasowe maj

ą jednakową wartość dla wszystkich obiektów klasy. Wykorzystywane są

do:

1. Komunikacji pomi

ędzy obiektami danej klasy

2. Przechowuj

ą dane wykorzystywane przez wszystkie obiekty.



Aby zadeklarowa

ć zmienną klasową należy ją poprzedzić słowem kluczowym

static

PDF created with pdfFactory trial version

www.pdffactory.com

background image

Podstawy j

ęzyka Java 2

12


J

ędrzej Ułasiewicz – Inst. Informatyki Automatyki i Robotyki PWr

class Osoba {
int pesel;
int rok_urodzenia;
String nazwisko;
String imie;

Osoba(int pes) {
...
}
}

3.3 Tworzenie metod

Metody wykonuj

ą działanie na zmiennych. Definicja metody składa się z:

1. Typu zwracanego przez metod

ę.

2. Nazwy metody
3. Listy parametrów
4. Cia

ła metody

typ_zwracany nazwa_metody(typ1 arg1, typ2 arg2,...) {
// Cia

ło metody

zmienne;
instrukcje;
}

Cia

ło metody może zawierać:
1. Deklaracje zmiennych lokalnych
2. Instrukcje (

for, while, do – while, if, switch, ....

)

3. Wyra

żenia

4. Wywo

łania innych metod

Warto

ść zwracana musi być wymieniona po słowie kluczowym

return

.


PDF created with pdfFactory trial version

www.pdffactory.com

background image

Podstawy j

ęzyka Java 2

13


J

ędrzej Ułasiewicz – Inst. Informatyki Automatyki i Robotyki PWr

class Osoba {
int pesel;
int rok_urodzenia;
String nazwisko;
String imie;

Osoba(int pes) {
pesel = pes;

nazwisko = "?";

imie = "?";

}

int drukuj_dane() {
System.out.println("Pesel: "+pesel);
System.out.println("Nazwisko: "+nazwisko);
System.out.println("Imi

ę: "+imie);

}
}

Przyk

ład 3-1 Klasa Osoba – program osoba.java

3.3.1 S

łowo kluczowe this

Podczas tworzenia metod czasami wyst

ępuje potrzeba odwołania się do zmiennych

lub metod tego samego obiektu. Stosuje si

ę wtedy słowo kluczowe

this

.



S

łowo kluczowe

this

odnosi si

ę zawsze do bieżącego obiektu i można go używać

tam gdzie wyst

ępują odwołania do obiektu.


class Osoba {
int pesel;
String imie;

zmienImie(String imie) {

this.imie = imie;

}
...
}

PDF created with pdfFactory trial version

www.pdffactory.com

background image

Podstawy j

ęzyka Java 2

14


J

ędrzej Ułasiewicz – Inst. Informatyki Automatyki i Robotyki PWr

3.3.2 Przekazywanie parametrów do metod


Parametry metody mog

ą być:

1. Obiektami
2. Typami elementarnymi


Je

żeli do metody przekazywany jest obiekt to w istocie przekazywane jest do niego

odniesienie. Zatem modyfikacja obiektu w metodzie modyfikuje obiekt pierwotny
(tablice s

ą też obiektami).


Je

żeli do metody jako parametr przekazywany jest typ elementarny to przekazywany

jest on przez warto

ść. Modyfikacja parametru w metodzie nie przenosi się na

zewn

ątrz.

3.3.3 Metody klasowe


Metody klasowe tworzy si

ę poprzedzając jej deklaracje słowem kluczowym

static

.


Wykonanie metody klasowej nie wymaga utworzenia instancji klasy (obiektu)
zawieraj

ącej tę metodę.


Metody klasowe s

ą dostępne w innych klasach.

PDF created with pdfFactory trial version

www.pdffactory.com

background image

Podstawy j

ęzyka Java 2

15


J

ędrzej Ułasiewicz – Inst. Informatyki Automatyki i Robotyki PWr

3.3.4 Przeci

ążanie metod

W j

ęzyku Java klasa może zawierać kilka metod o tej samej nazwie ale różniące się

liczb

ą i typem parametrów (polimorfizm). Która z metod będzie wykonana zależy od

sposobu wywo

łania metody – czyli typów i liczby parametrów.

class Osoba {
int pesel;
int rok_urodzenia;
String nazwisko;
String imie;

Osoba(int pes) {
pesel = pes;

nazwisko = "?";

imie = "?";

}

void drukuj(String nazwisko) {
System.out.println("Nazwisko: "+nazwisko);
}

void drukuj(int pesel, String nazwisko) {
System.out.println("Pesel: "+pesel);
System.out.println("Nazwisko: "+nazwisko);
}

}

class osoba4 {
public static void main(String argv[]) {
Osoba klient = new Osoba(123);
klient.drukuj("Kowalski");

klient.drukuj(123,"Kowalski");

}
}

Przyk

ład 3-2 Ilustracja przeciążania metod – program osoba4.java

PDF created with pdfFactory trial version

www.pdffactory.com

background image

Podstawy j

ęzyka Java 2

16


J

ędrzej Ułasiewicz – Inst. Informatyki Automatyki i Robotyki PWr

3.4 Dziedziczenie


Dziedziczenie – tworzenie nowej klasy (podrz

ędnej) na podstawie innej klasy

(bazowej, nadrz

ędnej) w taki sposób że tworzona klasa przejmuje atrybuty i metody

klasy nadrz

ędnej.



Dzi

ęki dziedziczeniu nie trzeba definiować metod i trybutów od nowa gdyż tworzona

klasa przejmuje wszystkie w

łasności klasy nadrzędnej.



W j

ęzyku Java wszystkie klasy są klasami podrzędnymi klasy Object.

Object

Osoba

Dziecko

Uczen

Student

Rysunek 3-1 Hierarchia obiektów



Do tworzenia klasy podrz

ędnej z nadrzędnej używa się słowa kluczowego

extends

.


nowa_klasa extends klasa_nadrz

ędna {

// Cia

ło klasy;

}



PDF created with pdfFactory trial version

www.pdffactory.com

background image

Podstawy j

ęzyka Java 2

17


J

ędrzej Ułasiewicz – Inst. Informatyki Automatyki i Robotyki PWr

class Osoba {
int pesel;
int rok_urodzenia;
String nazwisko;
String imie;

void drukuj_dane() {
System.out.println("Pesel: "+pesel);
System.out.println("Nazwisko: "+nazwisko);
System.out.println("Imie: "+imie);
}
}

class Student extends Osoba {
int indeks;
String wydzia

ł;

void drukuj_dane() {
System.out.println("Pesel: "+pesel);
System.out.println("Nazwisko: "+nazwisko);
System.out.println("Imie: "+imie);
System.out.println("Pesel: "+pesel);
System.out.println("Wydzial "+wydzia

ł);

}
}

class dziedzicz {
public static void main(String arg[]) {
Student stud = new Student();

stud.drukuj_dane();

}
}

Przyk

ład 3-3 Ilustracja dziedziczenia


Przes

łanianie (ang. overriding)

Mo

że się zdarzyć że klasa podrzędna i nadrzędna mają metody o tej samej nazwie.

Wtedy poszukiwanie w

łaściwej metody rozpoczyna się od dołu hierarchii.

Wykonywana jest ta metoda która le

ży najniżej w hierarchii.

PDF created with pdfFactory trial version

www.pdffactory.com

background image

Podstawy j

ęzyka Java 2

18


J

ędrzej Ułasiewicz – Inst. Informatyki Automatyki i Robotyki PWr

Object

Osoba

Dziecko

Uczen

Student

drukuj_dane

drukuj_dane

x.drukuj_dane

3.5 Tworzenie nowych obiektów, konstruktory




Nowe obiekty tworzy si

ę za pomocą operatora

new

.



Po operatorze

new

powinna wyst

ąpić nazwa klasy z której tworzy się obiekt wraz z

par

ą nawiasów. W nawiasach podaje się wartość początkową.

Student stud = new Student();
String nazwa = new String();
Point pt = new Point(0,0);


Liczba i typ argumentów operatora

new

okre

ślona jest przez konstruktor danej klasy.

Podanie nieprawid

łowej liczby lub typów argumentów spowoduje błąd kompilacji.


W momencie wykonywania operatora

new

zachodz

ą następujące działania:

1. Tworzony jest nowy obiekt
2. Przydzielana jest mu pami

ęć

3. Uruchamiany jest konstruktor


Konstruktor – metoda wykorzystywana przy tworzeniu klasy. Pe

łni funkcje:

1. Inicjuj

ą zmienne obiektu

2. Tworz

ą inne obiekty wymagane przez tworzony obiekt


Konstruktor zbudowany jest podobnie jak inne metody. Cechy konstruktora:

1. Zawsze ma tak

ą samą nazwę jak klasa.

2. Nie posiada

żadnego typu

3. Nie zwraca

żadnych argumentów.

4. Konstruktor nie mo

że być wywołany bezpośrednio.


PDF created with pdfFactory trial version

www.pdffactory.com

background image

Podstawy j

ęzyka Java 2

19


J

ędrzej Ułasiewicz – Inst. Informatyki Automatyki i Robotyki PWr

Konstruktor mo

że być wywoływany z różną liczbą argumentów. Stąd należy

zdefiniowa

ć odpowiednią liczbę konstruktorów.

Gdy klasa nie posiada

żadnego zdefiniowanego konstruktora to operator

new

i tak

utworzy obiekt.

class Osoba {
int pesel;
int rok_urodzenia;
String nazwisko;
String imie;

Osoba(int pes) { // Konstruktor
pesel = pes;

nazwisko = "?";

imie = "?";

}

void drukuj_dane() {
System.out.println("Pesel: "+pesel);
System.out.println("Nazwisko: "+nazwisko);
System.out.println("Imie: "+imie);
}
}

class test {
public static void main(String arg[]) {
Osoba kowalski = new Osoba(531221);

kowalski.drukuj_dane();

}
}

Przyk

ład 3-4 Ilustracja konstruktora


Przeci

ążanie konstruktorów



Konstruktory mog

ą się różnić liczbą i typem parametrów.



Przyk

ładowo dla klasy osoba można skonstruować trzy konstruktory:

Osoba(int pes);
Osoba(int pes, String nazwisko);
Osoba(int pes, String nazwisko, String imie);

PDF created with pdfFactory trial version

www.pdffactory.com

background image

Podstawy j

ęzyka Java 2

20


J

ędrzej Ułasiewicz – Inst. Informatyki Automatyki i Robotyki PWr

class Osoba {
int pesel;
int rok_urodzenia;
String nazwisko;
String imie;

Osoba(int pes) { // Konstruktor 1
pesel = pes;

nazwisko = "?";

imie = "?";

}

Osoba(int pes, String nazw) { // Konstruktor 2
pesel = pes;

nazwisko = nazw;

imie = "?";

}

Osoba(int pes, String nazw, String im) {
// Konstruktor 3
pesel = pes;

nazwisko = nazw;

imie = im;

}

void drukuj_dane() {
. . .
}
}

class konstruktor2 {
public static void main(String arg[]) {
Osoba kowalski =
new Osoba(531221,"Kowalski","Zenon");

kowalski.drukuj_dane();

}
}

Przyk

ład 3-5 Przeciążanie konstruktorów – program konstruktor2.java

PDF created with pdfFactory trial version

www.pdffactory.com

background image

Podstawy j

ęzyka Java 2

21


J

ędrzej Ułasiewicz – Inst. Informatyki Automatyki i Robotyki PWr

3.6 Przes

łanianie metod

Gdy wywo

ływana jest metoda dla danego obiektu to interpreter najpierw szuka w

definicji danej klasy, potem w definicji klasy bazowej i tak dalej w gór

ę hierarchii.



Aby wywo

łać przesłoniętą metodę klasy bazowej należy użyć słowa kluczowego

super

.

super.metoda_klasy_bazowej



Przes

łanianie metod pozwala implementować w metodzie przysłaniającej tylko nowe

w

łasności a pozostałe wziąć z metody przesłanianej klasy bazowej.

class Osoba {
int pesel;
int rok_urodzenia;
String nazwisko;
String imie;

void drukuj_dane() {
System.out.println("Pesel: "+pesel);
System.out.println("Nazwisko: "+nazwisko);
System.out.println("Imie: "+imie);
}
}

class Student extends Osoba {
int indeks;
String wydzia

ł;


void drukuj_dane() {
// Odwolanie do klasy bazowej
super.drukuj_dane();
System.out.println("Wydzial "+wydzia

ł);

}
}

class dziedzicz2 {
public static void main(String arg[]) {
Student stud = new Student();

stud.drukuj_dane();

}
}

PDF created with pdfFactory trial version

www.pdffactory.com

background image

Podstawy j

ęzyka Java 2

22


J

ędrzej Ułasiewicz – Inst. Informatyki Automatyki i Robotyki PWr

Przyk

ład 3-6 Wywoływanie metody przesłoniętej program - dziezicz2.java


3.7 Dost

ęp do zmiennych klasy i zmiennych obiektu


Pobieranie warto

ści zmiennej i zmiana wartości:


Notacja z kropk

ą:

Odniesienie_do_obiektu.nazwa_zmiennej


Student stud = new Student();
stud.imie = ”Przemyslaw”;



Zmienne klasy
Gdy zmienna jest zmienn

ą klasy to istnieje jedna jej kopia dla wszystkich

utworzonych z tej klasy obiektów. Warto

ść zmiennej klasowej jest taka sama dla

wszystkich obiektów.

class osoba {
static String ojciec = ”Wladyslaw”;
int wiek;

}


Wywo

ływanie metod


Notacja z kropk

ą:

Odniesienie_do_obiektu.nazwa_metody


Student stud = new Student();
stud.drukuj_dane();


Metody klasowe
Metody klasowe (

static

) odnosz

ą się do klasy a nie do poszczególnych obiektów.


3.8 Odwo

łania do obiektów

Obiekty dost

ępne są poprzez odwołania lub odniesienia do obiektów (ang.

references). Podczas operacji przypisywania i przekazywania obiektu jako
argumentu do funkcji nie kopiuje si

ę obiektu ale odniesienie.

PDF created with pdfFactory trial version

www.pdffactory.com

background image

Podstawy j

ęzyka Java 2

23


J

ędrzej Ułasiewicz – Inst. Informatyki Automatyki i Robotyki PWr

import java.awt.Point;
mport java.awt.Point;
class TestOdniesien {
public static void main(String[] arg) {
Point p1,p2;
p1 = new Point(10,10);
p2 = p1;
p1.x = 20;
p1.y = 20;

System.out.println("p1: "+p1.x+" "+p1.y);

System.out.println("p2: "+p2.x+" "+p2.y);

}

}
Program TestOdniesien.java

P1: 20 20
P2: 20 20

Wyniki programu TestOdniesien.Java

p1

p2

x

y

stos

sterta

odniesienie

obiekt


import java.awt.Point;

class TestOdniesien2 {
public static void main(String[] arg) {

Point p1,p2;

p1 = new Point(10,10);
p2 = new Point(20,20);;
System.out.println("p1: "+p1.x+" "+p1.y);

System.out.println("p2: "+p2.x+" "+p2.y);

}
}

Program TestOdniesien2.java

P1: 10 10
P2: 20 20

Wyniki programu TestOdniesien2.Java

PDF created with pdfFactory trial version

www.pdffactory.com

background image

Podstawy j

ęzyka Java 2

24


J

ędrzej Ułasiewicz – Inst. Informatyki Automatyki i Robotyki PWr

p1

p2

x

y

stos

sterta

odniesienie

obiekt

x

y

3.9 Rzutowanie i konwersja

J

ęzyk Java stosuje ścisłą kontrolę typów.


Jedynym wyj

ątkiem jest typ

String

. Gdy stosuje si

ę konkatenację zmiennych i

przynajmniej jedna zmienna jest typu

String

to do tego typu konwertowane s

ą

zmienne pozosta

łe.

System.out.println("p2: "+p2.x+" "+p2.y);

Aby zamieni

ć jeden typ na inny stosuje się rzutowanie (ang. casting).

Rzutowanie – jawna zmiana warto

ści jednego typu na inny.


Rzutowanie typów elementarnych na inne typy elementarne

Dotyczy g

łównie typów numerycznych



Rzutowanie

: (nazwa_typu) warto

ść



Rzutowanie mo

że być:

Bez utraty dok

ładności: byte na int, int na long, int na float, char na int

Z utrat

ą dokładności: int na byte, float na int, itd


float x;
int i;
i = (int) x/3;


Rzutowanie obiektów
Obiekty mog

ą podlegać rzutowaniu gdy pozostają w relacji macierzysty / potomy.



Rzutowanie

: (nazwa_klasy) warto

ść



Gdy rzutujemy klas

ę potomną na macierzystą wynik jest w pełni określony.

PDF created with pdfFactory trial version

www.pdffactory.com

background image

Podstawy j

ęzyka Java 2

25


J

ędrzej Ułasiewicz – Inst. Informatyki Automatyki i Robotyki PWr

3.10 Porównywanie obiektów


Operatory relacji (<, <=, >, >=, ==, !=) maj

ą zastosowanie do typów elementarnych.

Do obiektów mo

żna stosować operatory == i != ale sprawdzają one jedynie czy

odniesienie jest do tych samych obiektów.

Aby porówna

ć wartości dwóch obiektów należy opracować odpowiednie metody.

class porownania {
public static void main(String[] arg) {

String s1,s2;

s1 = "Napis 1";
s2 = s1;
System.out.println("s1: "+s1);
System.out.println("s2: "+s2);
System.out.println("Obiekty: "+(s1==s2));
s2 = new String(s1);

System.out.println("Obiekty : "+(s1==s2));

System.out.println("Wartosci: "+s1.equals(s2));
}
}

Program porownania.java

s1: Napis 1
s2: Napis 1
Obiekty: true
Obiekty : false
Wartosci: true

Wyniki programu porownania.Java






PDF created with pdfFactory trial version

www.pdffactory.com

background image

Podstawy j

ęzyka Java 2

26


J

ędrzej Ułasiewicz – Inst. Informatyki Automatyki i Robotyki PWr

4. Tablice

Tablice grupuj

ą wiele elementów dowolnego ale tego samego typu, który określony

zosta

ł przy tworzeniu tablicy.

Tablice w Java s

ą obiektami.

Dost

ęp do elementu tablicy następuje poprzez podanie jego numeru (indeksu).


Aby utworzy

ć tablicę należy:

1. Zadeklarowa

ć zmienną tablicową.

2. Utworzy

ć nowy obiekt i przypisać go zmiennej tablicowej.

3. Zainicjowa

ć tablicę poprzez nadanie jej wartości początkowych.

4.1 Deklaracja zmiennej tablicowej


Zmienn

ą tablicową deklaruje się poprzez:

1. Podanie typu tablicy , pary nawiasów kwadratowych i nazwy tablicy

typ_tablicy[] nazwa_zmiennej

2. Podanie typu tablicy, nazwy tablicy i pary nawiasów kwadratowych

typ_tablicy nazwa_zmiennej[]


Przyk

łady:

int[] bufor;
int bufor[];
Point[] punkty;


4.2 Tworzenie obiektów tablicowych

Obiekt tablicowy tworzy si

ę na jeden z dwóch sposobów:

1. Zastosowanie operatora: new nazwa_typu[wymiar]
2. Bezpo

średnie zainicjowanie elementów tablicy.


Przyk

łady:

int buf[] = new int[16];
int com[] = {1,2,4,8};
Point[] punkty = new Points[3];


Podczas tworzenia tablicy jej elementy s

ą automatycznie inicjowane:


Numeryczne

0

boolean

false

char

‘\n’

obiekty

null


Gdy tablica tworzona jest poprzez bezpo

średnie zainicjowanie jej wymiar równy jest

liczbie elementów podanych podczas inicjacji.

PDF created with pdfFactory trial version

www.pdffactory.com

background image

Podstawy j

ęzyka Java 2

27


J

ędrzej Ułasiewicz – Inst. Informatyki Automatyki i Robotyki PWr

class Point {
int x;
int y;
Point(int x, int y) { // Konstruktor
this.x = x;
this.y = y;
}
}

class tablice2 {

public static void main(String arg[]) {
int com[] = {1,2,4,8};
int buf[] = new int[16];
int i,sum=0;
String kolor[] = {"Red","Green","Blue"};
Point[] trojkat = {new Point(1,1), new Point(2,2),
new Point(3,1)};

for(i=0;i<buf.length;i++) {
buf[i] = com[i%3];
sum+=buf[i];
System.out.println("buf "+buf[i]);
}
System.out.println("sum= "+kolor[i%2]);
}
}

Przyk

ład 4-1 Deklaracja i dostęp do tablic - program poin2.java

null

stos

sterta

trók

ąt

Rysunek 4-1 Deklaracja zmiennej Point[] trojkat;

PDF created with pdfFactory trial version

www.pdffactory.com

background image

Podstawy j

ęzyka Java 2

28


J

ędrzej Ułasiewicz – Inst. Informatyki Automatyki i Robotyki PWr

stos

sterta

trók

ąt

length

null

null

null

trojkat[0]

trojkat[1]
trojkat[2]

Rysunek 4-2 Utworzenie zmiennej trojkat = new Point[3];



stos

sterta

trók

ąt

length

null

null

trojkat[0]

trojkat[1]
trojkat[2]

1

1

y

x

Point

Rysunek 4-3 Inicjacja zmiennej trojkat[0] = new Point(1,1);


4.3 Odwo

łąnie do elementów tablic

Dost

ęp do elementu tablicy uzyskujemy poprzez podanie nazwy tablicy i indeksu w

nawiasach kwadratowych.
Np.:

trojkat[2];



W j

ęzyku Java dostęp do elementów tablic jest kontrolowany pod względem

przekroczenia dopuszczalnego zakresu indeksu.



Z ka

żdym obiektem tablicowym związany jest atrybut

length

podaj

ący liczbę

elementów tablicy.


for(i=0;i<buf.length;i++) {. . .}


W j

ęzyku Java tablica obiektów zawiera odwołania do tych obiektów. Stąd operacje

przesuwania i kopiowania w ramach tych tablic powoduj

ą tylko zmianę tych odwołań.


W przypadku tablic zawieraj

ących typy elementarne i

String

zachodzi rzeczywiste

kopiowanie.

PDF created with pdfFactory trial version

www.pdffactory.com

background image

Podstawy j

ęzyka Java 2

29


J

ędrzej Ułasiewicz – Inst. Informatyki Automatyki i Robotyki PWr

4.4 Tablice wielowymiarowe

Java nie definiuje tablic wielowymiarowych. Pozwala jednak tworzenie tablic
zawieraj

ących inne tablice.

class tablice3 {
public static void main(String arg[]) {
int tab[][] = new int[3][3];
int i,j,sum=0;

for(i=0;i<3;i++) {
for(j=0;j<3;j++) {
tab[i][j] = i+j;
System.out.print("buf["+i+","+j+"]=
"+tab[i][j]);
}
System.out.println(" ");
}
}
}

Przyk

ład 4-2 Tablice wielowymiarowe program tablice3.java

PDF created with pdfFactory trial version

www.pdffactory.com

background image

Podstawy j

ęzyka Java 2

30


J

ędrzej Ułasiewicz – Inst. Informatyki Automatyki i Robotyki PWr

5. Instrukcje steruj

ące

5.1 Polecenia blokowe

Blok instrukcji zaznacza si

ę nawiasami klamrowymi:

{ // Blok instrukcji
instr1;
instr2;
. . .
instrN
}


Blok instrukcji mo

że być użyty w każdym miejscu programu na miejscu pojedynczej

instrukcji.

Bloki instrukcji mo

żna zagnieżdżać.


Zmienne lokalne zadeklarowane wewn

ątrz bloku są widoczne tylko wewnątrz tego

bloku.

{ // Blok instrukcji
int i;
for(i=0;i<3;i++) { // Blok instrukcji
. . .
}
}

5.2 Instrukcja warunkowa if

Instrukcja warunkowa – instrukcja która zostanie wykonana tylko wtedy gdy
spe

łniony jest pewien warunek.

if(warunek) instrukcja1
else instrukcja2

warunek mo

że przyjmować wartość logiczną

true

lub

false

.


instrukcja1

zostanie wykonana gdy warunek ma warto

ść

true

.

instrukcja2

zostanie wykonana gdy warunek ma warto

ść

false

.

PDF created with pdfFactory trial version

www.pdffactory.com

background image

Podstawy j

ęzyka Java 2

31


J

ędrzej Ułasiewicz – Inst. Informatyki Automatyki i Robotyki PWr

if(x<10)
z = 0;
else
z = 1;

5.3 Instrukcja warunkowa switch


switch (zmienna) {
case wart1: instrukcja1;
break;
case wart2: instrukcja2;
break;
. . .
default: instrukcjaN;
}


Zmienna powinna by

ć typu elementarnego który rzutuje się na typ int (byte, char,

short, int).

Gdy zmienna przyjmuje warto

ść1 to wykonywana jest instrukcja1 i tak dalej. Gdy

zmienna nie przyjmuje

żadnej z wyszczególnionych wartości to wykonywana jest

instrukcja z etykiet

ą default.


Przyk

ład :

switch (stopien) {
case 5: System.out.print("Bardzo dobry");
break;
case 4: System.out.print("Dobry");
break;
. . .
default: System.out.print("B

ład");

}


Gdy po instrukcji brakuje s

łowa kluczowego break to zostana wykonane kolejne

instrukcje a

ż do napotkania break lub dotarcia do końca instrukcji switch.

PDF created with pdfFactory trial version

www.pdffactory.com

background image

Podstawy j

ęzyka Java 2

32


J

ędrzej Ułasiewicz – Inst. Informatyki Automatyki i Robotyki PWr

5.4 P

ętla for

P

ętle for stosuje się gdy pewną instrukcję (lub blok) należy powtórzyć określoną

liczb

ę razy.


for(wart_poczatkowa; war_zako

ńczenia; licznik_pętli)

instrukcja



wart_poczatkowa

Wyra

żenie wykonywane na początku. Jeżeli użyty jest

indeks to wyra

żenie to nadaje mu wartość początkową np.

int x = 0. Zmienne tutaj deklarowane istniej

ą tylko w czasie

wykonania p

ętli a potem będą usunięte.

war_zako

ńczenia

Sprawdzany jest przed ka

żdym wykonaniem pętli. Jeśli jest

true to p

ętla zostanie wykonana.

licznik_p

ętli

Dowolne wyra

żenie wykonane po każdym zakończeniu

wykonania instrukcji p

ętli. Zwykle jest to zwiększenie licznika

p

ętli np. i++.

for(int i=0;i<16;i++) {
buf[i] = i;

}

Dowolna cz

ęść polecenia for może być wyrażeniem pustym. Wtedy trzeba te

wyra

żenia wykonywać w innym miejscu.


5.5 P

ętle while i do

P

ętle while i do while umożliwiają powtarzanie wykonywania pewnego fragmentu

kodu (instrukcja) tak d

ługo gdy warunek przyjmuje wartość true.


P

ętla while


while(warunek)
instrukcja;



P

ętla

while

wykonuje si

ę dopóki warunek ma wartość true. Warunek sprawdzany

jest przed wykonaniem instrukcji tak wi

ęc gdy nie jest spełniony instrukcja może się

w ogóle nie wykona

ć.

PDF created with pdfFactory trial version

www.pdffactory.com

background image

Podstawy j

ęzyka Java 2

33


J

ędrzej Ułasiewicz – Inst. Informatyki Automatyki i Robotyki PWr

Przyk

ład:

int i = 0;
while(i < 10) {
buf[i] = i;
i++;
}

P

ętla wykona się 10 razy.


P

ętla

do ... while


do {
instrukcja
} while(warunek);



W p

ętli

do .. while

instrukcja b

ędzie powtórzona gdy warunek ma wartość

true. W takiej p

ętli instrukcja zostanie wykonana przynajmniej jeden raz.


Przyk

ład:

int i = 0;
do(i < 10) {
buf[i] = i;
i++;
} while(i<10)


P

ętla wykona się 11 razy.

5.6 Przerywanie dzia

łania pętli, instrukcje break i continue


Wykonywanie p

ętli można przerwać w dowolnym momencie.

break

– przerwanie dzia

łania pętli i przejście do następnej instrukcji.

continue

– wznowienie dzia

łanie pętli od początku kolejnej iteracji.


for(...) {

...

break;

...

}

instrukcja

while(...) {

...

break;

...

}

instrukcja

do {

...

break;

...

} while(...)

instrukcja

PDF created with pdfFactory trial version

www.pdffactory.com

background image

Podstawy j

ęzyka Java 2

34


J

ędrzej Ułasiewicz – Inst. Informatyki Automatyki i Robotyki PWr

Przyk

ład działania instrucji break:


int i = 0;
do(i < 10) {
. . . ;
if(buf[i] == 0) break;
i++;
} while(i<10)


Instrukcja

continue

powoduje wznowienie dzia

łania pętli. Dla pętli for następuje

zwi

ększenie licznika a następnie sprawdzenie warunku.

for(...) {

instr

...

continue;

...

}

while(...) {

instr

...

continue;

...

}

do {

instru

...

continue;

...

} while(...)



Przyk

ład działania instrucji continue:

int i = 0;
do(i < 10) {
i++ ;
if(buf[i] == 100) continue;
. . .;
} while(i<10)


Zarówno instrukcja break jak i continue mog

ą posiadać etykietę pętli wskazującą

sk

ąd należy wznowić wykonanie programu.


break etykieta

– skok na zewn

ątrz pętli

continue

etykieta

– skok na wewn

ątrz pętli




Przyk

ład działania instrucji

break

z etykiet

ą:

PDF created with pdfFactory trial version

www.pdffactory.com

background image

Podstawy j

ęzyka Java 2

35


J

ędrzej Ułasiewicz – Inst. Informatyki Automatyki i Robotyki PWr


powtorz:
int i = 0;
do(i < 10) {
. . . ;
if(buf[i] == 0) break powtorz;
i++;
} while(i<10)

PDF created with pdfFactory trial version

www.pdffactory.com

background image

Podstawy j

ęzyka Java 2

36


J

ędrzej Ułasiewicz – Inst. Informatyki Automatyki i Robotyki PWr

6. Pakiety

6.1 Poj

ęcie pakietu



Pakiety s

ą sposobem hierarchicznej organizacji klas w grupy.



Pakiety pozwalaj

ą na:

1. Po

łączenia klas w grupy co ułatwia administrowanie klasami a w

szczególno

ści zgrupowanie klas należących do jednego użytkownika.

2. Rozwi

ązanie konfliktów nazw klas

3. Lepsz

ą ochronę klas


Nazwa pakietu

Klasy zawarte w pakiecie

java.lang

Klasy podstawowe, Object, String, Thread

java.awt

Klasy do tworzenia graficznego interfejsu u

żytkownika

java.io

Pliki i strumienie wej

ścia / wyjścia

java.net

Obs

ługa sieci

java.aplet

Aplety

java.util

Klasy czasu, struktur danych i inne

Tabela 6-1 Niektóre pakiety zawarte w pakiecie java

6.2 Udost

ępnianie pakietów


Pe

łne nazwy klas

Pe

łna nazwa klasy składa się z nazwy pakietu i po kropce nazwy klasy:


adr1 = java.net.InetAddress.getLocalHost();


Aby u

żyć pewnej klasy należącej do innego pakietu należy:

1. Gdy klasa nale

ży do pakietu java.lang - można tej klasy użyć bezpośrednio

2. Gdy klasa nale

ży do innego pakietu - użyć jej pełnej nazwy.

Aby unikn

ąć wypisywania długich nazw do programu można importować pakiety.

PDF created with pdfFactory trial version

www.pdffactory.com

background image

Podstawy j

ęzyka Java 2

37


J

ędrzej Ułasiewicz – Inst. Informatyki Automatyki i Robotyki PWr


Pakiety udost

ępniane są poprzez zastosowanie słowa kluczowego

import

.

import nazwa_pakietu.nazwaklasy
import nazwa_pakietu.*



nazwa_pakietu jest:
1. nazw

ą pojedynczego pakietu

2. hierarchi

ą pakietów których nazwy oddzielone są kropkami.


S

łowo kluczowe import musi wystąpić na początku pliku programu.

import java.net.*;
...
adr1 = InetAddress.getLocalHost();


Gwiazdka * ma inne znaczenie ni

ż w przypadku katalogów. Zaimportowane będą

kasy zadeklarowane jako public zawarte bezpo

średnio w danym pakiecie.


Na przyk

ład gdy zastosujemy wyrażenie:

import java.net.*

udost

ępnimy

klasy bezpo

średnio zawarte w pakiecie net. Podpakiety zostaną pominięte.

6.3 Lokalizacja klas

Aby pewna klasa mog

ła być użyta musi być przez interpreter Javy odnaleziona.


Przeszukiwanie odbywa si

ę według nazwy pakietu i zmiennej środowiska

CLASSPATH.

1. Gdy zdefiniowana jest zmienna CLASSPATH to system przeszukuje foldery

zdefiniowane w zmiennej CLASSPATH.

2. Gdy zmienna CLASSPATH nie jest zdefiniowana system przeszukuje katalog

bie

żący oraz katalog

lib

zainstalowanego pakietu oprogramowania.

PDF created with pdfFactory trial version

www.pdffactory.com

background image

Podstawy j

ęzyka Java 2

38


J

ędrzej Ułasiewicz – Inst. Informatyki Automatyki i Robotyki PWr

6.4 Modyfikatory dost

ępności


Dost

ęp domyślny - brak modyfikatora dostępności

Standardowo zadeklarowane klasy (bez

żadnego modyfikatora) są udostępniane

innym metodom z tego samego pakietu. O ile klasy nie zosta

ły przydzielone do

żadnego pakietu są automatycznie umieszczane w domyślnym pakiecie.

-

Ka

żda zmienna klasy może być odczytywana i modyfikowana przez dowolną

klas

ę tego pakietu.

-

Ka

żda metoda klasy może być wywołana przez dowolną klasę tego pakietu.


Modyfikator

private

Zmienna lub metoda zadeklarowana jako

private

jest dost

ępna tylko w ramach

klasy w której zosta

ła zdefiniowana. Prywatne zmienna i metody nie są dostępne w

klasach podrz

ędnych.


Modyfikator stosowany jest gdy:

1. Nie ma potrzeby aby inne klasy stosowa

ły zmienne i metody.

2. Stosowanie ich by

łoby szkodliwe


Modyfikator

public

Zmienna lub metoda zadeklarowana jako

public

jest dost

ępna dla wszystkich

innych klas. Metody te s

ą dostępne w klasach podrzędnych.

Metoda

main()

musi by

ć zadeklarowana jako

public

.


Modyfikator

protected

Zmienna lub metoda zadeklarowana jako protected jest dost

ępna dla:

1. Klas podrz

ędnych danej klasy

2. Innych klas tego pakietu




PDF created with pdfFactory trial version

www.pdffactory.com

background image

Podstawy j

ęzyka Java 2

39


J

ędrzej Ułasiewicz – Inst. Informatyki Automatyki i Robotyki PWr

7. Wyj

ątki

7.1 Hierarchia wyj

ątków


W Javie wyj

ątki są obiektami – instancje klasy Throwable (java.lang.Object) . Gdy

wyst

ąpi wyjątek to tworzony jest obiekt klasy Throwable.


Wyj

ątek może być generowany przez:

1. System operacyjny
2. U

żywane w aplikacji klasy


Obiekt odpowiadaj

ący wyjątkowi zawiera:

1. Kontekst programu w momencie wyst

ąpienia wyjątku (stos wywołań

klas/metod)

2. Komunikat o b

łędzie.

3. Informacj

ę o przyczynie.

4. Wska

źnik na wyjątek klasy podrzędnej (ang. chained exception).


Wyj

ątki zorganizowane są hierarchicznie są podklasami klasy Throwable. Wyjątki

nadrz

ędne odpowiadają błędom ogólnym, podrzędne bardziej szczegółowym.

Error

Exception

Throwable

RunTimeException

IOException

InterruptedException

EOFException

InterruptedIOException

Rys. 3 Hierarchia wyj

ątków w Javie


Podstawowe klasy wyj

ątków:

1. Error - b

łędy wewnętrzne środowiska wykonawczego Javy (maszyny witualnej

Javy).

2. RunTimeException – b

łędy czasu wykonania (ArrayIndexOutofBounds,

NullPointerException, SecurityException,...)

3. IOException – b

łędy związane z systemem wejścia/wyjścia (EOFException,

SocketException, InterruptedIOException).


PDF created with pdfFactory trial version

www.pdffactory.com

background image

Podstawy j

ęzyka Java 2

40


J

ędrzej Ułasiewicz – Inst. Informatyki Automatyki i Robotyki PWr

7.2 Obs

ługa wyjątków – klauzula catch

7.2.1 Prosta instrukcja try – catch

J

ęzyk Java wymusza konstrukcje programowe do obsługi wyjątków. Kompilator

sprawdza istnienie takich instrukcji podobnie jak typy i liczb

ę parametrów w

procedurach.

try { // Blok gdzie mo

że wystąpić wyjątek

...
} catch (NazwaKlasyWyj

ątku e) {

// Obs

ługa wyjatku

...
}

Podstawowa konstrukcja obs

ługi wyjątku


Zmienna e odpowiada obiektowi reprezentuj

ącemu zaistniały wyjątek. Dzięki takiej

konstrukcji mo

żna się odwołać do metod klasy (np. getMessage, printStackTrace).


GetMessage – Wyprowadzenie komunikatu o b

łędzie

public String getMessage()

...
try {
Thread.Sleep(1000);
} catch (InterruptedException e) {
// Obs

ługa wyjatku

System.out.printl(”B

łąd: ” + e.getMessage());

}
...

Program 1 Przyk

ład obsługi wyjątku

7.2.2 Wielokrotne instrukcje catch

Mo

żna testować wystąpienie wielu klas wyjątków stosując wielokrotną instrukcję

catch.

PDF created with pdfFactory trial version

www.pdffactory.com

background image

Podstawy j

ęzyka Java 2

41


J

ędrzej Ułasiewicz – Inst. Informatyki Automatyki i Robotyki PWr

try {
...
} catch (NazwaWyj

ątku1 e1) { // Obsługa wyjatku 1

...
} catch (NazwaWyj

ątku2 e2) { // Obsługa wyjatku 2

...
}
...
catch (NazwaWyj

ątkuN eN) { // Obsługa wyjatku N

...
}

Testowanie wyst

ąpienia wielu wyjątków

- W wielokrotnej instrukcji catch warunki testowane s

ą po kolei.

- Wykonywany jest blok odpowiadaj

ący pierwszemu znalezionemu wyjątkowi –

dalsze sprawdzanie jest pomijane.

- Wyj

ątki zorganizowane są w sposób hierarchiczny stąd w miejscu wystąpienia

klasy bazowej mo

żna użyć klasy podrzędnej.


Obs

ługując wyjątki z jednej hierarchii należy najpierw testować wystąpienie wyjątków

podrz

ędnych.

...
try {
Thread.Sleep(1000);
} catch (EOFException e1) {

} catch (FileNotFoundException e2) {

} catch (IOException e3) {

}
...

Program 2 Przyk

ład prawidłowej obsługi hierarchii wyjątków


Gdyby IOException obs

ługiwać najpierw nigdy nie doszło by do obsługi wyjątków

klas podrz

ędnych.

7.2.3 Klauzula finally

W przypadku gdy istnieje blok instrukcji który ma by

ć wykonany niezależnie od tego

czy wyst

ąpi wyjątek czy też nie należy użyć klauzuli finally.

PDF created with pdfFactory trial version

www.pdffactory.com

background image

Podstawy j

ęzyka Java 2

42


J

ędrzej Ułasiewicz – Inst. Informatyki Automatyki i Robotyki PWr

try {
...
} catch (NazwaKlasyWyj

ątku e) {

// Obs

ługa wyjatku

...
} finally {
// Blok wykonywany w ka

żdym przypadku

...
}

Konstrukcja obs

ługi wyjątku z klauzulą finally


PDF created with pdfFactory trial version

www.pdffactory.com

background image

Podstawy j

ęzyka Java 2

43


J

ędrzej Ułasiewicz – Inst. Informatyki Automatyki i Robotyki PWr

7.3 Generowanie wyj

ątków

7.3.1 Deklarowanie metod generuj

ących wyjątki

Je

żeli klasa może generować wyjątek musi to być wskazane przy definicji tej klasy.


Wskazanie

że metoda może generować wyjątki odbywa się poprzez umieszczenie w

jej deklaracji s

łowa kluczowego throws. Słowo throws umieścić należy po liście

parametrów ale przed klamr

ą rozpoczynającą blok metody.

public int wstaw( Object item ) throws mojWyjatek {
...
}


Gdy metoda ma generowa

ć wiele wyjątków należy umieścić je kolejno:

public int wstaw( Object item ) throws W1,W2,...,Wn
{
...
}


Klauzula throws oznacza

że metoda może wygenerować wyjątek ale nie musi.

7.3.2 Propagacja wyj

ątku

Zamiast obs

ługiwać wyjątek w tej metodzie w której się objawia można delegować

obs

ługę wyjątku do metody (klasy) nadrzędnej. Wtedy wyjątek musi być obsłużony w

metodzie nadrz

ędnej.

Metoda 3

Metoda 2

Metoda 1

Obsluga

Wyjatek

Rys. 4 Propagacja wyj

ątku

PDF created with pdfFactory trial version

www.pdffactory.com

background image

Podstawy j

ęzyka Java 2

44


J

ędrzej Ułasiewicz – Inst. Informatyki Automatyki i Robotyki PWr

public void czytajPlik(String nazwa) {
...
try {
while(cnt < bufor.length) {
my.read(bufor);
cnt++;
}
} catch(IOException e) {
System.out.println("Blad czytania :" +
e.getMessage());
}
}

Program 3 Obs

ługa wyjątku IOException w metodzie czytajPlik

public void czytajPlik(String nazwa) throws
IOException {
...
while(cnt < bufor.length) {
my.read(bufor);
cnt++;
}

}

Program 4 Przekazanie obs

ługi wyjątku IOException do metody nadrzędnej

PDF created with pdfFactory trial version

www.pdffactory.com

background image

Podstawy j

ęzyka Java 2

45


J

ędrzej Ułasiewicz – Inst. Informatyki Automatyki i Robotyki PWr

7.3.3 Tworzenie i generowanie wyj

ątków

Aby wygenerowa

ć wyjątek należy:

1

Utworzy

ć nową instancję klasy reprezentującą wyjątki. Musi to być podklasa

klasy Throwable.

2

U

żyć polecenia throw.

...
KlasaWyj

ątku iex = new KlasaWyjątku();

throw iex;
...

Tworzenie i generowanie wyj

ątku


Mo

żliwe jest obsłużenie wyjątku przekazanie go metody nadrzednej.

public void czytajPlik(String nazwa) throws
IOException {
...
try {
...
} catch(IOException e) {
System.out.println("Blad czyt:" + e.getMessage());
throw e;
}

Program 5 Obs

ługa wyjątku i przekazanie go do metody wywołującej



Nowy wyj

ątek musi być klasą podrzędną klasy Exception.


Aby wybra

ć odpowiedni wyjątek należy:

1. Z istniej

ących wyjątków należy wybrać taki który wydaje się najbardziej

odpowiedni.

2. Gdy brak takiego nale

ży utworzyć wyjątek jako podrzędny klasy Exception.



Klasy definiuj

ące wyjątki posiadają dwa konstruktory:

1. Konstruktor bez argumentów
2. Konstruktor z jednym argumentem typu String który reprezentuje nazw

ę

wyj

ątku. W takim konstruktorze należy wykonać konstruktor klasy nadrzędnej

podaj

ąc jako argument tę nazwę. Nazwa ta może być uzyskana przy pomocy

metody getMessage().

PDF created with pdfFactory trial version

www.pdffactory.com

background image

Podstawy j

ęzyka Java 2

46


J

ędrzej Ułasiewicz – Inst. Informatyki Automatyki i Robotyki PWr

public class MyException extends Exception {
public MyException() { }
public MyException(String s) {
super(s);
}
}

public class ExceptionDemo {
static class MyException extends Exception {}

public static void wyjatek() throws MyException {

System.out.println("Zglaszam wyjatek! ");

throw new MyException();

}

public static void main (String[] args) {
System.out.println("Start");
try {
wyjatek();
} catch (MyException e) {

System.out.println("Przechwycony");

}
}
}

Program 6 Przyk

ład tworzenia i generowania wyjątku



8. Literatura

Witryna firmy Sun

http://www.java.com

Laura Lemay, Rogers Cadenhead, Java 2 dla ka

żdego, Helion 2001

Laura Lemay, Charles L. Perkins, Java 1.1, Helion 1998.
Tutorial Javy The Java

TM

Tutorial z pakietu SDK 1.4.2 plik tutorial.chm

Witryna The Java Developers Almanac 1.4,

http://javaalmanac.com/index.html

Bruce Eckel, Thinking in Java, wydanie 3, Helion 2003.

PDF created with pdfFactory trial version

www.pdffactory.com


Wyszukiwarka

Podobne podstrony:
java script id 226485 Nieznany
java 04 id 226341 Nieznany
java 3 id 226367 Nieznany
Podstawy jezyka Java id 367418 Nieznany
java 1 id 226642 Nieznany
java 3 id 226367 Nieznany
Abolicja podatkowa id 50334 Nieznany (2)
4 LIDER MENEDZER id 37733 Nieznany (2)
katechezy MB id 233498 Nieznany
metro sciaga id 296943 Nieznany
perf id 354744 Nieznany
interbase id 92028 Nieznany
Mbaku id 289860 Nieznany
Probiotyki antybiotyki id 66316 Nieznany
miedziowanie cz 2 id 113259 Nieznany
LTC1729 id 273494 Nieznany
D11B7AOver0400 id 130434 Nieznany
analiza ryzyka bio id 61320 Nieznany

więcej podobnych podstron