Úvod do OOP Stanislav Geidl Lekce 9 * . Úvod do OOP 2184 Ovod do programová Uvod do OOP, třídy a objekty UV0TS™ C2184 Úvod do programování v Pythonu podzim 2016 Třída a objekt Stanislav Geidl Národní centrum pro výzkum biomolekul Masarykova univerzita Třída a objekt Uvod do OOP Stanislav Geidl 1:) li třída (class) - definice objektu, předepisuje metody a atributy objektu objekt (object) - instance třídy metoda (method) - funkce objektu atribut (attribute) - proměnná objektu vlastnost (property) - vlastnost objektu (funkce get a set) self - odkaz na samu sebe statické třídy a funkce - nevytváříme instance privátní atributy a metody - v Pythonu označovaný tím, že začínají_, tyto proměnné a funkce by neměli být použitý mimo definici třídy C21B4 do programová Třída a objekt 9.2 Třída, instance, atributy a metody Uvod do OOP Stanislav Geidl 1:) li """ třída Tužka """ class Tužka: . 02184 Úvod d© programová _tuha = 10 0.0 tvrdost = 1 def pis (self) : print("Pišu") tuha -= .5 Třída a objekt """ instance mojeTuzka """ mojeTuzka = Tužka () mojeTuzka.pis () mojeTuzka.tvrdost = 2 print(mojeTuzka.tvrdost) 9.3 Vlastnosti class Tužka: _tuha = 10 0.0 _guma = False Uvod do OOP Stanislav Geidl 1:) ľ 4 1» @property ^ ^ 2 C2184 £J[Qf Cruma (self) * Úvod d© programová ^ ' v Pythonu return _guma _ @guma.setter ■ídaaobjekl def guma(self, novahodnota) : _guma = bool(novahodnota) @property def tuha(self): return tuha mojeTuzka = Tužka () mojeTuzka.guma = 2 print(mojeTuzka.guma) print(mojeTuzka.tuha) """ toto nefunguje: mojeTuzka.guma = 2 rr rr rr 9.4 Základní privátní funkce Uvod do OOP Stanislav Geidl 1:) li init_- konstruktor del - destruktor _str_- textový přepis třídy/objektu _doc_- krátká dokumentace třídy/objektu _len_- funkce pro výpočet délky tyto funkce se automaticky volají při vytvoření nebo zničení instance, při volání funkcí len() nebo str()/print() C21B4 do programová Třída a objekt 9.5 Základní privátní funkce Uvod do OOP class Tužka: _tuha = 10 0.0 tvrdost = 1 def _init_(self) : print("Já^j sem^konstruktor") def _len_(self) : return _tuha def pis (self) : print("Pisu") tuha -= .5 Stanislav Geidl J G2184 Úvod do programování Třída a objekt mojeTuzka = Tužka () mojeTuzka.pis () print(len(mojeTuzka)) 9.6 OOP abstrakce zapozdření skládání delegování dědičnost polymorfismus Uvod do OOP Stanislav Geidl C21B4 do programová Třída a objekt 9.7 Dědičnost Uvod do OOP Stanislav Geidl class Savec: '43i^ def _init_(self) : self.srst = True C21B4 SGlf .Vysk.3. — 100 Úvod do programová def pozdrav(self) : print(self._pozdrav) class Clovek(Savec): def _init_(self) : self.srst = Falše self._pozdrav = "Ahoj" ja = Clovek() ja.pozdrav() """ toto nebude fungovat print (ja.vyska) rr rr n 9.8 Polymorfismus class Savec: def _init_(self) : self.srst = True self.vyska = 100 def pozdrav(self): print(self._pozdrav) class Clovek(Savec): def _init_(self) : self.srst = Falše self._pozdrav = "Ahoj class Pes (Savec) : def _init_(self) : init super() O Uvod do OOP Stanislav Geidl 1:) li 1» C21B4 Úvod do programová Třída a objekt self._pozdrav = "Baf^baf" ja = Clovek() ja.pozdrav() Baryk = Pes () Baryk.pozdrav() 9.9