Descobertas

Diretamente do cotidiano de um programador

Arquivo para novembro 2009

Mais um pouco sobre herança prototípica

fazer um comentário »

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.

Escrito por Dalto

novembro 18, 2009 em 4:23 am

Seguir

Obtenha todo post novo entregue na sua caixa de entrada.