IB111 – cv. 11 Třídy a objekty Miroslav Kadlec Obsah ● Myšlenka objektů ● Třída ● Objekt ● Objekty v reálném světě vs. v počítači ● Geometricé tvary (sbírka) ● Nádoba ● Návrh objektů v DÚ 2 ● DÚ 5 Myšlenka objektů a tříd ● Objekt – něco, co v sobě spojuje data (proměnné) a funkcionalitu (metody) ● Tyto věci obvykle spolu nějak logicky souvisí – viz příklady dále ● Třída – předpis, šablona, která udává, jak objekt vypadá ● Definuje – Atributy – Metody ● Metoda = funkce definovaná ve třídě Objekty a třídy v Pythonu ● Třída ● Označena "class", má jméno, které ji vystihuje – class Student(object): ● Metoda "def __int__(parametry):" – Volá se při vytváření instance (objektu) třídy – Možňuje nastavit hodnoty proměnných ● Proměnné zde přímo deklarujeme a definujeme ● (pro stutenta např. Jméno, počet bodů, ...) ● Další metody – (pro studenta např. Přidání bodů) Objekt ● Objekt je tzv. Instance některé třídy ● Je určen hodnotami proměnných ● Může používat metody definované třídou – Např. Turtle ● Vytvoření: ● john = Student('John', 10) ● print(john.name) Geometrické tvary ● Geometrický tvar je možné definovat jako třídu, pak: ● Třída je kruh/kružnice – s proměnným středem a poloměrem – s definovanými metodami např. pro: ● Výpočet plochy ● Výpočet obvodu ● Vykreslení (v želví grafice) ● Co kdybyhom měli "balónek" (nějaká hra/animace) ● Může být navíc metoda "přifoukni", "ufoukni" Příklad - nádoba ● Definujme třídu "nádoba", která ● Má parametrizovanou velikost – Výška a šířka ● Umí vykresení v textové grafice ● Umí metodu "přilití/odlití tekutiny" ● Má metody na zjištění plnosti a prázdnosti ● Příklad – návrh řešení úlohy 2 ● Jaké třídy? ● Jaké metody? ● Jaké proměnné? ● ----------------------------------------------------- ● O co se vlastně při návrhu objektů snažíme ● Zapouzdřovat věci, co spolu souvisí ● Znovupoužitelný kód ● Proč? ● Přehlednost, rozšiřitelnost, debuging DÚ 5 ● Velmi jednoduchá verze "pampucha"