Vítejte u mého miniseriálu, ktery zaměřím na pilíře objektově orientovaného programování v C#. V miniseriálu vyjdou 3 díly a postupně probereme dědění, zapouzdření a polymorfismus.
Dědičnost
Je vlastnost, která vývojářům umožňuje opětovné využití kódu. Jednoduše řečeno, dědění dovoluje budovat nové třídy na základě existujících tříd. V praxi to znamená, že pokud vybudujeme třídu trida1
a do ní umístíme metody metoda1
, metoda2
a metoda3
, druhá třída potomek1
bude potomek trida1
a bude obsahovat tyto metody dědic1
, dědic2
a dědic3
. Díky dědičnosti v OOP nyní můžeme vytvořit instanci třídy potomek1
a volat metody třídy potomek1
ale i trida1
. Podívejme se na kód:
potomek1 potomek = new potomek1();
//dědičnost nám zpřístupní metody třídy trida1, aniž bychom museli tvořit její instanci
potomek.metoda1();
potomek.metoda2();
potomek.metoda3();
//ale samozřejmé je, že můžeme volat i metody třídy potomek1
potomek.dedic1();
potomek.dedic2();
potomek.dedic3();
Pokud budeme definovat potomek1
jako samostatnou třídu a pokusíme se volat metody třídy trida1
, dojde při kompilaci k chybě.
potomek1 potomek = new potomek1();
//tato část řádku vyhodí chybu v případě, že třída potomek1 nebude definována jako dědic třídy trida1
potomek.metoda1();
potomek.metoda2();
potomek.metoda3();
//volám metody třídy potomek1 - vše proběhne, jak má
potomek.dedic1();
potomek.dedic2();
potomek.dedic3();
Nyní si naši třídu převedeme do reálného světa. Vytvoříme třídu Pekárna
, která bude definována jako mateřská, a třídy, jež budou dědit metody rodiče Pekárna
. Budou to:
- Rohlíky
- Dorty
- Koblihy
Pekárna
bude definovat tři základní metody, společné pro všechny třídy. Těmito metodami budou:
- Suroviny(); - vezme potřebné suroviny jako mouka, cukr, vajíčko,
- PripravTesto(); - připraví těsto pro tvorbu rohlíku, dortu nebo koblihy,
- Pec(); - upeče hotový výtvor.
namespace dědičnost{
class Pekárna{
public suroviny Suroviny(int pocet){
//příkazy
}
public testo PripravTesto(suroviny sur){
//příkazy
}
public pec Pec(testo test, int pocet){
//příkazy
}
}
}
Třída Rohlíky
bude definovat jednu metodu: VytvorRohlik();
. Tato metoda bude využívat metody třídy Pekárna
.
namespace dědičnost{
class Rohlíky:Pekárna{
public rohik VytvorRohlik(){
//vyberu suroviny, které potřebuji pro přípravu těsta rohlíku zadaného počtu rohlíků
suroviny sur = Suroviny(5);
//ze surovin připravím těsto
testo test = PripravTesto(sur);
//metodě Pec předám hotové těsto a vrátím upečený výtvor
return Pec(test);
}
}
}
Další třídy Dorty
a Koblihy
budou vypadat podobně. Datové typy jsou smyšlené a jazyk C# je neobsahuje, byly použity pouze pro demonstraci.
V dnešním díle jsme si krátce představili jeden ze tří pilířů OOP, a to dědičnost. V dalších dílech se podíváme na zapouzdření a polymorfismus.