Lekce 10: Základy OOP (Objektově orientované programování) v C#

Lekce 10: Základy OOP (Objektově orientované programování) v C#

Objektově orientované programování (OOP) je jedním z nejdůležitějších a nejpoužívanějších paradigmat v moderním softwarovém vývoji. C# je plně objektově orientovaný jazyk, který umožňuje vytvářet strukturované a modulární aplikace založené na objektech. V této lekci se zaměříme na základní principy OOP, jak je implementovat v C#, a jakým způsobem nám OOP pomáhá při organizaci a psaní kódu.

1. Co je OOP?

Objektově orientované programování je paradigma založené na objektech, které jsou instancemi tříd. Objekty mohou mít vlastnosti (atributy) a metody (funkce), které definují jejich chování. Základní principy OOP zahrnují:

  • Zapouzdření (encapsulation): Skrytí interních dat objektu a jejich zpřístupnění pouze prostřednictvím veřejně dostupných metod.
  • Dědičnost (inheritance): Schopnost vytvářet nové třídy, které dědí vlastnosti a metody z jiných tříd.
  • Polymorfismus: Schopnost pracovat s objekty různých tříd, které sdílejí společné rozhraní, a volat na nich různé implementace metod.
  • Abstrakce: Vytváření abstraktních tříd a metod, které definují společné chování, ale neobsahují konkrétní implementaci.

2. Třídy a objekty v C#

Základem objektově orientovaného programování v C# je třída. Třída je šablona, ze které můžeme vytvářet objekty. Objekt je konkrétní instancí třídy.

Definice třídy

Třída je definována pomocí klíčového slova class. Každá třída může mít atributy (vlastnosti) a metody (funkce).

public class Auto
{
public string znacka; // Atribut (vlastnost)
public int rychlost; // Atribut (vlastnost)

public void Zrychlit() // Metoda
{
rychlost += 10;
Console.WriteLine($"Auto zrychluje na {rychlost} km/h");
}
}

V tomto příkladu jsme vytvořili třídu Auto, která má dva atributy: znacka a rychlost, a jednu metodu Zrychlit, která zvyšuje rychlost automobilu.

Vytváření objektů

Objekty se vytvářejí z tříd pomocí klíčového slova new.

Auto mojeAuto = new Auto();  // Vytvoření objektu
mojeAuto.znacka = "Škoda"; // Přiřazení hodnoty atributu
mojeAuto.rychlost = 50; // Přiřazení hodnoty atributu
mojeAuto.Zrychlit(); // Volání metody

V tomto kódu jsme vytvořili instanci třídy Auto s názvem mojeAuto, nastavili jsme její značku a rychlost a zavolali jsme metodu Zrychlit, která zvýší rychlost.

3. Konstruktor

Konstruktor je speciální metoda, která se automaticky volá při vytváření nového objektu. Konstruktor slouží k inicializaci objektu.

public class Auto
{
public string znacka;
public int rychlost;

// Konstruktor
public Auto(string znacka, int rychlost)
{
this.znacka = znacka;
this.rychlost = rychlost;
}

public void Zrychlit()
{
rychlost += 10;
Console.WriteLine($"Auto {znacka} zrychluje na {rychlost} km/h");
}
}

Při vytváření nového objektu nyní můžeme předat argumenty přímo do konstruktoru:

Auto mojeAuto = new Auto("Škoda", 50);
mojeAuto.Zrychlit(); // Výstup: Auto Škoda zrychluje na 60 km/h

4. Zapouzdření (Encapsulation)

Zapouzdření je princip, který nám umožňuje skrýt interní detaily objektu a zpřístupnit pouze ty informace, které jsou nutné. Toho dosahujeme pomocí modifikátorů přístupu.

  • public: Atribut nebo metoda je přístupná odkudkoli.
  • private: Atribut nebo metoda je přístupná pouze uvnitř třídy.
  • protected: Atribut nebo metoda je přístupná pouze v rámci třídy a jejích dědiců.

Příklad použití private a public:

public class Osoba
{
private string jmeno; // Skrytý atribut

// Veřejná metoda pro nastavení jména
public void NastavJmeno(string jmeno)
{
this.jmeno = jmeno;
}

// Veřejná metoda pro zobrazení jména
public void ZobrazJmeno()
{
Console.WriteLine($"Jméno osoby je {jmeno}");
}
}
Osoba osoba = new Osoba();
osoba.NastavJmeno("Petr");
osoba.ZobrazJmeno(); // Výstup: Jméno osoby je Petr

V tomto případě je atribut jmeno soukromý, takže k němu nemůžeme přistupovat přímo zvenčí třídy, ale můžeme použít veřejné metody pro jeho nastavení a získání.

5. Dědičnost (Inheritance)

Dědičnost umožňuje vytvářet nové třídy na základě již existujících tříd. Nová třída dědí atributy a metody ze své rodičovské třídy. To umožňuje opakované využití kódu a zjednodušení jeho správy.

public class Vozidlo
{
public string znacka;

public void Start()
{
Console.WriteLine($"{znacka} startuje.");
}
}

// Třída Auto dědí od třídy Vozidlo
public class Auto : Vozidlo
{
public int rychlost;

public void Zrychlit()
{
rychlost += 10;
Console.WriteLine($"{znacka} zrychluje na {rychlost} km/h.");
}
}

V tomto příkladu třída Auto dědí atribut a metodu od třídy Vozidlo. Nyní můžeme volat jak metodu Start, tak Zrychlit.

Auto mojeAuto = new Auto();
mojeAuto.znacka = "BMW";
mojeAuto.Start(); // Výstup: BMW startuje.
mojeAuto.Zrychlit(); // Výstup: BMW zrychluje na 10 km/h.

6. Polymorfismus

Polymorfismus umožňuje používat objekty různých tříd, které sdílejí společné rozhraní, jako by byly instance stejné třídy. Polymorfismus je obvykle implementován prostřednictvím metod s různými implementacemi ve třídách odvozených z jedné základní třídy.

Příklad polymorfismu:

public class Zvirata
{
public virtual void Zvuk()
{
Console.WriteLine("Zvíře vydává zvuk.");
}
}

public class Pes : Zvirata
{
public override void Zvuk()
{
Console.WriteLine("Pes štěká.");
}
}

public class Kocka : Zvirata
{
public override void Zvuk()
{
Console.WriteLine("Kočka mňouká.");
}
}
Zvirata mojeZvirata = new Pes();
mojeZvirata.Zvuk(); // Výstup: Pes štěká.

mojeZvirata = new Kocka();
mojeZvirata.Zvuk(); // Výstup: Kočka mňouká.

V tomto příkladu máme třídu Zvirata, která definuje obecnou metodu Zvuk. Třídy Pes a Kocka tuto metodu přepisují, aby měly vlastní specifické chování.

Závěr

Objektově orientované programování v C# je mocný nástroj, který nám umožňuje vytvářet flexibilní, modulární a udržovatelný kód. Klíčové principy OOP – zapouzdření, dědičnost, polymorfismus a abstrakce – umožňuje dělit části programu, které je možné opakovaně použít.

Jirka

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *

We use cookies to personalise content and ads, to provide social media features and to analyse our traffic. We also share information about your use of our site with our social media, advertising and analytics partners. View more
Cookies settings
Accept
Privacy & Cookie policy
Privacy & Cookies policy
Cookie name Active

Kdo jsme

Naše webová adresa je: https://www.jefta.cz.

Komentáře

Když návštěvníci zanechají na webu komentáře, shromažďujeme údaje zobrazené ve formuláři pro komentáře a také IP adresu návštěvníka a řetězec uživatelského agenta prohlížeče, abychom pomohli odhalit spam.

Anonymizovaný řetězec vytvořený z vaší e-mailové adresy (také nazývaný hash) může být poskytnut službě Gravatar, abyste zjistili, zda ji používáte. Zásady ochrany osobních údajů služby Gravatar jsou k dispozici zde: https://automattic.com/privacy/. Po schválení vašeho komentáře bude váš profilový obrázek viditelný pro veřejnost v kontextu vašeho komentáře.

Média

Pokud na web nahráváte obrázky, měli byste se vyhnout nahrávání obrázků s vloženými údaji o poloze (EXIF GPS). Návštěvníci webu si mohou stáhnout a extrahovat jakákoli data o poloze z obrázků na webu.

Soubory cookie

Pokud na našem webu zanecháte komentář, můžete se přihlásit k ukládání svého jména, e-mailové adresy a webu do souborů cookie. Jsou pro vaše pohodlí, abyste nemuseli znovu vyplňovat své údaje, když zanecháte další komentář. Tyto cookies vydrží jeden rok.

Pokud navštívíte naši přihlašovací stránku, nastavíme dočasný soubor cookie, abychom zjistili, zda váš prohlížeč přijímá soubory cookie. Tento soubor cookie neobsahuje žádné osobní údaje a po zavření prohlížeče je vyřazen.

Když se přihlásíte, nastavíme také několik souborů cookie pro uložení vašich přihlašovacích údajů a vašich voleb zobrazení obrazovky. Přihlašovací soubory cookie vydrží dva dny a soubory cookie možností obrazovky vydrží rok. Pokud zvolíte "Zapamatovat si mě", vaše přihlášení bude trvat dva týdny. Pokud se odhlásíte ze svého účtu, přihlašovací soubory cookie budou odstraněny.

Pokud upravíte nebo publikujete článek, uloží se do vašeho prohlížeče další cookie. Tento soubor cookie neobsahuje žádné osobní údaje a pouze označuje ID příspěvku článku, který jste právě upravili. Jeho platnost vyprší po 1 dni.

Vložený obsah z jiných webových stránek

Články na tomto webu mohou obsahovat vložený obsah (např. videa, obrázky, články atd.). Vložený obsah z jiných webových stránek se chová úplně stejně, jako kdyby návštěvník navštívil jinou webovou stránku.

Tyto webové stránky mohou shromažďovat údaje o vás, používat soubory cookie, vkládat další sledování třetích stran a monitorovat vaši interakci s tímto vloženým obsahem, včetně sledování vaší interakce s vloženým obsahem, pokud máte účet a jste na dané webové stránce přihlášeni.

S kým sdílíme vaše údaje

Pokud požádáte o resetování hesla, vaše IP adresa bude zahrnuta v e-mailu pro resetování.

Jak dlouho vaše údaje uchováváme

Pokud zanecháte komentář, bude komentář a jeho metadata uchována po neomezenou dobu. Je to proto, abychom mohli rozpoznat a schválit jakékoli následné komentáře automaticky, místo abychom je drželi ve frontě na moderování.

Pro uživatele, kteří se zaregistrují na našich webových stránkách (pokud existují), ukládáme také osobní údaje, které poskytují, v jejich uživatelském profilu. Všichni uživatelé mohou kdykoli zobrazit, upravit nebo smazat své osobní údaje (kromě toho, že nemohou změnit své uživatelské jméno). Správci webových stránek mohou tyto informace také zobrazit a upravovat.

Jaká práva máte nad svými údaji

Pokud máte účet na této stránce nebo jste zanechali komentáře, můžete požádat o zaslání exportovaného souboru osobních údajů, které o vás uchováváme, včetně všech údajů, které jste nám poskytli. Můžete také požádat, abychom vymazali veškeré osobní údaje, které o vás uchováváme. To nezahrnuje žádné údaje, které jsme povinni uchovávat pro administrativní, právní nebo bezpečnostní účely.

Kam se posílají vaše data

Komentáře návštěvníků mohou být kontrolovány prostřednictvím služby automatické detekce spamu.

Save settings
Cookies settings