Zapouzdření je balení dat a funkcí do jedné složky. Zapouzdření, polymorfismus, dědičnost: rysy

20. 2. 2019

V pozdních osmdesátých letech se v programování nic zásadně nového nestalo. Tam bylo spousta jazyků, spousta kontroverzí a tam byl Turbo Pascal 5.5, a v balíčku jeho dodávky tam byly nějaké podivné soubory a některé ne tak-obvyklé konstrukce v syntaxi.

zapouzdření je

Možná objektově orientované programování vděčí jeho vzhledu neznámému umělci a snad několika, ale myšlenka kombinace kódu a dat v těchto dobách neměla zvlášť velkou hodnotu. Bylo volně a nepřímo spojeno s pojmem "zapouzdření".

Struktury, funkce a postupy

Již v prvních verzích programovacích jazyků, ještě před zjevením prvních databází, bylo zcela jasné, že to není číslo nebo řetězec znaků, ale něco smysluplného. Nechť je to proměnná "pult" ve smyčce nebo tři malá proměnná "příjmení", "křestní jméno", "střední jméno", ale to má vždy smysl.

"Počítadlo" je vždy po cyklu a pracuje v něm. "Příjmení", "křestní jméno" a "prostřední jméno" budou vyhlášeny vedle sebe a jejich účast v mnoha částech kodexu bude společná. Někde budou použity nezávisle, obecně budou mít jeden význam.

Funkce a postupy se původně objevily jako běžné kódy. Jejich použití bylo původně zamýšleno jinde v programu. Jejich vzhled v programu způsobil opakování bloků se stejnými akcemi. Při přehrávání v podobě funkce nebo procedury zjednodušených míst opakování došlo ke snížení množství kódu a zjednodušení ladění.

zapouzdřovací dědičnost polymorfizmu

Nebylo to objektově orientované programování, ale od samého začátku jeho vývoje se klasický styl kódování zabýval kompilací dat, vytváření struktur a funkčních částí kódu.

Důvody pro zahájení zapouzdření

Zapouzdření v programování začalo dlouho před vznikem OOP. Bylo to v hloubkách klasického stylu, to znamenalo funkční programování, strukturální a všichni ostatní, kteří hledali cestu do budoucnosti.

Každý překladač a tlumočník jazyka důkladně vzal vše v novém syntaxi, nabídl vývojářům možnosti implementace sémantiky.

Informace nebyly nikdy statické, pouze programování je stále spokojeno s formalizovanou verzí. Ale i když jsou přísně formalizovány, informace zajišťují práci s kódem, který je s ním vždy spojen. Informace nemohou být nikdy statické.

zapouzdření dědictví

Nejvíce triviální příklad zapouzdření, které bylo zachováno po dlouhou dobu a je pro tento den relevantní. Tři proměnné "příjmení", "křestní jméno", "střední jméno", ať už jsou kdekoli, vždy vyžadují funkce přidávání, úpravy, odstranění. Navíc tyto proměnné poskytují množství specifických lidí, to je spousta příkladů:

  • Ivanov, Ivan, Ivanovič;
  • Petrova, Irina, Vasilyevna;
  • Kukushkina, Polina, Grigorievna;
  • ... a abstraktní třídě ...
  • "příjmení", "jméno", "prostřední jméno";
  • ... a tři věčné funkce ...
  • přidat;
  • změna;
  • odstranit.

Na každé úrovni existuje mnoho různých konstrukcí (adresy, pozice, personální obsazení, výrobní plán). A složitost implementace jiného designu bude neuvěřitelně dlouhá.

Životnost instance zapouzdření

Zapouzdření jsou data a kód.

  • Slovo je zapouzdření.
  • Latinská verze - v kapsli.

Slovo "tobolka" je to, co to znamená. Skutečnost, že mnoho jazyků a vývojářů o tom uvažovala (veřejná, chráněná, soukromá), je samostatným tématem a má relativní nebo aplikovaný vztah k významu zapouzdření.

Celkově je instance pouze volbou (imprint, moment) dat a tyto tři metody žijí navždy. Kód jako informační filtr "zajišťuje" životnost instancí, protože je to jedno pro všechny a mimochodem:

  • kód je "trvalý";
  • označuje nejjednodušší neměnnou akci.

Jiný případ však může "vyhazovat" pozornost.

Pokud je příklad přidělen do seznamu zaměstnanců společnosti, bude mít ředitel a účetní zvláštní význam v sadě kopií. Zbytek může zůstat v obvyklé "formě". Ředitel a účetní mohou mít své vlastní kódy, tedy své vlastní funkce.

To znamená, že životnost instance ne vždy určuje funkčnost tří magických slov:

  • přidat;
  • změna;
  • odstranit.

Pokud se příklad týká prvního letounu do vesmíru, pak tucet kandidátů na první kosmonauty bude mít spoustu speciálních funkcí, stovky lidí (specimenů) je budou sledovat zvláštním způsobem, bude tam mnoho dalších možností pro specialisty, kteří budou mít mnoho speciálních. funkce.

Začněte OOP

"Potřebujeme něco urgentně změnit," myslel si několik vývojářů a jako dobrý příklad navrhli pracovat s objekty na Turbo Pascal 6.0 Professional. To není ideální nabídka, ale velmi jednoduchá a efektivní.

zapouzdření dat

Za předpokladu, že "zapouzdření, polymorfismus, dědičnost" je základem objektu, dostáváme dobrý start. Polymorfismus dává potřebnou dynamiku, protože instance mohou mít různé funkce. Musí být nějakým způsobem "legitimizován" v objektu. Dědictví umožňuje odrážet homogenitu objektu, postavit genealogický strom formalizovaných informací.

Zní to těžko. Za předpokladu, že zapouzdření dat je jednoduchá kombinace dat a kódu, vše se stává velmi jednoduchým a objevuje se skvělý koncept.

Objektem jsou data a kód. Instance objektu je pouze údaj, ke kterému má přístup jeho kód. Mohou existovat spousty příkladů, ale kód pro ně je vždy stejný a není k nim připojen, ale je k dispozici všem.

Když instanci objektu vyžaduje zvláštní pozornost sama sebe, objeví se jiný objekt, který bude mít vylepšenou funkcionalitu, to znamená, že zdědí vše, co bylo v původním objektu, ale přidá něco vlastního.

Svět je doplňován příklady druhého objektu, který má také nové potřeby. Nové funkce a nové zařízení.

Ale ne každý nový objekt může mít potomky. Pro některé jsou již nepotřebné. Výsledkem takové konstrukce je získání rozvětveného obrazu objektů, ale ve skutečnosti dává život hromadě vzorků spojených navzájem rodokmeny a funkčními spoji.

Ideální variantou realizace úkolů ve stylu OOP je to, že zapouzdření, polymorfismus, dědičnost jsou posuzovány tak kvalitativně, že kód je v programu zcela nepřítomen . Samotné objekty plní své funkce, používají pouze svůj kód, budují vzájemné vztahy.

Život OOP

Ve skutečnosti to vypadá velmi odlišně. Zapouzdření je dobré a nemůžete zde hádat. Ale správně postavit obrázek objektů, přemýšlet nad funkčností každého z nich, předvídat, jak se některé vzorky chovají a co lze očekávat od dat, není snadné. Bylo nutné, aby situace byla zjednodušena a PLO prošla cestou vývojářské automatizace práce, spíše než řešit skutečné problémy.

Z pohledu rychlosti získávání zkušeností je to efektivní myšlenka, konec konců, proč by měl být OOP aplikován na automatizaci účetních činností, kdy může být připojen k menu na stránce HTML?

Vše je velmi jednoduché: existuje prvek menu, existují jeho možnosti. Můžete uživatele pozvat k výběru možností nabídky (vertikální, horizontální, rozbalovací), můžete tlačítkům zadat formulář (kulatý, čtvercový, zaoblený atd.).

příklad zapouzdření

Jen málo lidí se zajímá o práci a život vývojáře. Každý potřebuje účetnictví, výrobu, školení, protože musíte vykonávat skutečné úkoly. Takže je třeba zvýšit kolektivy, ale pak bude systém objektů implementován různými specialisty a mohou se navzájem ublížit.

V mnoha ohledech to způsobilo PLO na výrobních kolejnicích. Už nebyla žádná pochybnost: Zapouzdření, dědictví je dobrá cesta, ale jak chránit předměty před vnějšími rušeními jak zvenčí, tak podél rodokmenu? Nebude to nutně hacker. Náhodně způsobit škody změnou údajů předchůdce, jiný vývojář může.

Moderní programování je spousta vývojářů v mnoha vzdálených kancelářích. Stejně jako včely moderní vývojáři staví jednu společnou objektovou strukturu. Každý objekt by měl být budován podle obecných pravidel a ty data a metody, za které je odpovědný jeden programátor, by neměly být přístupné ostatním. Když někdo potřebuje něco, je další téma. Podle základního principu podniká každý svůj vlastní podnik na svém místě.

Zapouzdření je dobré, ale ...

PHPWord je výkonný produkt, dobře provedený a slibný. Vynikající systém objektů, přemýšlel a pracoval.

Níže je začátek popisu interního objektu tohoto produktu. Jedna jednoduchá abstrakce buňky tabulky z obecně prázdné abstrakce - nějaký druh kontejneru. A to není celý popis.

Příkladem autora není obrázek.

Není třeba se potápět do přírody, abyste to pochopili. Použití četných komentářů zde neposkytuje jasnost a chráněné slova soukromé a veřejné říkají především to, že vývojář třetí strany používající tuto knihovnu se na správném místě změnil na soukromí na veřejnosti (viz komentář: "sc 06/19/2016 byl soukromé

Jedná se o chybu v kódu, který při použití byl vývojář nucen opravit, a proto potřeboval něco změnit.

Lze předpokládat, že ve fázi vývoje bylo nutné omezit přístup k těmto nebo jiným objektům, ale tady je další důležitá věc. Existuje život příkladů, existuje život předmětů, ale už je nový život - to, co se děje se systémem objektů ve své aplikaci.

Život ve vývoji a životě v aplikaci. Charakteristickým rysem moderního programování je rigidní popření kontinuity. Pokud vývojář dříve zaručil, že každá nová verze doplní a zlepší předchozí verzi, pak se každá nová verze objektu, jazyka, programovacího prostředí zásadně nebo alespoň zásadně liší od předchozí verze.

Dokonce i podmínky hostingu na hostiteli se mohou změnit tak, že budete muset znovu kód. A často je to velmi obtížné.

Dobrá dědičnost, dobrý výnos

Nikdo není imunní před chybami. A každý nový podnik vyžaduje znalosti. PHPWord je dobrá knihovna a stačí si na to zvyknout. Mnoho odborníků strávilo spoustu času. Vývojář, který se shromáždil, aby jej využil, by měl věnovat dostatek času na studium struktury souboru Word. To není tajemství.

Objektový systém PHPWord bude transparentní a přístupný. Dává se tak, jak je, ale pokud je touha jít dále, protože současná funkčnost je nedostatečná. Dobrý nápad. Pak je to další systém objektů a je lepší, pokud jde dále.

Není tak špatná myšlenka tvrdého odmítnutí kontinuity: stimuluje rozvoj znalostí. Objekty postavené jediným týmem vývojářů jsou jejich myšlenky na to, jak řešit problém, jak prezentovat jeho funkčnost.

zapouzdření v programování

Pochopení tohoto řešení jinou developerskou společností je transformací zkušeností. Pokud si dokážeme představit, že je to jen prototyp potřebného systému objektů, tak proč to nejen dědit? Dobrá dědičnost - rys přírodní inteligence, spoléhají na něco přiměřeného ze strany programování - to je z oblasti budoucnosti, i když nejbližší.

Opravte zapouzdření

Zapouzdření není kombinací dat a kódu. Jedná se o kombinaci toho, co je k dispozici a co je požadováno. Pokud si myslíte, že to není s daty a algoritmy, ale vnímete realitu a provádíte adekvátní zapouzdření, dědíte tuto akci od vývojáře k vývojáři, pak je pravděpodobné: vznik možných systémů pohybu a rozvíjení objektů.

Přečtěte si další

Formát JSON: příklad a popis