Definirea prototipului de programare a prototipului de programare și a sinonimelor prototipului

Arabă Bulgară Chineză Croată Cehă Daneză Olandeză Engleză Estoniană Finlandeză Franceză Germană Greacă Hindi Indonezian Islandeză Italiană Japoneză Letonă Lituaniană malgașă Norvegiană Persană Poloneză Portugheză Română Rusă Sârbă Slovacă Slovenă Spaniolă Thai Turcă Vietnameză suedeză







Arabă Bulgară Chineză Croată Cehă Daneză Olandeză Engleză Estoniană Finlandeză Franceză Germană Greacă Hindi Indonezian Islandeză Italiană Japoneză Letonă Lituaniană malgașă Norvegiană Persană Poloneză Portugheză Română Rusă Sârbă Slovacă Slovenă Spaniolă Thai Turcă Vietnameză suedeză

definiție - PROTOTYPE PROGRAMMING

Din Wikipedia, enciclopedia gratuită

Comparație cu abordarea orientată spre clasă

În limbile bazate pe conceptul de "clasă", toate obiectele sunt împărțite în două tipuri principale - clase și instanțe. Clasa definește structura și funcționalitatea (comportamentul), aceeași pentru toate instanțele din această clasă. O instanță este un suport de date - adică are o stare. schimbarea în funcție de comportamentul dat de clasă.

Suporterii programării prototipului susțin adesea că limbile bazate pe clase duc la o concentrare excesivă asupra taxonomiei claselor și a relației dintre ele. În contrast, prototipul se concentrează asupra comportamentului unui număr mic de "eșantioane", care sunt apoi clasificate ca obiecte "de bază" și folosite pentru a crea alte obiecte. Multe sisteme orientate pe prototipuri acceptă schimbarea prototipurilor în timpul execuției programului, în timp ce doar o mică parte a sistemelor orientate spre clasă (de exemplu, Smalltalk) vă permite să modificați dinamic clasele.

Deși marea majoritate a sistemelor bazate pe prototipuri se bazează pe limbi interpretate cu tastare dinamică, este posibil din punct de vedere tehnic să se adauge prototipuri în limbile cu verificare de tip static. Limba Omega este un exemplu al unui astfel de sistem.

Proiectarea obiectelor

În limbile orientate spre clasă, se creează o nouă instanță apelând constructorul de clasă (eventual cu un set de parametri). Copia rezultată are o structură și un comportament rigid definit de clasa sa.







În sistemele orientate pe prototipuri, sunt prevăzute două metode pentru crearea unui obiect nou: clonarea unui obiect existent sau crearea unui obiect de la zero. Pentru a crea un obiect de la zero, programatorul este prevăzut cu mijloacele sintactice de adăugare a proprietăților și metodelor obiectului. În viitor, o copie completă poate fi obținută din obiectul rezultat, o clonă. În procesul de clonare, copia moșteneste toate caracteristicile prototipului său, dar din acel moment devine independent și poate fi schimbat. În unele implementări, copiile stochează trimiteri la obiecte prototip, delegând o parte din funcționalitatea lor; în timp ce schimbarea prototipului poate afecta toate copiile sale. În alte implementări, obiectele noi sunt complet independente de prototipurile lor. Luați în considerare ambele cazuri.

delegare

În limbile orientate pe prototipuri care utilizează delegarea. Mediul de execuție este capabil să trimită apeluri de metodă (sau să caute datele necesare) pur și simplu urmând lanțul de delegare a indicatorilor (de la obiect la prototipul său), până când coincide. Spre deosebire de relația "clasă-instanță", relația "prototip-descendenți" nu cere ca obiectele descendente să păstreze asemănarea structurală cu prototipul lor. De-a lungul timpului, se pot adapta și îmbunătăți, dar nu este nevoie să reproiectăm prototipul. Este important să adăugați / ștergeți / modificați nu numai date, ci și funcții, în timp ce funcțiile sunt, de asemenea, obiecte din primul nivel. Ca rezultat, majoritatea limbajelor orientate pe prototipuri numesc datele și metodele obiectului "sloturi" (celule).

cascadă

Printre avantajele acestei abordări se numără faptul că creatorul unei copii poate schimba aceasta fără teama de efecte secundare printre alți descendenți ai strămoșului său. De asemenea, costurile computaționale pentru expediere sunt reduse drastic, deoarece nu este nevoie să ocolim întregul lanț de posibili delegați în căutarea unui slot adecvat (metoda sau atribut).

Un alt dezavantaj este că cele mai simple implementări ale acestui model conduc la creșterea consumului de memorie (comparativ cu modelul de delegare), deoarece fiecare clonă, până la schimbarea acesteia, va conține o copie a datelor prototipului său. Cu toate acestea, această problemă este rezolvată prin separarea optimă a datelor nemodificate și prin utilizarea "copiilor leneși" - care a fost folosit în Kevo.

Susținătorii modelelor de obiecte orientate spre clasă care critică abordarea prototip sunt deseori preocupați de aceleași probleme pe care le preocupă propunătorii de tipărire statică cu limbile cu tastare dinamică. În special, discuțiile se referă la subiecte precum corectitudinea, securitatea. predictibilitatea și eficacitatea programului.

În ceea ce privește primele trei puncte, atunci clasele sunt adesea văzute ca tipurile (și, într-adevăr, așa cum este ea în cele mai orientate obiect limbi static tastate), și se presupune că clasele furnizează anumite acorduri și să se asigure că exemplarele se va comporta bine într-un anumit fel .

literatură







Articole similare

Trimiteți-le prietenilor: