Protokol (objektově orientované programování) - Protocol (object-oriented programming)

Protokol je termín používaný konkrétními objektově orientovanými programovacími jazyky s řadou specifických významů, které jiné jazyky mohou nazývat rozhraní nebo vlastnosti .

Protokol, pokud je používán jinak, je podobný komunikačnímu protokolu , který označuje řetězec interakcí mezi volajícím a objektem.

Mezi jazyky, které používají termín Protokol, patří:

V těchto jazycích je protokol běžným prostředkem pro vzájemnou komunikaci diskrétních objektů . Toto jsou definice metod a hodnot, na kterých se objekty dohodnou, aby spolupracovaly, jako součást API .

Protokol/rozhraní je popis:

  1. Zprávy, kterým objekt rozumí.
  2. Argumenty, ke kterým mohou být tyto zprávy dodávány.
  3. Typy výsledků, které tyto zprávy vracejí.
  4. Tyto invarianty , které jsou chráněny přes úpravy stavu objektu.
  5. Výjimečné situace, které budou muset klienti k objektu zpracovat.
  6. (Pouze pro použití ve stylu komunikace :) Sekvence volání a rozhodovací body metod, jako by byly zastoupeny v interakčních diagramech UML: Komunikační diagram , sekvenční diagram , diagram přehledu interakcí / diagram aktivit , časový diagram .

Pokud jsou objekty plně zapouzdřeny, pak protokol popíše jediný způsob, jak k objektům mohou přistupovat jiné objekty. Například v Java rozhraní je Comparablerozhraní určuje metodu compareTo(), která provádějí třídy musí implementovat. To znamená, že například oddělená metoda třídění může třídit jakýkoli objekt, který implementuje srovnatelné rozhraní, aniž byste museli vědět něco o vnitřní povaze třídy (kromě toho, že dva z těchto objektů lze porovnávat pomocí compareTo()).

Některé programovací jazyky poskytují explicitní jazykovou podporu pro protokoly/rozhraní ( Ada , C# , D , Dart , Delphi , Go , Java , Logtalk , Object Pascal , Objective-C , PHP , Racket , Seed7 , Swift ). V C ++ jsou rozhraní známá jako abstraktní základní třídy a jsou implementována pomocí čistě virtuálních funkcí . Objektově orientované funkce v Perlu také podporují rozhraní.

Neobjektově orientované jazyky

Přestože programovací jazyk Go není obecně považován za objektově orientovaný jazyk, umožňuje definovat metody na uživatelem definovaných typech. Go má typy „rozhraní“, které jsou kompatibilní s jakýmkoli typem, který podporuje danou sadu metod (typ nepotřebuje explicitně implementovat rozhraní). Prázdné rozhraní,, interface{}je kompatibilní se všemi typy.

Všimněte si, že funkční programování a distribuované programovací jazyky používají termín protokol podobný používání komunikací (tj specifikace povolených výměn zpráv, důraz na burzách , ne na zprávy). Za součást protokolu v těchto jazycích jsou považovány zejména následující:

  1. Povolené sekvence zpráv,
  2. Omezení uložená kterémukoli účastníkovi komunikace,
  3. Očekávané efekty, které se vyskytnou při zpracování zprávy.

Typové třídy v jazycích, jako je Haskell, se používají pro mnoho věcí, pro které se používají protokoly.

Viz také

Reference