OOP: Co potřebuješ vědět o Oběktově orientované programování | robot_dreams Czech
should_authorize_via_email
email.input_code tel.input_code
 
email.code_actual_for tel.code_actual_for
apply_exit_text
session_ended
to_homepage
Objektově orientované programování: Základy a principy

Objektově orientované programování: Základy a principy

Co potřebujete vědět o OOP.

Objektově orientované programování (OOP) je paradigma, které na program nahlíží jako na množinu „objektů“.

Například auto má vlastnosti: model, barva, rok výroby, objem motoru. Pokud potřebujeme vytvořit objekt auto, tyto vlastnosti budou jeho atributy. Pro každý nový vůz se znovu použije kód původního objektu vozu.

Probereme si principy a typy OOP.

Základy objektově orientovaného programování

Objektově orientované programování (OOP) je založeno na konceptu tříd a objektů. Slouží ke strukturování programu do jednoduchých částí kódu (tříd), které jsou potřeba k vytvoření jednotlivých prvků objektu.

Třídy jsou často obecné kategorie (například "auto" nebo "pes"), které sdílejí společné atributy. Například mezi atributy třídy "auto" patří značka a barva. Úkolem tříd je definovat, jaké atributy bude instance mít. Třídy mohou také obsahovat funkce (metody), které jsou dostupné pouze pro objekty daného typu. Mezi nejoblíbenější objektově orientované jazyky patří Java, C++, C#, Python a JavaScript.

OOP jazyky

  • Java – jednou z vlastností jazyka Java je, že jeho kód je nejprve přeložen do bajtového kódu nezávislého na platformě. Poté je spuštěn virtuálním strojem JVM (Java Virtual Machine). Data jsou uložena v atributech – jedná se o proměnné spojené s konkrétními objekty
  • Python – obecný jazyk, který se nejčastěji používá ve strojovém učení a v datové vědě.
  • C++ – silně typovaný univerzální programovací jazyk. Používá se k vytváření kompilátorů a interpretů pro jiné jazyky.
  • Ruby – navržen jako univerzální programovací jazyk. Je vysokoúrovňový (má spoustu abstrakcí), dynamický (datové typy se určují za běhu, což zvyšuje rychlost) a interpretovatelný (nemusí být kompilován do nativního kódu). 
  • C# –  jazyk, který byl vyvinut s cílem zdokonalit stávající koncepty jazyka C. Využívá jej platforma Microsoft.NET a mnoho webových, herních, desktopových a mobilních aplikací.

OOP podporují i další jazyky. Například Perl, Objective-C, Dart, Lisp, JavaScript a PHP.

4 principy objektově orientovaného programování

  • Zapouzdření
    Objekt má vnitřní proměnné, které lze měnit nebo číst jeho vlastními metodami, ale nelze je číst ani měnit přímo.

    Představte si, že existuje několik objektů třídy "auto" s parametrem "množství benzínu v nádrži". Vývojář nesmí dovolit, aby informace o množství benzínu využíval někdo jiný než samotné auto (např. může signalizovat nedostatek paliva, ale ostatní auta na silnici nemohou vědět, kolik benzínu je v nádržích jiných aut).

    Toto množství benzínu lze potom změnit pouze pomocí příslušné metody – například "auto.natankuj_benzin()".
     
  • Abstrakce
    Jedná se o vytvoření jednoduchého modelu složitější události nebo procesu. Kód uvnitř se stává irelevantním pro ostatní objekty, které s ním interagují.

    Vezměme si příklad související s počítačovou hrou. Metoda Attack může obsahovat mnoho řádků kódu. Tento kód označuje, jak může být hrdina napaden a jak útok ovlivní jeho zdraví. Nepřátelský objekt nemusí vědět, jak útok funguje. Stačí, že to zhorší výkon hrdiny.
     
  • Dědičnost
    Tento princip umožňuje některým třídám dědit funkce jiných tříd. Nadřazené třídy rozšiřují atributy a chování podřízených tříd. Dědičnost podporuje opakované použití.

    Pokud má rodičovská třída definované základní atributy a chování, je možné přidáním těchto atributů vytvořit podřízené třídy.

    Například pastevečtí psi mají jedinečnou schopnost pást zvířata. Všichni pastevečtí psi jsou psi, ale ne všichni psi jsou pastevci. Pro toto rozlišení je z rodičovské třídy Dog vytvořena podřízená třída HerdingDog a poté je přidáno jedinečné chování Herd ().

    Výhodou dědičnosti je, že programy mohou vytvořit obecnou rodičovskou třídu a poté (v případě potřeby) vytvořit specifičtější podřízené třídy. To zjednodušuje obecné programování, protože místo opakovaného vytváření struktury třídy Dog mohou podřízené třídy automaticky přistupovat k funkcím své rodičovské třídy.
     
  • Polymorfismus
    Jedná se o návrh objektů, které sdílejí chování.

    Pomocí dědičnosti mohou objekty předem definovat společné chování rodičů s konkrétními podřízenými objekty. Polymorfismus umožňuje, aby stejná metoda prováděla různá chování tím, že se znovu definuje nebo přepíše.

    Například ve hře může mít každý z nepřátel metodu útoku, kterou zdědí od rodiče, ale každý má potom vlastní implementaci.

Autor: Alexey Simonchuk

Více článků
Příručka od robot_dreams s příkladem syntaxe
Kam se dnes posouvají technologické hranice robotiky?