/ janturon.cz / Výuka / Java / Třídy

Třídy

Vytvořme aplikaci telefonního seznamu, která v konečné verzi bude vypadat nějak takto:

phonelist

Grafický vzhled bude vysvětlen až v následující lekci.

Návrh aplikace

Návrh znamená rozmyslet si, jakým způsobem se dostaneme k požadovanému programu. Princip programování v Javě je rozdělit problém to tříd plnících pomocí metod požadované úkoly. Rozdělme úkol do následujících tříd:

Contact.java // třída pro práci s kontaktem public class Contact { // private: přístup pouze ve třídě, ve které je definován private String name; private int phone; // konstruktor: slouží ke tvorbě objektů // public: přístup všude, i mimo třídu public Contact(String name, int phone) { // this: ukazatel na objekt třídy // operátor tečka: přístup ke členu this.name = name; this.phone = phone; } // String: návratová hodnota funkce (vrácena return) public String toString() { // toString je v třídě Integer statická metoda // "+" funguje i jako operátor spojování řetězců return name+": "+Integer.toString(phone); } } Test.java public class Test { public static void main(String args[]) { // vytvoření dvou objektů typu Contact: tonda a fanda Contact tonda = new Contact("Tonda Honda",111222333); Contact fanda = new Contact("Fanda Sranda",333222111); // toString je zde dynamická metoda: volá se na objektu System.out.println(tonda.toString()); System.out.println(fanda.toString()); } }

Zkompilujeme příkazem javac Test.java Contact.java a spustíme pomocí java Test. Jméno výslednému .class souboru dá soubor s metodou main.

Konzolovým výstupem v Test.class jsme otestovali správné fungování Contact.class, kterou v příští lekci použijeme v grafické aplikaci.

Vysvětlení použité syntaxe

Konstruktor je nástroj pro tvorbu objektů: proměnných typu třída. Od metody se liší tím, že se jmenuje jako třída a nemá návratový typ. Objekt vytvoříme zavoláním operátoru new na konstruktoru.

Ke členům objektu přistupujeme přes operátor tečky. Pokud označíme člen jako private, nebude přístupný mimo třídu, v níž je definován: nelze proto v třídě Test zapsat tonda.phone. Bývá zvykem všechny datové položky označit private a přistupovat k nim pouze přes metody. Této zásadě se říká zapouzdření. Všechny veřejné členy označujeme jako public.

Před každou proměnnou zapisujeme její typ (phone je int, name je String, tonda je Contact), před každou funkci zapisujeme její návratovou hodnotu (nebo void, pokud nic nevrací). Nedodržení typu skončí (narozdíl od Javascriptu či PHP) chybou v době kompilace - to je to striktní typování.

Statický člen se volá (tečkou) na třídě, ne na objektu. Statická metoda pochopitelně nemůže volat s nestatické (dynamické) datové položky. Dynamická metoda ale může volat statické členy.

Opakování