IB111 Základy programování Fran šek Lachman lachmanfran sek@mail.muni.cz cvičení 10 22. listopad 2017 Osnova kontrolní otázky struktury objekty s metodami třetí domácí úkol pohledem OOP čtvrtý domácí úkol Docházka 3 Kontrolní otázky 4 Uveďte příklady dat, pro jejichž reprezentaci se přirozeně hodí objektový zápis. 5 Jaký je rozdíl mezi pojmy třída a objekt? 6 Jaký je význam pojmů atribut, metoda, konstruktor? 7 Co je to „metoda“ a jak ji zapisujeme? 8 Jak přistupujeme k metodám a atributům objektu? 9 Jak vytvoříme objekt? 10 Co znamená self v zápisu metod? 11 Objekty, struktury třída ( class ) je šablonou pro vytváření nových objektů daného typu class Student(object): def __init__(self, name, points): self.name = name self.points = points john = Student('John', 10) print(john.name) # John john.points += 20 print(john.points) # 30 12 Objekty, struktury from turtle import Turtle turtle1 = Turtle() turtle2 = Turtle() turtle1.right(30) turtle1.forward(100) turtle2.right(150) turtle2.forward(200) 13 Objekty, struktury - příklady 10.1.1. Barevné kruhy Vytvořte třídu pro reprezentaci barevného kruhu na daných souřadnicích. 10.1.3. Bod Napište třídu Point pro reprezentaci bodu v rovině (parametry x a y). Potom implementujte funkci distance(point1, point2) , která vypočítá vzdálenost dvou bodů. 14 Objekty s metodami třída de nuje typy objekt a implementace jeho metod (funkcí spljatých s objektem) 15 class Student(object): def __init__(self, name): self.name = name self.points = 0 def add_points(self, new_points): """Pridani bodu studentovi.""" self.points += new_points def __str__(self): """Vraci informacni retezec.""" return '' .format(self.name, self.points) john = Student('John') print(john) john.add_points(20) print(john) 16 Tře domácí úkol pohledem 00P 17 Čtvrtý domácí úkol 40 bodů soft deadline: čtvrtek 29. 11. 23:59 (Zpětná vazba.) hard headline: úterý 4. 12. 12:00 Dodržet strukturu, spustitelný kód. PEP8, pojmenování proměnných, komentáře. Není na chvilu. Začít včas! (Mimo jiné je vhodnou přípravou na vnitro.) 18 Čtvrtý domácí úkol Ženský rodokmen Mater certa, pater incertus est. 1. Reprezentace rodokmenu žen 2. Reprezentace klubů 3. Načítání databáze ze souboru 4. Vyhledávání v rodokmenu 19 Čtvrtý domácí úkol 1. Reprezentace rodokmenu žen: Třída Woman : inicializace: name , born_year , hair_color name , born_year , mother , daughters , hair_color get_age() , add_daughter(daughter) 20 Čtvrtý domácí úkol 2. Reprezentace klubů: Třída Club : inicializace: name , established_year name , established_year , members add_member(member) 21 Čtvrtý domácí úkol 3. načítání databázeze souboru: Metoda load_from_file(file_name="people-data.txt") Vrací dvojici [ Woman ], [ Club ] Soubor má následující formát: Mary,1920,blond Janet,1942,brown # CHILDREN Mary->Janet # CLUBS 90's girls,1995:Sharon,Betty,Carol Jane Austen fans,1880:Patricia,Maria,Ruth,Sharon,Pamela Empty club,2000: 22 Čtvrtý domácí úkol 4. Vyhledávání v rodokmenu last_born_offspring(person) -> Woman Vrátí nejmladšího potomka. get_younges_mother(list_of_women) -> Woman Najde ženu, která měla dítě v nenižším věku. get_common_members(club1, club2) -> [ Woman ] Vrátí ženy, které jsou členkami obou klubů. 23 Závěr struktury objekty s metodami třetí domácí úkol čtvrtý domácí úkol druhá vnitrosemestrálka (objekty, rekurze) 4.12. 24