Objekt (informatika) - Object (computer science)

V počítačové vědy , An objekt může být proměnná , na datovou strukturu , je funkce , nebo způsob , a jako takový, je hodnota v paměti odkazuje pomocí identifikátoru .

V objektově orientovaného programování paradigmatu , objekt může být kombinace proměnných, funkcí a datových struktur; zejména ve třídě bázi variant vzoru se vztahuje na konkrétní instance části třídy .

V relačním modelu správy databáze může být objektem tabulka nebo sloupec nebo asociace mezi daty a databázovou entitou (například přiřazení věku osoby ke konkrétní osobě).

Objektově založené jazyky

Důležitým rozdílem v programovacích jazycích je rozdíl mezi objektově orientovaným jazykem a objektovým jazykem. Jazyk je obvykle považován za objektový, pokud obsahuje základní funkce pro objekt: identitu, vlastnosti a atributy. Jazyk je považován za objektově orientovaný, pokud je objektový a má také schopnost polymorfismu , dědičnosti, zapouzdření a případně složení. Polymorfismus odkazuje na schopnost přetížit název funkce více chováním na základě toho, které objekty jsou jí předány. Konvenční předávání zpráv diskriminuje pouze na první objekt a považuje to za „odeslání zprávy“ tomuto objektu. Některé jazyky OOP, jako například Flavours a Common Lisp Object System (CLOS), však umožňují rozlišovat na více než prvním parametru funkce. Dědičnost je schopnost podtřídy třídy objektů, vytvoření nové třídy, která je podtřídou existující a dědí všechna omezení a chování dat svých rodičů, ale také přidává nová a / nebo mění jednu nebo více z nich.

Objektově orientované programování

Objektově orientované programování je přístup k navrhování modulárních opakovaně použitelných softwarových systémů. Objektově orientovaný přístup je vývojem dobrých designových postupů, které sahají až na samý začátek počítačového programování. Objektová orientace je jednoduše logickým rozšířením starších technik, jako je strukturované programování a abstraktní datové typy . Objekt je abstraktní datový typ s přidáním polymorfismu a dědičnosti .

Spíše než strukturovat programy jako kód a data, objektově orientovaný systém tyto dva integruje pomocí konceptu „objektu“. Objekt má stav (data) a chování (kód). Objekty mohou odpovídat věcem nalezeným ve skutečném světě. Například grafický program bude mít objekty jako kruh , čtverec , nabídka . Online nákupní systém bude mít objekty jako nákupní košík, zákazník, produkt . Nákupní systém bude podporovat chování, jako je zadávání objednávek , provádění plateb a nabídka slev . Objekty jsou navrženy jako hierarchie tříd. Například s nákupním systémem mohou existovat třídy na vysoké úrovni, jako je elektronický výrobek , kuchyňský výrobek a kniha . Mohou existovat další upřesnění, například u elektronických produktů : CD přehrávač, DVD přehrávač atd. Tyto třídy a podtřídy odpovídají množinám a podmnožinám v matematické logice.

Specializované objekty

Důležitým konceptem pro objekty je návrhový vzor . Návrhový vzor poskytuje opakovaně použitelnou šablonu k řešení běžného problému. Následující popisy objektů jsou příklady některých nejběžnějších návrhových vzorů pro objekty.

  • Funkční objekt : objekt s jedinou metodou (v C ++ by touto metodou byl operátor funkce „operator ()“), který funguje podobně jako funkce (jako ukazatel C / C ++ na funkci).
  • Neměnný objekt : objekt nastavený s pevným stavem v době vytvoření a který se poté nezmění.
  • Objekt první třídy : objekt, který lze použít bez omezení.
  • Kontejnerový objekt : objekt, který může obsahovat další objekty.
  • Tovární objekt : objekt, jehož účelem je vytvářet další objekty.
  • Metaobjekt : objekt, ze kterého lze vytvářet další objekty (ve srovnání s třídou , která nemusí být nutně objektem).
  • Prototypový objekt : specializovaný metaobjekt, ze kterého lze kopírováním vytvořit další objekty
  • Boží předmět : předmět, který toho ví nebo dělá příliš mnoho (je to příklad anti-vzoru ).
  • Objekt Singleton : objekt, který je jedinou instancí své třídy během životnosti programu.
  • Objekt filtru : objekt, který přijímá proud dat jako svůj vstup a transformuje jej na výstup objektu. Vstupní a výstupní proudy jsou často proudy znaků, ale mohou to být také proudy libovolných objektů. Obvykle se používají v obálkách, protože skrývají existující implementaci s abstrakcí požadovanou na straně vývojáře.

Distribuované objekty

Objektově orientovaný přístup není jen programovací model. Může být použit stejně dobře jako jazyk definice rozhraní pro distribuované systémy. Objekty v modelu distribuovaného výpočtu mají tendenci být větší zrnité, déle trvající a více orientované na služby než programovací objekty.

Standardní metodou pro zabalení distribuovaných objektů je rozhraní Interface Definition Language (IDL). IDL chrání klienta před všemi podrobnostmi o objektu distribuovaného serveru. Podrobnosti, například na kterém počítači je objekt umístěn, jaký programovací jazyk používá, jaký operační systém a další problémy specifické pro platformu. IDL je také obvykle součástí distribuovaného prostředí, které poskytuje služby, jako jsou transakce a vytrvalost všem objektům, jednotným způsobem. Dva nejpopulárnější standardy pro distribuované objekty jsou Object Management Group ‚s CORBA standard a Microsoft ‘ s DCOM.

Kromě distribuovaných objektů byla navržena řada dalších rozšíření základního konceptu objektu, které umožňují distribuované výpočty:

  • Objekty protokolu jsou součásti sady protokolů, které uzavírají síťovou komunikaci v objektově orientovaném rozhraní.
  • Replikované objekty jsou skupiny distribuovaných objektů (nazývané repliky ), které provozují distribuovaný protokol více stran, aby dosáhly vysoké konzistence mezi svými interními stavy a které reagují na požadavky koordinovaným způsobem. Mezi příklady patříobjekty CORBA odolné vůči chybám.
  • Živé distribuované objekty (nebo jednoduše živé objekty ) zobecňujíkoncept replikovaných objektů na skupiny replik, které mohou interně používat jakýkoli distribuovaný protokol, což může mít za následek jen slabou konzistenci mezi jejich místními stavy.

Některá z těchto rozšíření, například distribuované objekty a objekty protokolu , jsou výrazy specifické pro doménu pro speciální typy „běžných“ objektů používaných v určitém kontextu (například vzdálené vyvolání metody nebo složení protokolu ). Jiné, jako jsou replikované objekty a živé distribuované objekty , jsou nestandardnější v tom, že opouštějí obvyklý případ, kdy se objekt nachází v jednom místě najednou, a aplikují tento koncept na skupiny entit (replik), které by mohly překlenout na více místech může mít pouze slabě konzistentní stav a jehož členství se může dynamicky měnit.

Sémantický web

Sémantický web je v podstatě rámcem rozprostřenými objekty. Dvě klíčové technologie v sémantickém webu jsou Web Ontology Language (OWL) a Resource Description Framework (RDF). RDF poskytuje schopnost definovat základní objekty - jména, vlastnosti, atributy, vztahy - které jsou přístupné přes internet. OWL přidává bohatší objektový model založený na teorii množin, který poskytuje další možnosti modelování, jako je vícenásobná dědičnost .

Objekty OWL nejsou jako standardní velkoplošné distribuované objekty přístupné prostřednictvím rozhraní Language Definition Language. Takový přístup by nebyl vhodný pro internet, protože internet se neustále vyvíjí a standardizace na jedné sadě rozhraní je obtížné dosáhnout. Objekty OWL mají tendenci být podobné druhům objektů používaných k definování modelů aplikačních domén v programovacích jazycích, jako jsou Java a C ++ .

Mezi objekty OWL a tradičními objektově orientovanými programovacími objekty však existují důležité rozdíly. Tradiční objekty se kompilují do statických hierarchií obvykle s jedinou dědičností, ale objekty OWL jsou dynamické. Objekt OWL může změnit svou strukturu za běhu a může se stát instancí nových nebo různých tříd.

Dalším zásadním rozdílem je způsob, jakým model zachází s informacemi, které aktuálně v systému nejsou. Programovací objekty a většina databázových systémů používají „ předpoklad uzavřeného světa “. Pokud systém nezná skutečnost, předpokládá se, že je nepravdivá. Objekty sémantického webu používají předpoklad otevřeného světa , tvrzení se považuje za nepravdivé, pouze pokud existuje skutečná relevantní informace, že je nepravdivé, jinak se předpokládá, že je neznámé, ani pravdivé, ani nepravdivé.

Objekty OWL se ve skutečnosti nejvíce podobají objektům v jazycích rámců umělé inteligence, jako jsou KL-ONE a Loom.

Následující tabulka porovnává tradiční objekty z objektově orientovaných programovacích jazyků, jako je Java nebo C ++, se sémantickými webovými objekty:

Objekty OOP Sémantické webové objekty
Třídy jsou považovány za typy pro instance. Třídy jsou považovány za soubory jednotlivců.
Instance nemohou změnit svůj typ za běhu. Členství ve třídě se může za běhu změnit.
Seznam tříd je plně znám v době kompilace a poté se již nemůže změnit. Třídy lze vytvářet a měnit za běhu.
Překladače se používají v době sestavení. Chyby v době kompilace označují problémy. Reasonery lze použít pro klasifikaci a kontrolu konzistence za běhu nebo v době sestavení.
Třídy kódují většinu svého významu a chování prostřednictvím imperativních funkcí a metod. Třídy objasňují svůj význam, pokud jde o příkazy OWL. Nelze připojit žádný nezbytný kód.
Instance jsou anonymní, pokud je nelze snadno vyřešit zvenčí provádějícího programu. Všechny pojmenované prostředky RDF a OWL mají jedinečný identifikátor URI, pod kterým na ně lze odkazovat.
Uzavřený svět: Pokud není dostatek informací k prokázání pravdivosti tvrzení, předpokládá se, že je nepravdivý. Otevřený svět: Pokud není dostatek informací k prokázání pravdivosti tvrzení, pak může být pravdivý nebo nepravdivý.

Viz také

Reference

externí odkazy