Ilkka Koivistoinen 13.02.2002

Edellinen

Seuraava

8.7 Paketit

Javassa voidaan joukko luokkia kerätä eli paketoida loogisiksi kokonaisuuksiksi. Pakettiin voidaan koota  mielivaltainen määrä luokkia joko loogisen yhteenkuuluvuuden tai periytyvyyden tai näkyvyyden takia. Näkyvyydellä tarkoitetaan, että luokan jäsenmuuttujat tai metodit ovat toisen luokan käytössä. Pakettien avulla luokkien näkyvyyttä muille luokille voidaan rajoittaa. Täydennyksenä, mitä on mainittu muodostinten yhteydessä,  todetaan että oletuksena ilman muodostinta luokat näkyvät vain kaikille samaan pakettiin kuuluville luokille. Public sallii luokkaa käytettävän myös paketin ulkopuolella.  Eri paketeissa saa olla saman nimisiä luokkia ilman että nimet menevät sekaisin. Esimerkiksi paketissa A voi olla luokka omena ja paketissa B luokka omena. Oletuksena luokkia haetaan samasta kansiosta, missä main -metodi sijaitsee. Muut paketit on tuotava import -komennolla.

Paketit voivat sisältää paketteja itsessään. Suuria pakkettileegiota sanotaan myös lyhykäisyydessään paketiksi. Tälläisiä ovat java -kirjastot itsessään. Ylin pakettitaso on java, sitten tulee taso io, net, util ja awt jne.. ja sitten alimman tason pakettia kuvaava nimi. Voit tarkistaa itse java -paketin rakenteen. Kansiossa .../src on paketit java, sun ja sunw. Kansiossa  java on mm. edellä olevat paketit ja esim. paketissa io löytyy BufferedOutputStream.java, jossa ensimmäisellä suorittavalla rivillä lukee package java.io; Tämä ilmoittaa, mihin pakettiin luokka BufferedOutputStream kuuluu.

Paketteja käytetään viittaamalla metodikutsussa koko luokan nimeen (Esim Math.abs() ) java.lang -paketti on aina käytössä ilman erillistä mainintaa. Tätä käytetään erityisesti luokkametodien yhteydessä (metodi, jonka edessä on static -muunnin. Tällöin luokan nimi kirjoitetaan isolla). Toinen tapa on tuoda paketti ohjelmaan import -kutsulla. Siinä nimi voidaan kirjoittaa kokonaisuudessaan (esim. import java.util.Vector) tai korvata viimeinen nimi tähdellä (esim. import java.util.*). Tuotaessa paketteja ohjelmaan, tulee pitää huoli, etteivät ne sisällä samannimisiä luokkia. Katso pakettien sisällöt tarpeen mukaan Sun -yhtiön www - sivulta.

8.7.1 Oman paketin luominen

Paketin luominen tapahtuu seuraavasti

  1. Anna paketillesi nimi. Nimen pitää kuvata jotain, mihin paketin luokkia käytetään. Nimi voi olla myös verkkokäytössä domain -nimeen viittaavaa. Tämä sen takia, että verkossa paketti saadaan varmasti identifioitua.
  2. Tee kovalevyllesi kansio, jolla on sama nimi kuin paketillasi. Jos paketti sisältää vain yhden tiedoston tai joitain tiedostoja, ne voivat olla samassa kansiossa. Jos tiedostoja on paljon, voit laittaa pakettikansioosi sisempiä kansioita, jolloin viittaat paketin osiin nimillä Pääkansio.alikansio.luokanSisältäväTiedosto. Java löytää pakettisi ympäristömuuttujan CLASSPATH avulla. Aseta sen arvoksi pakettikansion absoluuttinen polku koneesi kovalevyllä. Oletuksena on \lib -kansio jdk -kansiossa. Casspath -syntaksi on sama kuin path -ympäristössä. merkill ; erotellaan ne polut, joista paketteja etsitään. Esimerkiksi

  classpath = .;c:\jdk1.2\lib;c:\javapaketit;\c:\apuOhjelmat\matematiikka

piste on sen takia, että paketteja etsitään aluksi samasta hakemistosta, missä käännettävä tiedosto on. Javan kääntäjän optioilla voi oletuksia muuttaa.

  1. Jokaiseen luokkaan, jonka lisäät pakettiin, ensimmäiselle riville kirjoita

                        package polku

    ja talletat käännetyn .class -tiedoston siihen kansioon, mihin polku viiittaa. Polku on siis paketin nimi sellaisenaan tai tyyliin Pääkansio.alikansio

Tehtäviä

  1. Tee tehtävistä 83 - 86 paketti demo.

  2. Vastaus

Ilkka Koivistoinen 13.02.2002

Edellinen

Seuraava