Programování je jednou z nejdůležitějších a nejoblíbenějších oblastí informatiky. Umožňuje vytvářet programy a aplikace pro různé úkoly. Existuje několik přístupů k programování, mezi nimiž je nejběžnější objektově orientované programování (OOP) a procedurální programování.
OOP je programovací paradigma, ve kterém je program organizován kolem objektů, které spolu interagují za účelem provádění určitých úkolů. The OOP je celý softwarový kód rozdělen do tříd, což jsou šablony pro vytváření objektů. Každý objekt má své vlastní vlastnosti (data) a metody (funkce), které určují jeho chování a funkčnost.
Procesní programování je zase založeno na použití postupů - jednotlivých bloků kódu určených k provedení konkrétní akce. V procedurálním programování je program postaven na posloupnosti volání postupů, které manipulují s daty a provádějí potřebné operace.
Rozdíly mezi OOP a procedurálním programováním se netýkají pouze struktury kódu, ale také přístupu k řešení problémů. OOP umožňuje vytvářet modulární a rozšiřitelné programy, které lze snadno upravovat a udržovat. Zatímco procesní programování je lineárnější a každý postup obvykle plní pouze jeden úkol.
Základní principy objektově orientovaného programování
1. Abstrakce
Abstrakce je jedním ze základních principů objektově orientovaného programování. Umožňuje skrýt vnitřní detaily implementace objektu a poskytnout pouze metody a vlastnosti potřebné k interakci s ním. Vývojář se tak může soustředit na práci s objekty a jejich funkčností, aniž by musel znát všechny detaily jejich vnitřního zařízení.
2. Zapouzdření
Zapouzdření umožňuje sloučit data a techniky s nimi spojené do jednoho objektu. Tím je vytvořena kapsle (třída), která skrývá vnitřní implementaci před vnějším světem a může poskytnout pouze určité rozhraní pro interakci. To umožňuje chránit data před nesprávným přístupem a změnami.
3. Dědění
Dědičnost umožňuje vytvářet nové třídy na základě již existujících. Při dědičnosti získává nová třída (potomek) všechny vlastnosti a metody rodičovské třídy (předek). To usnadňuje opětovné použití kódu a usnadňuje rozšíření funkčnosti objektů.
4. Polymorfismus
Polymorfismus umožňuje používat stejné rozhraní pro práci s různými typy objektů. To znamená, že různé objekty mohou mít stejné metody se stejnými názvy, ale s různou implementací. Při volání těchto metod bude v závislosti na typu objektu spuštěn příslušný kód.
5. Skladba
Kompozice je princip, který umožňuje vytvářet složitější objekty tím, že je kombinuje z jednodušších. Toho je dosaženo začleněním některých objektů do jiných jako součásti. Objekt tak může obsahovat další objekty a využívat jejich funkčnost. To umožňuje vytvářet flexibilnější a modulárnější programy.
6. Oddělení odpovědnosti
Rozdělení odpovědnosti (princip SOLID) nařizuje rozdělit funkčnost programu do jednotlivých tříd s jasně definovanými úkoly. Každá třída by měla být zodpovědná pouze za splnění jednoho úkolu. To usnadňuje pochopení a podporu kódu a také činí program flexibilnějším a snadno rozšiřitelným.
Výhody OOP oproti procedurálnímu programování
Objektově orientované programování (OOP) nabízí řadu výhod oproti procedurálnímu programování. Zde jsou některé z nich:
| Výhoda | Popis |
| Zapouzdření | OOP umožňuje sloučit data a metody do jediného objektu, skrýt podrobnosti o implementaci a poskytnout pouze potřebné rozhraní. To chrání data před přímým přístupem a podporuje opětovné použití kódu. |
| Dědění | OOP umožňuje vytvořit hierarchii tříd, kde třídy-potomci zdědí vlastnosti a metody z rodičovských tříd. To usnadňuje proces vývoje tím, že umožňuje opětovné použití kódu a vytváření abstraktnějších hierarchií. |
| Polymorfismus | OOP umožňuje objektům stejné třídy vykazovat různé chování v závislosti na kontextu. To umožňuje vytvářet flexibilnější a rozšiřitelnější systémy. |
| Modulárnost | OOP podporuje rozdělení programu na nezávislé moduly (třídy), což usnadňuje pochopení a podporu kódu. Moduly mohou být navrženy a laděny nezávisle na sobě. |
| Pohodlí v doprovodu | OOP umožňuje vytvářet softwarové systémy, které lze snadno měnit a udržovat. Změny v jedné části systému obvykle nevyžadují změny v jiných částech. |
To jsou jen některé z mnoha výhod OOP oproti procedurálnímu programování. OOP umožňuje strukturovanější, flexibilnější a modulárnější kód, což usnadňuje vývoj a doprovod softwarových systémů.
Typické vlastnosti procedurálního programování
- Použití postupů a funkcí jako základních prvků struktury programu. Program je rozdělen na malé funkce nebo postupy, z nichž každá provádí určitou operaci.
- Stav programu je určen hodnotami proměnných, které se mohou v průběhu provádění programu měnit. V procesním programování jsou data a operace na nich úzce propojeny.
- Použití globálních proměnných ke sdílení dat mezi různými postupy nebo funkcemi.
- Důsledné provádění příkazů. Každá operace se provádí přísně v určitém pořadí.
- Hlavním řídícím strukturálním prvkem je sekvence příkazů, které jsou prováděny v určitém pořadí. Větve se také používají, ale jejich použití je omezené a podmíněné.
- Může být obtížné přidat nové funkce nebo změnit stávající kód, protože program může obsahovat velké množství vzájemně propojených funkcí a postupů.
Obecně platí, že procesní programování je vhodné pro vývoj malých programů s jednoduchými strukturami, kde potřeba objektově orientovaného přístupu není tak relevantní.