Protocol (programare orientată pe obiecte) - Protocol (object-oriented programming)

Protocol este un termen folosit de anumite limbaje de programare orientate pe obiecte , cu o varietate de semnificații specifice, pe care alte limbaje le pot denumi interfață sau trăsătură .

Protocolul atunci când este utilizat altfel este asemănător unui protocol de comunicare , indicând lanțul de interacțiuni dintre apelant și obiect.

Limbile care folosesc termenul Protocol includ:

În aceste limbi, un protocol este un mijloc comun pentru obiecte discrete de a comunica între ele. Acestea sunt definiții ale metodelor și valorilor pe care obiectele sunt de acord, pentru a coopera, ca parte a unui API .

Protocolul / interfața este o descriere a:

  1. Mesajele care sunt înțelese de obiect.
  2. Argumentele cu care pot fi furnizate aceste mesaje.
  3. Tipurile de rezultate pe care le returnează aceste mesaje.
  4. Cele invarianții care sunt conservate în ciuda modificărilor la starea unui obiect.
  5. Situațiile excepționale care vor fi necesare pentru a fi tratate de către clienți la obiect.
  6. (Numai pentru utilizarea stilului de comunicații :) Secvența de apel și punctele de decizie ale metodelor, cum ar fi reprezentate în diagramele de interacțiune UML: Diagrama de comunicare , Diagrama de secvență , Diagrama de prezentare a interacțiunii / Diagrama de activitate , Diagrama de sincronizare .

Dacă obiectele sunt complet încapsulate, atunci protocolul va descrie singurul mod în care obiectele pot fi accesate de alte obiecte. De exemplu, în interfețele Java , interfața specifică o metodă pe care trebuie să o implementeze clasele de implementare. Aceasta înseamnă că o metodă separată de sortare, de exemplu, poate sorta orice obiect care implementează interfața comparabilă, fără a fi nevoie să știe nimic despre natura interioară a clasei (cu excepția faptului că două dintre aceste obiecte pot fi comparate prin intermediul ). ComparablecompareTo()compareTo()

Unele limbaje de programare oferă suport explicit de limbaj pentru protocoale / interfețe ( Ada , C # , D , Dart , Delphi , Go , Java , Logtalk , Object Pascal , Objective-C , PHP , Racket , Seed7 , Swift ). În C ++ interfețele sunt cunoscute ca clase de bază abstracte și sunt implementate folosind funcții virtuale pure . Funcțiile orientate obiect în Perl acceptă, de asemenea, interfețe.

Limbi non-orientate obiect

Deși limbajul de programare Go nu este considerat, în general, un limbaj orientat pe obiecte, acesta permite definirea metodelor pe tipuri definite de utilizator. Go are tipuri de „interfață” care sunt compatibile cu orice tip care acceptă un set dat de metode (tipul nu trebuie să implementeze în mod explicit interfața). Interfața goală interface{},, este compatibilă cu toate tipurile.

Rețineți că programarea funcțională și limbajele de programare distribuite folosesc termenul protocol asemănător cu utilizarea comunicațiilor (adică o specificație a schimburilor permise de mesaje, accent pe schimburi , nu pe mesaje). În special, următoarele sunt considerate, de asemenea, ca parte a unui protocol în aceste limbi:

  1. Secvențele permise de mesaje,
  2. Restricții impuse oricărui participant la comunicare,
  3. Efectele așteptate care vor apărea pe măsură ce mesajul este tratat.

Clasele de tipuri în limbi precum Haskell sunt utilizate pentru multe dintre lucrurile pentru care sunt utilizate protocoalele.

Vezi si

Referințe