La modularidad es un concepto que no tiene que ver necesariamente con la programación orientada objetos. Decimos que un mueble de cocina es "modular", por ejemplo, cuando se compone de diversas piezas que pueden ser ensambladas de varias maneras, obteniendo diversas configuraciones. Un programa cualquiera es modular cuando se compone de diversos módulos relativamente independientes entre sí. Una de las supuestas ventajas de la programacón orientada a objetos es que permite incrementar la modularidad de los programas con respecto a la programación estructurada, al constituir cada objeto un módulo que puede ser ensamblado con otros objetos para formar un programa.
La jerarquía en un contexto de orientación a objeto es una manera de agrupar objetos en clases y subclases. Por ejemplo, podría establecerse una clase genérica Figura Geométrica con color, área y superficie (que son propiedades comunes a todas las fdiguras geométricas) y luego derivarse de ella clases Círculo (con centor, diámetro, etc), Cuadrado (con Lado), etc. La clase Figura Geométrica sería la clase madre de la que se derivan las demás, ocupando la cúspide de la jerarquía de clases.
¡Suerte!