Programação baseada em protótipos Nota: Para outros significados, veja Prototype.
A programação baseada em protótipos é um estilo de programação orientada a objetos em que a reutilização de comportamento (conhecida como herança) é realizada por meio de um processo de reutilização de objetos existentes que servem como protótipos. Esse modelo também pode ser conhecido como programação prototípica, orientada a protótipos, sem classes ou baseada em instância. A programação baseada em protótipos usa objetos generalizados, que podem então ser clonados e estendidos. Usando frutas como exemplo, um objeto "fruta" representaria as propriedades e a funcionalidade das frutas em geral. Um objeto "banana" seria clonado do objeto "fruta" e propriedades gerais específicas para bananas seriam anexadas. Cada objeto "banana" individual seria clonado do objeto "banana" genérico. Compare com o paradigma baseado em classes, onde uma classe "fruta" seria estendida por uma classe "banana". A primeira linguagem de programação orientada a protótipos foi Self, desenvolvida por David Ungar e Randall Smith em meados da década de 1980 para pesquisar tópicos de design de linguagem orientada a objetos. Desde o final da década de 1990, o paradigma sem classes tem se tornado cada vez mais popular. Algumas linguagens orientadas a protótipos atuais são JavaScript (e outras implementações ECMAScript, como JScript e ActionScript 1.0 do Flash), Lua, Cecil, NewtonScript, Io, Ioke, MOO, REBOL e AHK. Projeto e implementaçãoA herança prototípica em JavaScript é descrita por Douglas Crockford como:
Os defensores da programação baseada em protótipo argumentam que ela encoraja o programador a se concentrar no comportamento de algum conjunto de exemplos e só mais tarde se preocupar em classificar esses objetos em objetos arquetípicos que mais tarde são usados de maneira semelhante às classes.[2] Muitos sistemas baseados em protótipos encorajam a alteração de protótipos durante o tempo de execução, enquanto poucos sistemas orientados a objetos baseados em classes (como o sistema dinâmico orientado a objetos, Common Lisp, Dylan, Objective-C, Perl, Python, Ruby ou Smalltalk) permitem que as classes sejam alteradas durante a execução de um programa. Quase todos os sistemas baseados em protótipos são baseados em linguagens interpretadas e dinamicamente tipadas. Sistemas baseados em linguagens estaticamente tipadas são tecnicamente viáveis, entretanto. A linguagem Omega discutida em Prototype-Based Programming[3] é um exemplo de tal sistema, embora de acordo com o site da Omega mesmo a Omega não seja exclusivamente estática, mas sim seu "compilador pode escolher usar ligação estática onde isso é possível e pode melhorar a eficiência de um programa." Referências
Information related to Programação baseada em protótipos |