Uživatelské nástroje

Nástroje pro tento web


it:dev:oop

Objektově orientované programování (OOP)

Objektově orientované programování je programovací paradigma založené na konceptu „objektů“, které mohou obsahovat data (ve formě polí či atributů) a kód (ve formě procedur neboli metod). OOP pomáhá zpřehlednit vývoj velkých systémů, usnadňuje znovupoužitelnost kódu a jeho údržbu.

1. Třída vs. Objekt

Pro pochopení OOP je zásadní rozdíl mezi těmito dvěma pojmy:

  • Třída (Class): Abstraktní plán nebo šablona (např. „Auto“). Definuje, jaké vlastnosti a schopnosti budou mít všechny instance této třídy.
  • Objekt (Instance): Konkrétní realizace třídy (např. „moje červená Škoda Octavia“). Má konkrétní hodnoty svých vlastností.

2. Čtyři pilíře OOP

Aby byl jazyk považován za skutečně objektový, musí podporovat tyto čtyři principy:

A. Zapouzdření (Encapsulation)

Skrývání vnitřního stavu objektu před vnějším světem. Přístup k datům je umožněn pouze přes veřejné metody (gettery a settery).

  • Výhoda: Zamezuje nechtěné modifikaci dat a usnadňuje změnu vnitřní implementace bez dopadu na zbytek programu.

B. Abstrakce (Abstraction)

Zjednodušení komplexní reality tím, že modelujeme pouze ty aspekty, které jsou pro náš program důležité.

  • Příklad: Pro e-shop s auty nás zajímá barva a cena, ale nepotřebujeme modelovat chemické složení brzdové kapaliny.

C. Dědičnost (Inheritance)

Umožňuje vytvářet nové třídy na základě již existujících. Potomek přebírá (dědí) vlastnosti a metody rodiče a může přidávat vlastní.

  • Příklad: Třída Pes a Kočka dědí od třídy Savec.
  • Výhoda: Drastické snížení duplicity kódu.

D. Polymorfismus (Mnohotvárnost)

Schopnost různých objektů reagovat na stejné volání metody různým způsobem.

  • Příklad: Máme metodu vydej_zvuk(). U objektu Pes zaštěká, u objektu Kočka zamňouká. Programátorovi stačí vědět, že volá metodu na „zvířeti“, a objekt se postará o zbytek.

3. Další klíčové pojmy

  • Konstruktor: Speciální metoda, která se zavolá při vytváření nového objektu (nastavuje počáteční hodnoty).
  • Rozhraní (Interface): Předpis, který říká, co třída musí umět, ale neříká jak. Je to „smlouva“ o chování.
  • Statické členy: Patří samotné třídě, nikoliv konkrétnímu objektu (např. počítadlo všech vytvořených aut).

4. Výhody a nevýhody OOP

Výhody Nevýhody
Modularita: Snazší řešení chyb v izolovaných objektech. Komplexita: Pro velmi malé programy může být OOP zbytečně složité.
Znovupoužitelnost: Jednou napsanou třídu lze použít v mnoha projektech. Výkon: Režie spojená s objekty může mírně zpomalit běh (v porovnání s C).
Rozšiřitelnost: Snadné přidávání nových funkcí pomocí dědičnosti. Paměťová náročnost: Objekty zabírají v paměti více místa než prostá data.

5. Jazyky podporující OOP

Dnes téměř každý moderní jazyk podporuje OOP, i když v různé míře:


Související články:

Tagy: dev oop programming software_engineering inheritance polymorphism encapsulation

it/dev/oop.txt · Poslední úprava: autor: admin