Kódím.cz
3

Dědičnost

V objektově orientovaném programování existuje důležitý pojem, kterým je dědičnost. Podíváme se, jak funguje.

Čtení na doma: Příklad použití OOP

Objektově orientované programování používá řada různých knihoven v nejrůznějších jazycích. Jedním z nich je například Django, které slouží k vývoji webu. Uvažujme, že bychom chtěli náš personální systém vytvořit jako webovou aplikaci. K tomu bychom potřebovali tzv. model, který v Django reprezentuje nějakou datovou entitu. Pokud vytvoříme model, Django nám pro něj automaticky vygeneruje tabulku v databázi. Drobný rozdíl je, že atributy píšeme rovnou ke třídě (je to podobné datovým třídám) a kvůli tabulce v databázi musíme použít nějaké specifické parametry (např. maximální délka řetězce v textovém sloupci, výchozí hodnota atd.). U car_license_plate je nastaveno, že ve sloupci může být prázdná hodnota

Naše třída Employee dědí od třídy models.Model a díky tomu zdědíme metody, které se starají o práci s daty. Například metoda .save() slouží k uložení nového nebo úpravě stávajícího záznamu, metody filter() pro výběr záznamů na základě podmínky a metoda .delete() pro smazání záznamu.

class Employee(models.Model):
    name = models.CharField(max_length=255)
    position = models.CharField(max_length=255)
    holiday_entitlement = models.PositiveIntegerField(default=25)
    car_license_plate = models.CharField(max_length=20, null=True, blank=True)

Dále vytvoříme stránku (v Django se používá termín View) pro přidání nového zaměstnance. Dědíme od třídy CreateView, aby bylo jasné, že jde o stránku pro vytvoření záznamu. Poté přidáme atributy model (k vytvoření kterého modelu stránka slouží), template_name (šablona v jazyce HTML, která určuje, jak bude stránka vypadat), fields (která pole mají na stránce být pro vyplnění), success_url (kam má být uživatel přesměrován po úspěšném uložení záznamu).

class EmployeeCreateView(CreateView):
    model = Employee
    template_name = 'employee_create.html'
    fields = ['name', 'position', 'holiday_entitlement', 'car_license_plate']
    success_url = reverse_lazy('index')

Tím je stránka hotová. Díky dědičnosti se nám Django postará o vytvoření formulářových políček a zařídí uložení nového záznamu po uložení formuláře.