estil de programació orientada a objectes From Wikipedia, the free encyclopedia
La programació basada en prototips és un estil de programació orientada a objectes en què la reutilització del comportament (coneguda com a herència) es realitza mitjançant un procés de reutilització d'objectes existents que serveixen com a prototips. Aquest model també es pot conèixer com a programació prototípica, orientada a prototips, sense classes o basada en instàncies.[1]
Tipus | terme de ciències de la computació i paradigma de programació ![]() |
---|---|
Característiques tècniques | |
Plataforma | C standard library i altres |
Més informació | |
Stack Exchange | Etiqueta ![]() |
| |
La programació basada en prototips utilitza objectes generalitzats del procés, que després es poden clonar i ampliar. Utilitzant la fruita com a exemple, un objecte "fruita" representaria les propietats i la funcionalitat de la fruita en general. Un objecte "plàtan" es clonaria a partir de l'objecte "fruita" i s'afegirien propietats generals específiques dels plàtans. Cada objecte "plàtan" individual es clonaria a partir de l'objecte genèric "plàtan". Compareu amb el paradigma basat en classes, on una classe "fruita" s'ampliaria amb una classe "plàtan".[2]
El primer llenguatge de programació orientat a prototips va ser Self, desenvolupat per David Ungar i Randall Smith a mitjans de la dècada de 1980 per investigar temes de disseny de llenguatge orientat a objectes. Des de finals de la dècada de 1990, el paradigma sense classes ha crescut cada cop més popular. Alguns llenguatges actuals orientats a prototips són JavaScript (i altres implementacions ECMAScript com JScript i Flash 's ActionScript 1.0), Lua, Cecil, NewtonScript, Io, Ioke, MOO, REBOL i AHK.
L'herència prototípica en JavaScript és descrita per Douglas Crockford com
"Fer prototips d'objectes i després... fer noves instàncies. Els objectes són mutables en JavaScript, de manera que podem augmentar les noves instàncies, donant-los nous camps i mètodes. Aquests poden actuar com a prototips per a objectes encara més nous. No necessitem classes per fer molts objectes semblants... Els objectes hereten dels objectes. Què podria haver-hi més orientat a objectes que això? »
Els defensors de la programació basada en prototips argumenten que anima el programador a centrar-se en el comportament d'algun conjunt d'exemples i només més tard preocupar-se de classificar aquests objectes en objectes arquetípics que posteriorment s'utilitzen d'una manera similar a les classes.[3] Molts sistemes basats en prototips fomenten l'alteració de prototips durant el temps d'execució, mentre que només uns pocs sistemes orientats a objectes basats en classes (com el sistema dinàmic orientat a objectes, Common Lisp, Dylan, Objective-C, Perl, Python, Ruby)., o Smalltalk) permeten alterar les classes durant l'execució d'un programa.
Gairebé tots els sistemes basats en prototips es basen en llenguatges interpretats i tipificats dinàmicament. Tanmateix, els sistemes basats en llenguatges tipificats estàticament són tècnicament factibles. El llenguatge Omega que es parla a Programació basada en prototips [4] és un exemple d'aquest sistema, tot i que segons el lloc web d'Omega, fins i tot Omega no és exclusivament estàtic, sinó que el seu "compilador pot optar per utilitzar l'enllaç estàtic quan això sigui possible i pot millorar. l'eficiència d'un programa".
Els defensors dels models d'objectes basats en classes que critiquen els sistemes basats en prototips sovint tenen preocupacions similars a les que els defensors dels sistemes de tipus estàtic per a llenguatges de programació tenen els sistemes de tipus dinàmic (vegeu el tipus de dades). Normalment, aquestes preocupacions impliquen la correcció, la seguretat, la predictibilitat, l'eficiència i el desconeixement del programador.