Rudolf Pecinovský: Učíme objektově orientované programování (5) – Vytváříme vlastní třídu

středa 29. ledna 2003 ·

V našem seriálu postupujeme do druhé kapitoly "Vytváříme vlastní třídu". V ní se budeme postupně seznamovat se zápisem všech konstrukcí, které jsme si v první kapitole "Třídy a objekty" vysvětlili.

2. Vytváříme vlastní třídu

V minulé kapitole jsme spíše teoretizovali a ukazovali si, jak co funguje. V této kapitole začneme opravdu programovat a napíšeme své první řádky. Nezačneme však od nuly, ale budeme rozšiřovat projekt, s nímž jsme se seznámili v minulé kapitole.

Předem se omlouvám, že tato kapitola bude asi trochu delší, protože se v ní budeme postupně seznamovat se zápisem všech konstrukcí, které jsme si v minulé kapitole vysvětlili. Budeme se v ní proto věnovat prakticky pouze kódu, tj. tomu, jak to či ono zapsat. Od příští kapitoly bych chtěl již obě části výkladu vyvážit. Vždy si budeme chvíli vyprávět o třídách, objektech a jejich vlastnostech a pak si ukážeme, jak to, co jsme se právě naučili, zapsat do programu.

Pro práci s touto kapitolou si z adresy http://vyuka.pecinovsky.cz/02_tvary_0.zip stáhněte nový projekt a soubor rozbalte do své složky s projekty. Rozbalte jej přitom i s podsložkami, takže vznikne složka 02_tvary-0, v níž bude vedle tříd, s nimiž jsme se setkali v minulé kapitole, také třída Smrk, o které budu hovořit v kapitole této.

2.1 Vytvoření vlastní třídy

Říkali jsme si, že základem všeho jsou objekty a ty že jsou instancemi svých tříd. Abychom mohli mít objekt, musíme mít nejprve třídu, jejíž instancí objekt bude.

Poté jsme se dozvěděli, že objekty vytvoříme tak, že prostřednictvím operátoru new zavoláme konstruktor, což je speciální metoda mateřské třídy vytvářených objektů. Tato metoda nemá na starosti prakticky nic jiného, než objekt správně vytvořit.

Zůstaneme ještě chvíli v minulém projektu a podíváme se, jak bychom mohli vytvořit novou třídu a jak bychom v ní nadefinovali konstruktor, jenž by vytvořil ten správný objekt.

1. Stiskneme vlevo tlačítko Nová třída.

Obrázek 2.1: Vytvoření nové třídy.

2. V následně otevřeném dialogovém okně zadejte název třídy, který musí odpovídat pravidlům pro identifikátory (zadejte např. Smrk).

Obrázek 2.2: Zadání názvu vytvářené třídy.

3. Ověřte, že budete opravdu vytvářet obyčejnou třídu a své zadání potvrďte. BlueJ pak přidá právě vytvořenou třídu do diagramu tříd.

Obrázek 2.3: Přidání nové třídy do diagramu tříd.

Obdélník s novou třídou je prozatím vyšrafován, ale my již víme, že šrafování znamená jen to, že třída ještě není přeložena. Stiskneme proto tlačítko Přeložit a můžeme hned zkusit vytvořit instanci nově definované třídy.

Konvence při tvorbě identifikátorů:
V programech psaných v jazyku Java se ustálily jisté konvence. Jednou z nich je zvyk definovat všechny identifikátory tříd s velkým počátečním písmenem a identifikátory instancí a metod s malým počátečním písmenem. Sestává-li identifikátor z několika slov, používá se tzv. velbloudí notace, při níž je každé počáteční písmeno dalšího slova v identifikátoru velké a ostatní písmena jsou malá – např. DlouhýNázevTřídy nebo dlouhýNázevMetody().

2.2 Zdrojový kód třídy

Instance se vytvoří, ale nebude nic umět. V místní nabídce je sice položka String toString(), ale tato metoda slouží spíše pro následné ladění – jejím jediným úkolem je vrátit textový řetězec obsahující dostatečné informace pro identifikaci instance. Vybavení třídy potřebnými schopnostmi je na nás. Abychom tak mohli učinit, musíme otevřít její zdrojový kód, tj. soubor, kam jsme my nebo někdo jiný zapsali program. Můžeme toho dosáhnout dvěma způsoby:

  • poklepeme na třídu (přesněji na její ikonu, tj. na příslušný obdélník v diagramu tříd);
  • v místní nabídce třídy zadáme příkaz Otevřít v editoru.

Vyberte si postup, který je vám sympatičtější a otevřete editor se zdrojovým kódem třídy, který pro nás vygeneroval BlueJ v okamžiku, kdy jsme jej požádali o vytvoření nové třídy. Je to téměř prázdná definice třídy, do které budeme vpisovat náš program. Jinými slovy: BlueJ za nás napsal to, co bychom stejně museli (nebo alespoň měli) napsat, a přidal i nějaké komentáře, které mají pomoci výsledný program zpřehlednit a uspořádat.

Obrázek 2.4: Okno zabudovaného editoru

Poznámka:
Všechny současné programátorské editory používají barevné odlišení syntaxe, které výrazným způsobem zvyšuje přehlednost a srozumitelnost programu. Protože webová podoba tohoto učebního textu umožňuje využití barev, budu se snažit použít toto barevné zvýraznění i v ukázkách programů uvedených v textu.
Základní vlastnosti zabudovaného editoru

Autoři editoru dodávaného s prostředím BlueJ se snažili vytvořit program maximálně jednoduchý, aby žáci zvládli jeho ovládání co nejrychleji, avšak na druhou stranu dostatečně komfortní, aby jim tvorbu jejich programů co nejvíce usnadnil.

Mezi základní „komfortní doplňky“, které v současné době patří již k téměř povinné výbavě všech programátorských editorů, patří možnost automatického odsazování, barevného zvýraznění syntaxe, vytváření záložních kopií, zobrazování čísel řádků a schopnost dohledání a označení párové závorky k závorce, u které je textový kurzor. Navíc nám zabudovaný editor umožňuje nastavit velikost použitého písma (jinou použijeme při vlastní tvorbě a jinou pak při její prezentaci před skupinou posluchačů).

Všechny tyto vlastnosti můžeme nastavit či naopak potlačit v dialogovém okně, jež vyvoláme příkazem Předvolby > Nastavení….

Obrázek 2.5: Nastavení předvoleb pro editor a překladač (poklepáním zvětšíte)

Když už jsme toto dialogové okno otevřeli, povíme si i o ostatních možnostech, které jdou na kartě Různé nastavit. Prvním z nich je povolení novinek z JDK 1.4. Verze 1.4 totiž zavedla nové klíčové slovo assert. Jeho použití je však implicitně zakázáno pro případ, že by je někdo ve svých starších programech již použil jako identifikátor. Kdo však ví, že slovo assert ve svých programech nikdy nepoužil, může je povolit. Protože my vytváříme programy zcela nové, rádi jeho použití povolíme, abychom později mohli využít jeho příjemných vlastností.

Druhou možností je nastavení adresy s dokumentací standardní knihovny. Po instalaci je zde nastavena internetová adresa této dokumentace na stránkách firmy Sun. Pokud jste spolu s JDK instalovali i jeho dokumentaci, doporučuji vám přepsat tuto adresu na lokální adresu ve vašem počítači. Na obrázku 2.5 si všimněte, že se zde nastavuje absolutní cesta k souboru index.html ve složce api, jež je podsložkou složky, do níž jste dokumentaci instalovali.

Pokud jste se zalekli rozměru dokumentace a neinstalovali jste ji, zrušte zaškrtnutí políčka Použít toto URL při generování projektové dokumentace. Jedinou výhodou, o níž se zrušením tohoto zaškrtnutí připravíte, je to, že do vaší dokumentace nebudou vloženy odkazy na dokumentaci souvisejících částí standardní knihovny. Až si budeme povídat o dokumentaci, ještě se k tomu vrátíme.

Soubor se zdrojovým kódem

Vraťme se ale k editoru, jehož okno je na obrázku 2.4, a podívejme se na kód právě vytvořené třídy Smrk. Prozradím vám, že tento kód je uložen v souboru, který se jmenuje stejně jako v něm definovaná třída a který má příponu .java. To je důležité! Kdybyste totiž později chtěli přejmenovat třídu, musíte myslet na to, že spolu s třídou se musí přejmenovat i soubor, v němž je její zdrojový kód. (Navíc se musí přejmenovat všechny konstruktory, které se také jmenují stejně jako třída.)

Poznámka:
V souboru s příponou .java je opravdu vše, co potřebujete. Budete-li chtít někdy své programy někam přenést, stačí přenést pouze soubory .java. Vše ostatní potřebné pro správný vývoj programu si již BlueJ (a většina ostatních vývojových prostředí) dokáže znovu vytvořit.

Tři druhy komentářů

Na počátku vygenerovaného zdrojového kódu najdeme komentář. Jeho podoba odpovídá podobě komentáře, který znáte z Baltíkových programů: obecný komentář začíná dvojicí znaků /* a končí inverzní dvojicí */ – tyto dvojice slouží jako komentářové závorky. Vše, co mezi nimi překladač najde, ignoruje. Zapamatujte si, že komentář má stejný význam jako mezera (jinými slovy: kde smí být mezera, tam smí být komentář – výjimkou je pouze vnitřek textových řetězců).

Vedle výše popsaných obecných komentářů, jejichž délka není nijak omezena, existují ještě jednořádkové komentáře (ty také znáte z Baltíka), které začínají dvojicí znaků // a končí spolu s koncem řádku.

Programovací jazyk Java zavádí navíc ještě dokumentační komentář, který vypadá skoro stejně jako obecný komentář a liší se pouze tím, že začíná trojicí znaků /**. Do těchto komentářů se zapisuje dokumentace k vytvářenému programu. Časem se k nim ještě vrátíme.

Pokračovací řádky obecných a dokumentačních komentářů bývá dobrým zvykem začínat hvězdičkami. Ty sice nejsou povinné, ale zvyšují přehlednost programu. Proto je tam řada programátorských editorů (mezi nimi i BlueJ) automaticky vkládá. Zkuste klepnout do kteréhokoliv řádku uprostřed dokumentačního komentáře a stisknout Enter – editor vloží nový řádek a zahájí jej tím, že pod hvězdičku současného řádku vloží také hvězdičku a znakový kurzor přesune až za ni. Kdybyste do programu někam vložili obecný komentář, zjistíte, že se chová stejně.

Vhodné komentáře dokáží výrazně zvýšit čitelnost programu. Naučte se své programy dostatečně komentovat, abyste pak při pozdějších úpravách nemuseli pracně analyzovat, jak jste to tenkrát mysleli. V průběhu seriálu se k této problematice vrátím ještě podrobněji.

Úkol:
Doplňte dokumentační komentář na začátku souboru o popis účelu dané třídy, název autora a popis verze. Můj soubor by pak začínal následovně:

/**
 * Trida Smrk slouzi k vyuce zakladu prace se zdrojovym kodem.
 * Je soucasti projektu Tvary, jenz je startovacim projektem
 * kurzu objektove orientovaneho programovani.
 *
 * @author  Rudolf Pecinovsky
 * @version  1.06, 2.1.2003
 */


Autor pracuje jako EDU expert ve firmě Amaio Technologies, Inc.

Rudolf Pecinovský

0 komentářů:

Články dle data



Učitelské listy

Nabídka práce

Česká škola - portál pro ZŠ a SŠ

Česká škola poskytuje svým čtenářům diskusní prostor k vyjádření názorů na školskou problematiku. Tyto příspěvky se nemusí shodovat se stanoviskem redakce České školy a jsou uveřejňovány jako podnět k dalším diskusím.

Obsah článků nemusí vyjadřovat stanovisko redakce nebo vydavatele Albatros Media, a.s.


Všechna práva vyhrazena.

Tento server dodržuje právní předpisy
o ochraně osobních údajů.

ISSN 1213-6018




Licence Creative Commons

Obsah podléhá licenci Creative Commons Uveďte autora-Neužívejte dílo komerčně-Nezasahujte do díla 3.0 Česká republika, pokud není uvedeno jinak nebo nejde-li o tiskové zprávy.



WebArchiv - archiv českého webu



Tyto webové stránky používají k poskytování služeb, personalizaci reklam a analýze návštěvnosti soubory cookie. Informace o tom, jak tyto webové stránky používáte, jsou sdíleny se společností Google. Používáním těchto webových stránek souhlasíte s použitím souborů cookie.