Neprogramátor/Objektově orientované programování

Objektově orientované programování (OOP) je imperativní. Obráceně to neplatí, protože je více způsobů imperativního programování, jako třeba procedurální programování.

Imperativní programování je založené na příkazech. Programátor říká počítači, co přesně má počítač vykonat. Příkazy mohou změnit stav vykonávaného programu (a světa obecně). Tomu se říká vedlejší jev (side effect).

Objektově orientované programování přidává imperativnímu programování strukturu – schová příkazy a části stavu programu dovnitř objektů, čímž vytváří hierarchii. Objekty mezi sebou komunikují přes rozhraní (interface), které sestává z dvou částí: (1) metody, které se na objekt "volají" a (2) parametry (argumenty), které se metodám "předávají". Objekty v programu často představují zjednodušenou verzi objektů reálného světa a mohou obsahovat další objekty.

Typickým příkladem objektově orientovaného programování je, když čaroděj peče kefírový dort. Ví, že potřebuje nějakou mísu (třída v OOP) a vybere si tu velkou nerezovou (instance třídy či objekt v OOP). Do mísy může přidat polohrubou mouku, moučkový a vanilkový cukr, kypřicí prášek, kakao a namleté ořechy. To udělá tak, že na mísu zavolá přidej (metoda mísy) a pak konkrétní ingredienci. Na mísu také může zavolat zamíchej, ale už nemusí říkat co, protože mísa jednoduše promíchá vše, co obsahuje. Každým voláním mísa mění svůj stav (obsah). Čaroděj pak dál komunikuje s mísou a přidá kefír a rostlinný olej. Po přidání a promíchání se stav (obsah) mísy změní ze sypké hmoty na mazlavou. Čaroděj ví, že teď potřebuje pekáč (třída) a vybere ten smaltovaný (instance). Pak nechá pekáč a mísu komunikovat mezi sebou: na pekáč zavolá přidej a předá mu to, co vrátí mísa, když na ní zavolá obsah; jinými slovy, obsah mísy se přidá do pekáče. Podobně to bude s troubou, kterou je třeba nejdřív vyhřát, pak otevřít, přidat do ní pekáč a zavřít.

Každé volání může ale nemusí změnit stav objektu. Třeba volání plná? na mísu její stav nezmění, jenom o míse vrátí nějakou informaci. Takovým voláním (metodám) se občas říká getter (vyslovuje se to getr). Naopak, metodě, která stav mísy (objektu) změní, se občas říká setter (setr).

Mísa i pekáč mají něco společného – do obou se dá něco přidat. Je to proto, že mísa i pekáč jsou nádobí a v OOP se říká, že mísa a pekáč dědí od nádobí.

Kefírový dort se peče v kuchyni, kde jsou všechny ingredience, mísa, pekáč i trouba. Proto, když to všechno dobře vymyslí, stačí čaroději jen zavolat na kuchyni upeč-kefírový-dort.

Pro úplnost je potřeba dodat, že poleva se udělá z čokolády, másla a zakysané smetany a korpus se nejprve namaže marmeládou a teprve pak polevou.

◄ Imperativní a procedurální programování Objektově orientované programování Deklarativní a funkcionální programování ►