Rudolf Pecinovský: Učíme OOP (6) – Definice třídy, úprava konstruktoru, konstruktor s parametry

pondělí 10. února 2003 ·

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ářů:

Č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.