M JavaDoc e s i m e r k k i JavaDoc * Malliluokka, jossa esitellään JavaDoc:n toimintaa * @version.0 * @author Matti Meikäläinen public class TestApp { * Malli luokkamuuttujasta private int m_membervariable; * Mallimetodi * @param name Otettava parametri * @return Merkkijono jonka metodi palauttaa public String testmethod(string name) { /* J d p ä k y y m ä ä j m m m y ö p j p n ä k y y d n Oletusarvoisesti avad oc ok um en toi vain ub lic -n vy salueeseen ritelly t attrib uutit a etod it -p rivate k om en torivip aram etrilla se ottaa uk aan s rivate a rotec ted - vy salueid en ok um en toin in L isä tietoa J avad oc :sta lö y ty y verk osta: http://j a v a.s u n.c o m /j 2 s e /j a v a d o c / 2 u i t a ai h e al u e e s e e n k u u l u vi a as i oi t a rekursio st a t t iset m et od it j a a t t rib uut it R e k u r s i o Jos ohjelmassa on metodi, joka kutsuu sisä llä ä n itseä ä n uudestaan, kä y tetä ä n siitä nimity stä r ekur siiv inen metodi R ek ursiiviset m etod it k utsuvat itseä ä n eri p aram etreilla P aram etrien p erusteella m etod i k utsuu itseä ä n tai m ik ä li ollaan p ä ä sty p erustap auk seen ei k utsua en ä ä suoriteta 3 4 Javan perusteet 2002
Rekursio Rekursiossa jokaisella kutsulla lähestytään aina jotakin p erustap austa Rekursio on p erinteisissä p rosed uraalisissa ja olio-ohjelm ointikielissä hid asta Teoriassa kaikki rekursiiviset metodit voidaan p urkaa auki iteratiivisiksi versioiksi Rekursiota rajoittaa suurissa tap auksissa käytö ssä olev a m uistin m äärä Rekursio F ib on a c c in Fibonaccin l u k u j a ov at : 0,,, 2, 3, 5, 8, 3,... l uv ut E nsim m äinen luku on 0, toinen luku ja siitä eteenp äin seuraav a luku saad aan aina kahd en ed ellisen sum m ana Fibonnaccin l u k u j a v oid aan l as k e a r e k u r s iiv is t a m e t od ia h y v ä k s ik ä y t t ä e n H uom attav asti tehokkaam p iakin m enetelm iä on olem assa 5 6 Rekursio F ib on a c c in l uv ut S t a a t t iset m et od it j a a t t rib uut it // Palauttaa n:nnen Fibonaccin luvun public int fib(int n) { if (n==) return 0; else if (n==2) return ; else return fib(n-) + fib(n-2); Esim: f ib ( 4 ) 2 fib( 4 ) fib( 3 ) fib( 2 ) 0 fib( 2 ) fib( ) 7 Y leensä luokan sisään kirjoitetut m etod it käyttäv ät jotain olion attrib uuttia O n olem assa kuitenkin m yö s m etod eja, jotka eiv ät tarv itse olion attrib uutteja tai kutsu toisia olion attrib uutteja käyttäv iä m etod eja ( esim. M ath-luokan m etod it) K y seiset metodit eivä t nä in ol l en tarvitse ol emassa ol evaa ol iota suoritukseensa Tä l l aisia metodej a kutsutaan staattisiksi 8 Javan perusteet 2002 2
Metodi määritellään staattiseksi static - määreellä: public static double sqrt(double num) static -määreellä määritelty ä metodia v oidaan ku tsu a lu okan u lkop u olelta ilman olion lu ontia: double result = Math.sqrt(6); Luokan nimi, jossa metodi on määritelty 9 Attribuutteja voidaan määrittää myös staattisik si. S taattinen attribuutti on k äytettävissä il man ol ion l uontia. S taattista attribuuttia voi k äyttää k uten normaal iak in l uok an attribuuttia. Staattinen attribuutti on sama joka paikassa (vrt. ei-staattiset attribuutit, jotka ovat y ksil ö l l iset jokaisel l a l uod ul l a ol iol l a) 0 S taattiset metodit/ attrib u u tit ov at käy ttö alu eeltaan raj atu mp ia ku in eistaattiset H yvän oh jel mointitavan muk aista on määrittää metodi/ attribuutti staattisek si aina k un se on mah dol l ista K äytännössä varsink in staattisten metodien k äyttö on h arvinaista E simerkkej ä: main-metodin on aina ol tava staattinen V ak iot määritetään yl eensä staattisina: private final static int NUM_COLS = 5; C ol or-l uokan mä ä ritel l y t vä rit ovat staattisia public final static Color black = new Color(0,0,0); ath -l uok an k aik k i metodit ja attribuutit ovat staattisia M 2 Javan perusteet 2002 3
Luokan ulkopuolelta: public class TestApp { T es ta pp.s etv alues ( ) ; public static final int A = ; public final int B = 2; i nt i = T es ta pp.a ; private static int C = 3; i = T es ta pp.b ; private int D = 4; i = ( new T es ta pp( ) ).B ; ( new T es ta pp( ) ).s etv alues ( ) ; public TestApp() { / / E i s alli ttu ( T ) ) b V ( ) ; new es ta pp(.s etm em er alues public static void setvalues() { C = A; A = C; D = C; // Sallittu, koska A ja C staattisia // Ei sallittu, koska A on vakio (final) // Ei sallittu, koska D ei staattinen setmembervalues(); // Ei sallittu, koska ollaan staat. metodissa public void setmembervalues() { C = A; // Sallittu D = C; // Sallittu, koska ei olla staattisessa metodissa setvalues(); // Sallittu 3 Tenttipäivä H a r j o itu s h y vity k s et L a s k u h a r j o itu s tentti Tenttia l u e 4 Lopputentti ke 27..2002 klo 2-6 s a lis s a L23 U us inta tentti 3.2.2002 klo 2-6 s a lis s a L2 T entteih in ilm oitta utum inen v iikkoa ennen tenttiä T enttioikeus kun la s kuh a r j oituks is ta on teh ty v ä h intä ä n 25 % ( 7 teh tä v ä ä ) J os s uor itettuna on a lle 25 % teh tä v is tä, tulee teh d ä m y ö s la s kuh a r j oitus tentti La s kuh a r j oitus tenttiin ilm oitta utum is et m y ö s v iikkoa ennen s ä h kö pos tits e Osoite tk ein on e@c s.u k u.f i T eh d ä ä n l op p u ten tin y h tey d essä 5 6 Javan perusteet 2002 4
Tentti Tenttiin saa arvosanahyvityksiä harj oitu ksista: 75 % - 00 % (9-25 teht.) +2 arvosanaa 50 % - 75 % (3-8 teht.) + arvosana 25 % - 50 % (7-2 teht.) ei hyvitystä Tentti saatava ensin l äp i ennen ku in hyvityksiä otetaan hu om ioon A rvostel u T3-T4 -T5 -H 6 -H 7 -H 8 -H 9 -E 0 -E -E 2 Tenttia l u e R i l e y n k i r j a s t a l u v u t -5, 7, 0, 2-4 noin 380 sivua K y s y m y k s e t l u e n n o i l l a j a / t a i h a r j o i t u k s i s s a e s i l l ä o l l e i s t a a s i o i s t a K ir j ast a p uut t uvia asioit a: JavaDoc m ai n -m e t od i n k ä y t t ö a or om or vi ct or -l ok an ak a con oi or ak a op aat or i*=2) 7 8 Tentti Tarkoitu ksena m itata kokonaisu u d en hahm ottam ista, ei nip p el itietoa M ikäl i tehtävissä tarvitsee käyttää j otain al ib rary: n tai J 2 S E : n A P I -l u okkaa, on ko. l u okan U M L -kaavio tai l ähd ekood i tehtävien m u kana Tentissä ei saa ol l a kirj aa m u kana; kynä, ku m i j a viivoitin riittää 9 Javan perusteet 2002 5