Descobertas

Diretamente do cotidiano de um programador

Mais um pouco sobre herança prototípica

leave a comment »

Vamos continuar com as minhas divagações sobre herança prototípica. ;)

Continuarei citando mais vantagens e desvantagens entre a herança prototípica em relação a baseada em classes. Num outro post, quando sobrar um tempinho, vou falar sobre as maneiras de simular a flexibilidade da herança prototípica em Ruby por meio do uso de módulos como mixins, metaprogramação e do método Class#new que aceita um bloco como parâmetro.

Vantagens

Algumas vantagens que não foram citadas no primeiro post:

  • Relacionamentos simplificados entre objetos: para entender como os objetos se relacionam em um sistema baseado em classes devemos saber que podem existir dois tipo de relações entre eles. A primeira, citada no paper como ‘is_a’, indica se um objeto é instância de uma classe. A segunda, ‘kind_of’, indica se a classe objeto é subclasse de outra. Quando se tem herança prototípica, a única relação entre dois objetos é ‘inherits_from’ que indica se ele foi clonado de outro.
  • Criação por cópia: instanciar um objeto a partir de uma classe é como construir uma casa a partir de uma planta. Clonar um objeto a partir de outro seria então uma metáfora mais simples para instanciação.
  • Exemplos de módulos pré-existentes: Protótipos são mais contretos do que classes por que eles são modelos existentes com comportamento definido, que pode ser observado. Eles são exemplos do comportamento que será clonado por outros objetos. Classes são descrições do que os objetos instanciados por elas virão a ser. Há uma diferença entre ser um exemplo que se pode interagir e uma descrição estática.

Desvantagens

As principais desvantagens são relacionadas à organização do código. Como saber se um objeto só existe para ser protótipo de outros? Esse problema é um sistema grande pode dar uma baita dor de cabeça. Uma saída, ainda que bem precária (na minha humilde opinião :) para isto pode ser usar convenções para nomes de variáveis.

Written by Dalto

novembro 18, 2009 às 4:23 am

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: