Objektovo orientované programovanie (OOP)
Štrukturované programovanie v ére najväčšej slávy jazyka C umožňovalo riešiť dovtedy veľmi zložité problémy. Avšak, ako čas plynul, začali sa objavovať prvé nedostatky a to už koncom 80 rokoch.
Prvým vážnym problémom bola separácia funkcii od dátových štruktúr. V štrukturovanom programovaní neexistuje spôsob prepojenia funkcii s dátami. Ďalší problém, ktorý sa začal objavovať je stále sa opakujúce riešenie problémov.
Štrukturované programovanie nepoznalo komponenty, ktoré majú presne definované vlastnosti a je ich možné použiť ľubovoľné a obvykle len s malými úpravami podľa projektu. V štrukturovanom programovaní bolo stále potrebné písať algoritmy a programátori tak znovu objavovali už poznané.
Koľko času by mohli ušetriť využitím komponentov, ktoré sú riadne otestované a preskúšane miesto stáleho písania kódu? Odpoveď je nezanedbateľne množstvo času. Ušetrený čas sa môže využiť na návrh používateľského prostredia či riešenia zložitých problémov. A tak prišla potreba, vyvinúť novú paradigmu programovania.
Objektovo-orientované programovanie je založené na znovu použiteľností kódu. To je základná filozofia objektového prístupu k zdrojovému kódu. Podstatou objektovo orientovaného programovania je modelovanie objektov z reálneho sveta.
Tu už nejde o to, ako svet priblížiť k počítačovému svetu (procesor), ale naopak, aby zdrojové kódy sa priblížili k programátorom. Objektový návrh aplikácie je ako tvorba minisvetu, ktorý ma mnoho spoločného z reálnym svetom. Čo je objekt v tejto paradigme programovania?
Objektom môže byť stolička, mačka, dažďové kvapky, auto, osoba atď. Objektom sa môže stať všeličo, čo verne poznáte. Cieľom je tak zefektívniť programovanie a riešiť veľmi zložité problémy omnoho jednoduchšie, ako to bolo v minulých generáciach prístupov k programovaniu.
Generické programovanie
Jazyk C++ podporuje ďalší prístup k programovaniu. Tento prístup nazývame generické programovanie. S OOP zdieľa mnoho vecí napríklad cieľ vytvoriť jednoduchší kód s podporou znovu použiteľnosti.
Rozdiel medzi OOP a generickým programovaním je v tom, že zatiaľ čo OOP sa sústreďuje na dáta, generické programovanie na šablóny, ktoré zdôrazňujú silu algoritmov. OOP je vhodné na správu rozsiahlych projektov, generické programovanie pomocou šablón na riešenie prevodu z nekonzistentný úloh do všeobecnej funkcie/predlohy.
Majme takýto príklad. Dátové štruktúry v jazyku C++ sa delia na mnohé typy: celé čísla, racionálne čísla, znaky, reťazce znakov, objekty či užívateľský vytvorené rôzne typy štruktúr.
Predstavte si, že máte úlohu v znení: Utrieďte rôzne typy dátových štruktúr. Museli by ste pre každý typ dát vytvoriť odlišnú triediacu funkciu. Avšak, tu je veľmi výhodné využiť silu generického programovania, ktorá umožní pomocou jednej funkcie vytvoriť všeobecný neurčený dátový typ a tak utriediť všetky možné kombinácie dát bez potreby písania množstva funkcii.
História jazyka C++
Zrod jazyka C++ sa odohral v Bellových laboratóriach tak ako pri jazyku C. Tvorcom jazyka C++ je Bjarne Stroustrup. Jeho hlavným cieľom bolo rozšíriť funkcionalitu jazyka C a zároveň sa sústredil na vytvorenie užitočného jazyka miesto zamerania sa na úzke programovacie techniky.
Dôležite pre autora bolo, aby jazyk bol nasadený na rôzne zložité problémy. Stroustrup pri vývoji nového jazyka (pôvodne nazvaného „C with Classes“; k premenovaniu na C++ došlo v roku 1983) chcel zachovať mocnú silu štrukturovaného programovania a tak začal nový programovací jazyk stavať z jazyka C. Jazyk C má silnú väzbu na operačný systém UNIX a kompilácia programov je bezproblémová takmer vo všetkých možných procesorových a softvérových platformách.
Meno C++ je odvodené od jazyka C a ++ je inkrement, ktorá zvýši hodnotu určitej premennej o 1. C++ má predstavovať ako rozšírenie jazyka C. V súčastnosti vývoj jazyka C++ je tak ďaleko od jazyka C, že ho už nemôžme považovať za rozšírenú verziu jazyka C. Môžme ho definovať ako plnohodnotný programovací jazyk.
Platí, že každý program jazyka C je kompilovateľný kompilátorom jazyka C++ (až na malé výnimky). Ale neplatí to naopak! Taktiež majú spoločné knižnice. Jazyk C obohacuje jazyk C++ o tesnejšiu väzbu s hardvérom. Takým typickým príkladom je, že výpis na obrazovku v jazyku C++ môžete použiť príkaz printf, ktorá je prítomna v jazyku C.
Stroustrup pridal do jazyka C++ podporu pre objektovo orientované programovanie. Jazyk C++ je hlavne cenený za veľmi dobrú podporu objektov a zároveň je možné komunikovať s hardvérom na nízkej úrovní.
Neskôr bolo do jazyka C++ implementovaná podpora programovania pomocou šablón. Postupným časom pri rozširovaní programovania šablónami a ich vplyv bol väčší a väčší. Dnes má mnoho prívržencov ktorí hovoria, že pridanie šablón do C++ bolo významnejšie, ako podpora OOP.
Poznámka šéfredaktora: Jazyk C++ byl již čtyřikrát mezinárodně standardizován jako norma ISO (v letech 1998, 2003, 2011 a 2014; je zajímavé, že k první standard přišel až po 15 letech existence jazyka). Je to jazyk živý a přibývají v něm nové vlastnosti.