V našem seriálu o výuce objektově orientovaného programování postupujume k dalším podkapitolám výkladu: definice třídy, úprava konstruktoru a konstruktor s parametry. V minulém díle jsme se zabývali vytvořením vlastní třídy a zdrojovým kódem třídy.
2.3 Definice třídy
Projdeme si nyní vlastní definici třídy, ukážeme si, z jakých se skládá částí a povíme si, co jednotlivé části znamenají:
public – klíčové slovo, které říká, že třída je veřejná a kdokoliv (tedy i BlueJ) ji může použít.
class – klíčové slovo oznamující, že definujeme novou třídu.
Smrk – název definované třídy. Musí vyhovovat pravidlům pro tvorbu identifikátorů (viz sekce Pravidla pro tvorbu identifikátorů v kapitole 1. Třídy a objekty) a podle konvence by měl začínat velkým písmenem.
{ … } – vše, co je uzavřeno v následujících složených závorkách, označujeme jako tělo třídy. Vše, co je před tělem třídy, označujeme jako hlavička třídy.
//Smrk – nepovinný závěrečný komentář, který sem ve svých programech vkládám proto, abych rychle poznal, kterou třídu jsem právě definoval, a to i tehdy, uvidím-li pouze její konec. Komentář mi navíc pomáhá určit, že právě tato uzavírací závorka je koncem těla třídy.
S výjimkou dvou přesně specifikovaných příkazů (budeme o nich mluvit později) musí být v jazyku Java vše ostatní, tj. atributy i metody, definováno v těle třídy.
Definice třídy ve vygenerovaném programu začíná sérií komentářů, které nám napovídají pořadí, v němž je vhodné do programu zařazovat definice jednotlivých částí třídy. Toto pořadí sice není povinné, ale pokud si na ně zvyknete a budete je dodržovat, budete se ve svých programech mnohem rychleji orientovat.
Abyste si ověřili, že to opravdu stačí, požádejte BlueJ o vytvoření nové třídy, kterou nazvete např. PrázdnáTřída (klidně si na ní vyzkoušejte, že Java diakritiku zvládá). Pak otevřete její zdrojový kód a vše, co nemusí být v definici, smažte. Výsledkem bude definice:
public class PrázdnáTřída
{
}
Abyste si vyzkoušeli, že Javě je úplně jedno, kde končí řádky, upravte definici do toho nejstručnějšího tvaru:
public class PrázdnáTřída{}
Abychom mohli náš kód vyzkoušet, musíme jej nejprve přeložit. Stiskněte proto na horní liště editoru tlačítko Přeložit. Jak nám BlueJ oznámí v dolním informačním okně, tak nejprve upravený soubor uloží, pak se na chvíli zamyslí a za chvíli nám v tomto poli oznámí, že „Třída byla úspěšně přeložena – žádné syntaktické chyby“.
Obrázek 2.6: Okno editoru se zprávou o úspěšném překladu třídy PrázdnáTřída.
Překladem třídy zmizí i šrafování ikony třídy v diagramu tříd. Můžeme tedy zkusit vytvořit její instanci. Možná vás překvapí, že v místní nabídce třídy najdete její konstruktor, i když jste žádný nedefinovali. Je to proto, že třída nějaký konstruktor mít musí. Autoři jazyka nás ale nechtěli nutit psát prázdné, nic nedělající konstruktory. Definovali proto jazyk tak, že v případě, kdy vůbec žádný konstruktor nenadefinujeme, tak se nás překladači zželí a místo toho, aby nás nutil něco doplňovat, nadefinuje prázdný bezparametrický konstruktor místo nás sám.
Zkuste tedy vytvořit instanci a ověřte, že vše funguje.
Obrázek 2.7: Instance a místní nabídka prázdné třídy.
Samozřejmě, že s takto vytvořenou instancí nemůžeme skoro nic dělat. Otevřete proto její místní nabídku, nechte ji odstranit a totéž pak proveďte i s celou třídou. Protože odstranění třídy je přece jenom operace, která má na celý projekt zásadnější dopad, tak se vás BlueJ pro jistotu nejprve zeptá, jestli to s tím odstraněním třídy myslíte vážně. Jakmile svůj úmysl potvrdíte, odstraní nejenom zdrojový soubor třídy, ale i všechny zmínky o tom, že třída byla někdy součástí projektu.
Obrázek 2.8: Potvrzovací dotaz před smazáním třídy.
Rudolf Pecinovský
0 komentářů:
Okomentovat