objektově orientovaný jazyk je programovací jazyk, který se točí kolem konceptu objektu. Objektově orientované jazyky byly proroční usnadňují vývoj, ladění, opětovné použití, a udržovat software, než je možné s dříve jazyků. Pochopení objektů a objektově orientovaných jazyků vyžaduje znalost vývoje počítačových programovacích jazyků a datových struktur.
- vývoj počítačových programovacích jazyků
- jazyk sestavení.
- jazyky vysokého řádu.
- strukturované jazyky.
- objektově orientované jazyky.
- Vlastnosti Objektově Orientované Programování
- zapouzdření a skrytí dat.
- dědičnost.
- polymorfismus.
- Společné Objektově Orientované Jazyky
- Smalltalk.
- C+ +.
- Java.
- ostatní jazyky.
- Bibliografie
vývoj počítačových programovacích jazyků
počítačové programovací jazyky se v průběhu let neustále vyvíjely. Tento vývoj je podrobně popsán v následujících příkladech.
jazyk sestavení.
první počítačové programy byly napsány v jazyce sestavení. Jedná se o primitivní typ jazyka, ve kterém každý příkaz odpovídá jedné strojové instrukci; je to nejzákladnější možná operace počítače. Dosažení něčeho užitečného vyžaduje mnoho strojových pokynů. Jazyk sestavení je specifický pro určitý typ počítače; přesunutí programu na jiný typ počítače vyžaduje napsání zcela nového programu. Montážní jazykové programy se obtížně zapisují, ladí a udržují. Ačkoli jiné jazyky jsou nyní používány pro většinu počítačových aplikací, assembly language je stále používán jako první jazyk, když je nový čip vyvíjen.
jazyky vysokého řádu.
po sestavení jazyka byly vyvinuty jazyky vyššího řádu; mezi rané byly FORTRAN a BASIC. Jedno prohlášení v jazyce vysokého řádu odpovídá větě v angličtině. Program nazvaný kompilátor čte příkazy ze zdrojového souboru a generuje soubor obsahující strojové pokyny, který se nazývá objektový soubor. Objektový soubor pak může být načten a spuštěn počítačem. Jazyk vysokého řádu je přenosnější než program jazyka sestavení; stejný zdrojový soubor lze zkompilovat pro libovolný počítač, pokud existuje vhodný kompilátor.
rané jazyky vysokého řádu jsou povoleny pouze pro jednoduché datové typy, jako je celé číslo, číslo s plovoucí desetinnou čárkou nebo řetězec(posloupnost písmen). Jedinou dostupnou datovou strukturou bylo pole. Pole je seznam prvků, které mají stejný datový typ; například seznam čísel nebo seznam řetězců. Databáze byla vytvořena pomocí skupiny polí. Databáze produktů může například obsahovat tři pole nazvaná číslo produktu, Popis produktu a cena produktu. Bylo na programátorovi, aby udržel pole zarovnaná; například, aby se ujistil, že třetí prvek každého pole odpovídá stejnému produktu.
strukturované jazyky.
další krok ve vývoji počítačových programovacích jazyků byl vývoj strukturovaných jazyků, jako je C a PASCAL, a zavedení datových struktur. Datová struktura je sestava jednodušších datových typů do jednoho záznamu. Databáze produktů může být například vytvořena jako pole záznamů o produktech, přičemž každý záznam obsahuje pole Číslo produktu, Popis produktu a cena produktu. Nyní by jeden záznam mohl obsahovat všechny potřebné informace o jedné položce. Struktury se také více definovaly v procedurální části jazyka. Funkce nebo postup je malá část většího programu, který by mohl být zapsán poskytnout některé základní operace na datové struktuře, jako je záznam.
objektově orientované jazyky.
další krok ve vývoji počítačových programovacích jazyků, objektová orientace, byl představen v jazyce Smalltalk. Objektová orientace přebírá koncepty strukturovaného programovánío krok dále. Nyní místo datových struktur a samostatných programových struktur jsou datové i programové prvky kombinovány do jedné struktury nazývané objekt. Datové prvky objektu se nazývají atributy, zatímco prvky objektového programu se nazývají metody. Souhrnně se Atributy a metody nazývají členy objektu. Metody objektu jsou obvykle jedinými programy schopnými pracovat s atributy objektu.
s objektovou orientací přišla zásadní změna ve způsobu zobrazení programů. Dřívější názor, že údaje musí být zpracované tak, aby se dosáhlo konečného výsledku, a program byl viděn jako sekvenční způsob provedení manipulace. Z pohledu objektové orientace je program vnímán jako skupina objektů, které reagují na zprávy od uživatele, jiných programů nebo jiných objektů. Tento pohled vedl k myšlence programování řízeného událostmi; tj. když dojde k události a, tento objekt provede akci B. zpráva je odeslána objektu voláním jedné z jeho metod.
Vlastnosti Objektově Orientované Programování
Klíčové vlastnosti objektově orientovaného programování patří zapouzdření a ukrývání dat, dědičnost a polymorfismus.
zapouzdření a skrytí dat.
ústřední myšlenkou v objektově orientovaném programování (OOP) je, že atributy objektu a metody, které pracují na atributech, jsou v objektu spojeny nebo zapouzdřeny. Metody objektu poskytují jediné rozhraní mezi objektem a ostatními částmi programu. To se liší od dřívějších jazyků, kde jakákoli část programu mohla kdykoli pracovat s jakýmkoli kusem dat. I když se to zdá omezující, omezení, výsledek ve více modulární program, který je snadnější se rozvíjet, a méně pravděpodobné, že obsahují chyby. To také znamená, že je snazší přesunout objekt do jiného prostředí a stále ho správně fungovat.
softwarový objekt je poněkud podobný fyzickému objektu. Například motor může být použit k napájení automobilu. Má vnitřní komponenty, které odpovídají atributům, ale člověk se nemusí zajímat o to, co jsou nebo jak fungují. Motor musí být propojen se škrticí klapkou, palivovým systémem, převodovkou, sacím a výfukovým potrubím, které všechny odpovídají metodám. Je nepředstavitelné, že by se palivo dostalo do motoru jakýmkoli jiným způsobem než prostřednictvím palivového systému. Dokud budou zachována správná rozhraní, motor bude fungovat. Takže je to s objekty. Atributy objektu jsou skryty zvenčí. Objekt interaguje se svým prostředím prostřednictvím svých metod.
dědičnost.
dalším důležitým konceptem objektově orientovaného programování je dědičnost. Třída objektů je definována v hierarchii a říká se, že zdědí chování svých předků (ty objekty nad ní v hierarchii). Například kreslicí program může obsahovat tři třídy objektů: Tvar, Obdélník a kruh. Mohly by být definovány tak, že obdélník a kruh jsou oba potomci tvaru.
tvar obsahuje atributy společné pro jakýkoli tvar, například umístění tvaru na kreslicí ploše. Tvar také poskytuje metody pro manipulaci s těmito atributy. Například metoda přesunu by změnila umístění tvaru. Kromě toho by poskytlo definici metod, na které musí být všechny tvary schopny reagovat, například metoda kreslení, která by zobrazovala tvar na kreslicí ploše. Metody kreslení v tomto případě je řekl, aby byl abstraktní, to nedělá nic jiného, než vytvořit požadavek, že potomek třídy musí implementovat.
protože obdélník je potomkem tvaru, dědí atributy (umístění) a metody (přesun) od tvaru. Poskytuje další atributy, které potřebuje (šířka a výška) a nové metody, které manipulují s těmito atributy (setWidth, setHeight). Obdélník musí také poskytnout metodu kreslení, která maluje obdélník na povrchu výkresu, protože každý potomek tvaru musí implementovat metodu kreslení. Podobně kruh poskytuje nový atribut (poloměr), metody pro manipulaci s ním (setRadius) a vlastní metodu kreslení.
s tímto druhem uspořádání by program Správce výkresů měl seznam tvarů na ploše výkresu. Chcete-li přesunout objekt, zavolal by metodu přesunu objektu. Chcete-li nakreslit objekt, Správce zavolá metodu kreslení objektu. Manažer ani neví, ani se nestará o to, jak se objekt pohybuje nebo kreslí sám, pokud je práce hotová. Ve skutečnosti nemusí ani vědět, jaký tvar konkrétní objekt skutečně je. Může to být obdélník, kruh nebo jakýkoli jiný objekt pocházející z tvaru. Potřebuje pouze vědět, že je potomkem tvaru, takže mu může poslat jakoukoli zprávu, kterou může tvar přijmout.
schopnost dědičnosti objektově orientovaného jazyka přidala programování zcela novou dimenzi. Učení dřívějšího jazyka vysokého řádu se týkalo hlavně učení syntaxe jazyka (jak jsou konstruovány jazykové příkazy), což není tak obtížné. V objektově orientovaném jazyce je učení syntaxe stále nezbytné, ale seznámení se se standardními hierarchiemi tříd—které mohou zahrnovat tisíce tříd, každá třída s vlastními metodami—je mnohem větší úkol. Stojí to však za to, protože objekt zdědí atributy a chování svého rodiče. Programátor se může vyhnout zbytečné práci tím, že najde existující objekt, který již dělá většinu toho, co je potřeba. Poté lze postupně přidávat nové funkce. Výsledkem jsou nižší náklady, kvalitnější software.
tato charakteristika také vedla k zahrnutí funkcí automatické dokumentace do několika objektově orientovaných jazyků. V dřívějších jazycích byla dokumentace-pokud byla vůbec generována-prováděna samostatně, téměř jako dodatečná myšlenka. Teď dokumentace informace mohou být zahrnuty v objektu zdrojový kód a používá se pro generování HTML (Hypertext Markup Language) dokument automaticky, kompletní s odkazy nahoru a dolů třídní hierarchie, která může být viděn s Internetovým prohlížečem. Díky tomu je mnohem snazší udržovat přesnou a aktuální dokumentaci.
polymorfismus.
další důležitou vlastností objektově orientovaného jazyka je polymorfismus, což znamená, že potomek objektu nemusí reagovat na zprávu, přesně jako jeho předchůdce. Nový objekt může přepsat metody svého rodiče, což způsobí, že nový objekt reaguje na Zprávu jinak. Například společná třída v okenním systému je komponenta, která představuje viditelný objekt. Komponenta je třída předků pro každý viditelný objekt na obrazovce: ikony, tlačítka, Nabídky, posuvníky, zaškrtávací políčka, přepínače, dokonce i okna. Všechny tyto třídy descendent přepisují některé metody komponenty pro změnu chování. Například objekt ikony se musí zobrazit jako malý obrázek. Icon přepíše metodu kreslení komponenty pro zobrazení obrázku.
Společné Objektově Orientované Jazyky
Common object-orientované jazyky patří Smalltalk, C, Java a další jazyky jako BASIC a PASCAL.
Smalltalk.
Smalltalk byl původní objektově orientovaný jazyk, vyvinutý počátkem 70.let společností Xerox. Od té doby bylo zavedeno několik variant. Stále se používá, ale široké přijetí bylo omezeno nedostatkem univerzálního standardu.
C+ +.
C + + je rozšíření jazyka C, které poskytovalo možnosti OOP. Je to pravděpodobně nejrozšířenější objektově orientovaný jazyk, který se v současné době používá. C je hybridní jazyk, protože kompiluje standardní programy C; nevyžaduje použití objektů. To mu umožňuje využívat výhod stávajícího softwaru C, při použití objektové orientace pro nový software. C je řízen normami ANSI.
Java.
Java je nejrozšířenějším čistě objektově orientovaným jazykem. Byl vyvinut společností Sun Microsystems původně jako řídicí jazyk pro malé spotřebiče. Ukázalo se však, že je ideální pro použití s internetem. Java applet může být vložen do webové stránky. Když prohlížeč načte webovou stránku, načte a zobrazí applet. Sun stále udržuje přísnou kontrolu nad jazykovým standardem.
pro usnadnění multiplatformní funkčnosti (práce na zcela odlišných typech počítačů bez rekompilace) je Java implementována ve dvou částech. Kompilátor vytvoří objektový soubor, který může být spuštěn pouze virtuálním strojem Java (JVM). Pro každý podporovaný operační systém (Windows, Unix/Linux nebo Solaris) je k dispozici samostatný JVM. Díky tomu jsou programy Java schopny běžet na kterémkoli z těchto systémů bez rekompilace.
ostatní jazyky.
většina dnes běžně používaných jazyků umožňuje určitou formu objektové orientace. BASIC se vyvinul v objektově orientovaný Visual BASIC; PASCAL do objektově orientovaných DELPHI. Obecně se jedná o hybridní jazyky, jako je C, které podporují orientaci objektu, aniž by to vyžadovaly.
viz také Compilers; Mouse; Procedural Languages.
Donald M. McIver
Bibliografie
Deitel, Harvey M., a J. Paul Deitel. Java: jak programovat, 2.vydání. Horní sedlo řeky, NJ: Prentice Hall, 1998.
Voss, Greg. Objektově Orientované Programování, Úvod. New York: Osborne McGraw-Hill, 1991.