Classes e sub-classes

Neste capítulo estudaremos uma das mais poderosas características das linguagens orientadas para objetos, e de Smalltalk em particular. Trata-se da possibilidade de organizar a informação no computador em uma hierarquia de abstrações de forma semelhante à utilizada pela mente humana para lidar com a complexidade do mundo.

Um exemplo bem conhecido é a classificação dos animais e plantas em uma hierarquia de categorias. A cada categoria corresponde um conjunto de características específicas que a distingue das demais do mesmo nível. Além disso, cada categoria partilha também de todas as características específicas dos níveis acima do dela.

A figura abaixo ilustra a hierarquia do Reino Animal, organizada em sub-categorias chamadas filos, classes, ordens, famílias, gêneros e espécies. Ao lado de cada categoria, aparecem sublinhadas algumas de suas características específicas:

ANIMAL (reino) - sistema digestivo, movimento
VERTEBRADO (filo) - coluna vertebral
MAMÍFERO (classe) - fêmeas amamentam
ROEDOR (ordem) - incisivos compridos
CIURÍDEO (família) - cauda peluda
ESQUILO (gênero) - trepam em árvores
ESQUILO-VERMELHO (espécie) vermelho
ESQUILO-CINZA (espécie)- cinza
.
.

TÂMIA (gên)- possuem listas, fazem túneis
.
.

MURÍDEO (família) - cauda comprida

RATO (gênero) - peso 300 a 500 g
.
.
CAMUNDONGO (gênero) - peso 15 a 30 g
(instância: Mickey)

Note a diferença essencial entre os conceitos de categoria e instância de categoria. Um determinado camundongo (ex. Mickey), é uma instância do gênero camundongo. Como tal, Mickey é um objeto, e além das características próprias de sua categoria (ex. peso de 15 a 30 g), possui também todas as características das suas super-categorias, a saber, cauda comprida (murídeo), incisivos compridos (roedor), etc.

A forma de expressão é um é normalmente usada para dizer que um objeto é uma instância de uma determinada categoria. Por extensão, a mesma forma aplica-se a todas as super-categorias do objeto. Por exemplo, dizemos que Mickey é um Camundongo, é um Murídeo, é um Roedor, é um Mamífero, é um Vertebrado e é um Animal.

O ato de classificar os conceitos em uma hieraquia é que permite que as características partilhadas por vários sub-conceitos sejam associadas a um conceito comum, o que simplifica enormemente a manipulação intelectual de uma grande quantidade de conhecimentos.

Em Smalltalk, todas as informações são organizadas de forma similar, em uma hierarquia de classes e sub-classes. Cada classe implementa as características estruturais, bem como o protocolo de comunicação (mensagens), comuns a todos os objetos da classe. Cada sub-classe, por sua vez, só precisa implementar aquelas características que a diferenciam das demais.

No topo da hierarquia está a classe Objeto, onde são definidos os protocolos comuns a todos os objetos do sistema. Quanto mais alta uma classe está na hierarquia, tanto mais gerais são as características que ela representa. Quanto mais baixa, mais específicas são suas características.