Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

temata:36-obejktova_orientace:main [2011/02/14 13:38]
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 189: Řádek 191:
       - obsahuje sloty instančních proměnných s defaultními hodnotami       - obsahuje sloty instančních proměnných s defaultními hodnotami
       - ve svém rodičovském slotu odkazuje daný rys       - ve svém rodičovském slotu odkazuje daný rys
-    * nová instance se vytvoří nakopírováním dané šablony+    * nová instance se vytvoří nakopírováním dané šablony (**viz obrázek**)
   * jazyk SELF (1986) - dialekt Smalltalku založený na prototypech   * jazyk SELF (1986) - dialekt Smalltalku založený na prototypech
   * JavaScript - od SELFu se značně odlišuje   * JavaScript - od SELFu se značně odlišuje
Řá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í =====
  
temata/36-obejktova_orientace/main.1297687124.txt.gz · Poslední úprava: 2011/02/14 13:38 autor: george
Recent changes RSS feed Debian Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki