Skip to main content

¿Qué es la jerarquía de clases?

Una jerarquía de clases, también llamada taxonomía de clases, es un grupo de clases relacionadas que están conectadas por herencia para hacer cosas similares. La parte superior de la jerarquía puede ser una sola clase base de la que se derivan todas las demás clases inferiores, o la jerarquía puede tener múltiples clases base cuyas funcionalidades se fusionen más adelante en una o más clases derivadas. Las relaciones entre las clases pueden ilustrarse como árboles, y cada árbol más pequeño dentro de la taxonomía grande también puede considerarse una jerarquía.

No todas las jerarquías de clases pueden tener múltiples raíces, y la estructura de cualquier jerarquía de clases depende en gran medida del lenguaje en el que está escrito. C ++ permite la herencia múltiple, por lo que se pueden construir jerarquías complejas con múltiples raíces y múltiples árboles que se fusionan entre sí. Java®, por otro lado, se limita a la herencia única, por lo que sus relaciones de clase son generalmente más simples, construidas como árboles relativamente independientes con una sola raíz. La herencia de interfaz puede agregar cierta complejidad a una jerarquía de clases en Java®, pero las interfaces casi nunca se invocan en un marco tan complejo que sería como fusionar árboles.

Los componentes de una jerarquía de clases pueden variar en tipo y función, siempre y cuando las reglas del lenguaje siempre se sigan con respecto a la herencia. Las clases en una jerarquía pueden ser públicas, protegidas, abstractas, concretas o virtuales. También se pueden usar interfaces, funciones globales y amigos. Dependiendo del lenguaje de la computadora, algunos de estos tipos pueden prestarse mejor a la herencia que otros. En general, las jerarquías son muy flexibles y pueden usarse de muchas maneras para muchos propósitos.

No existen reglas estrictas sobre dónde deben colocarse determinados tipos de clases en una jerarquía. Cualquier clase puede ser cualquiera de los tipos mencionados anteriormente. En general, las últimas clases en la jerarquía que no tienen clases derivadas debajo de ellas deben ser públicas y concretas. Sin embargo, dado que las jerarquías de clase puramente abstractas también pueden existir, esto es solo una regla general.

Aunque una jerarquía de clases puede ser una herramienta útil para organizar el código y encapsular la funcionalidad, puede haber ocasiones en las que profundizar demasiado en una jerarquía realmente confunda el código, en lugar de aclararlo y facilitar su mantenimiento. Construir una relación sólida entre muchas clases requiere cierta previsión; Si bien inicialmente podría ser más fácil dividir el código en muchas piezas pequeñas, esas piezas pequeñas pueden volverse más difíciles de manejar más adelante. Cuando se construye correctamente, una jerarquía de clases ayuda tanto a los desarrolladores como a los usuarios a determinar cómo funcionan las clases. Si se construye sin mantenimiento y claridad en mente, los muchos niveles de herencia pueden ser confusos para mirar hacia atrás y comprender.