Třída

Jak jsme si již vysvětlovali, třída je v podstatě model, který říká, jaké vlastnosti a chování by měly mít objekty, které budou na základě takové třídy vznikat. Je důležité si uvědomit, že třída není objekt.

Pojďme si zkusit uvést jednoduchý příklad. V našem programu budeme chtít vést evidenci lidí. O každém z nich budeme potřebovat evidovat určité údaje, např. jménopříjmení a věk. V rámci OOP myšlení tyto údaje označujeme jako vlastnosti. V programování tyto vlastnosti realizujeme za pomoci proměnných. Pro úplnost dodám, že v jazyce C# se dají vlastnosti řešit pomocí tzv. properties, my však budeme pro zachování jednoduchosti výuky zatím vycházet z principu, že vlastnosti je možno definovat pomocí “běžných” proměnných.

Abychom byli úplní, přidáme také nějaké to chování. Každý človíček se bude umět představit, čehož docílíme vytvořením metody PredstavSe().

Třída Clovek

Takže si vytvoříme třídu Clovek, v níž deklarujeme 3 proměnné a 1 metodu.

C#
class Clovek 
{
  string jmeno;
  string prijmeni;
  int vek;
  
  void PredstavSe()
  {
    Console.WriteLine($"Ahoj, jmenuji se {jmeno} {prijmeni} a je mi {vek} let.");
  }
}

Takto vytvořená třída slouží jako model pro každý objekt, který v budoucnu vytvoříme. Můžeme vytvořit třeba tisíc objektů, které jsou datového typu Clovek (jsou definovány třídou Clovek).

Každý takto vytvořený objekt bude mít vždy stejné vlastnosti. Každý objekt bude mít nějaké jméno, příjmení a věk, ale jejich hodnota se bude velmi pravděpodobně lišit. Podívejme se na příklad:

  • Jan, Novák, 30
  • Lucie, Mladá, 19
  • Josef, Starý, 99

Máme vytvořeny tři objekty. Všechny jsou stejného datového typu (Clovek), který předepisuje jejich vlastnosti i chování. Všechny tři tyto objekty mají stejné vlastnosti… jen jejich hodnoty se liší. Zatímco u prvního objektu bude mít vlastnost “jmeno” hodnotu Jan, u druhého objektu bude hodnota této vlastnosti Lucie. První objekt má  hodnotu vlastnosti “vek” nastavenou na číslo 30. Druhý objekt má stejnou vlastnost nastavenou na hodnotu 19. Třetí objekt na hodnotu 99.

A co to chování? Ve třídě je umístěna definice chování pro každý objekt, který bude touto třídou vytvořen. Všechny objekty budou mít tedy naprosto stejné chování. Koukněme se, jak by vypadal výstup metody “PredstavSe” u jednotlivých objektů:

  • Ahoj, jmenuji se Jan Novák a je mi 30 let.
  • Ahoj, jmenuji se Lucie Mladá a je mi 19 let.
  • Ahoj, jmenuji se Josef Starý a je mi 99 let.

Metoda, tedy chování, se u každého objektu vykoná naprosto stejně. Každý objekt vypíše jméno, příjmení a věk ve větě. A protože jsme objektům přiřadili různé hodnoty pro jméno, příjmení a věk, bude se výpis jednotlivých objektů trošku lišit.

Třída Bojovnik

Protože příkladů není nikdy dost, pojďme si ukázat další příklad, tentokrát s bojovníky.

Dejme tomu, že budeme chtít naprogramovat nějakou hru, v níž se mají vyskytovat bojovníci. Potřebujeme, aby měl každý bojovník vlastnosti jménopočet životů a v rámci chování by měl umět zastrašit nepřítele… k tomu mu nadefinujeme třeba metodu Zakric().

C#
class Bojovnik
{
  string jmeno;
  int pocetZivotu;
  
  void Zakric()
  {
    Console.WriteLine("GAAAAAAAAARRRR!!!");
  }
}

No, a vytvořit bychom mohli slušnou armádu bojovníků. Pro začátek však bude stačit třeba pět z nich:

  • Frank, 100
  • James, 90
  • Carl, 50
  • John, 75
  • Mike, 110

A každý z nich bude umět zakřičet “GAAAAAAAAARRRR!!!” 🙂

Už umíme vytvořit třídu, která slouží jako model (předpis) pro vznikající objekty. V této lekci jsme si vytvořili objekty takříkajíc na papíře. Ale jak se vlastně vytvářejí v kódu? Tak to si ukážeme v další lekci!