O que é hierarquia de classes?
Uma hierarquia de classes, também chamada taxonomia de classes, é um grupo de classes relacionadas que são conectadas por herança para fazer coisas semelhantes. A parte superior da hierarquia pode ser uma única classe base da qual todas as outras classes abaixo dela são derivadas ou a hierarquia pode ter várias classes base cujas funcionalidades se fundem posteriormente posteriormente em uma ou mais classes derivadas. Os relacionamentos entre as classes podem ser ilustrados como árvores, e cada árvore menor na grande taxonomia também pode ser considerada uma hierarquia.
Nem todas as hierarquias de classes podem ter várias raízes, e a estrutura de qualquer hierarquia de classes depende muito da linguagem em que está escrita. O C ++ permite herança múltipla, de modo que hierarquias complexas podem ser construídas com várias raízes e várias árvores que se fundem. O Java®, por outro lado, é limitado à herança única; portanto, seus relacionamentos de classe geralmente são mais simples, construídos como árvores relativamente independentes com uma única raiz. A herança de interface pode adicionar alguma complexidade a uma hierarquia de classes em Java®, mas as interfaces quase nunca são invocadas em uma estrutura tão complexa que seria como mesclar árvores.
Os componentes de uma hierarquia de classes podem variar em tipo e função, desde que as regras do idioma sejam sempre seguidas com relação à herança. As classes em uma hierarquia podem ser públicas, protegidas, abstratas, concretas ou virtuais. Interfaces, funções globais e amigos também podem ser usados. Dependendo da linguagem do computador, alguns desses tipos podem se prestar melhor à herança do que outros. Em geral, as hierarquias são muito flexíveis e podem ser usadas de várias maneiras para muitos propósitos.
Não há regras rígidas sobre onde tipos específicos de classes devem ser colocados em uma hierarquia. Qualquer classe pode ser concebivelmente qualquer um dos tipos mencionados acima. Em geral, as últimas classes na hierarquia que não possuem classes derivadas abaixo delas devem ser públicas e concretas. Como hierarquias de classes puramente abstratas também podem existir, isso é apenas uma regra de ouro.
Embora uma hierarquia de classes possa ser uma ferramenta útil para organizar o código e encapsular a funcionalidade, pode haver momentos em que investigar profundamente uma hierarquia possa realmente confundir o código, em vez de esclarecê-lo e facilitar sua manutenção. Construir um relacionamento robusto entre muitas classes requer uma certa previsão; Embora inicialmente seja mais fácil dividir o código em muitos pedaços pequenos, esses pedaços pequenos podem se tornar mais difíceis de manipular posteriormente. Quando criada corretamente, uma hierarquia de classes ajuda desenvolvedores e usuários a determinar como as classes funcionam. Se for construído sem manutenção e clareza em mente, os muitos níveis de herança podem ser confusos para se olhar e entender.