Technika objektově orientovaného programování
Definice
Objektově
orientované programování (zkráceně objektové programování) je technika,
při které se složité programové systémy strukturují jako množiny vzájemně
komunikujících objektů. Každý objekt definuje svou vlastní datovou
strukturu a algoritmy. Touto technikou lze dosáhnout vysoké úrovně
modularity a datových abstrakcí. Speciální jazykové rysy nejsou pro
objektově orientované programování nezbytné. Speciální jazykové rysy mají
SIMULA-67, SMALLTALK-80, C++, PASCAL 5.5.
Princip
Při
tvorbě rozsáhlých programů, s předpokládanou dlouhou životností, zvláště
jde-li o problematiku z oblasti ASVŘS (automatizovaných systémů velení, řízení
a spojení), nutno předpokládat výskyt požadavků na změny a úpravy
programů. Tyto požadavky nutno předpokládat i v průběhu projektování a
programování. Požadavky na úpravy programů nemusí mít pouze uživatelský
původ. Mohou být důsledkem nedokonalé koordinace práce řešitelů nebo řešitelských
pracovišť, nedokonalé analýze problému nebo návrhu řešení. Praxe
ukazuje, že době provozování úspěšných programů vznikají dodatečné
požadavky na rozšíření funkcí programu.
Další
zkušenost z praxe potvrzuje názor, že funkční dekompozice se hodí pouze
pro výuku základům algoritmizace a pro malé programy, s krátkou životností.
I touto technologii lze rychle vyvinout některé velké programy. Ale provádění
změn těchto programů bude obtížné tudíž nákladné. Znovupoužitelnost
modulů vzniklých funkční dekompozicí bude vzhledem k jejich specializaci
problematická.
Při
funkčně orientované architektuře programu jsou datové struktury podružné.
Proto je i kompatibilita programů, které závisí především na datových
strukturách, podružná. Když je však program postaven na základě dat, pak
jeho přednosti jsou v protikladu s funkční technologii. Datově
orientované technologie zajišťují požadavky kompatibility, znovupoužitelnosti,
spojitosti a modifikovatelnosti programu. Rozsah programů je menší,
srozumitelnost větší. (Například druhá verze FoxPro, u které bylo použito
této technologie je menší než první verze a při je tom funkčně dokonalejší.)
Takovéto
technologii se říká, že je objektově orientovaná. Je odlišná od
technologie, kterou pracuje většina výkonných programátorů. Vychází z názoru,
že výpočetní systém provádí určité akce nad určitými objekty. Je lepší
když jeho struktura bude založena na objektech než na na akcích. Tato
technologie má své kořeny v technikách, které efektivně vytvářely
znovupoužitelné, modifikovatelné, spolehlivé a robustní programy.
Objekty
Obecně
a zjednodušeně lze za objekt prohlásit cokoliv, co lze popsat jeho
vlastnostmi. Může to být položka k zaúčtování, osoba, zobrazený text, rámeček
kolem okna, konkrétní místo v okně, okno apod. Vnější podoba objektu má
strukturu podobnou jako záznam databázového souboru nebo řádek tabulky
(pole) ve FoxPro. Položky (stejného počtu) záznamu mohou obsahovat nejen údaje
různých typů, ale i odkazy na procedury a funkce (jména procedur, jména
funkcí), které s těmito daty pracují.
Typem
objektu (obyčejně jedna z prvních položek) jsou definovány základní
procedury a funkce (obecně "metody") daného objektu.
Libovolný
typ objektu může dědit všechny vlastnosti jiného typu objektu. Dědí se
jak položky tak metody. V dědických vztazích rozeznáváme následníka a předchůdce.
Třída objektů není synonymem typu objektů. Je to vzor, který podle kterého
lze vytvářet nové třídy. Všechny objekty jsou dynamické. Vznikají i
zanikají provedením příkazů při běhu programu a identifikují se pomocí
ukazovatele.
Objektově orientovaný návrh programu
Objektově
orientovaný návrh vede k architektuře programového celku, založené na
objektech. Návrh a tvorba programu má charakter analýzy vztahů, která vede
ke klasifikaci objektů a jejich tříd. Návrh programu spočívá v postupném
zlepšování a zpřesňování, založeném na neustále se zlepšujícím
porozumění objektových tříd. Směřuje ke specifikaci nejvyšší, konečné
a nejabstraktnější funkce, kterou má program plnit je nutné odložit na co
nejpozdější etapu vývoje programu. (Tradiční postup upíná pozornost na
konečnou funkci od samotného počátku vývoje.) Upření pozornosti na data,
která se budou vyskytovat v systému a ne na bezprostřední funkci je klíčem
k znovupoužití a modifikovatelnosti programu. Při objektově orientovaném návrhu
se řeší problém:
a) nalezení objektu,
b) popisu objektu,
c) popisu vzájemných vztahů a společných vlastností
objektu,
d) strukturalizace programu pomocí objektů.
Nalezení objektů
Při
objektově orientovaném návrhu se nutno oprostit od představy tvorby programu
a nahradit ji představou vytváření modelu řešeného problému. Obrazy dílčích
složek problému jsou komponenty modelu - objekty.
Nejtěžší
při tomto postupu je správně určit: jaké objekty jsou pro modelování
problému potřebné a jaké atributy jsou nutné pro jejich popis. Zda
zaznamenané atributy nepříslušejí jinému objektu nebo nepopisují jiný
objekt, který je zatím skrytý.
Například
při řešení materiálových toků výrobního procesu si postupně definujeme
(jako objekty) sklady (atributy: umístění, kapacita,...), stroje (atributy:
umístění, doba přípravy, doba opracování podle výrobku,...), přepravníky
(obložnost, nosnost, doba nakládky, rychlost přesunu...) apod. (V podstatě
se objektově orientovaný návrh neliší od návrhu databázového systému
nebo od přístupu ke tvorbě simulačních modelů.)