Třídy
Třída představuje vzor, prostřednictvím kterého lze vytvářet objekty. Objekty někdy také nazýváme instancemi třídy. Tyto pojmy se často vzájemně zaměňují. V programovacím jazyce Java je kód umístěn uvnitř třídy, tj. v bloku s její deklarací. Každý program musí mít minimálně jednu třídu.Deklarace třídy
Deklarace třídy začíná klíčovým slovem class, před ním se mohou vyskytovat tzv. modifkátory přístupu (viz dále) Tělo třídy je uzavřeno do složených závorek a obsahuje nějaký výkonný kód. Prozatím vynecháme případy, kdy třída může být potomkem jiné třídy (s nimi se setkáme až v článcích věnovaných jednoduché dědičnosti). Následující deklarace třídy je oproti skutečnosti poněkud zjednodušená, avšak pro první seznámení poměrně názorná.modifikátor class identifikator
{
//kod
}
Všimněme si, že na rozdíl od jazyka C++ není deklarace třídy ukončena středníkem. Existují tři typy modifkátorů, které ovlivňují přístup ke komponentám třídy. Jejich popis uveďme zatím bez bližšího vysvětlování v tab.
Modifkátor | Popis |
public tzv. veřejná třída. | Přístupná i mimo balíček, ve kterém byla deklarována. Nejčastěji používaná varianta. |
abstract tzv. abstraktní třída. | Od třídy nelze vytvořit objekt. |
final tzv. finální třída. | Od třídy nelze odvodit potomky. |
Pokud před klíčovým slovem class není uveden žádný modifikátor, považujeme třídu za soukromou. Od takové třídy lze vytvořit objekt, může být rodičovskou třídou. Některé modifikátory lze vzájemně kombinovat, jsou povoleny kombinace 1+2 a 1+3.
Tělo třídy a přístupová práva
Tělo třídy je uzavřeno do složených závorek, nalezneme v něm deklarace členů třídy, tj. datových položek a metod. Ke každé z nich je možno nastavit přístupová práva. V Javě existují čtyři základní typy přístupových práv; jsou podobná přístupovým právům v jazyce C++, jejich přehled nalezneme v tab.Příst. právo | Popis |
public Veřejné členy. | Mohou být použity kdekoliv: v jiné třídě, v jiném balíku, mohou je používat i případní potomci. Tyto členy představují rozhraní, jako public deklarujeme metody, nikoliv proměnné. |
private Soukromé členy. | Mohou být používány jen v metodách třídy, do které patří. Nelze k nim přistoupit z vnějšku třídy. Jako private bývají deklarovány proměnné, tímto způsobem je realizován princip zapouzdření dat. |
protected Chráněné členy. | Mohou být použity v metodách třídy, kde vznikly, v metodách jejich potomků a ve všech třídách téhož balíčku. Potomci nemusí být ve stejném balíčku jako rodičovská třída. |
neuvedeno Přátelské členy. | Mohou být používány pouze v rámci balíčku. |
Princip zapouzdření. S aplikacemi přístupových práv k jednotlivým se budeme zabývat v dalším výkladu. Zopakujme na tomto místě, že při návrhu třídy je nutno dodržovat princip zapouzdření dat, kdy s datovými položkami mohou manipulovat pouze metody třídy. Měly by být proto deklarovány jako privátní. Naopak metody by měly být deklarovány jako veřejné. Zajistíme tak autorizovaný přístup k datům.
Návrh třídy. Vytvořme následující veřejnou třídu, na které si ukážeme některé základní operace s objekty.
public class Souradnice
{
private double delka, uhel;
public double x ()
{
return delka*Math.cos(180*uhel/Math.PI);
}
public double y ()
{
return delka*Math.sin(180*uhel/Math.PI);
}
public static void main (String [] args)
{
//zatim zadny kod
}
}
Třída souradnice obsahuje dvě datové položky, tj. proměnné typu double, představující polární souřadnice deklarované jako private a dvě metody pro výpočet pravoúhlých souřadnic deklarovaných jako public. Při návrhu jsme se tedy snažili dodržet princip zapouzdření dat, který je jednou ze základních vlastností OOP. Metoda main() zatím neobsahuje žádný výkonný kód, její tělo je prázdné.
Autor: Filip Koval