Vývoj programovacích prostředků:
Pokusy o řešení:
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
Architekt
ura 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:Objekt se vyskytuje ve dvou významech:
Základní vlastnosti OOP
Základními rysy OOP jsou:
Rozšíření jazyka PASCAL
Aby bylo možné realizovat principy OOP, musel být jazyk PASCAL podstatně upraven a rozšířen. V Delphi jsou zahrnut
y 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á.