JAVA 10

background image

Programo

w

anie

obiekto

w

e

(Ja

v

a)

10

1

P

om

yªk

a

P

o

dsta

w

o

w

¡

ideologi¡

Ja

vy

1

jest

zaªo»enie,

»e

'¹le

sform

uªo

w

an

y

k

o

d

nie

zostanie

wyk

onan

y'

Przykªad:

Istniej¡

dwie

publizne

klasy

w

dwó

h

plik

a

h

M ain.java

i

T est.java

:

1

pakage

pl .kiele . tu.lab10 ;

2

3

publi

lass

Main

{

4

publi

stati

void

main (String [℄

args )

{

5

Test

t

=

new

Test ();

6

}

7

}

Przykªad

1:

sr/pl/kiele/tu/lab10/Main.ja

v

a

{link}

1

pakage

pl .kiele . tu.lab10 ;

2

3

publi

lass

Test

{

4

publi

Test ()

{

5

}

6

}

Przykªad

2:

sr/pl/kiele/tu/lab10/T

est.ja

v

a

{link}

K

ompilaja

i

uru

homienie:

1

java

pl\ kiele \tu \lab10 \Test .java

2

java

pl\ kiele \tu \lab10 \Main .java

3

java

pl.kiele

.tu. lab10 .Main

Aplik

aja

dziaªa

p

opra

wnie.

Co

stanie

si

je±li

k

onstruktor

klasy

T est

uzynim

y

pryw

atn

ym,

a

nastpnie

przez

'p

om

yªk

'

sk

ompilujem

y

t

ylk

o

klas

T est

(zap

omina

o

klasie

M ain

)

i

uru

homim

y

aplik

aj?

Exeption

in

thread

"main "

java. lang .IllegalAessError

:

tried

to

aess

method

←֓

pl.kiele

.tu. lab10 .Test .<init >() V

from

lass

pl.kiele

.tu.lab10 . Main

at

pl.kiele

.tu. lab10 .Main .main (Main .java :5)

2

W

yj¡tek

W

yj¡tek

(exeption)

[2

Sp

ejaln

y

b

yt

programist

yzn

y

p

o

w

o

duj¡y

przerw

anie

lub

za

wieszenie

normal-

nej

nitki

stero

w

ania

program

u

i

przej±ie

do

sp

ejalnego

fragmen

tu

program

u

za

jm

uj¡ego

si

obsªug¡

tego

wyj¡tku.

(.

.

.

)

W

sytuaji

wyj¡tk

o

w

ej

[2

nie

mo»na

k

on

t

yn

uo

w

przet

w

arzania,

p

oniew

w

aktualn

ym

k

on

tek±ie

nie

ma

dostpu

do

informaji

k

onieznej

do

rozwi¡zania

problem

u.

W

szystk

o,

o

mo»na

zrobi¢,

to

wyj±¢

z

aktualnego

k

on

tekstu

i

przek

aza¢

problem

dalej.

T

ak

si

wªa±nie

dzieje

gdy

zgªaszan

y

jest

wyj¡tek."

W

jaki

sp

osób

p

o

dobne

problem

y

zostaªy

rozwi¡zane

w

jzyk

a

h,

w

który

h

nie

ma

wyj¡tk

ó

w

(np.

w

C)?

Klasa

Thro

w

able

opisuje

wszystk

o

o

mo»e

b

zgªoszone

jak

o

wyj¡tek.

Istniej¡

dw

a

ro

dza

je

obiektó

w

Thro

w

able

(.

.

.

).

Error

reprezen

tuje

bªdy

k

ompilaji

i

system

u

(.

.

.

).

Exeption

jest

p

o

dsta

w

o

wym

t

yp

em,

jaki

mo»e

b

wyrzuon

y

z

do

w

olnej

meto

dy

klasy

biblioteki

standardo

w

ej

Ja

vy

i

wªasnej

meto

dy

lub

w

wyniku

inn

y

h

bªdó

w

przy

wyk

onaniu.

W

yj¡tki

dzielim

y

na:

1

Thinking

in

Ja

v

a,

Brue

E

k

el,

W

ydanie

IV,

Helion,

2006

1

background image

-

niew

eryk

o

w

alne

(niespra

wdzalne,

niek

on

trolo

w

ane,

ang.

un

he

k

ed)

wyj¡tek

Run

timeExeption

oraz

klasy

p

otomne,

k

ompilator

nie

w

erykuje

zy

tego

t

ypu

wyj¡tek

jest

zgªaszan

y

lub

obsªugiw

an

y

przez

meto

d,

-

w

eryk

o

w

alne

(spra

wdzalne,

k

on

trolo

w

ane)

inne

wyj¡tki.

Hierar

hia

klas:

1

java .lang .Objet

2

extended

by

java . lang. Throwable

3

extended

by

java .lang .Exeption

1

java .lang .Objet

2

extended

by

java . lang. Throwable

3

extended

by

java .lang .Exeption

4

extended

by

java .lang .RuntimeExeption

1

java .lang .Objet

2

extended

by

java . lang. Throwable

3

extended

by

java .lang .Error

T

w

orzenie

klas

wªasn

y

h

wyj¡tk

ó

w:

1

pakage

pl .kiele . tu.lab10 ;

2

3

publi

lass

MyExeption

extends

Exeption

{

4

}

Przykªad

3:

sr/pl/kiele/tu/lab10/MyExeption.ja

v

a

{link}

1

pakage

pl .kiele . tu.lab10 ;

2

3

publi

lass

MyRuntimeExeption

extends

RuntimeExeption

{

4

}

Przykªad

4:

sr/pl/kiele/tu/lab10/MyRun

timeExeption.ja

v

a

{link}

Blok

prób

(ang.

try)

[2

blok

prze

h

wytuj¡y

wyj¡tki.

Pro

edury

obsªugi

wyj¡tku

[2℄

nastpuj¡

b

ezp

o±rednio

p

o

bloku

try

i

oznazane

p

oprzez

sªo

w

o

kluzo

w

e

catch

Sek

ja

f inally

fragmen

t

k

o

du,

który

hielib

y±m

y

wyk

ona¢

niezale»nie

o

d

tego,

zy

w·bloku

try

zostanie

zgªoszon

y

wyj¡tek

Zgªaszanie

wyj¡tk

ó

w:

"(...)

mo»na

zgªosi¢

k

a»dy

ro

dza

j

obiektu,

który

mo»na

wyrzui¢

tj.

dziedziz¡y

p

o

klasie

T hrowable

"

np.

throw new M yException

()

.

Prze

h

wyenie

wszystki

h

wyj¡tk

ó

w:

1

try

{

2

...

3

}

ath

(Exeption

e){

4

e.printStakTrae

();

5

}

Zastoso

w

anie

sym

b

olu

"|"

(or)

umo»liwia

st

w

orzenie

bloku

ath,

w

którym

realizo

w

ana

jest

obsªuga

wielu

wyj¡tk

ó

w.

P

oni»ej

przedsta

wiono

przykªady

obsªugi

dw

ó

h

wyj¡tk

ó

w:

1

try

{

2

...

3

}

ath

(ArithmetiExeption

|

ArrayIndexOutOfBoundsExeptio n

e){

4

e.printStakTrae

();

5

}

2

background image

1

try

{

2

...

3

}

ath

(ArithmetiExeption

e1){

4

e1. printStakTrae

();

5

}

ath

(ArrayIndexOutOfBoundsExepti on

e2 ){

6

e2. printStakTrae

();

7

}

Rozszerzona

forma

wyra»enia

try

zw

ana

try-with-r

esour

e

ma

nastpuj¡¡

p

osta¢

[1

℄:

1

try

{speyfikaja

- zasobu }

{

2

//

uzyie

zasobu

3

}

Mo»e

zosta¢

ona

wyk

orzystana

t

ylk

o

z

zasobami

implemen

tuj¡ymi

in

terfejs

java.lang.A

utoClose

able,

który

p

osiada

t

ylk

o

jedn¡

meto

d

lose().

In

terfejsy

ten

rozszerza

java.io.Close

able,

który

tak»e

p

osiada

t

ylk

o

jedn¡

meto

d

lose().

Skªadnia

ta

jest

zsto

wyk

orzyst

yw

ana

w

p

o

wi¡zaniu

ze

strumieniami,

np.

plik

o

wymi.

W

meto

dzie

przei¡»onej

mo»na

zgªasza¢

jedynie

te

wyj¡tki,

które

zostaªy

p

o

dane

w

sp

eyk

aji

z

klasy

bazo

w

ej.

(.

.

.

)

Mo»na

zanie

ha¢

wyrzuania

jaki

hk

olwiek

wyj¡tk

ó

w

p

omimo

i

h

ob

eno±i

w

klasie

bazo

w

ej.

1

publi

lass

TestCath

{

2

publi

stati

void

main (String [℄

args )

throws

Exeption

{

3

Random

r

=

new

Random

(

new

Date ().getTime

()

>>>

(

new

Date () .getTime ()

%

4));

4

try

{

5

swith

(r.nextInt

()

%

4)

{

6

ase

0:

System . out. print (

"0.

"

);

7

throw

new

MyExeption

() ;

8

ase

1:

System . out. print (

"1.

"

);

9

throw

new

MyRuntimeExeption

();

10

ase

2:

System . out. print (

"2.

"

);

11

throw

new

NullPointerExeption

() ;

12

default

:

System

.out .print (

"3.

"

);

13

throw

new

FileNotFoundExeption

() ;

14

}

15

}

ath

(MyExeption

e)

{

16

System

.out. println (

" e.getClass

().getSimpleName

()

=

"

+

e. getClass () .getSimpleName

()) ;

17

}

ath

(FileNotFoundExeption

e)

{

18

System

.out. println (

" e.getClass

().getSimpleName

()

=

"

+

e. getClass () .getSimpleName

()) ;

19

}

ath

(Exeption

e)

{

20

//

obsªuga

wszystkih

pozostaªyh

wyj¡tków

21

System

.out. println (

" e.getClass

().getSimpleName

()

=

"

+

e. getClass () .getSimpleName

()) ;

22

System

.out. println (

" e.getMessage

()

=

"

+

e. getMessage

());

23

//

zwraa

szzegóªow¡

informaj

24

System

.out. println (

" e.getLoalizedMessage

()

=

"

+

e. getLoalizedMessage

());

25

System

.out. println (

" e.printStakTrae

() "

);

26

e. printStakTrae

(System . out) ;

//

drukuje

komunikat

oraz

stos

wywoªa«

27

System

.out. println (

" e.getCause

()

=

"

+

e.getCause

()) ;

//

zwraa

przyzyn

28

}

29

}

30

}

Przykªad

5:

sr/pl/kiele/tu/lab10/T

estCat

h.ja

v

a

{link}

Co

si

stanie

je»eli

wyj¡tek

nie

zostanie

wyªapan

y?

Która

z

p

oni»szy

h

deniji

jest

nie

p

opra

wna

i

dlazego?

1

publi

lass

TestThrows

{

2

publi

void

a ()

{

3

throw

new

MyExeption

();

4

}

5

3

background image

6

publi

void

b ()

{

7

throw

new

MyRuntimeExeption

() ;

8

}

9

10

publi

void

()

throws

Exeption

{

11

throw

new

MyExeption

();

12

}

13

14

publi

void

d ()

throws

Exeption

{

15

throw

new

MyRuntimeExeption

() ;

16

}

17

18

publi

void

e ()

throws

RuntimeExeption

{

19

throw

new

MyExeption

();

20

}

21

22

publi

void

f ()

throws

RuntimeExeption

{

23

throw

new

MyRuntimeExeption

() ;

24

}

25

26

publi

void

g ()

throws

MyExeption

{

27

throw

new

MyExeption

();

28

}

29

30

publi

void

h ()

throws

MyExeption

{

31

throw

new

MyRuntimeExeption

() ;

32

}

33

34

publi

void

i ()

throws

MyRuntimeExeption

{

35

throw

new

MyExeption

();

36

}

37

38

publi

void

j ()

throws

MyRuntimeExeption

{

39

throw

new

MyRuntimeExeption

() ;

40

}

41

42

publi

void

k ()

throws

MyExeption

,

MyRuntimeExeption

{

43

return

;

44

}

45

}

Przykªad

6:

sr/pl/kiele/tu/lab10/T

estThro

ws.ja

v

a

{link}

1

publi

lass

TestFinally

{

2

stati

void

method

()

throws

MyExeption

{

3

Random

r

=

new

Random

();

4

if

(r.nextInt

()

%

2

==

0)

{

5

System

.out. println (

" method ()

throw "

);

6

throw

new

MyExeption

();

7

}

else

{

8

System

.out. println (

" method ()

return "

);

9

return

;

10

}

11

}

12

13

publi

stati

void

main (String [℄

args )

{

14

try

{

15

method

();

16

System

.out. println (

" main()

return "

);

17

return

;

18

}

ath

(MyExeption

e)

{

4

background image

19

System

.out. println (

" main()

ath

"

+

e );

20

}

finally

{

21

System

.out. println (

" main()

finally

"

);

22

}

23

}

24

}

Przykªad

7:

sr/pl/kiele/tu/lab10/T

estFinally

.ja

v

a

{link}

3

T

yp

o

w

e

sp

osob

y

obsªugi

wyj¡tk

ó

w

T

yp

o

w

e

sp

osob

y

obsªugi

wyj¡tk

ó

w

zrealizo

w

ano

na

p

o

dsta

wie:

Ja

v

a.

Obsªuga

wyj¡tk

ó

w,

usu

w

anie

bªdó

w

i

testo

w

anie

k

o

du,

Stephen

Stelting,

Helion,

2005.

3.1

Zapis

bªdu

lub

zwi¡zanej

z

nim

informaji

do

dziennik

a

Informaja

o

bªdzie

mo»e

zosta¢

wy±wietlona

na

k

onsoli

lub

przekiero

w

ana

do

pliku.

W

bardziej

zaa

w

an-

so

w

an

y

h

rozwi¡zania

h

nale»aªob

y

u»y¢

J avaLoggingAP I

.

W

przykªadzie

p

oni»ej

informaja

o

wyj¡tku

jest

wy±wietlana

na

k

onsoli

przy

p

omo

y

System.out,

zapisyw

ana

w

pliku

przy

p

omo

y

przekiero

w

anego

System.err

oraz

wy±wietlana

w

oknie

dialogo

wym.

1

publi

lass

MyClass

{

2

stati

String

getLanguage

()

throws

Exeption

{

3

throw

new

Exeption

(

" My

exeption

"

) ;

4

}

5

}

Przykªad

8:

sr/pl/kiele/tu/lab10/MyClass.ja

v

a

{link}

1

publi

lass

TestExeption1

{

2

3

stati

{

4

try

{

5

System

.setErr (

new

PrintStream

(

"log .txt "

));

6

}

ath

(FileNotFoundExeption

ignored )

{

7

ignored

.printStakTrae

() ;

8

}

9

}

10

11

publi

stati

void

main (String [℄

args )

{

12

try

{

13

MyClass

.getLanguage

() ;

14

}

ath

(Exeption

e)

{

15

e. printStakTrae

(System . out) ;

16

e. printStakTrae

(System . err) ;

17

JOptionPane

.showMessageDialog

(

null

,

e) ;

18

}

19

}

20

}

Przykªad

9:

sr/pl/kiele/tu/lab10/T

estExeption1.ja

v

a

{link}

3.2

Zwró

enie

si

do

u»ytk

o

wnik

a

z

pro±ba

o

p

o

djeie

o

dp

o

wiedniej

deyzji

1

publi

lass

TestExeption2

{

2

3

publi

stati

void

main (String [℄

args )

{

5

background image

4

try

{

5

MyClass

.getLanguage

() ;

6

}

ath

(Exeption

e)

{

7

int

answer

=

JOptionPane

. showConfirmDialog

(

null

,

"End ?"

,

"Confirm

Dialog "

,

←֓

JOptionPane

.YES_NO_OPTION

,

JOptionPane

.ERROR_MESSAGE

);

8

if

(answer

==

JOptionPane

.YES_OPTION

)

9

System

.out .println (

"End"

);

10

else

11

System

.out .println (

"Not

end"

);

12

}

13

}

14

}

Przykªad

10:

sr/pl/kiele/tu/lab10/T

estExeption2.ja

v

a

{link}

3.3

U»yie

w

arto±i

dom

y±ln

y

h

lub

alternat

ywn

y

h

1

publi

lass

TestExeption3

{

2

3

final

private

stati

String

DEFAULT_LANGUAGE

=

"EN "

;

4

private

stati

String

language ;

5

6

publi

stati

void

main (String [℄

args )

{

7

try

{

8

language

=

MyClass .getLanguage

();

9

}

ath

(Exeption

e)

{

10

language

=

DEFAULT_LANGUAGE

;

11

}

12

}

13

}

Przykªad

11:

sr/pl/kiele/tu/lab10/T

estExeption3.ja

v

a

{link}

3.4

Przek

azanie

stero

w

ania

do

innej

z±i

aplik

aji

1

publi

lass

TestExeption4

{

2

3

publi

stati

void

main (String [℄

args )

{

4

try

{

5

MyClass

.getLanguage

() ;

6

}

ath

(Exeption

e)

{

7

reset () ;

8

}

9

}

10

11

stati

void

reset

(){

12

//

...

13

}

14

}

Przykªad

12:

sr/pl/kiele/tu/lab10/T

estExeption4.ja

v

a

{link}

3.5

K

on

w

ersja

wyj¡tku

do

innej

p

ostai

Zaªó»m

y

,

»e

klasa

p

o

winna

implemen

to

w

in

terfejs

M yInterf ace

,

a

w

ewn¡trz

meto

dy

method

()

p

o

winna

wyw

oªa¢

M yClass.getLanguage

()

,

która

mo»e

zgªosi¢

wyj¡tek.

Do

danie

frazy

throws Exception

do

sygna-

tury

meto

dy

method

()

nie

jest

mo»liw

e

p

oniew

wtedy

nie

b

dzie

si

ona

zgadza¢

z

sygnatur¡

meto

dy

6

background image

w

in

terfejsie.

W

takim

przypadku

mo»em

y

u»y¢

wyj¡tku

niespra

wdzalnego,

który

jak

o

przyzyn

b

dzie

miaª

usta

wion

y

nasz

wyj¡tek

(

throw new RuntimeException

(e)

).

1

publi

interfae

MyInterfae

{

2

publi

void

method

();

3

}

Przykªad

13:

sr/pl/kiele/tu/lab10/MyIn

terfae.ja

v

a

{link}

1

publi

lass

TestExeption5

implements

MyInterfae

{

2

3

Override

4

publi

void

method

()

{

//

!!!

throws

Exeption

{

5

try

{

6

MyClass

.getLanguage

() ;

7

}

ath

(Exeption

e)

{

8

throw

new

RuntimeExeption

(e) ;

9

}

10

}

11

12

publi

stati

void

main (String [℄

args )

{

13

TestExeption5

t

=

new

TestExeption5

() ;

14

t.method

();

15

}

16

}

Przykªad

14:

sr/pl/kiele/tu/lab10/T

estExeption5.ja

v

a

{link}

3.6

Zignoro

w

anie

problem

u

Jest

bardzo

maªo

przypadk

ó

w,

kiedy

mo»na

zignoro

w

wyst¡

pienie

wyj¡tku

dlatego

na

jlepiej

nie

stoso

w

tej

te

hniki.

1

publi

lass

TestExeption6

{

2

3

publi

stati

void

main (String [℄

args )

{

4

try

{

5

MyClass

.getLanguage

() ;

6

}

ath

(Exeption

ignore

)

{

7

}

8

}

9

}

Przykªad

15:

sr/pl/kiele/tu/lab10/T

estExeption6.ja

v

a

{link}

3.7

P

o

wtórzenie

op

eraji

W

p

oni»szym

przypadku

trzykrotnie

wyw

oªyw

ana

jest

meto

da

getLanguage

()

.

P

omidzy

p

oszzególn

ymi

wyw

oªaniami

mo»na

zastoso

w

o

dstp

zaso

wy

(

T imeU nit.SECON DS.sleep

(1)

).

Je»eli

meto

da

nie

zgªosi-

ªab

y

wyj¡tku

instruk

ja

break

sp

o

w

o

duje

przerw

anie

wyk

on

yw

ania

p

tli.

1

publi

lass

TestExeption7

{

2

publi

stati

void

main (String [℄

args )

{

3

int

ounter

=

0;

4

while

( ounter ++

<

3)

{

5

try

{

6

MyClass

.getLanguage

();

7

break

;

8

}

ath

(Exeption

e )

{

7

background image

9

System

.err .println (

"Exeption

no.

"

+

ounter );

10

e .printStakTrae

() ;

11

try

{

12

TimeUnit . SECONDS .sleep (1) ;

13

}

ath

(InterruptedExeption

e2)

{

14

e2.printStakTrae

();

15

}

16

}

17

}

18

}

19

}

Przykªad

16:

sr/pl/kiele/tu/lab10/T

estExeption7.ja

v

a

{link}

3.8

W

yw

oªanie

op

eraji

alternat

ywnej

1

publi

lass

TestExeption8

{

2

3

publi

stati

void

main (String [℄

args )

{

4

try

{

5

MyClass

.getLanguage

() ;

6

}

ath

(Exeption

e)

{

7

getLanguageFromFile

() ;

8

}

9

}

10

11

stati

void

getLanguageFromFile

()

{

12

//

...

13

}

14

}

Przykªad

17:

sr/pl/kiele/tu/lab10/T

estExeption8.ja

v

a

{link}

3.9

Przygoto

w

anie

aplik

aji

do

zamkniia

Przed

zamkniiem

aplik

aji

mo»e

wyst¡

pi¢

k

oniezno±¢:

-

zamkniia

ot

w

art

y

h

plik

ó

w,

-

zamkniia

ot

w

art

y

h

p

oª¡ze«

sieio

wy

h,

bazo

dano

wy

h

itp.,

-

zapisanie

dan

y

h,

-

p

oinformo

w

anie

inn

y

h

aplik

aji,

systemó

w

itp.

o

t

ym

fak

ie.

1

publi

lass

TestExeption9

{

2

3

publi

stati

void

main (String [℄

args )

{

4

try

{

5

MyClass

.getLanguage

() ;

6

}

ath

(Exeption

e)

{

7

/*

zamkniie

otwartyh

plików

,

8

zamkniie

otwartyh

poª¡ze«

sieiowyh

,

bazodanowyh

itp

9

zapisanie

danyh ,

10

poinformowanie

innyh

aplikaji

,

systemów

itp.

o

tym

fakie .

11

12

zamkniie

aplikaji

13

jako

parametr

podaje

si

"kod

statusu

"

14

warto±i

inne

ni»

0

oznazaj¡

nienormalne

zamkniie

aplikaji

*/

8

background image

15

System

.exit (1);

16

}

17

}

18

}

Przykªad

18:

sr/pl/kiele/tu/lab10/T

estExeption9.ja

v

a

{link}

4

P

o

dsta

w

o

w

e

wyj¡tki

W

yj¡tki

zdenio

w

ane

w

pakieie

ja

v

a.lang

ˆ

ArithmetiExeption

ˆ

Arra

yIndexOutOfBoundsExeption

ˆ

Arra

yStoreExeption

ˆ

ClassCastExeption

ˆ

ClassNotF

oundExeption

ˆ

CloneNotSupp

ortedExeption

ˆ

En

umConstan

tNotPresen

tExeption

ˆ

Exeption

ˆ

IllegalA

essExeption

ˆ

IllegalArgumen

tExeption

ˆ

IllegalMonitorStateExeption

ˆ

IllegalStateExeption

ˆ

IllegalThreadStateExeption

ˆ

IndexOutOfBoundsExeption

ˆ

Instan

tiationExeption

ˆ

In

terruptedExeption

ˆ

Negativ

eArra

ySizeExeption

ˆ

NoSu

hFieldExeption

ˆ

NoSu

hMetho

dExeption

ˆ

NullP

oin

terExeption

ˆ

Num

b

erF

ormatExeption

ˆ

Reetiv

eOp

erationExeption

ˆ

Run

timeExeption

ˆ

Seurit

yExeption

ˆ

StringIndexOutOfBoundsExeption

ˆ

T

yp

eNotPresen

tExeption

ˆ

Unsupp

ortedOp

erationExeption

9

background image

W

yj¡tki

zdenio

w

ane

w

pakieie

ja

v

a.util

ˆ

Conurren

tMo

diationExeption

ˆ

DupliateF

ormatFlagsExeption

ˆ

Empt

ySta

kExeption

ˆ

F

ormatFlagsCon

v

ersionMismat

hExeption

ˆ

F

ormatterClosedExeption

ˆ

IllegalF

ormatCo

deP

oin

tExeption

ˆ

IllegalF

ormatCon

v

ersionExeption

ˆ

IllegalF

ormatExeption

ˆ

IllegalF

ormatFlagsExeption

ˆ

IllegalF

ormatPreisionExeption

ˆ

IllegalF

ormatWidthExeption

ˆ

IllformedLo

aleExeption

ˆ

InputMismat

hExeption

ˆ

In

v

alidProp

ertiesF

ormatExeption

ˆ

MissingF

ormatArgumen

tExeption

ˆ

MissingF

ormatWidthExeption

ˆ

MissingResoureExeption

ˆ

NoSu

hElemen

tExeption

ˆ

T

o

oMan

yListenersExeption

ˆ

Unkno

wnF

ormatCon

v

ersionExeption

ˆ

Unkno

wnF

ormatFlagsExeption

ˆ

Reetiv

eOp

erationExeption

ˆ

Run

timeExeption

ˆ

Seurit

yExeption

ˆ

StringIndexOutOfBoundsExeption

ˆ

T

yp

eNotPresen

tExeption

ˆ

Unsupp

ortedOp

erationExeption

10

background image

5

Aserje

Staªe

1

publi

lass

TestStati

{

2

3

final

private

stati

boolean

TEST

=

true

;

4

5

stati

int

age

=

-1;

6

7

publi

stati

void

main (String [℄

args )

{

8

if

( TEST )

9

if

(age

<

0)

10

throw

new

RuntimeExeption

(

" Not

orret

value :

age

=

"

+

age );

11

System . out.println

(

"My

age

=

"

+

age );

12

}

13

}

Przykªad

19:

sr/pl/kiele/tu/lab10/T

estStati.ja

v

a

{link}

TEST

=

false

publi

stati

void

main (java .lang .String [℄) ;

Code :

0:

getstati

#2

//

Field

java /lang /System

.out :Ljava /io /PrintStream

;

3:

new

#3

//

lass

java /lang /StringBuilder

...

TEST

=

true

publi

stati

void

main (java .lang .String [℄) ;

Code :

0:

getstati

#2

//

Field

age :I

3:

ifge

35

6:

new

#3

//

lass

java /lang /RuntimeExeption

9:

dup

10:

new

#4

//

lass

java /lang /StringBuilder

13:

dup

14:

invokespeial

#5

//

Method

java /lang /StringBuilder

."< init >":() V

17:

ld

#6

//

String

Not

orret

value :

age

=

19:

invokevirtual

#7

//

Method

←֓

java/ lang/ StringBuilder

.append :(Ljava

/lang /String ;) Ljava /lang /StringBuilder

;

22:

getstati

#2

//

Field

age :I

25:

invokevirtual

#8

//

Method

java /lang /StringBuilder

.append

:(I) Ljava /lang /StringBuilder

;

28:

invokevirtual

#9

//

Method

java /lang /StringBuilder

.toString

:() Ljava /lang /String

;

31:

invokespeial

#10

//

Method

java / lang/ RuntimeExeption

."< init >":( Ljava /lang /String ;) V

34:

athrow

35:

getstati

#11

//

Field

java /lang / System .out :Ljava /io /PrintStream

;

38:

new

#4

//

lass

java /lang /StringBuilder

...

Aserje

"Stosunk

o

w

o

no

wym

elemen

tem

w

Ja

vie

jest

sªo

w

o

kluzo

w

e

assert

[1℄.

W

trak

ie

t

w

orzenia

i

testo

w

ania

programó

w

u»yw

a

si

go

do

aserji,

zyli

spra

wdzania,

zy

dan

y

w

arunek

jest

sp

eªnion

y

w

trak

ie

dziaªania

program

u."

Wª¡zanie

aserji:

1

java

-ea[:< pakagename

>...|:<

lassname

>℄

klasaPosiadajaaMetodeMain

11

background image

2

java

-enableassertions

[:< pakagename

>...|:< lassname

>℄

klasaPosiadajaaMetodeMain

1

publi

lass

TestAssertion

{

2

3

stati

int

age

=

-1;

4

5

publi

stati

void

main (String [℄

args )

{

6

assert

age

>=

0

:

"Not

orret

value :

age

=

"

+

age;

7

System . out.println

(

"My

age

=

"

+

age );

8

}

9

}

Przykªad

20:

sr/pl/kiele/tu/lab10/T

estAssertion.ja

v

a

{link}

Uru

homienie:

java

pl.kiele

.tu. lab10 .TestAssertion

W

ynik

dziaªania:

My

age

=

-1

Uru

homienie:

java

-ea

pl.kiele

.tu.lab10

.TestAssertion

W

ynik

dziaªania:

Exeption

in

thread

"main "

java. lang .AssertionError

:

Not

orret

value :

age

=

-1

at

pl.kiele

.tu. lab10 .TestAssertion

.main (TestAssertion

.java :8)

Deasem

blaja:

javap

-

pl.kiele

.tu.lab10

.TestAssertion

W

ynik

deasem

blaji:

Compiled

from

"TestAssertion

.java "

publi

lass

pl.kiele . tu.lab10 . TestAssertion

{

stati

int

age;

stati

final

boolean

$assertionsDisabled

;

publi

pl.kiele

.tu. lab10 .TestAssertion

();

Code :

0:

aload_0

1:

invokespeial

#1

//

Method

java /lang /Objet

."<init >":() V

4:

return

publi

stati

void

main ( java. lang. String [℄) ;

Code :

0:

getstati

#2

//

Field

\$assertionsDisabled

:Z

3:

ifne

41

6:

getstati

#3

//

Field

age :I

9:

ifge

41

12:

new

#4

//

lass

java /lang /AssertionError

15:

dup

16:

new

#5

//

lass

java /lang /StringBuilder

19:

dup

20:

invokespeial

#6

//

Method

java /lang /StringBuilder

."< init >":() V

23:

ld

#7

//

String

Not

orret

value :

age

=

12

background image

25:

invokevirtual

#8

//

Method

←֓

java/ lang/ StringBuilder

.append :(Ljava

/lang /String ;) Ljava /lang /StringBuilder

;

28:

getstati

#3

//

Field

age :I

...

6

R

TTI

Informaje

o

t

ypie

w

zasie

wyk

onania

(ang.

run-time

t

yp

e

information,

R

TTI)

p

ozw

ala

na

iden

t

yk

aj

t

yp

ó

w

i

wyk

orzyst

yw

anie

informaji

o

ni

h

w

zasie

dziaªania

program

u.

Op

erator

instanceof

oraz

meto

da

isInstane()

zostaªy

omó

wione

na

w

ze±niejszy

h

za

jia

h.

Obiekt

Class

za

wiera

informaje

o

m.in.

k

onstrukta

h

(np.

getConstructors

()

,

getDeclaredConstructors

()

),

meto

da

h

(np.

getM ethods

()

,

getDeclaredM ethods

()

)

oraz

atrybuta

h

(p

ola

h)

klasy

(np.

getF ields

()

,

getDeclaredF ields

()

).

Szzegóªy

dot

yz¡e

klasy

Class

mo»na

znale¹¢

na

stronie:

h

ttp://do

s.orale.om/ja

v

ase/7/do s/a

pi/ja

v

a/la

ng/

Class

.h

tml

1

publi

lass

TestRTTI

{

2

publi

int

i

=

1234;

3

stati

{

4

System . out.println

(

"Stati

init "

);

5

}

6

7

publi

TestRTTI

()

{

8

System . out.println

(

"Construtor

TestRTTI

()"

) ;

9

}

10

11

publi

int

getI ()

{

12

System . out.println

(

"Method

getI ()"

) ;

13

return

i;

14

}

15

16

publi

stati

void

main (String [℄

args )

throws

Exeption

{

17

Class <?>

t

=

null

;

18

t

=

Class .forName

(

"pl .kiele .tu .lab10 .TestRTTI

"

) ;

19

//

Stati

init

20

Construtor

<?>[℄

=

t.getConstrutors

() ;

21

System . out.println

(

"Construtors

"

);

22

for

(

int

i

=

0;

i

<

.length ;

i++)

23

System

.out. println ( [i℄);

24

//

Construtors

25

//

publi

TestRTTI

()

26

27

TestRTTI

instane

=

( TestRTTI )

[0℄. newInstane

(( Objet [℄)

null

);

28

//

Construtor

TestRTTI

()

29

30

Method [℄

m

=

t.getMethods

();

31

System . out.println

(

"Methods

"

);

32

for

(

int

i

=

0;

i

<

m .length ;

i++)

33

System

.out. println (m [i℄);

34

//

Methods

35

//

publi

stati

void

TestRTTI

.main (java .lang .String [℄)

...

36

//

publi

int

TestRTTI

.getI ()

37

//

publi

final

void

java .lang .Objet .wait ()

...

38

//

publi

final

void

java .lang .Objet .wait (long , int)

...

39

//

publi

final

native

void

java .lang .Objet

.wait (long )

...

40

//

publi

native

int

java .lang .Objet .hashCode

()

41

//

publi

final

native

java .lang .Class

java. lang .Objet .getClass

()

42

//

publi

boolean

java .lang .Objet . equals (java .lang .Objet

)

43

//

publi

java .lang .String

java .lang .Objet . toString ()

13

background image

44

//

publi

final

native

void

java .lang .Objet

.notify ()

45

//

publi

final

native

void

java .lang .Objet

.notifyAll

()

46

//

Method

getI ()

47

m[1℄. invoke ( instane ,

(Objet [℄)

null

);

48

//

Method

getI ()

49

Field [℄

f

=

t.getFields

() ;

50

System . out.println

(

"Fields

"

);

51

for

(

int

i

=

0;

i

<

f .length ;

i++)

52

System

.out. println (f [i℄);

53

//

Fields

54

//

publi

int

TestRTTI

.i

55

f[0℄. set (instane

,

5678) ;

56

System . out.println

(f[0℄. get (instane

));

57

//

5678

58

}

59

}

Przykªad

21:

sr/pl/kiele/tu/lab10/T

estR

TTI.ja

v

a

{link}

7

A

dnotaje

A

dnotaje

(nazyw

ane

te»

metadan

ymi)

umo»liwia

umieszzenie

do

datk

o

w

ej

informaji

w

plik

a

h

¹ró-

dªo

wy

h.

Strategie

za

ho

w

ania

adnotaji

[1

℄:

ˆ

SOUR

CE

"A

dnotaje

ze

strategi¡

SOUR

CE

jest

za

ho

wyw

ana

t

ylk

o

w

pliku

k

o

du

¹ró

dªo

w

ego.

Inn

ymi

sªo

wy

,

jest

p

omijana

w

trak

ie

k

ompilaji

k

o

du."

ˆ

CLASS

"A

dnotaje

ze

strategi¡

SOUR

CE

jest

za

ho

wyw

ana

w

pliku

.lass

w

trak

ie

k

ompilaji.

Nie

jest

jednak

dostpna

dla

maszyn

y

wirtualnej

w

trak

ie

wyk

onania

program

u."

ˆ

R

UNTIME

"A

dnotaje

ze

strategi¡

R

UNTIME

jest

za

ho

wyw

ana

w

pliku

.lass

w

trak

ie

k

ompilaji

i

jest

dostpna

dla

maszyn

y

wirtualnej

w

trak

ie

wyk

onania

program

u."

A

dnotaje

mog¡

za

wiera¢

skªado

w

e,

np.

w

przykªado

w

ej

adnotaji

MyA

nnotation

to

id()

i

name()

:

1

Retention

(RetentionPoliy

. RUNTIME )

2

publi

interfae

MyAnnotation

{

3

int

id() ;

4

5

String

name () ;

6

}

Przykªad

22:

sr/pl/kiele/tu/lab10/MyAnnotation.ja

v

a

{link}

Oznazenie

klasy

przy

p

omo

y

adnotaji:

1

MyAnnotation

(id

=

1234,

name

=

"abd "

)

2

publi

lass

MyAnnotatedClass

{

3

}

Przykªad

23:

sr/pl/kiele/tu/lab10/MyAnnotatedClass.ja

v

a

{link}

Odzytanie

adnotaji

przy

p

omo

y

reeksji:

1

publi

lass

MyAnnotationRefletion

{

2

3

stati

Class < MyAnnotatedClass

>

lazz

=

MyAnnotatedClass

.

lass

;

4

5

publi

stati

void

main (String [℄

args )

throws

ClassNotFoundExeption

{

6

Annotation

[℄

annotations

=

lazz .getAnnotations

() ;

14

background image

7

for

(Annotation

annotation

:

annotations

)

{

8

System

.out. println (

" Class

"

+

lazz

+

"

is

annotated

with

"

9

+

annotation

);

10

MyAnnotation

myA

=

lazz . getAnnotation

(MyAnnotation

.

lass

);

11

if

(myA

!=

null

)

12

System

.out .println (

"name

=

"

+

myA .name ()

13

+

",

id

=

"

+

myA .id() );

14

}

15

}

16

}

Przykªad

24:

sr/pl/kiele/tu/lab10/MyAnnotationReetion.ja

v

a

{link}

K

ompilaja

i

uru

homienie

aplik

aji:

java

pl\ kiele \tu \lab10 \MyAnnotation

.java

java

pl\ kiele \tu \lab10 \MyAnnotatedClass

.java

java

pl\ kiele \tu \lab10 \MyAnnotationRefletion

.java

java

pl.kiele

.tu. lab10 .MyAnnotationRefletion

W

ynik

dziaªania:

Class

lass

pl .kiele .tu .lab10 .MyAnnotatedClass

is

annotated

with

←֓

pl. kiele .tu .lab10 .MyAnnotation

(id=1234,

name =abd )

name

=

abd ,

id

=

1234

Odzytanie

adnotaji

przy

p

omo

y

pro

esora

adnotaji:

1

publi

lass

MyAnnotationProessor

extends

AbstratProessor

{

2

3

Class <MyAnnotation

>

annotation

=

MyAnnotation

.

lass

;

4

5

Override

6

publi

boolean

proess

(Set <?

extends

TypeElement

>

annotations

,

7

RoundEnvironment

roundEnv

)

{

8

9

Messager

messager

=

proessingEnv

.getMessager

();

10

11

Set <?

extends

Element

>

elements

=

roundEnv

12

. getElementsAnnotatedWith

(annotation

) ;

13

14

for

(Element

element

:

elements

)

{

15

messager

.printMessage

(Kind .NOTE ,

" Class

"

+

element

16

+

"

is

annotated

with

"

+

annotation

) ;

17

MyAnnotation

myA

=

element

.getAnnotation

(MyAnnotation

.

lass

);

18

if

(myA

!=

null

)

19

messager

.printMessage

(Kind .NOTE ,

"name

=

"

+

myA .name ()

20

+

",

id

=

"

+

myA .id() );

21

}

22

return

true

;

23

}

24

25

Override

26

publi

SoureVersion

getSupportedSoureVersion

()

{

27

return

SoureVersion

. RELEASE_7

;

28

}

29

30

Override

31

publi

Set <String

>

getSupportedAnnotationTypes

()

{

32

HashSet

<String >

tmp

=

new

HashSet <String

>();

33

tmp .add (annotation

.getName

());

34

return

tmp;

15

background image

35

}

36

37

Override

38

publi

Set <String

>

getSupportedOptions

()

{

39

return

new

HashSet

<String

>();

40

}

41

42

}

Przykªad

25:

sr/pl/kiele/tu/lab10/MyAnnotationPro

essor

.ja

v

a

{link}

K

ompilaja

i

uru

homienie

aplik

aji:

java

pl\ kiele \tu \lab10 \MyAnnotationProessor

.java

java

-proessor

pl .kiele . tu.lab10 . MyAnnotationProessor

pl \kiele \ tu\lab10 \MyAnnotatedClass

.java

W

ynik

dziaªania:

Note :

Class

pl .kiele .tu .lab10 .MyAnnotatedClass

is

annotated

with

interfae

←֓

pl.kiele

.tu. lab10 .MyAnnotation

Note :

name

=

abd,

id

=

1234

8

T

est

y

jednostk

o

w

e

Mo»na

wyró»ni¢

nastpuj¡e

p

oziom

y

testo

w

ania

oprogramo

w

ania

[9

℄:

ˆ

testo

w

anie

jednostk

o

w

e

"Przedmiotem

testo

w

ania

jednostk

o

w

ego

(unit

testing,

mo

dule

testing)

p

o

dsta

w

o

w

e

jednostki

pro-

gram

u

opisane

w

pro

jek

ie

szzegóªo

wym.

P

osta¢

t

y

h

jednostek

zale»y

o

d

te

hnologii

implemen

taji

mog¡

b

nimi

p

o

dprogram

y

(pro

edury

,

funk

je)

napisane

w

jzyku

strukturaln

ym,

skrypt

y

SQL

alb

o

meto

dy

lub

klasy

zapisane

w

jzyku

obiekto

wym.

Celem

testo

w

ania

na

t

ym

p

oziomie

jest

spra

wdzenie

zgo

dno±i

dziaªania

wszystki

h

oprao

w

an

y

h

jednostek

z

i

h

sp

eyk

aj¡

wynik

a

j¡a

z

pro

jektu,

oraz

wykryie

i

usuniie

jak

na

jwikszej

lizb

y

bªdó

w."

ˆ

testo

w

anie

in

tegrayjne

"P

oª¡zenie

dw

ó

h

wsp

óªdziaªa

j¡y

h

jednostek

t

w

orzy

no

w

¡

jednostk

,

w

której

uja

wnia

si

bª-

dy

zwi¡zane

z

niedopaso

w

aniem

me

hanizmó

w

i

h

wsp

óªpray

.

Przedmiotem

dziaªa«

p

o

dejmo

w

an

y

h

p

o

dzas

testo

w

ania

in

tegrayjnego

(in

terfae

testing)

jest

ª¡zenie

jednostek

program

u

w

oraz

wiksze

k

omp

onen

t

y

i

spra

wdzanie

zgo

dno±i

i

h

dziaªania

ze

sp

eyk

aj¡

wynik

a

j¡¡

z

pro

jektu

ar

hitektury

oprogramo

w

ania.

Celem

testó

w

jest

spra

wdzenie

funk

jono

w

ania

in

terfejsó

w

(...)."

ˆ

testo

w

anie

systemo

w

e

"Przedmiotem

testo

w

ania

systemo

w

ego

(system

testing)

jest

aªo±¢

oprogramo

w

ania

zin

tegro

w

ana

i

za-

instalo

w

ana

w

o

dp

o

wiednim

±ro

do

wisku

wyk

ona

w

zym.

Celem

testó

w

jest

spra

wdzenie

zgo

dno±i

sp

o-

sobu

dziaªania

wszystki

h

funk

ji

oprogramo

w

ania

ze

sp

eyk

aj¡

oraz

w

eryk

aja

inn

y

h

wªa±iw

o±i

system

u

okre±lon

y

h

przez

wymagania

niefunk

jonalne."

ˆ

testo

w

anie

ak

eptayjne

"T

esto

w

aniu

ak

eptayjnem

u

(aeptane

testing)

p

o

dlega

oprogramo

w

anie

stano

wi¡e

przedmiot

do-

sta

wy

dla

u»ytk

o

wnik

a,

zainstalo

w

ane

w

do

elo

wym

±ro

do

wisku

pray

lub

w

±ro

do

wisku

imituj¡ym

do

elo

w

e

±ro

do

wisk

o

pray

oprogramo

w

ania.

Celem

testó

w

jest

spra

wdzenie

zgo

dno±i

dziaªania

z

wy-

maganiami

i

p

otrzebami

u»ytk

o

wnik

a.

F

orma

testó

w

mo»e

b

p

o

dobna

do

testó

w

systemo

wy

h,

jednak

pro

es

testo

w

ania

nie

jest

zorien

to

w

an

y

na

zna

jdo

w

anie

i

usu

w

anie

defektó

w,

lez

razej

na

zademonstro-

w

anie

i

zat

wierdzenie

pro

duktu

przez

u»ytk

o

wnik

a

oraz

ew

en

tualnie

dostro

jenie

do

jego

rzezywist

y

h

p

otrzeb."

St

w

orzenie

testu

jednostk

o

w

ego

dla

klasy

Calulator

przy

u»yiu

biblioteki

JUnit

w

±ro

do

wisku

Elipse

przebiega

w

nastpuj¡y

sp

osób:

File

>

New

>

Other

>

Java

JUnit

JUnit

T

est

Case.

W

nastpuj¡y

h

p

ola

h

nale»y

wpisa¢:

16

background image

"Class

under

test"

nazw

klasy

,

której

b

dzie

dot

yzyª

test

(np.

pl.kiel

e.tu.lab10.Calulator

),

"Pakage"

nazw

pakietu

(np.

pl.kiel

e.tu.lab10

),

"Name"

nazw

klasy;

zazwyza

j

nazw

a

testu

jednostk

o

w

ego

to

nazw

a

klasy

,

której

dot

yzy

oraz

sªo

w

o

"T

est"

(np.

CalulatorT

est

).

P

o

nai±niiu

"Next"

nale»y

zaznazy¢

meto

dy

,

który

h

b

dot

yzyªy

test

y

,

zyli

"mul(int,

int)"

i

"div(int,

int)".

W

i±nieie

"Finish"

p

o

w

o

duje

wygenero

w

anie

klasy

CalulatorT

est.

W

k

olejn

ym

kroku

nale»y

dla

meto

d

testMul()

oraz

testDiv()

zast¡

pi¢

aktualne

iaªa

meto

d("fail("Not

yet

implemente

d");"

)

o

dp

o

wied-

nim

k

o

dem.

Uru

homienie

testu

nastpuje

p

oprzez

klikniie

pra

wy

kla

wiszem

na

k

o

dzie

i

wybranie:

R

un

As

>

JUnit

T

est.

A

dnotaje

zwi¡zane

z

JUnit

2

:

ˆ

T

est

sªu»y

do

oznazania

meto

dy

jak

o

testu

jednostk

o

w

ego,

za

wiera

op

jonalne

skªado

w

e

exp

e

te

d

i

time

out

:

publi

abstr

at

java.lang.Class<?

extends

java.lang.Thr

owable>

exp

e

te

d

op

jonalna

skªado

w

a

p

o

w

o

duj¡a,

»e

wyw

oªanie

meto

dy

testo

w

ej

zak

o«zy

si

suk

esem

t

ylk

o

gdy

zgªosi

ona

wyj¡tek,

T

est

(exp

e

te

d

=

Ex

eption.lass)

publi

abstr

at

long

time

out

op

jonalna

skªado

w

a

p

o

w

o

duj¡a,

»e

wyw

oªanie

meto

dy

testo

w

ej

zak

o«zy

si

p

ora»k

¡,

je»eli

trw

aªo

ono

dªu»ej

ni»

p

o

dan

y

limit

zasu,

T

est(time

out=100)

ˆ

Before

meto

da

oznazona

ta

adnotaj¡

b

dzie

wyw

oªyw

ana

przed

meto

testo

w

¡,

ˆ

After

meto

da

oznazona

ta

adnotaj¡

b

dzie

wyw

oªyw

ana

p

o

meto

dzie

testo

w

ej,

ˆ

BeforeClass

meto

da

oznazona

ta

adnotaj¡

b

dzie

wyw

oªyw

ana

przed

wyw

oªaniem

pierwszej

meto

dy

testo

w

ej

z

tej

klasy

,

ˆ

AfterClass

meto

da

oznazona

ta

adnotaj¡

b

dzie

wyw

oªyw

ana

p

o

wyw

oªaniu

ostatniej

meto

dy

testo

w

ej

z

tej

klasy

,

ˆ

Ignore

meto

da

oznazona

ta

adnotaj¡

nie

zostanie

wyw

oªana

jak

o

test,

za

wiera

skªado

w

¡

value,

która

sªu»y

do

op

jonalnego

p

o

dania

p

o

w

o

du

dlazego

test

zostaª

zignoro

w

an

y

,

publi

abstr

at

java.lang.String

value

Klasa

org.junit.Assert

3

za

wiera

zbiór

przei¡»on

y

h

meto

daserji

wyk

orzyst

yw

an

y

h

p

o

dzas

pisania

testó

w:

ˆ

assertArra

yEquals()

ˆ

assertEquals()

ˆ

assertF

alse()

ˆ

assertNotNull()

ˆ

assertNotSame()

ˆ

assertNull()

ˆ

assertThat()

2

h

ttp://junit.soureforge.net/ja

v

ado

/

3

h

ttp://junit.soureforge.net/ja

v

ado

/org /junit/Assert .h

tml

17

background image

ˆ

assertT

rue()

ˆ

fail()

Klasa

org.junit.Assume

4

za

wiera

zbiór

meto

d

sªu»¡y

h

dla

wyra»ania

zaªo»e«

o

w

arunk

a

h,

dla

który

h

test

ma

znazenie

(jest

w

a»n

y).

Je»eli

zaªo»enie

nie

jest

sp

eªnione,

to

nie

znazy

to,

»e

k

o

d

jest

uszk

o

dzon

y

,

ale

»e

test

nie

dostarza

»adnej

u»yteznej

informaji.

ˆ

assumeNoExeption()

ˆ

assumeNotNull()

ˆ

assumeThat()

ˆ

assumeT

rue()

Przykªado

w

a

klasa:

1

pakage

pl .kiele . tu.lab10 ;

2

3

publi

lass

Calulator

{

4

5

publi

int

mul (

int

x,

int

y){

6

return

x

*

y ;

7

}

8

9

publi

int

div (

int

x,

int

y){

10

return

x

/

y ;

11

}

12

}

Przykªad

26:

sr/pl/kiele/tu/lab10/Calulator.ja

v

a

{link}

Przykªado

w

a

klasa

testuj¡a:

1

import

org .junit .Test ;

2

3

publi

lass

CalulatorTest

{

4

5

final

stati

int

CORRECT_ANSWER

=

4;

6

final

stati

int

NOT_CORRECT_ANSWER

=

1;

7

final

stati

int

EXPECTED_ANSWER

=

CORRECT_ANSWER

;

8

9

final

stati

boolean

THROW_EXCEPTION

=

false

;

10

11

Test (expeted

=

ArithmetiExeption

.

lass

)

12

publi

void

testDiv

()

{

13

Calulator

al

=

new

Calulator

();

14

al .div (1,

0);

15

}

16

17

Test

18

publi

void

testMul

()

{

19

Calulator

al

=

new

Calulator

();

20

assertEquals

(EXPECTED_ANSWER

,

al. mul(2,

2) );

21

if

(THROW_EXCEPTION

)

22

throw

new

RuntimeExeption

();

23

}

24

25

}

Przykªad

27:

sr/pl/kiele/tu/lab10/Calulator

T

est.ja

v

a

{link}

4

h

ttp://junit.soureforge.net/ja

v

ado

/org /junit/Assume.h

tml

18

background image

9

Przykªado

w

a

tre±¢

lab

oratorium

Zostanie

p

o

dana

w

p

ó¹niejszym

terminie.

1.

Prosz

st

w

orzy¢

aplik

aj

przedsta

wia

j¡¡

wszystkie

sp

osob

y

(9)

obsªugi

wyj¡tk

ó

w

przedsta

wione

w

tej

instruk

ji

lab

oratoryjnej.

2.

Prosz

st

w

orzy¢

aplik

aj

przedsta

wia

j¡¡

przykªad

zastoso

w

ania

aserji.

3.

Prosz

st

w

orzy¢

przykªado

wy

testu

jednostk

o

wy

z

wyk

orzystaniem

biblioteki

JUnit.

Literatura

[1℄

S

hildt

Herb

ert,

Ja

v

a.

K

omp

endium

programist

y

.

W

ydanie

VI

I

I,

Helion,

2012

[2℄

E

k

el

Brue,

Thinking

in

Ja

v

a,

Edyja

p

olsk

a,

W

ydanie

IV,

Helion,

2006

[3℄

Horstmann

Ca

y

S.,

Cornell

Gary

,

Ja

v

a.

P

o

dsta

wy

,

W

ydanie

VI

I

I,

Helion,

2008

[4℄

Horstmann

Ca

y

S.,

Cornell

Gary

,

Ja

v

a.

T

e

hniki

zaa

w

anso

w

ane,

W

ydanie

VI

I

I,

Helion,

2009

[5℄

Blo

h

Josh

ua,

Ja

v

a.

Efekt

ywne

programo

w

anie.

W

ydanie

I

I,

Helion,

2009

[6℄

Bra

k

een

Da

vid,

Bark

er

Bret,

V

anhelsu

w

e

Laurene,

Ja

v

a.

T

w

orzenie

gier,

Helion,

2004

[7℄

Sªo

wnik

terminó

w

z

zakresu

obiekto

w

o±i.

Kazimierz

Subieta,

Ak

ademi

k

a

Oyna

W

yda

wniza

PLJ,

W

arsza

w

a

1999

[8℄

Sedgewi

k

Rob

ert,

W

a

yne

Kevin,

Algorytm

y

.

W

ydanie

IV,

Helion,

2012

[9℄

Krzysztof

Sa

ha,

In»ynieria

oprogramo

w

ania,

PWN,

2010

Materiaªy

do

przedmiotu

dostpne

na

strona

h:

h

ttp://a

hilles.tu.kiele.pl/

h

ttp://w

eaii-

mo

o

dle.tu.kiele.pl/

19


Document Outline


Wyszukiwarka

Podobne podstrony:
JAVA 10 Nieznany
notatki java 10
JAVA 10 Typy opakowujące i konwersja
java 10
Java praca domowa 10
Java praca domowa 10
10 Wyjatki Java
Java praca domowa 10
10 Metody otrzymywania zwierzat transgenicznychid 10950 ppt
10 dźwigniaid 10541 ppt
wyklad 10 MNE
Kosci, kregoslup 28[1][1][1] 10 06 dla studentow
10 budowa i rozwój OUN
10 Hist BNid 10866 ppt

więcej podobnych podstron