13. Pakkaukset.

Slides:



Advertisements
Samankaltaiset esitykset
Olio-ohjelmoinnin perusteet luento 3: Muuttujista ja funktioista Sami Jantunen LTY/Tietotekniikan osasto.
Advertisements

6. Metodit.
16. Javan omat luokat.
© 2004 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice Java-perusteet Kari Kujansuu
13. Pakkaukset.
Perintä. Yleistä Olio-ohjelmoinnin menetelmä muodostaa uusia luokkia aiemmin määriteltyjen luokkien avulla Luokka saa automaattisesti käyttöönsä kaikki.
@ Leena Lahtinen OHJELMAN OSITTAMINEN LUOKKA ATTRIBUUTIT METODIT.
16. Lohkot Sisällys Tutustutaan lohkoihin. Muuttujien ja vakioiden näkyvyys sekä elinikä erityisesti operaation lohkossa. Nimikonfliktit. Muuttujat.
9. Periytyminen Javassa.
Sami Jantunen LTY/Tietotekniikan osasto
13. Hyvä ohjelmointitapa (osa 1)
Workshop: Test-first approach Pietu Pohjalainen. Testaus perinteisesti Tarkoituksena löytää virheitä ohjelmasta mutta mikä on virhe? Sijoittuu tavallisesti.
7. Oliot ja viitteet.
Luokan määrittely class-määreellä tMyn1 Luokan määrittely class-määreellä Luokan määrittely tarkoittaa luokan tietojäsenten esittelyä ja jäsenfunktioiden.
String-vertailusta ja Scannerin käytöstä (1/2)
19. Olio-ohjelmointia Javalla
20. Javan omat luokat.
Kuinka niitä käsitellään
1 DataOutputStream ja DataInputStream DataOutputStream:lla voidaan tallentaa perustietotyyppien arvoja binäärimuotoiseen tiedostoon DataInputStream:lla.
HelloWorld-ohjelma. 5.2 Sisällys Lähdekoodi. Lähdekoodin (osittainen) analyysi. Lähdekoodi tekstitiedostoon. Lähdekoodin kääntäminen tavukoodiksi.
4. Attribuutit 4.1. Sisällys Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2.
5. Kapselointi Yleistä Kapseloinnilla (encapsulation) tarkoitetaan luokan tietojen ja toimintojen pakkaamista yhdeksi suojatuksi kokonaisuudeksi.
10. Abstrakti luokka Johdanto Abstrakti luokka (abstract class) poikkeaa konkreettisesta luokasta (ei-abstrakti luokka) siten, että siitä ei.
@ Leena Lahtinen OHJELMAN OSITTAMINEN LUOKKA ATTRIBUUTIT METODIT.
Näppäimistöltä lukeminen Sisällys Arvojen lukeminen näppäimistöltä yleisesti. Arvojen lukeminen näppäimistöltä Java-kielessä. In -luokka.
Hyvä ohjelmointitapa (osa 2) Yleistä Lisää hyviä ohjelmointikäytäntöjä: − Jaa pitkä koodi osiin. − Käytä attribuutteja säästeliäästi.
Olioon kohdistuvia perustoimintoja tMyn1 Olioon kohdistuvia perustoimintoja Kopiointimuodostin (copy constructor) alustaa olion tietojäsenet saman luokan.
Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Pakkaukset ja määreet.
11. Rajapinnat Sisällys Mitä rajapinnat ovat? Kuinka ne määritellään ja otetaan käyttöön? Moniperiytyminen rajapintojen avulla. Varoituksen.
Kantaluokan määrittely tMyn1 Kantaluokan määrittely Perinnän käyttöön liittyvät varatut sanat private, protected, public, final ja abstract. Ne tarkoittavat.
1 © Jukka Juslin Luokat, attribuutit ja metodit Yleistietoa: seuraavalla koulutusviikolla tarkempi käsittely.
14. Poikkeukset Sisällys Johdanto poikkeuksiin. Poikkeusten käsittely: − Poikkeusten käsittely paikallisesti. − Poikkeusten heittäminen. Exception.
Tentti. Olio-ohjelmoinnin perusteet | Kevät 2015 | Jorma Laurikkala2 Tentti Torstaina klo 16–20 D10ab (Päätalo). Pääasiassa Java-ohjelmien kirjoittamista.
Tiedostot. 8.2 Sisältö Johdanto. Tiedostojen lukeminen. Tiedostojen kirjoittaminen.
16. Javan omat luokat Sisällys Johdanto. Object -luokka: − toString -, equals -, clone - ja getClass -metodit. Comparable -rajapinta: − compareTo.
String-vertailusta ja Scannerin käytöstä (1/2)
5. Kapselointi.
Harjoitustyö.
6. Tiedostot.
1. Omat operaatiot.
13. Pakkaukset.
11. Rajapinnat.
14. Poikkeukset.
Kuinka niitä käsitellään
17. Javan omat luokat.
8. Näppäimistöltä lukeminen
4. Komentoriviparametrit
7. Hyvä ohjelmointitapa..
Kantaluokan määrittely
3. Luokat, oliot ja metodit Java-kielessä (Lausekielinen ohjelmointi I ja II –kursseilla opitun kertausta.)
15. Lohkot.
Kantaluokan määrittely
5. HelloWorld-ohjelma.
8. Näppäimistöltä lukeminen
14. Hyvä ohjelmointitapa.
15. Lohkot.
6. Metodit.
3. Komentoriviparametrit
8. Periytyminen.
16. Javan omat luokat.
4. Attribuutit.
7. Hyvä ohjelmointitapa..
14. Poikkeukset.
7. Näytölle tulostaminen
5. HelloWorld-ohjelma.
3. Attribuutit.
14. Poikkeukset.
13. Pakkaukset.
4. Luokan testaus ja käyttö olion kautta
eli oliotiedostojen käsittely
Esityksen transkriptio:

13. Pakkaukset

Sisällys Pakkauksen kokoaminen package-määrettä käyttäen. Pakkaukset ja hakemistorakenne. Pakkauksen luokkien käyttö muissa pakkauksissa import-lauseen avulla. Pakkaukset ja näkyvyys.

Pakkauksen kokoaminen Luokka tai rajapinta liitetään pakkaukseensa varatulla sanalla package. Yleisesti: package pakkaus; Pakkausmäärittely on lähdekooditiedoston ensimmäinen lause. Vain kommentit voivat edeltää package-lausetta. Pakkausten nimissä käytetään vain pieniä kirjaimia. Lähdekooditiedostossa voi olla vain yksi package-lause. Liitetään In-luokka oope-pakkaukseen. package oope; import java.util.*; // Scanner /* * Scanner-luokan palveluita * hyödyntävä apuluokka ... */ final public class In { ... }

Pakkauksen kokoaminen Pakkaukselle voidaan määritellä pistenotaatiolla alipakkauksia. Luentoihin, harjoituksiin ja harjoitustyöhön liittyvät lähdekooditiedostot voitaisiin liittää oope-pakkauksen alipakkauksiin lauseita: package oope.luennot; package oope.harjoitukset; package oope.harjoitustyo; asianomaisissa lähdekoodi-tiedostoissa käyttäen. Jokaiselle alipakkaukselle voidaan määritellä alipakkauksia. Pakkaukset pystytään nimeämään yksikäsitteisesti Internet-nimiavaruuden avulla. Pakkauksen nimen alku esimerkiksi tekijän sähköpostiosoite käänteisessä järjestyksessä. Esimerkiksi: fi.uta.csjola

Pakkaus ja hakemisto Pakkaukset jakavat nimiavaruutta puumaisesti: Pakkaus järjestetään massa-muistissa hakemistorakenteeksi siten, että kansiot nimetään pakkausten mukaan ja kuhunkin kansioon sijoitetaan vastaavan pakkauksen tiedostot. Oletetaan, että “nykyinen hakemisto” on Windows-käyttöjärjestelmässä C:\ ... \fi\uta\csjola. Tällöin esimerkiksi oope- ja oope.luennot-pakkausten tiedostojen tulee olla hakemistossa: C:\ ... \fi\uta\csjola\oope ja C:\ ... \fi\uta\csjola\oope\luennot. laki oope csjola luennot ... harjoitukset harjoitustyo luento01

Pakkaus ja hakemisto Ohjelmoijan on huolehdittava itse siitä, että lähde- ja tavukooditiedostot ovat oikeassa hakemistossa. Lauseella package fi.uta.csjola.oope; -lauseella alkavat lähdekooditiedostot (ja vastaavat tavukooditiedostot) tulee sijoittaa alihakemistoon fi\uta\csjola\oope. Pakkauksiin jaetun ohjelman käynnistämiseksi on siirryttävä oikeaan hakemistoon tai määriteltävä Java-tulkin classpath-komentorivi-parametrin avulla oikea hakemisto. Java löytää omassa hakupolussaan olevat pakkaukset automaattisesti. Kansion pakkausmääreettömät tiedostot kuuluvat automaattisesti (ilman package-määrettä) samaan pakkaukseen.

Pakkauksen käyttöönotto Pakkaukseen sijoitetut luokat (tai rajapinnat) voidaan ottaa käyttöön toisessa pakkauksessa “suoraan” kirjoittamalla luokan (tai rajapinnan) nimen alkuun pakkauksen nimi. Näin “viittaamalla” voidaan välttää nimikonfliktit (eri pakkauksissa samanniminen luokka). Otetaan käyttöön esimerkiksi LinkitettyLista-luokka fi.uta.csjola.oope-pakkauksesta: fi.uta.csjola.oope.LinkitettyLista lista = new fi.uta.csjola.oope.LinkitettyLista(); Pakkauksen nimeä käyttämällä lauseita tulee pitkiä.

Pakkauksen käyttöönotto Toinen tapa käyttää pakkauksen sisältöä on määritellä tarvittavat luokat tai rajapinnat import-lauseilla, jolloin pakkauksen luokkia ja rajapintoja voidaan käyttää tavalliseen tapaan ilman pakkauksen nimeä. Yleisesti: // Tietty pakkauksen luokka käyttöön. import pakkaus.LuokanNimi; // Pakkaus käyttöön kokonaisuudessaan. import pakkauksennimi.*;

Pakkauksen käyttöönotto Import-lause sijoitetaan mahdollisen package-lauseen jälkeen ja ennen class- ja interface-lauseita. Import-lauseita voi olla useampia. Käytännössä kannattaa käyttää import-lauseita, koska niiden avulla ohjelmointi on helpompaa ja nopeampaa. package kissankoti; // Otetaan käyttöön elaimet- // pakkauksesta Kissa-luokka // esi-isineen. import elaimet.*; // Huonekaluista käyttöön Sohva. import huonekalut.Sohva; public class Olohuone { ... // Käytetään Kissa-luokkaa // tuttuun tapaan. Kissa harmi = new Kissa(); }

Esimerkki nykyhakemisto Testi.java eka A.java toka B.java A B Testi

Esimerkki (eka\A.java ja toka\B.java) package eka; public class A { public void sanoA() { System.out.println("Aaa..."); } package toka; // Otetaan käyttöön A-luokka. import eka.*; public class B { public void sanoB() { A o = new A(); System.out.println("Bee..."); } Yksittäisen luokan kääntäminen on helpointa nykyhakemistosta: javac eka\A.java tai javac toka\B.java

Esimerkki (Testi.java) // Otetaan käyttöön A-luokka. import eka.*; public class Testi { public static void main(String[] args) { // Import-lauseen avulla luokkia voidaan käyttää tutulla tavalla. A a = new A(); // Lauseet ovat pakkauksen nimeä käyttäen pitempiä. toka.B b = new toka.B(); } Kääntäminen nykyhakemistossa: javac Testi.java Suoritus nykyhakemistossa: java Testi

Pakkaukset ja näkyvyys Pakkaukset rajoittavat luokkien ja niiden piirteiden näkyvyyttä muiden pakkausten luokkiin. Ilman näkyvyysmääreitä (niin sanottu friendly-määre) luokka ja sen piirteet eivät näy muihin kuin luokan oman pakkauksen luokkiin. Public-määreellä esitellyn luokan public- ja protected-määritellyt piirteet ovat käytettävissä muissa pakkauksista. Public-määreellä esitellyt piirteet näkyvät kaikissa muissa luokissa pakkauksesta riippumatta.

Pakkaukset ja näkyvyys Protected-määreellä esitellyt piirteet näkyvät samassa pakkauksessa oleville luokille sekä luokan jälkeläisille niiden pakkauksesta riippumatta. Käytä pakkauksia ja protected-määrettä, jos julkisten aksessorien käyttö ei ole järkevää. Pakkaa luokkahierarkia siten, että pakkauksessa on vain hierarkiaan kuuluvia luokkia, koska ei ole toivottavaa, että hierarkiaan kuulumattomat luokat voivat käsitellä suoraan hierarkian luokkien piirteitä.

Pakkaukset ja näkyvyys public class A { // private s, protected t, public u ... } B A - s, # t, + u H Luokissa B ja H näkyvät luokan A piirteistä t ja u. Pakkaus 1 Pakkaus 2 C I Luokassa C näkyvät luokan A piirteistä t ja u. Luokassa I näkyy luokan A piirteistä vain u.