Organizace tříd do balíků
-
Třídy zorganizujeme do balíků.
-
V balíku jsou vždy umístěny související třídy.
-
Co znamená související?
-
třídy, jejichž objekty spolupracují
-
třídy na podobné úrovni abstrakce
-
třídy ze stejné části reality
-
Zápis třídy do zdrojového souboru
-
Třída
Person
bude v souboruPerson.java
-
Tento soubor bude v adresáři
cz/muni/fi/pb162
-
Pozor na velká/malá písmena — v obsahu i názvu souboru i adresářů.
package cz.muni.fi.pb162; // zařazení do balíku public class Person { //... popis vlastností (proměnných, metod...) osoby ... }
Balíky
-
Balíky obvykle organizujeme do hierarchií, např.:
-
cz.muni.fi.pb162
-
cz.muni.fi.pb162.banking
-
cz.muni.fi.pb162.banking.credit
-
-
Neplatí však, že by
-
třídy "dceřinného" balíku (např.
cz.muni.fi.pb162.banking.credit
) -
byly zároveň třídami balíku "rodičovského" (
cz.muni.fi.pb162.banking
)!!!
-
-
Hierarchie balíků má tedy význam spíše pro srozumitelnost a logické členění.
-
Jinak rozhoduje pouze relace "je ve stejném balíku" či "není ve stejném balíku".
Příslušnost třídy k balíku
-
Deklarujeme ji syntaxí:
package názevbalíku;
-
Uvádíme obvykle jako první deklaraci v zdrojovém souboru.
-
Příslušnost k balíku musíme současně potvrdit správným umístěním zdrojového souboru do adresářové struktury;
-
např. zdrojový soubor třídy
Person
umístíme do podadresářecz/muni/fi/pb162
-
Neuvedeme-li příslušnost k balíku, stane se třída součástí implicitního balíku
-
implicitní balík nelze pro jakékoli větší a/nebo znovupoužívané třídy či dokonce programy doporučit a zde nebude tolerováno!
Deklarace import názevbalíku.NázevTřídy
-
Deklarace
import
souvisí s organizací tříd programu do balíků. -
Umožní použít identifikátor třídy v rámci jiné třídy.
-
Syntaxe:
import názevbalíku.NázevTřídy;
-
Kde název balíku je následovaný názvem třídy.
-
Píšeme obvykle ihned po deklaraci příslušnosti k balíku (
package názevbalíku;
). -
Import není nutné deklarovat mezi třídami téhož balíku!
Deklarace import názevbalíku.*
-
Pak lze používat všechny třídy z uvedeného balíku
-
Doporučuje se "import s hvězdičkou" nepoužívat vůbec:
-
jinak nevíme nikdy s jistotou, ze kterého balíku se daná třída použila;
-
i profesionálové to však někdy používají :-)
-
lze tolerovat tam, kde používáme z určitého balíku většinu tříd;
-
v tomto úvodním kurzu většinou tolerovat nebudeme!
-
-
"Hvězdičkou" stejně nezpřístupníme třídy z podbalíků, např.
-
import cz.*
nezpřístupní tříducz.muni.fi.pb162.Person
Deklarace import static názevbalíku.NázevTřídy.NázevMetody
-
Lze pak použít dokonce identifikátor metody/proměnné třídy v rámci jiné třídy.
-
Relevantní pouze pro statické metody a proměnné;
-
tedy i konstanty;
-
opět možno použít variantu importu s hvězdičkou;
-
výborně použitelné i pro některé věci z Core API, např.
Math
, příklad z Wikipedia:Static import
Příklad import static
import static java.lang.Math.*; import static java.lang.System.out; public class HelloWorld { public static void main(String[] args) { out.println("Hello World!"); out.println("Considering a circle with a diameter of 5 cm, it has:"); out.println("A circumference of " + (PI * 5) + " cm"); out.println("And an area of " + (PI * pow(2.5,2)) + " sq. cm"); } }
Note
|
Všimněte si použití rovněž pro výstupní proud System.out . |