OBSAH WEBU
ČTĚTE!
Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.
temata:36-obejktova_orientace:main [2011/02/14 13:39] george [2. Prototypově orientované jazyky] |
temata:36-obejktova_orientace:main [2011/05/06 18:10] (aktuální) vagabund [36 - Objektová orientace] |
||
---|---|---|---|
Řádek 1: | Řádek 1: | ||
+ | ~~ODT~~ | ||
+ | |||
====== 36 - Objektová orientace ====== | ====== 36 - Objektová orientace ====== | ||
Řádek 16: | Řádek 18: | ||
===== Základní pojmy ===== | ===== Základní pojmy ===== | ||
* na těchto pojmech/metodách je objektově orientované programování založeno | * na těchto pojmech/metodách je objektově orientované programování založeno | ||
- | * **__Objekt, Abstrakce, Zapouzdření, Polymorfismus, Dědičnost__** | + | * **[[#1. Objekt|Objekt]], [[#2. Abstrakce|Abstrakce]], [[#3. Zapouzdření|Zapouzdření]], [[#4. Polymorfismus|Polymorfismus]], [[#5. Dědičnost|Dědičnost]]** |
==== 1. Objekt ==== | ==== 1. Objekt ==== | ||
Řádek 196: | Řádek 198: | ||
{{:temata:36-obejktova_orientace:prototyp.jpg|Prototyp, rys a klonování objektů}} | {{:temata:36-obejktova_orientace:prototyp.jpg|Prototyp, rys a klonování objektů}} | ||
+ | |||
+ | ===== Formální základ ===== | ||
+ | |||
+ | * jako u formálních jazyků není nezbytný pro návrh OO jazyka | ||
+ | * **lze rozdělit do dvou částí** | ||
+ | - syntaxe | ||
+ | * popisována pomocí kombinace (E)BNF - (Extended) Backus-Naurova forma, bezkontextových gramatik a slovního popisu s příklady | ||
+ | * dáno tím, že syntaxe je podobná modulárním jazykům - pár klíčových slov navíc | ||
+ | - sémantika | ||
+ | * zásadní změny oproti modulárním jazykům | ||
+ | * velmi složitá na popis formální, proto používá spíše slovní popis a příklady | ||
+ | |||
+ | ==== Backus-Naurova forma ==== | ||
+ | |||
+ | <code> | ||
+ | <if-stmt> | ||
+ | ::= if <condition> then <stmts> <else-if> | ||
+ | <else-if> | ||
+ | ::= endif ; | ||
+ | | else <stmts> endif ; | ||
+ | | <elsif> <else-if> | ||
+ | </code> | ||
+ | |||
+ | ==== ς-kalkul ==== | ||
+ | |||
+ | * //sigma kalkul// | ||
+ | * jeden z formálních popisů OOJ | ||
+ | * pro popis syntaxe a sémantiky | ||
+ | * stručný popis {{:temata:36-obejktova_orientace:sigma_kalkul_s3rvac.pdf|zde}} (zdroj - FIT-server) | ||
+ | |||
+ | ==== UML ==== | ||
+ | |||
+ | * další možný formalismus | ||
+ | * grafický jazyk | ||
+ | * více [[temata:31-uml:main|zde]] | ||
+ | |||
+ | ===== Překlad ===== | ||
+ | * ukládá popis každé třídy do speciálního prostoru | ||
+ | * vytváří graf závislostí jednotlivých tříd a poté je lineárně uspořádává => na to nemusí stačit jeden průchod | ||
+ | * náročná je práce s jmennými prostory a modifikátory viditelnosti | ||
+ | * **fáze:** | ||
+ | - __[[temata:22-prekladace:main#Lexikální analyzátor|lexikální]] a [[temata:22-prekladace:main#Syntaktický analyzátor|syntaktická]] analýza__ - podobná úroveň jako u modulárních jazyků | ||
+ | - __[[temata:22-prekladace:main#Sémantický analyzátor|sémantická]] analýza__ - oproti modulárním jazykům mnohem náročnější | ||
+ | * kontrola implicitního přetypování ([[#Časná a pozdní vazba]]) | ||
+ | * kontrola explicitního přetypování objektu ([[#4. Polymorfismus|Polymorfismus]]) | ||
+ | * [[#Modifikátory viditelnosti]] | ||
+ | * **interpret** | ||
+ | * k práci potřebujeme //workspace// - uchováváme si v něm všechny objekty, s kterými se pracuje | ||
===== Výhody a nevýhody ===== | ===== Výhody a nevýhody ===== | ||
Řádek 214: | Řádek 264: | ||
* režie na uložení objektů v paměti (např. odkaz na třídu objektu) | * režie na uložení objektů v paměti (např. odkaz na třídu objektu) | ||
+ | ===== Zdroj ===== | ||
+ | |||
+ | <note> | ||
+ | Při tvorbě tohoto tématu jsem čerpar především z [[https://wis.fit.vutbr.cz/FIT/st/course-files-st.php/course/IPP-IT/texts/IPP-II-ESF-1_1_printable.pdf|druhých skript IPP]]. Snažil jsem se udělat co nejpřehlednější výtah pro rychlé učení. | ||
+ | </note> | ||
===== Potvrzení ===== | ===== Potvrzení ===== | ||