|
ZaΦßteΦnφk |
PokroΦil² |
Profesionßl |
|||||
|
|
|
||||||
┌vod
do sv∞ta .NET /7. dφl Modernφ technologie
v²voje softwaru |
||||||||
|
|
Budete pot°ebovat
p°ibli₧n∞ 95 minut |
|
OperaΦnφ systΘm
pou₧it² v p°φsp∞vku: Windows 2000 V²vojovΘ nßstroje:
Visual Basic .NET |
||||
|
Vß₧enφ programßto°i,
nabφdka ΦervencovΘho dφlu serißlu bude vskutku
bohatß. Nejprve se podφvßme na n∞kterß pravidla, kterΘ byste m∞li dodr₧ovat p°i
pojmenovßvßnφ prom∞nn²ch jak hodnotov²ch, tak i referenΦnφch datov²ch typ∙. Dßle
vzpomeneme vyu₧itφ komentß°∙ a jejich smysl p°i dokumentaci zdrojovΘho k≤du. Ve
finßle se m∙₧ete t∞Üit na vysv∞tlenφ pojm∙ funkce, argument a parametr. Rovn∞₧
dojde i na oz°ejm∞nφ dvou zßkladnφch zp∙sob∙ p°edßvßnφ argument∙. P°φjemnΘ
poΦtenφ.
Zßsady pro pojmenovßvßnφ
prom∞nn²chá
I kdy₧ by se mohlo na prvnφ pohled zdßt, ₧e
problematika sprßvnΘho pojmenovßnφ prom∞nn²ch je, ve srovnßnφ s jin²mi
programßtorsk²mi oblastmi, pon∞kud mΘn∞cennß, nenφ tomu tak. Dokonce lze °φci,
₧e pokud programßtor ovlßdne ty sprßvnΘ nßvyky v urΦovßnφ nßzvoslovφ
prom∞nn²ch, zφskß nejenom znaΦn² p°ehled o situaci ve svΘm zdrojovΘm k≤du, ale
bude rovn∞₧ dostateΦn∞ p°ipraven pro profesionßlnφ prßci v programßtorskΘm
t²mu.
Na zaΦßtek si uve∩me n∞kolik ädobr²ch radô,
kterΘ m∙₧ete p°i pojmenovßvßnφ prom∞nn²ch vhodn∞ vyu₧φt.
P°φklady:
ááááááá Dim
123Objednßvka as Short
ááááááá 'nepovolenΘ
pojmenovßnφ prom∞nnΘ
ááááááá Dim
Objednßvka123 As Short
á 'p°φpustnΘ pojmenovßnφ prom∞nnΘ
P°φklady:
ááááááá Dim
Nßzev As String
ááááááá Dim
v²poΦet As Double
ááááááá Dim
_Prom∞nnß As Integer
ááááááá Dim
PoΦetV²robk∙ As Integer
ááááááá Dim
KoeficientInflace As Single
áááááááá Druhß
varianta spoΦφvß v ΦastΘm pou₧itφ znaku podtr₧enφ (_):
áááááááá
áááááááá
ááááááá Dim
Obsah_kruhu As Integer
ááááááá 'nebo takΘ
ááááááá Dim
Obsah_Kruhu As Integerá
áááááááá
OvÜem vezm∞te
prosφm v potaz, ₧e z poslednφch dvou p°φklad∙ pojmenovßnφ prom∞nnΘ
m∙₧e b²t v jednΘ lokßlnφ oblasti (procedu°e, funkci, metod∞) pou₧it jenom
jeden z nich. Proto₧e VB .NET nepat°φ mezi programovacφ jazyky, kterΘ by
rozliÜovali malß a velkß pφsmena, pova₧oval by deklaraci druhΘ prom∞nnΘ za chybnou
(jde o chybu tzv. duplicitnφ deklarace prom∞nnΘ). á
ááááááá Dim
intDeterminant As Integer
ááááááá Dim
strSlogan As String
Prefix b²val
zvyΦejn∞ t°φpφsmenn² a spolehliv∞ charakterizoval p°φsluÜnost prom∞nnΘ
k vybranΘmu datovΘmu typu. V uveden²ch p°φkladech prefix int °φkß, ₧e prom∞nnß je datovΘho typu Integer a p°edpona str zase identifikuje prom∞nnou datovΘho typu String.áá
Ma∩arskß notace
byla velice populßrnφ p°edevÜφm p°i programovßnφ v jazycφch C a C++,
pozd∞ji se ovÜem takΘ dostala i do prost°edφ Visual Basicu. Mnoho programßtor∙
se s nφ s₧ilo natolik, ₧e ji pou₧φvajφ dodnes.
áá
Komentß°e a jejich smysl v procesu dokumentace zdrojovΘho k≤du
Visual Basic .NET poskytuje programßtor∙m ji₧
hodn∞ dlouho mo₧nost za°adit do k≤du takΘ °ßdky ryze informaΦnφho charakteru,
kter²m se °φkß komentß°e. Ve v²pisech programov²ch k≤d∙ jsem u₧ komentß°e n∞kdy
pou₧φval, tak₧e jste se s nimi ji₧ mohli st°etnout. Komentß° m∙₧ete do
vaÜeho k≤du za°adit velmi jednoduÜe:
ááááááá Dim
CenaV²robku As Single
ááááááá 'Prßv∞ byla
deklarovßna prom∞nnß datovΘho typu Single.
VÜe, co se objevφ za znakem apostrofu pova₧uje
VB .NET za komentß°. Komentß° poznßte lehce podle jeho zelenΘ barvy.
|
InformaΦnφ text komentß°e m∙₧e b²t uveden nejen znakem apostrofu, ale
takΘ textov²m °et∞zcem REM. Ve chvφlφch, kdy nebudete chtφt hledat
sprßvnou klßvesu pro vlo₧enφ apostrofu, vßm mo₧nß zapsßnφ formulky REM uÜet°φ
drahocenn² Φas. |
|
Pokud by vßm
standardnφ barva komentß°e nevyhovovala, m∙₧ete ji zm∞nit. Vφce informacφ si
m∙₧ete p°eΦφst v kapitole Jak zm∞nit standardnφ barvu
komentß°∙.áá |
P°i prßci s komentß°i si musφte
pamatovat, ₧e systΘm komentß°∙ je zalo₧en na °ßdkovΘm schΘmatu. To znamenß, ₧e
po vlo₧enφ apostrofu je cel² °ßdek vyhrazen jenom pro komentß°. Kdy₧ do
takovΘho °ßdku vlo₧φte programov² k≤d, tento nebude proveden, proto₧e Visual
Basic .NET bude p°epoklßdat, ₧e jde o komentß°. Komentß° se samoz°ejm∞ m∙₧e
rozklßdat takΘ na vφce °ßdcφch. V tomto p°φpad∞ se ale musφ na zaΦßtku
ka₧dΘho °ßdku nachßzet znak apostrofu. Podφvejte se na nßsledujφcφ ukßzku:
ááááááá MessageBox.Show("Tento text se
zobrazφ v okn∞ se zprßvou.")
ááááááá 'Metoda Show
ááááááá 't°φdy
MessageBox
ááááááá 'zabezpeΦφ
zobrazenφ okna se zprßvou. á
Velmi d∙le₧itß je skuteΦnost, ₧e p°i kompilaci
zdrojovΘho k≤du aplikace komentß°e zbyteΦn∞ nezdr₧ujφ prßci p°ekladaΦe, nakolik
tento je ignoruje. Nenφ tedy pravdou tvrzenφ, ₧e Φφm vφc komentß°∙ v k≤du
pou₧φvßte, tφm je vßÜ k≤d provßd∞n pomaleji.
Implementace komentß°∙ do programovΘho k≤du
vaÜφ aplikace je velmi d∙le₧itß. Pokud budete schopni vhodnou formou
dokumentovat Φinnost vaÜeho k≤du, vytvo°φte si pevnou zßkladnu pro pozd∞jÜφ
modifikaci a rozÜi°ovßnφ funkΦnosti aplikace. P°itom bude dobrΘ, kdy₧ budete
komentovat jak jednoduchΘ sekvence, tak i slo₧itΘ vno°enΘ partie programovΘho
k≤du. ┌silφ, kterΘ vynalo₧φte na tvorbu komentß°∙, se vßm vrßtφ i
s pomysln²mi ·roky ve chvφli, kdy₧ se k p°edm∞tnΘmu k≤du vrßtφte po
p∙lroce, nebo i delÜφ dob∞.
|
ZnaΦnΘ mno₧stvφ programßtor∙ zaΦßteΦnφk∙ propadß dojmu, ₧e k≤du, kter²
napφÜou dnes, budou rozum∞t kdykoliv. Kdy₧ se tito programßto°i po delÜφ dob∞
vrßtφ k vlastnφmu zdrojovΘmu k≤du, jenom s hr∙zou budou nahlφ₧et na
komplikovanΘ programovacφ konstrukce, na pochopenφ kter²ch budou pot°ebovat
dodateΦn² Φas. Kdyby ovÜem sv∙j k≤d peΦliv∞ dokumentovali, tento dodateΦn²
Φas mohli vyu₧φt daleko smyslupln∞ji.á á |
V²znam komentß°∙ jeÜt∞ vzr∙stß p°i studiu
cizφho zdrojovΘho k≤du. V∞°te, ₧e p°ijφt na to, jak myslel jin² programßtor p°i
psanφ tΘ-kterΘ funkce Φi procedury, je n∞kdy podstatn∞ t∞₧Üφ, jako napsßnφ svΘ vlastnφ
procedury nebo funkce.
Pokud vyvφjφte u₧ivatelsk² ovlßdacφ prvek nebo
komponentu, kterou pak poskytnete jin²m v²vojß°∙m bezplatn∞, nebo ji budete
nabφzet na trhu softwarov²ch souΦßstφ, m∞li byste dokumentaΦnφ systΘm rozÜφ°it
o kompletnφ elektronickou dokumentaci ve form∞ nßpov∞dy. V p°φpad∞
ovlßdacφho prvku by nßpov∞da m∞la obsahovat popis vÜech t°φd (bßzov²ch i
abstraktnφch), rozhranφ, metod a vlastnostφ.
|
Nßvrh ovlßdacφch prvk∙ by m∞l vyhovovat zßkladnφm princip∙m objektov∞
orientovanΘho programovßnφ (OOP). Jednφm z t∞chto princip∙ je takzvanΘ zapouzd°enφ
(encapsulation). Zapouzd°enφ °φkß, ₧e klientsk² k≤d by m∞l s ovlßdacφm
prvkem komunikovat jenom prost°ednictvφm jeho rozhranφ (tedy volßnφm
p°φsluÜn²ch metod a vyu₧φvßnφm vstav∞n²ch vlastnostφ). SamotnΘ jßdro
implementace ovlßdacφho prvku by ale nikdy nem∞lo b²t p°φstupnΘ klientskΘ
aplikaci. Z tohoto d∙vodu se cizφ programßtor nikdy nedostane ke
komentß°∙m zdrojovΘho k≤du ovlßdacφho prvku. á |
Jak zm∞nit standardnφ barvu komentß°∙
Nejste-li spokojeni se zelenou barvou
komentß°∙, p°ipravil jsem pro vßs postup, jak tuto barvu modifikovat a zm∞nit
podle vaÜich po₧adavk∙. Postupujte podle nßsledujφcφch instrukcφ:
|
Jestli₧e vßs ani nabφdka barev otevφracφho seznamu Item foreground nepot∞Üila, klepn∞te
na tlaΦφtko Custom a vyberte si
vlastnφ barvu z barevnΘho spektra RGB. |
Charakteristika pojmu funkce
V∞°φm, ₧e funkcφm p°ijdete rychle na chu¥,
proto₧e pod pojmem funkce si m∙₧ete p°edstavit metodu, kterß vracφ jistou
hodnotu. Prßv∞ schopnost vracet hodnotu d∞lß z obyΦejnΘ metody pravou a
nefalÜovanou funkci. Hodnota, kterou funkce vracφ, se naz²vß nßvratovß hodnota
funkce. Hlavnφ rozdφl mezi metodou a funkcφ je nßsledujφcφ:
Obr. 1 û ╚innost prßce metody
á
Obr. 2
û ╚innost prßce funkce
Deklarace funkce ve VB .NET
Nejd°φve se podφvejme na ukßzkovou deklaraci
funkce, a potΘ si povφme, z Φeho se deklaraΦnφ p°φkaz funkce sklßdß:
ááá Public Function Moje_Funkce(ByVal
Φφslo As Short)
As Integer
ááááááá Dim
Druhß_Mocnina As Integer
ááááááá Druhß_Mocnina = Φφslo * Φφslo
ááááááá Return
Druhß_Mocnina
ááá End
Function
DeklaraΦnφ p°φkaz pro vytvo°enφ funkce poz∙stßvß
z t∞chto hlavnφch souΦßstφ:
Modifikßtor
p°φstupu urΦuje ·rove≥, na kterΘ bude funkce p°φstupnß. Jin²mi slovy, pomocφ
modifikßtoru p°φstupu m∙₧ete urΦit, zdali bude funkce ve°ejnß (Public), a tak p°φstupnß z celΘho projektu, nebo naopak soukromß (Private). Soukromß funkce je p°φstupnß pouze v rßmci vyÜÜφho programovΘho
bloku, v kterΘm je deklarovßna (tφmto blokem m∙₧e b²t nap°φklad t°φda). Krom∞
modifikßtor∙ Public a Private existujφ jeÜt∞ dalÜφ (Protected, Friend a Protected Friend), ovÜem t∞mi se v tΘto
chvφli nebudeme zab²vat.
Tento p°φkaz musφ nßsledovat ihned za specifikacφ modifikßtoru p°φstupu. P°φkaz
°φkß Visual Basicu, ₧e budete chtφt vytvo°it funkci. Prot∞jÜkem p°φkazu Function je p°φkaz End Function. Tyto dva p°φkazy ohraniΦujφ
takzvanΘ t∞lo funkce. T∞lem funkce se proto rozumφ vÜechny °ßdky programovΘho
k≤du, kterΘ se nachßzejφ mezi p°φkazy Function a End Function.á
Nßzev funkce
p°edstavuje u₧ivatelsky p°φv∞tivΘ pojmenovßnφ funkce (v naÜem p°φpade je nßzvem
funkce °et∞zec Moje_Funkce). Zvolen² nßzev funkce budete
pou₧φvat v₧dy, kdy₧ budete chtφt funkci zavolat.
Pod pojmem
signatura funkce se rozumφ seznam parametr∙ funkce, kter² je umφst∞n v kulat²ch
zßvorkßch. Jestli₧e signatura funkce obsahuje vφc jak jeden parametr, jsou
parametry od sebe odd∞leny Φßrkami. Signatura funkce nemusφ takΘ obsahovat
₧ßdn² parametr, ovÜem i v tomto p°φpad∞ je pou₧itφ kulat²ch zßvorek
povinnΘ. V naÜem p°φklad∞ tvo°φ signaturu funkce jenom jeden parametr
datovΘho typu Short s nßzvem Φφslo. Bli₧Üφ pohled na parametry a argumenty m∙₧ete najφt v kapitole Charakteristika pojm∙ argument a parametr.
Jak ji₧ vφte,
funkce po vykonßnφ svΘ prßce vracφ nßvratovou hodnotu. V deklaraΦnφm
p°φkazu je pot°ebnΘ determinovat datov² typ nßvratovΘ hodnoty funkce. UrΦenφ
nßvratovΘ hodnoty funkce se uskuteΦnφ zapsßnφm klφΦovΘho slova As za signaturu funkce a p°idßnφm nßzvu platnΘho datovΘho typu.
Z deklarace naÜφ funkce je z°ejmΘ, ₧e funkce bude vracet celoΦφselnou
hodnotu typu Integer. Vrßcenφ hodnoty mß na starosti p°φkaz
Return. VÜe, co se nachßzφ za tφmto p°φkazem tvo°φ nßvratovou hodnotu funkce
(v naÜem p°φpad∞ jde o hodnotu prom∞nnΘ Druhß_Mocnina). áá
NaÜe funkce (Moje_Funkce) pracuje v n∞kolika krocφch. Abyste ovÜem byli schopni opravdu
pochopit skuteΦnou Φinnost funkce, musφme si nejprve oz°ejmit pojmy argument a
parametr.
Charakteristika pojm∙ argument a parametr
Pojmy argument a parametr jsou ve sv∞t∞ programovßnφ velice
d∙le₧itΘ, a proto bude dobrΘ, kdy₧ budete jejich studiu v∞novat vφce Φasu. Argumentem se rozumφ hodnota, kterß je poskytnuta funkci jako
jakßsi ävstupnφ surovinaô. Aby ovÜem funkce mohla tuto hodnotu p°ijmout a
uchovat, musφ disponovat parametrem, neboli prom∞nnou, do kterΘ se p°ijφmanß hodnota ulo₧φ. Vztah mezi argumentem a
parametrem je znßzorn∞n na obr. 3.
Obr. 3 û Ilustrace vztahu argumentu a parametru
Charakteristika zp∙sobu p°edßvßnφ argument∙
Visual Basic .NET podporuje dv∞ varianty
p°edßvßnφ argument∙:
P°i p°edßvßnφ
argument∙ hodnotou je volanΘ funkci poskytnuta jenom kopie skuteΦnΘho
argumentu. Funkce tak pracuje pouze s kopii skuteΦnΘho argumentu a i kdy₧
argument zm∞nφ, tato zm∞na bude pouze lokßlnφ a nijak neovlivnφ skuteΦn²
argument. Jestli₧e budete chtφt, aby byl argument funkci p°edßn hodnotou, p°ed
nßzev parametru, jen₧ bude p°ijφmat tento argument, dodßte klφΦovΘ slovo ByVal. Pou₧itφ tohoto klφΦovΘho slova p°i p°edßvßnφ argument∙ hodnotou ovÜem
nenφ povinnΘ, proto₧e VB .NET implicitn∞ p°edßvß vÜechny argumenty hodnotou. Kdy₧
tedy p°ed jmΘno p°ijφmacφho parametru nep°idßte klφΦovΘ slovo ByVal, nic se ned∞je, stejn∞ bude argument p°edßvßn hodnotou. Zapsßnφ
klφΦovΘho slova ByVal ale zp°ehled≥uje k≤d a vizußln∞ vßs
informuje o zp∙sobu p°edßvßnφ argument∙. á
Na druhΘ stran∞ se
m∙₧ete st°etnout takΘ s p°edßvßnφm argument∙ odkazem. V tomto p°φpad∞
je volanΘ funkci poskytnut skuteΦn² argument. P°esn∞ji, funkci je dodßn ukazatel
na pam∞¥ovou adresu, na kterΘ se skuteΦn² argument nachßzφ. Kdy₧ funkce zφskß
p°φstup ke skuteΦnΘ hodnot∞, m∙₧e ji takΘ lehce modifikovat podle sv²ch
po₧adavk∙. Kdy₧ budete chtφt, aby byl parametru funkce p°edßn argument odkazem,
p°ed jmΘno parametru p°idejte klφΦovΘ slovo ByRef. P°edßvßnφ argument∙ odkazem je velmi u₧iteΦnß technika, kterß se
vyu₧φvß takΘ p°i n∞kter²ch pokroΦil²ch programovacφch postupech.
Praktickß ukßzka pou₧itφ funkce
V tΘto praktickΘ studii si ukß₧eme, jak
volat funkci z volajφcφ procedury. Postupujte takto:
ááá Public
Function Moje_Funkce(ByVal
Φφslo As Short)
As Integer
ááááááá Dim
Druhß_Mocnina As Integer
ááááááá Druhß_Mocnina = Φφslo * Φφslo
ááááááá Return
Druhß_Mocnina
ááá
End Function
á
áááááááá
áááááááá
MessageBox.Show(Moje_Funkce(100).ToString)
JednotlivΘ Φßsti deklarace funkce Moje_Funkce jsme si ji₧ objasnili. V tΘto chvφli se zam∞°te na parametr
funkce s nßzvem Φφslo. Jak vidφte, p°ed jmΘnem parametru je
uvedeno klφΦovΘ slovo ByVal, kterΘ indikuje, ₧e
argument, kter² bude parametr p°ijφmat, bude p°edßvßn hodnotou. Parametr bude
tedy obsahovat jenom kopii skuteΦnΘ hodnoty. A jakß₧e hodnota bude parametru
p°edanß? Bude to hodnota, kterß je poskytnuta funkci p°i jejφm zavolßnφ
z volajφcφ procedury. Kdy₧ se podφvßte na k≤d udßlostnφ procedury Click tlaΦφtka Button1, uvidφte, ₧e funkci je poskytnuta
celoΦφselnß hodnota 100.
Poj∩me ovÜem dßl a podφvejme se blφ₧e na
algoritmus prßce funkce.
PotΘ, co je funkci dodßna hodnota 100, je kopie tΘto hodnoty (resp. tohoto argumentu) umφst∞na do parametru Φφslo. Proto₧e je parametr deklarovßn jako prom∞nnß datovΘho typu Short, jeho₧ rozsah tvo°φ uzav°en² interval <-32,768, 32,767>, je vÜe v po°ßdku a kopie argumentu m∙₧e b²t ·sp∞Ün∞ ulo₧ena do prom∞nnΘ Φφslo. Kdybyste ovÜem p°ekroΦili povolen² rozsah datovΘho typu, program by nepracoval sprßvn∞ a st°etli byste se s chybou za b∞hu programu. á
V okam₧iku, kdy parametr funkce obsahuje kopii skuteΦnΘ hodnoty, je tato kopie pou₧ita k dalÜφ operaci, kterou je vypoΦtenφ jejφ druhΘ mocniny. V²sledek souΦinu je poslΘze ulo₧en do lokßlnφ prom∞nnΘ s nßzvem Druhß_Mocnina. Ve finßlnφm kroku je vypoΦtenß druhß mocnina argumentu vrßcena pomocφ p°φkazu Return volajφcφ udßlostnφ procedu°e Button1_Click. Vrßcenß hodnota je nakonec zobrazena v okn∞ se zprßvou, kterΘ je zobrazeno prost°ednictvφm metody Show t°φdy MessageBox.á
Jßn Hanßk