Seriál o výuce objektově orientovaného programování postupuje k podkapitolám 2.6. Syntaktická definice a 2.7. Dokumentační komentáře. V minulém díle jsme si probrali definici třídy, úpravu konstruktoru a konstruktor s parametry.
2.6 Syntaktické definice
Poznámka: Tato kapitola trochu odbočuje od vlastního výkladu. Chtěl bych vás v ní seznámit se způsobem zápisu syntaktických definic, pomocí nichž lze jednoznačně popsat, jak má vysvětlovaná konstrukce vypadat. Možná bude některým z vás připadat těžká. Pokud se vám bude zdát, že je příliš abstraktní, klidně ji přeskočte a vraťte se k ní později, až si budete chtít ujasnit, jak si máte nějakou syntaktickou definici „přeložit". |
Při popisu syntaxe programových konstrukcí (syntaxe = souhrn pravidel, jak konstrukci zapsat) nebývá slovní popis optimálním způsobem vyjádření, protože se při něm často ztrácejí cenné informace v záplavě okolních slov. V programátorském světě se proto používají jiné druhy popisu. Jedním z nich jsou syntaktické definice. Ty budu používat i já.
V syntaktických definicích je třeba rozlišit, co se z nich má do programu „opsat", co pouze zastupuje nějaký objekt a co je pouze pomocný vyjadřovací prostředek pro popis struktury dané konstrukce. V syntaktických definicích, které budu v tomto kurzu používat, uvedu vždy na prvním řádku červeně název popisované konstrukce a na dalších, odsazených řádcích pak popíšu vlastní definici. V ní budu používat následující prvky:
modře Modrou barvu budu používat pro ty části konstrukce, které se mají do výsledného programu opsat (např. pro složené závorky ohraničující tělo konstruktoru či třídy nebo pro čárku oddělující jednotlivé parametry v seznamu).
název Černě a pro vyšší odlišení budu psát názvy prvků, které se v definici vyskytují, kurzivou. Místo nich pak do programu napíšete příslušný prvek.
[ ] Červené hranaté závorky budou uzavírat tu část konstrukce, která se v ní může, ale také nemusí vyskytovat.
… Červená výpustka bude následovat za prvkem, který se může v konstrukci vyskytovat opakovaně.
{ } Červené složené závorky budou uzavírat skupinu prvků, s nimiž budu chtít v definici pracovat jako s celkem - např. za ně budu chtít vložit výpustku naznačující, že celá skupina se může opakovat.
| Červené svislítko bude mít funkci nebo, která říká, že ve výsledné konstrukci se může objevit buď prvek vlevo od něj, anebo prvek vpravo od něj. Ne však oba zároveň (to bychom museli zapsat jinak).
Definici konstruktoru bychom podle těchto pravidel zapsali následovně:
Konstruktor: [ modifikátor ]… název_třídy ( [ definice_parametru [ , definice_parametru ]… ] ) { [ příkaz ]… }
Definice_parametru: typ název
Definici interpretujeme tak, že na počátku se může, ale nemusí vyskytovat modifikátor (zatím známe pouze modifikátor public, ale je jich víc). Modifikátorů dokonce může být i víc.
Za modifikátorem následuje název třídy, jejíž instance konstruktor vytváří, a za ním pak otevírací kulatá závorka uvozující seznam případných parametrů. Za ní může, ale nemusí být uvedena definice použitého parametru. Za definicí prvního parametru mohou být i definice dalších parametrů, ale každá z nich již musí být od předchozí definice oddělena čárkou.
Za seznamem parametrů napíšeme zavírací kulatou závorku a za ní otevírací složenou závorku uvozující tělo konstruktoru. V těle konstruktoru nemusí být nic, ale může tam být i několik příkazů. Tělo ukončí uzavírací složená závorka.
V definici konstruktoru se vyskytuje prvek definice_parametru. Ten vytvoříme tak, že uvedeme typ parametru a za ním jeho název.
Abychom si ukázali použití červených složených závorek a svislítka, rozebereme si ještě definici identifikátoru:
Identifikátor: { písmeno | _ | $ } [ písmeno | _ | $ | číslice ]…Tato definice je však nešikovná a uvedl jsem ji pouze proto, abych v ní mohl použít i složené závorky. V praxi bychom identifikátor definovali asi následovně:
Identifikátor: zobecněné_písmeno [ zobecněné_písmeno | číslice ]…
Zobecněné_písmeno: písmeno | _ | $
Tato definice říká, že identifikátor musí začínat zobecněným písmenem, za ním může následovat libovolný počet zobecněných písmen a číslic.
Rudolf Pecinovský
0 komentářů:
Okomentovat