Pakkauksen kokoaminen



Samankaltaiset tiedostot
Pakkauksen kokoaminen

8. Näppäimistöltä lukeminen 8.1

9. Periytyminen Javassa 9.1

812341A Olio-ohjelmointi Peruskäsitteet jatkoa

8. Näppäimistöltä lukeminen 8.1

9. Periytyminen Javassa 9.1

20. Javan omat luokat 20.1

Sisällys. 20. Javan omat luokat. Java API. Pakkaukset. java\lang

4. Luokan testaus ja käyttö olion kautta 4.1

17. Javan omat luokat 17.1

Sisällys. 9. Periytyminen Javassa. Periytymismekanismi Java-kielessä. Periytymismekanismi Java-kielessä

Sisällys. 12. Näppäimistöltä lukeminen. Yleistä. Yleistä

Javan perusteet. Ohjelman tehtävät: tietojen syöttö, lukeminen prosessointi, halutun informaation tulostaminen tulostus tiedon varastointi

Sisällys. 9. Periytyminen Javassa. Periytymismekanismi Java-kielessä. Periytymismekanismi Java-kielessä

Sisältö. Johdanto. Tiedostojen lukeminen. Tiedostojen kirjoittaminen. 6.2

JAVA-PERUSTEET. JAVA-OHJELMOINTI 3op A JAVAN PERUSTEET LYHYT KERTAUS JAVAN OMINAISUUKSISTA JAVAN OMINAISUUKSIA. Java vs. C++?

12. Näppäimistöltä lukeminen 12.1

Metodien tekeminen Javalla

17. Javan omat luokat 17.1

5. HelloWorld-ohjelma 5.1

16. Javan omat luokat 16.1

Ohjelmointi 2 / 2008 Välikoe / Pöytätestaa seuraava ohjelma.

Lohkot. if (ehto1) { if (ehto2) { lause 1;... lause n; } } else { lause 1;... lause m; } 16.3

1 Tehtävän kuvaus ja analysointi

5. HelloWorld-ohjelma 5.1

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2

Sisältö Johdanto. Tiedostojen lukeminen. Tiedostojen kirjoittaminen. 26.2

Metodit. Metodien määrittely. Metodin parametrit ja paluuarvo. Metodien suorittaminen eli kutsuminen. Metodien kuormittaminen

Ohjelmointi 2 / 2010 Välikoe / 26.3

Lohkot. if (ehto1) { if (ehto2) { lause 1;... lause n; } } else { lause 1;... lause m; } 15.3

Sisältö. Johdanto. Tiedostojen lukeminen. Tiedostojen kirjoittaminen. 6.2

Vertailulauseet. Ehtolausekkeet. Vertailulauseet. Vertailulauseet. if-lauseke. if-lauseke. Javan perusteet 2004

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä. Tiedonkätkentä. Aksessorit. 4.2

Sisällys. 14. Poikkeukset. Johdanto. Johdanto

Rajapinta (interface)

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Pakkaukset ja määreet

Rajapinnasta ei voida muodostaa olioita. Voidaan käyttää tunnuksen tyyppinä. Rajapinta on kuitenkin abstraktia luokkaa selvästi abstraktimpi tyyppi.

Sisällys. 11. Rajapinnat. Johdanto. Johdanto

14. Poikkeukset 14.1

Java-kielen perusteita

Mikä yhteyssuhde on?

Java-kielen perusteet

Sisällys. Metodien kuormittaminen. Luokkametodit ja -attribuutit. Rakentajat. Metodien ja muun luokan sisällön järjestäminen. 6.2

19. Olio-ohjelmointia Javalla 19.1

4. Olio-ohjelmoinista lyhyesti 4.1

2. Olio-ohjelmoinista lyhyesti 2.1

Sisällys. 15. Lohkot. Lohkot. Lohkot

Sisällys. 19. Olio-ohjelmointia Javalla. Yleistä. Olioiden esittely ja alustus

11. Javan valintarakenteet 11.1

Java-kielen perusteita

Olio-ohjelmointi Javalla

Tietorakenteet. JAVA-OHJELMOINTI Osa 5: Tietorakenteita. Sisällys. Merkkijonot (String) Luokka String. Metodeja (public)

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op. Standardi- ja tietorakenneluokkia

812341A Olio-ohjelmointi, IX Olioiden välisistä yhteyksistä

1. Omat operaatiot 1.1

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op. Poikkeukset ja tietovirrat: Virhetilanteiden ja syötevirtojen käsittely

Listarakenne (ArrayList-luokka)

YHTEYSSUHDE (assosiation)

Sisällys. JAVA-OHJELMOINTI Osa 6: Periytyminen ja näkyvyys. Luokkahierarkia. Periytyminen (inheritance)

Sisällys. 14. Poikkeukset. Johdanto. Johdanto

14. Poikkeukset 14.1

Olion elinikä. Olion luominen. Olion tuhoutuminen. Olion tuhoutuminen. Kissa rontti = null; rontti = new Kissa();

Hakemistojen sisällöt säilötään linkitetyille listalle.

Rinnakkaisohjelmointi kurssi. Opintopiiri työskentelyn raportti

Luokat ja oliot. Ville Sundberg

Kompositio. Mikä komposition on? Kompositio vs. yhteyssuhde Kompositio Javalla Konstruktorit set-ja get-metodit tostring-metodi Pääohjelma

Osio 4: Tietovirrat. Properties- eli ominaisuustiedostot Logger: lokitietojen käsittely

Sisällys. 1. Omat operaatiot. Yleistä operaatioista. Yleistä operaatioista

Ohjelmassa henkilön etunimi ja sukunimi luetaan kahteen muuttujaan seuraavasti:

Taulukoiden käsittely Javalla

7. Oliot ja viitteet 7.1

Ohjelmointi 1 / 2009 syksy Tentti / 18.12

A) on käytännöllinen ohjelmointitekniikka. = laajennetaan aikaisemmin tehtyjä luokkia (uudelleenkäytettävyys)

// Tulostetaan double-tyyppiseen muuttujaan "hinta" tallennettu // kertalipun hinta ja vaihdetaan riviä. System.out.printf("%.1f euros.

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op. Tietorakenneluokkia 2: HashMap, TreeMap

JUnit ja EasyMock (TilaustenKäsittely)

Sisällys. JAVA-OHJELMOINTI Osa 7: Abstrakti luokka ja rajapinta. Abstraktin luokan idea. Abstrakti luokka ja metodi. Esimerkki

2. Lisää Java-ohjelmoinnin alkeita. Muuttuja ja viittausmuuttuja (1/4) Muuttuja ja viittausmuuttuja (2/4)

Tehtävä 1. Tehtävä 2. Arvosteluperusteet Koherentti selitys Koherentti esimerkki

public static void main (String [] args)

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Rajapinnat ja sisäluokat

Ohjelmointi 2, välikoe

Java-API, rajapinnat, poikkeukset, UML,...

Sisällys. 6. Metodit. Oliot viestivät metodeja kutsuen. Oliot viestivät metodeja kutsuen

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Taulukot & Periytyminen

1. Olio-ohjelmointi 1.1

812347A Olio-ohjelmointi, X Reflektiivisyys

Javan perusteita. Janne Käki

11. Javan toistorakenteet 11.1

Ohjelmointitaito (ict1td002, 12 op) Kevät Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen

Informaatioteknologian laitos Olio-ohjelmoinnin perusteet / Salo

4. Lausekielinen ohjelmointi 4.1

815338A Ohjelmointikielten periaatteet Harjoitus 5 Vastaukset

Luokkamalli LUOKKAKAAVIO. Tämän osan sisältö. Luokkamalli. Luokka ja olio. Luokkakaavio (class diagram)

Metodien tekeminen Javalla

Ohjelmoinnin jatkokurssi, kurssikoe

Rinnakkaisohjelmointi, Syksy 2006

Oliot viestivät metodeja kutsuen

1. Kun käyttäjä antaa nollan, niin ei tulosteta enää tuloa 2. Hyväksy käyttäjältä luku vain joltain tietyltä väliltä (esim tai )

Toisessa viikkoharjoituksessa on tavoitteena tutustua JUnit:lla testaukseen Eclipse-ympäristössä.

Transkriptio:

13. Pakkaukset 13.1

Sisällys Pakkauksen kokoaminen (package). Pakkaukset ja hakemistorakenne. Pakkauksen luokkien käyttö muissa pakkauksissa (import). Pakkaukset ja näkyvyys. 13.2

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. Esim. liitetään In-luokka oopepakkaukseen. /* * Scanner-luokan palveluita * hyödyntävä apuluokka... */ package oope; import java.util.*; // Scanner final public class In {... 13.3

Pakkauksen kokoaminen Pakkaukselle voidaan määritellä pistenotaatiolla alipakkauksia. Esim. 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ähdekooditiedostoissa käyttäen. Jokaiselle alipakkaukselle voidaan määritellä alipakkauksia. Pakkaukset pystytään nimeämään yksikäsitteisesti Internetnimiavaruuden avulla. Pakkauksen nimen alku esimerkiksi tekijän sähköpostiosoite käänteisessä järjestyksessä. Esimerkiksi: fi.uta.csjola 13.4

Pakkaus ja hakemisto Pakkaukset jakavat nimiavaruutta puumaisesti: luennot luento01 oope harjoitukset... csjola... laki... harjoitustyo Pakkaus järjestetään massamuistissa 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. 13.5

Pakkaus ja hakemisto Ohjelmoijan on huolehdittava itse siitä, että lähde- ja tavukooditiedostot ovat oikeassa hakemistossa. Esim. 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-komentoriviparametrin 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. 13.6

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ä. 13.7

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 pakkaus.*; missä pakkaus on pakkauksen tai alipakkauksen nimi. 13.8

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 Testi { // Käytetään Kissa-luokkaa // tuttuun tapaan. Kissa harmi = new Kissa();... 13.9

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

Esimerkki (eka\a.java) package eka; public class A { public void testi() { System.out.println("Testi A"); Kääntäminen alihakemistossa eka: javac A.java 13.11

Esimerkki (toka\b.java) package toka; import eka.*; public class B { public void testi() { A o = new A(); o.testi(); System.out.println("Testi B"); Kääntäminen alihakemistossa toka: javac..\eka\a.java B.java 13.12

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

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. 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. 13.14

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