nisfarm.ru

Objektově orientované programování (OOP): polymorfismus

Programování je proces vyvíjení řešení pro "živé" dynamické úkoly ve formě rigidních kódových struktur, dat, funkcí a algoritmů. Postup tvorby přísné syntaxe z nejisté sémantiky. Skutečné úkoly jsou známým velkým problémem ve smyslu

algoritmizace: Aby bylo dosaženo požadovaného řešení, měl by být úkol umístěn do přesných syntaktických konstrukcí.

polymorfismus

OOP se dvakrát pokoušel "zlomit" tento starodávný programový koncept, ale "střely" klasického stylu kódování dat a algoritmů jsou stále silné.

Úroveň a kvalifikace

Computing začala s výpočty, ale rychlost, s jakou se zvyšuje zrychlení pohybu v oblasti zpracování informací, ale ne dost velké klasické programování se stalo nemožné, a přestala existovat.

Objektivně také to, co vývojář netrvá, a zákazník nevyžaduje skutečné řešení skutečných problémů. Obě strany se zvyknou omezit na dostupné nástroje a obvyklé příležitosti.

Formy polymorfismu OOP, myšlenka zapouzdření kódu a dědičnost vlastností (metod) spočívají v programové oblasti, ale ne v rozsahu řešení problému.

Názorný příklad - knihovna PHPOffice / PHPWord. Chcete-li to vyžadováno kvalifikační vývojář, budete muset vytvořit svůj vlastní systém objektů, ale současná úroveň zákazníka (požadavky zákazníků) - jedná se o triviální píseň, která programátor potlačí její rozvoj (jinak splňují požadavky nejsou). Situace je taková:

Příkladem autora není obrázek

V tomto případě je použití knihovny úkolem formátování dokumentů, například musí být standardizován diplom nebo diplom. Zákazník představil své požadavky a programátor se vydal mnohem dál.

Je-li provést úplnou analýzu dokumentu, jeho sestavení ve správném formátu, naplněný prací s tabulkami libovolné úrovni vnoření, fúze a dělení buněk, které se vytisknou v libovolném směru, a tak dále.

Polymorfismus a OOP

Nejlepší definicí pro polymorfismus není zjistit, jak odkazovat na historii vývoje myšlenky objektově orientovaného programování, tak populárního, tak často používaného, ​​ale nerealizované v podstatě stále.

Každý autor má vlastní pojetí počátku a podstaty OOP. Pro každého pozorného čtenáře je tento pojem správný a objektivní. Ale dodnes každý přijímá jako bezpodmínečnou axiom pouze tři pozice:

  • zapouzdření;
  • polymorfismus;
  • dědictví.

Někteří dodávají: abstrakce, a častěji toto a opravdu hlavní bod, je používán jako základ pro popis podstaty OOP.

oop zapouzdření dědičnost polymorfismus

To znamená, že stanovisko OOP polymorfní: popsat stejné, jsou navrženy v různých způsobech, nebo naopak, popisuje jiný, ale je založena na stejných čtyřech polohách.

Demokratický začátek není specifický pro oblast informačních technologií, ale je třeba věnovat patřičnou pozornost: kombinace a společná existence mnoha názorů na tutéž věc je skutečný polymorfismus v akci.

Populární definice polymorfismu

OOP je dalším krokem ve vývoji informačních technologií. S tím se jen málokdo hádá, ale jeho základní axiomy a postoje jsou v té části sémantiky tak odlišné, že si nezaslouží pozornost mimo jejich totality.

  1. Polymorfismus v programování je schopnost poskytovat stejné rozhraní pro různé základní formy (datové typy).
  2. Polymorfismus je schopnost objektů mít jinou implementaci.
  3. Polymorfismus je schopnost funkce ...
  4. Classics (od tvůrce C / C ++): "jedno rozhraní - mnoho implementací".
  5. Parametrický polymorfismus znamená ...
  6. Polymorfismus je pozicí teorie typů ...
  7. Abstrakce není možná bez zapouzdření a dědičnosti, protože polymorfismus bez dědičnosti je nemožný ...

Člověk se může shodnout, že to všechno se týká stejné věci, ale forma vyjadřování myšlenky, podstaty a obsahu nejsou podobné. Ale je něco společného.

Esence: vývojář-zákazník




Klasické programování vyžaduje přítomnost programátora a úkolů (klient, zákazník). Programátor zkoumá problém, formalizuje jej a vydává kód, který vede k řešení. Zákazník popírá veškerou navrhovanou nebo pouze její část, poukazuje na nedostatky a programátor znovu pracuje.

Takový cyklus procesu řešení tohoto problému naznačuje, že zde jsou jasně spojeny dvě zcela odlišné entity:

  • Počítač nemůže problém sám vyřešit;
  • Je zapotřebí programu, aby mohl počítač "pochopit" a "vyřešit" problém.

Úkolem je kompetence zákazníka, program je algoritmem pro "přizpůsobení" úkolům schopnostem počítače - rozsahu kompetencí programátora. Jeho úlohou je "přizpůsobit" počítač požadavkům úkolu a je to zbytečné!

Objektově orientované programovací nabídky abstraktní. Existují objekty - to je rozsah zákazníka - je realizace objektů - to je rozsah programátora. Mezi zákazníkem a vývojářem neexistuje žádné "technologické" spojení. Myšlenka je kardinál, nerealizuje se dodnes, ale něco již pracuje neustále.

Windows, tlačítka a další objekty

Historie technologie Air Art, Object Magazine, Turbo Vision, Graph Vision je historie. Jen málo lidí si pamatuje realizaci OOP, které nejsou používány, a zapomněli, ale okno rozhraní Windows je znají miliony uživatelů a objektů v PHP prostředí, jаvascriptu a dalších jazycích internetových technologií se používají stovky tisíc vývojářů kódu vědět o nich miliony návštěvníků webových zdrojů.

Pravděpodobně je to jediný správný způsob, jakým by se měl OOP vyvíjet: zapouzdření, dědičnost, polymorfismus pro vývojáře, ale ne pro uživatele. Je charakteristické, že tato pozice byla hlavní při vývoji vizuálního designu (rozhraní) softwaru Windows, aplikačních programů jako jsou Turbo Vision a Graph Vision.

tvoří polymorfismus oop

Koncept produktů Air Art Technology a Object Magazine se výrazně lišil. Zde abstraktní objekt byl prvním předkem informační struktury, na abstraktní úrovni zapouzdřený kód zpracování informací. Objekty oken, knoflíků, vizuálních prvků zde byly druhotné.

V první verzi (Windows atd.) OOP paradigma: zapouzdření, dědičnost, polymorfismus určený abstraktní úroveň předek a provádění kód vytvořený na úrovni každé jednotlivé větve dědičnosti dítě v závislosti na požadované struktuře a obsahu.

Ve druhé variantě (Air Art Technology a Object Magazine) je důležitá úroveň abstraktního objektu. Co se stane s určitým potomkem, není podstatou, hlavní věcí je to, že jeho dědičná větev splňuje požadavky všech rodičů na abstrakci kořenů.

Objekt a systém objektů: algoritmus

Ideální objektově orientovaný koncept může manipulovat pouze s objekty a systémy objektů.

V moderních programovacích jazyků pod objektem (třída) se obecně rozumí popis objektu a instance objektu a použít popis objektu jazyky umožňují programátor pracovat s statických objektů, zatímco dynamický objekt - to je kopie Popis s jedinečným obsahem a strukturou, ale s použitím stejných metod popisu (vlastností).

základní koncepce dědičného polymorfismu zapouzdření

Současná praxe patří koncept objektu do přístroje, tedy programovací jazyk, rozhraní, přístup k připojení k databázi na síti, ale není nic, co ukazuje na zájmy zákazníka, na úkolu.

To je ideální pro jednoduché OOP: polymorfismus umožňuje dělat zejména různé konstrukční prvky, ale spravovat je stejným kódem. Ale zde není pochyb o objektech problému, které se vůbec nepovažují za předmět objektově orientované analýzy.

Programátoři přijali PLO jako prostředek ke zlepšení kvality a produktivity své práce, ale neztratili zákazníkovi pokles jejich území. Základní pojmy OOP - zapouzdření, dědičnost, polymorfismus - zůstaly ve vývojové oblasti a nebyly transplantovány do rozsahu problému.

Objekt a systém objektů: úkol a řešení

Počítačový programátor je úkol. Středové spojení je nadbytečné. V ideálním případě by měly existovat pouze dva relativně závislé obrysy: (počítač - programátor) - úkol. To znamená, že uživatel, zákazník nebo návštěvník má nástroj k vyřešení svého úkolu. Jak je nástroj implementován, je zákazníkovi jedno.

příklad polymorfismu

V ideálním případě je to jen počítač, který dokáže pochopit, co zákazník chce, a dělat, co chce. Jak bude vypadat: místní program nebo web přístupný prostřednictvím prohlížeče, speciální program pro distribuované zpracování informací, informační systém pro zákazníka - na tom nezáleží.

Je důležité, aby mezi úkolem a počítačem nebylo nadbytečné spojení, ale první je srozumitelné a může být vyřešeno druhým. K dosažení tohoto cíle musí být počítač a zákazník propojeny jedním systémem objektů, význam, struktura a obsah každého objektu je určen zákazníkem a metody a vlastnosti objektů jsou implementovány programátorem.

V ideálním případě je časové oddělení práce zákazníka na vytváření potřebného systému objektů a práce na provádění metod a vlastností těchto objektů. Čím dál je implementace systému objektů (programátor) od jeho sémantického obsahu (zákazník), tím lepší proces.

Nic nebrání zákazníkovi a programátorovi, aby v procesu řešení problému spolupracovali, ale je důležité mít jasné rozdělení sémantiky. Každý musí dělat svou práci, programátor není zapotřebí rozvíjet rozsah problému a zákazník nerozumí kód, takže čím více se strany nemají dát navzájem rady, které se jich netýkají.

Tradiční a programování objektů

Základní PLO postuluje: zapouzdření, dědičnost, polymorfismus ve formě, ve které si zvykli a tvrdil, povede k výraznému zlepšení kvality a spolehlivosti kódu výrazně zrychlit programování práci a mají spoustu dalších pozitivních vlastností.

základní principy zapouzdření dědičného polymorfismu

Ale je to stále tam: klasické programování není nižší než jeho pozice a mnoho objektově orientovaných myšlenek je implementováno klasickým kódem.

Nicméně, myšlenka na OOP a rekurze vedl k odpovídajícímu vlivu na syntaxi klasické operátory syntaxe logiky výpočtu běžné kód, který nemá žádný vztah k objektově orientovaný styl psaní a myšlení.

Seznamy a odbočit transformovala se pod pojmem první a poslední prvek pole, tam byly cykly „každý“ a reference možnosti pojmenování, využití a výkon se staly populárnější než kdy předtím.

Ve skutečnosti je fakt, že proměnné ztratili jejich „clear“ tvář (typ proměnné lze měnit podle potřeby a popisovat proměnné není nutné) říká, že klasika, ve skutečnosti již dávno stala objektově orientovaný a uznávané základní principy OOP: zapouzdření , dědičnost, polymorfismus, jako myšlenky, které jsou nezbytné.

Co je jádro: objekt nebo systém

Abstrakce, jako základní koncepční pozici PLO, bez ohledu na to, kde je oblast odpovědnosti (implementace) objektu - v první abstraktní objekt, nebo na úrovni určitého potomků, - nechává otevřenou otázku: Jak to všechno začalo, s objektem nebo se systémem?

principy dědičnosti zapouzdření polymorfismus

Pokud je objekt založen na objektu, nikdy se nestane systémem, protože systém bude uvnitř a bude se stát pevným obrazem velmi konkrétního začátku. Zde se objevují problémy s abstrakcí: počáteční objekt přesně zachycuje hlavní problém řešený, to znamená, že již nepřenáší další úkol.

Je-li systém založen na objektech, získá systém systémů. Je těžké si představit ve vztahu k určitému úkolu a kde začít s vývojem je také obtížné pochopit. Obecně, polymorfismus OOP s rozdíly v entitách, formách realizace, množství skutečných parametrů ve funkcích dává výkonnosti o systému, který leží na začátku, jako:

  • o možnostech řešení problému (například nabídka);
  • o počátečních podmínkách (aplikace problému v různých podmínkách, údaje);
  • o režimech provozu (testování, ladění, práce).

Ale toto a podobné mu nedávají žádné důvody, aby vyřešil problém na systému objektů. Často stačí definovat jeden počáteční objekt.

Historie procesu řešení problémů

Nejdůležitější principy OOP: polymorfismus a abstrakce - určují prioritu počátečního objektu jako systém objektů. Ve sporu, který by měl být dřívější, kuřecím masem nebo vejcem, zvítězí víno kuře.

Není pochyb o tom, že by vše mělo začít s abstraktním objektem a ne se systémem objektů. Pokud však vezmeme v úvahu časový faktor a aplikujeme jej na úroveň každého objektu, počínaje prvním abstraktem, pak je rozporuplný nápad dát řešení jak objektu, tak systému na začátku je jediný rozumný.

V případě, že klasický koncept programování v průběhu řešení problému změní datový obsah databáze, upravuje soubory atd OOP koncepce polymorfismus, zapouzdření a časový faktor změnu obsahu, struktury a vlastností objektů v systémový problém je třeba řešit.

OOP programátor alespoň zájem o koncepci souboru, databáze, algoritmus - konkrétní programátor myslí objekty, ale objekty existují v čase a změnit průběh dosažení požadovaného.

principy polymorfismu

Takže na začátku systému je předmětem objektů a logika tohoto systému - časové měřítko: zahájení problém, vznik prvního objektu, vstupní nebo sběr dat po vytvoření objektu, ale nic nebrání první objekt se má zahájit další rozhodnutí.

Každá úroveň objekty působí jako samostatné systémové objekty, to znamená, že se jedná o jeden objekt, ale v souvislosti s počátkem procesních hodnot a čas - objekt systému na časové ose. Pro plnou realizaci OOP polymorfismus, dědičnost, a časový faktor dohromady poskytují dynamiku první, to znamená, že nejenže se mohou časem měnit, ale také vést k objektům, které nejsou poskytované vývojář generovaného v průběhu plnění úkolů procesu, projektované zákazníka.

Real OOP polymorphism, příklad

Složitost úkolů, které síly PLO nejsou srovnatelné s těmi, které jsou k dispozici klasické verzi psacích programů. Samozřejmě, že řešení jakéhokoli problému je vždy k dispozici obvyklým způsobem, ale otázka, do jaké míry to bude "stát" čas a úsilí, často vede k tomu, že výsledek je zbytečný.

Již dávno byla vyvinuta knihovna PHPOffice / PHPWord, ale pro využití jejích schopností musíte téměř vždy vytvořit svůj vlastní systém objektů. Například jednoduchý * .docx soubor:

Příkladem autora není obrázek

je na zip archivu více souborů a složek v Office Open XML formát (OpenXML, OOXML). Každý soubor je napsán v XML značek, se při přidávání, změnu a vymazání písmena, slova, tabulky, seznamy, atd. Prvky obsah souborů začne představovat sled značek, které nejsou vždy obsahují kompletní prvky, jeden prvek je často zaznamenáno několik tagů.

Pokud tento soubor reprezentujete jako sekvenci značek, získáte zajímavý obrázek:

Příkladem autora není obrázek

Je snadné vidět, že první a jediný odstavec dokumentu představuje sada značek. Co se týče tabulky a jejích vestavěných tabulek, objem popisu všech prvků není náchylný k vnímání, ale je přístupný objektově orientované aplikaci.

Ve skutečnosti je na obrázku zelená zkušební výstup značky, žlutá je parametr a typ značky, béžová je obsah. Vytvořené objekty jsou orientovány na zpracování stroje. Pro osobu jsou k dispozici pouze operace otevírání souboru dokumentu, jeho formátování a nahrávání.

Řešení je jednoduché a praktické, ale implementace je spíše počítačová, spíše než lidská, kvůli velkému počtu provedených funkcí a složitým vztahům mezi objekty.

Stát OOP regionu

Vývoj systémů řízení webu, konfigurace serverů a technologií správy, zkušenosti s vývojem dynamických webových stránek dělali objektově orientované programování dostupné všem. Problémem je, jak změnit své myšlení a zvykat si myslet na úrovni objektů, spíše než v kontextu důsledně spustitelného kódu.

Typicky přechod z klasického programování na objektově orientovaný trvá dva až tři měsíce, ale náklady se úročí. Potenciál moderních programovacích jazyků, především PHP a jаvascript, uspokojí i nejmodernější vývojáře.

Moderní OOP - polymorfismus, dědičnost a schopnost vytvářet vlastnosti objektů - jsou pohodlné a praktické, syntaxe jazyků a pomocných nástrojů poskytuje komfort při práci a efektivitě kódu.

Perspektivy cílové myšlenky

Jak dlouho bude probíhat klasické programování a jak se bude OOP vyvíjet? Je těžké říci. Zdá se, že vývojáři nástrojů neplánují zvážit kontext spotřebitele (uživatel, zákazník).

Nástroje OOP - polymorfismus, dědičnost, zapouzdření a abstrakce - jsou orientovány na vývojáře.

Moderní informační systémy a zdroje na internetových stránkách mají tendenci odrážet realitu, aby bylo zajištěno fungování reálných objektů a vytvořit prostředí pro ně pracovat, tak jednoduchý, že bude k dispozici pro spotřebitele, od programování, plně ponořen v oblasti své působnosti.

Sdílet na sociálních sítích:

Podobné
© 2021 nisfarm.ru