Programovßnφ v jazyce Java

Kurz programovßnφ v Jav∞ - 11. dφl

 ┌vodem  |  Kurz programovßnφ v Jav∞  |  Kurz programovßnφ v Jav∞ pro mobilnφ telefony  |  Soubory ke sta₧enφ  |  Otßzky a odpov∞di

 

┌vod

Vφtejte v dalÜφm dφle kurzu o zßkladech Javy. Na zaΦßtku si °ekneme co jsou balφky, proto₧e je to nezbytnΘ k dalÜφmu v²kladu. Potom probereme specifikßtory p°φstupu. Nakonec zaΦneme v²klad o t°φdßch.



Balφky

VÜechny programy v Jav∞, kterΘ napφÜete jsou organizovßny v balφcφch. Ka₧d² balφk mß svΘ vlastnφ jmΘno. Jednou z nejd∙le₧it∞jÜφch v²hod je to, ₧e nem∙₧e dojφt ke konfliktu jmen, pokud chcete pou₧φt dv∞ t°φdy se stejn²m nßzvem ve svΘm programu. U program∙ majφcφ vφce t°φd, je pou₧itφ balφk∙ samoz°ejmostφ, ale i kdy₧ vßÜ program mß pouze jednu nebo dv∞ t°φdy, m∙₧ete je takΘ pou₧φvat.

My jsme nikdy v naÜich programech nespecifikovali v jakΘm balφku mß t°φda b²t. Pokud se nßzev nezadß, automaticky je t°φda p°i°azena do balφku, ve kterΘm jsou vÜechny t°φdy bez zadanΘho p°φkazu package, tzv. implicitnφ balφk. A koneΦn∞ se dostßvßme k tomu jak balφk pojmenovat, nßsledujφcφ p°φkaz to ukazuje:

Umφst∞nφ t°φdy do balφku
package mujBalik
	  
public class MojeTrida {
	   public static void main(String[] args) {
	
	   		  System.out.println("Spusteni: MojeTrida");   
	   
	   }
}
	  

Pro umφst∞nφ t°φdy do balφku slou₧φ p°φkaz package.

V tomto p°φklad∞ jsme vytvo°ili t°φdu nazvanou MojeTrida a umφstili ji do balφku s nßzvem mujBalik. To znamenß, ₧e t°φda musφ b²t v adresß°i s nßzvem, kter² je shodn² s nßzvem balφku, ...\mujBalik\MojeTrida.java. Na adresß° ve kterΘm je slo₧ka mujBalik musφ ukazovat prom∞nnß prost°edφ CLASSPATH. Pokud prom∞nnß prost°edφ ukazuje na pracovnφ adresß°, ve kterΘm je slo₧ka mujBalik, staΦφ napsat pro p°eklad t°φdy javac mujBalik.MojeTrida.java.

Nakonec si °ekneme n∞co o konvenci pro pojmenovßnφ balφk∙. Balφky lze pojmenovat podle internetovΘ domΘny, ze kterΘ pochßzejφ, ale nßzev zaΦφnß odzadu, nap°. org.xml.sax, je balφk sdk-1.4.1. Pokud nechcete pou₧φt balφk nap°. mimo firmu, lze ho pojmenovat libovoln∞, ale prvnφ pφsmeno nßzvu by m∞lo b²t malΘ a prvnφ slovo by n∞m∞lo b²t java, proto₧e je to rezervovan² nßzev pro standardnφ Java t°φdy. Mo₧nΘ nßzvy jsou:

dvorak.io
com.firma.oddeleni.game
cz.firma.prvniPatro.graphics



Specifikßtory p°φstupu

JeÜt∞ ne₧ zaΦnu vyst∞lovat deklarace t°φd, m∞li bychom probrat specifikßtory p°φstupu. Existujφ Φty°i specifikßtory p°φstupu a to public, protected, implicitnφ a private.

Slo₧ka majφcφ specifikßtor public je p°φstupnß komukoli odkudkoli. Pokud budete mφt ve vaÜφ t°φd∞ public metodu, m∙₧e ji volat kterßkoli t°φda, t°eba z ·pln∞ jinΘho balφku. Tento specifikßtor se v∞tÜinou nepou₧φvß pro prom∞nnΘ.

Protected majφ slo₧ky ke kter²m lze p°istupovat v rßmci svΘ t°φdy, stejnΘho balφku a potomk∙. Pokud potomci t°φdy, ve kterΘ je takto oznaΦenß slo₧ka, nele₧φ ve stejnΘm balφku, nevadφ to. Ale nelze k tΘto slo₧ce p°istupovat z jinΘho balφku, ani₧ by p°istupujφcφ t°φda byla potomkem.

Implicitnφ (defaultnφ) je pokud u slo₧ky ₧ßdn² specifikßtor p°φstupu neuvedete. K takto oznaΦenΘ slo₧ce lze p°istupovat pouze v rßmci t°φdy a balφku, ₧adnφ potomci, tedy pokud nejsou ve stejnΘm balφku.

Private jsou oznaΦeny slo₧ky ke kter²m m∙₧eme p°istupovat pouze ve t°φd∞, ve kterΘ jsou deklarovßny. V∞tÜinou se takovΘ slo₧ky pou₧φvajφ tak, ₧e public metody, kterΘ jsou p°φstupnΘ z venku, volajφ nap°φklad n∞kolik private metod, t°eba k r∙zn²m meziv²poΦt∙m. Ale samotnΘ private metody by byly pro vn∞jÜφ sv∞t nezajφmavΘ.

Nakonec si ·kß₧eme tabulku, ve kterΘ jsou vÜechny specifikßtory porovnßny.

Specifikßtory p°φstupu
Specifikßtor Stejnß t°φda Podt°φdy Stejn² balφk VÜichni ostatnφ
public ano ano ano ano
protected ano ano ano ne
implicitnφ ano ne (pokud jsou ve stejnΘm balφku, ano) ano ne
private ano ne ne ne

Implicitnφ specifikßtor p°φstupu se nastavφ pokud ₧ßdn² nezadßte. Zatφm si nelamte hlavu s vyu₧itφm specifikßtor∙ p°φstupu, ale je dobrΘ v∞d∞t, ₧e existujφ, proto₧e p°i v²kladu o t°φdßch (kter² bude docela dlouh² a na vφce dφl∙) na n∞ mnohokrßt p°ijde °eΦ.



T°φdy

NejlepÜφ asi bude zaΦφt deklaracφ t°φdy a vysv∞tlit jednotlivΘ polo₧ky.




Obecnß deklarace t°φdy
class identifikßtor {

  t∞lo t°φdy

}
	  



Toto je nejjednoduÜÜφ deklarace t°φdy. KlφΦovΘ slovo class vyjad°uje, ₧e se jednß o deklaraci t°φdy. Identifikßtorem se specifikuje nßzev t°φdy, pro n∞j nelze zvolit ₧ßdnΘ z klφΦov²ch slov, stejn∞ jako pro ₧ßdn² jin² identifikßtor :-). T∞lo t°φdy obsahuje v∞ci pro jejφ po₧adovanou funkΦnost, deklarace prom∞nn²ch, metod ale i t°eba dalÜφch t°φd.

DalÜφ mo₧nΘ rozÜφ°enφ deklarace t°φdy je o tzv. modifikßtory. M∙₧e to b²t jeden z public, protected, private a/nebo abstract, static, final, strictfp. Ne vÜechny lze pou₧φt ve vÜech situacφch.

N∞kterΘ z mo₧nostφ jsou uvedeny v p°φkladu, kter² nßsleduje...



Mo₧nΘ modifikßtory t°φd
public class identifikßtor {

  t∞lo t°φdy

}

abstract class identifikßtor {

  t∞lo t°φdy

}

public abstract class identifikßtor {

  t∞lo t°φdy

}
	  


Modifikßtor z prvnφ skupiny (public, protected a private) lze vybrat pouze jeden, ale u druhΘ skupiny (abstract, static, final a strictfp) jich m∙₧ete vybrat vφce. Pokud mß t°φda vφce modifikßtor∙, je lepÜφ nejd°φve napsat modifikßtor z prvnφ skupiny a a₧ potom dalÜφ z druhΘ, nenφ to vy₧adovßno, ale bude to Φiteln∞jÜφ pro ostatnφ. Nedivte se, ₧e jste se nic o jednotliv²ch modifikßtorech nedov∞d∞li. N∞kterΘ lze pou₧φt pouze u vnit°φch t°φd, ale ty jsme neprobφrali, proto a₧ se na n∞ dostane, samoz°ejm∞ jednotlivΘ modifikßtory vysv∞tlφm.



Zßv∞r

V tomto dφle jsme probrali vφce v∞cφ, ale jen tak povrchn∞. P°φÜt∞ budeme pokraΦovat o t°φdßch, vrßtφme se i k p°φkaz∙m package a import a jejich vyu₧itφ v praxi.



Alen Dvo°ßk