Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Lekce 1 - Úvod - Evoluce metodik

Vítejte u první lekce kurzu Objektově orientovaného programování ve VBA. Navazujeme na znalosti kurzů Základy Microsoft VBA a VBA pro Excel. V tomto on-line kurzu Objektově orientovaného programování ve VBA se naučíme objektově programovat a hlavně objektově myslet. Je to něco trochu jiného, než jsme dělali doteď. Samotný program už nebudeme chápat jako několik řádků příkazů, které interpret vykonává odshora dolů.

V dnešním VBA tutoriálu se podíváme do historie, jak se programovalo dříve. Je to totiž důležité k tomu, abychom pochopili, proč OOP vzniklo. Bude řeč o evoluci metodik.

Mezi tím, jak se programovalo před 40 lety a jak se programuje dnes, je velký rozdíl. První počítače neoplývaly velkým výkonem a i jejich software nebyl nijak složitý. Vývoj hardwaru je však natolik rychlý, že se počet tranzistorů v mikroprocesorech každý rok zdvojnásobí. (Moorův zákon).

Bohužel, lidé se nedokáží rozvíjet tak rychle, jako se rozvíjí hardware. Stále rychlejší počítače vyžadují stále složitější a složitější software (resp. lidé toho chtějí po počítačích stále více a více). Když se v jedné chvíli zjistilo, že okolo 90 % softwaru je vytvořeno se zpožděním, s dodatečnými náklady, nebo selhalo úplně, hledaly se nové cesty, jak programy psát. Vystřídalo se tak několik přístupů, přesněji se jim říká paradigma (chápejme jako směr myšlení). My si je zde popíšeme.

Strojový kód

Program byl jen souborem instrukcí, kde jsme neměli žádnou možnost pojmenovávat proměnné nebo zadávat matematické výrazy. Zdrojový kód byl samozřejmě specifický pro daný hardware (procesor). Toto paradigma bylo brzy nahrazeno.

Nestrukturované paradigma

Nestrukturovaný přístup je podobný assemblerům. Jedná se o soubor instrukcí, který se vykonává odshora dolů. Zdrojový kód již nebyl závislý na hardwaru a byl lépe čitelný pro člověka. Přístup na nějakou dobu umožnil vytvářet komplexnější programy.

Byla tu však stále mnohá úskalí. Jediná možnost, jak udělat něco vícekrát, nebo jak se v kódu větvit, byl příkaz GOTO. GOTO nám umožňuje "skákat" na jednotlivá místa v programu. Místa byla dříve specifikována číslem řádku zdrojového kódu, což je samozřejmě nepraktické. Když do kódu vložíme nový řádek, čísla přestanou souhlasit a celý kód je rozbitý. Později vznikla možnost definovat tzv. návěstí. Takto se obcházela např. absence cyklů. Takovýto způsob psaní programů je samozřejmě velice nepřehledný a brzy přestal postačovat pro vývoj složitějších programů.

Uvědomme si, že obrovské rozšíření počítačů za posledních několik dekád má na svědomí růst poptávky po softwaru a logicky také růst poptávky po programátorech. Jistě existují lidé, kteří dokáží bez chyby psát programy v assembleru nebo jiných nízkých jazycích, ale kolik jich je? A kolik si asi za takovou nadlidskou práci účtují? Je potřeba psát programy tak, aby i méně zkušení programátoři dokázali psát kvalitní programy a nepotřebovali k tvorbě jednoduché utilitky 5 let praxe.

Strukturované programování

Strukturované programování je první paradigma, které se udrželo delší dobu a opravdu chvíli postačovalo pro vývoj nových programů. Programujeme pomocí cyklů a větvení. To je v podstatě to, kam jsme se doteď dostali.

U strukturovaného programování hovoříme o tzv. funkcionální dekompozici. Problém se rozloží na několik podproblémů a každý podproblém potom řeší určitá funkce s parametry. Nevýhodou je, že funkce umí jen jednu činnost. Když chceme něco jiného, musíme napsat novou funkci. Neexistuje totiž způsob, jak vzít starý kód a jen ho trochu modifikovat, musíme psát znovu a znovu. Vznikají zbytečné náklady a chyby.

Tuto nevýhodu lze částečně obejít pomocí parametrizace funkcí (počet parametrů poté ale rychle narůstá), nebo použitím globálních proměnných. S globálními daty vzniká však nové nebezpečí - funkce mají přístup k datům ostatních. To je začátek konce. Nikdy totiž neuhlídáme, aby někde nedošlo k přepsání globálních dat mezi funkcemi a začne docházet k nekontrolovatelným problémům.

Celý program se potom skládá z nezapouzdřených bloků kódu a špatně se udržuje. Každá úprava programu zvyšuje složitost. Program potom nutně dojde do stavu, kdy náklady na přidávání nových funkcí vzrostou natolik, že se program již nevyplatí rozšiřovat. Zástupci tohoto přístupu jsou například jazyky C, Pascal nebo QBasic.

Mezi strukturovaným programováním a objektově orientovaným programováním existoval ještě mezičlánek, tzv. modulární programování, které nám umožňuje zapouzdřit určitou funkcionalitu do modulů. Stále však neexistuje způsob, jak již napsaný kód modifikovat a znovu využít.

Jak již bylo zmíněno na začátku článku, někdy se uvádí, že se jednoduché programy mají psát neobjektově, tedy strukturovaně. Není to však pravda. Když opomineme fakt, že porušujeme filozofii OOP jako takovou, nikdy nemůžeme vědět, zda se tento program neuchytí a z malé utilitky se nestane něco vážnějšího. Potom opět nutně dospějeme do stavu, kdy program nebude možné dál rozšiřovat a budeme ho buď muset zahodit nebo celý přepsat s pomocí OOP.

Neobjektovým způsobům psaní kódu se přezdívá "spaghetti code" pro jejich nepřehlednost (protože špagety jsou zamotané).

V příští lekci, Úvod - Objektově orientované programování ve VBA, si uvedeme objektově orientované programování. Vysvětlíme si, jak funguje a rozebereme pojmy třída, funkce, procedura a zapouzdření.


 

Všechny články v sekci
Objektově orientované programování (OOP) ve VBA
Přeskočit článek
(nedoporučujeme)
Úvod - Objektově orientované programování ve VBA
Článek pro vás napsal Michal D.
Avatar
Uživatelské hodnocení:
6 hlasů
Autor se věnuje tvorbě mobilních aplikací.
Aktivity