Vývoj programovacích prostředků:

Pokusy o řešení:

    1. CASE TOOLs a CASE - prostředky pro organizační podporu programátorské práce
    2. modulární programování (MODULA, SIMULA62)
    3. nealgoritmické programování (jazyky 4GL, programming by example, AI metody, deklarativní programování).

Krize programování (již přes 30 let)

Statistiky USA z počátku 80.let ukazují, že:

2% programů se používají tak, jak byly vytvořeny,

2-3% se používají po mírném dopracování, nepřekračujícím 10-15% zdroj. textů,

20% bylo nutno přepracovat zásadním způsobem,

20% vráceno a přepracováno (vesměs na základě nových kontraktů),

50% zákazník program nikdy nepoužil,

5% program shledán nepoužitelným.

Pojem objektu a OOP

Souvislosti

Architektura výpočetního systému je hierarchickým systémem, který je členěn podle úrovní abstrakce: abstraktnější úroveň je implementována pomocí prostředků s nižší abstrakcí.

Hledání cest z krize programování vede jednak směrem na revoluční změny hardware (multiprocesory, neuronové sítě,...), jednak na objektové architektury počítačů. Tyto architektury řeší 2 zásadní problémy:

Objektové architektury počítačů jsou založeny na sémanticky strukturované paměti, ve které data mají schopnost sebeidentifikace a změny mají jen lokální účinky. Paměť obsahuje entity - objekty - které si vedle hodnot nesou i identifikaci svého obsahu a které lokalizují ("pohltí") do svého nitra změny v paměti (z globálního pohledu zůstává paměť nezměněná - obsahuje tytéž entity).

Cíl: bezpečným způsobem sdružit datové struktury s operacemi, které lze nad nimi (jedině) provádět.

Příklad:

FORTRAN má definován typ INTEGER, pro který jsou předdefinovány všechny použitelné operace; použití jiných než předdefinovaných operací je chyba.

PASCAL sice dovoluje doplnit uživatelem definované TYPY, ale jsou neplnohodnotné, např. nedovolují I/O operace. Navíc nelze zaručit, že typ bude používán tím způsobem, který autor zamýšlel.

V 70. letech - oddělení specifikace od implementace, tzn. uzavření implementačních detailů do zvenku nepřístupných míst (ukrývání vnitřní informace).

Objekt

Základem objektových modelů je objekt. Objekt je (z vnějšího pohledu) nedělitelná entita, která obsahuje:

  1. data,
  2. jejich sémantickou (významovou) identifikaci,
  3. popis operací, které lze na data aplikovat.

Objekt se vyskytuje ve dvou významech:

 

Základní vlastnosti OOP

Základními rysy OOP jsou:

  1. zapouzdřenost,
  2. dědičnost,
  3. polymorfismus,
  4. (posílání zpráv - souvisí se zapouzdřeností )

 

Rozšíření jazyka PASCAL

Aby bylo možné realizovat principy OOP, musel být jazyk PASCAL podstatně upraven a rozšířen. V Delphi jsou zahrnuty zejména tyto prvky:

Ptr($0040,$0049)

Ptr($0000,$0449)

ukazují na totéž místo paměti, ale nejsou shodné ! Je-li třeba porovnat pointery, je nutno je předtím převést na normalizovaný tvar. Přitom New a GetMem generují vždy normalizovaný pointer, Ptr nikoliv ! U 32-bitových Delphi už tento problém odpadá.