Uno de los features mas poderosos en POO es, talvez, la reutilización de código. Los diseños estructurados proporcionan código reusado en una cierta extensión (puedes hacer un procedimiento y usarlo tantas veces como quieras). De cualquier manera, el diseño OO va un paso mas allá, permitiendo definir relaciones entre clases que facilitan no solo la reutilización de código, pero también el diseño en general. Al organizar clases y factorizarlas en grupos en común. La herencia es un medio primario de proveer esta funcionalidad. La herencia permite a una clase heredar los atributos y métodos de otra clase. Esto permite la creación de nuevas clases abstrayendo atributos y funcionalidad comunes.
Uno de los mayores problemas del diseño en la POO es el factor en común de las varias clases que existen. Por ejemplo, al decir que tenemos una clase Dog
y una clase Cat
, y cada una de estas tendrá un atributo de eyeColor
. En un modelo procedimental, el código para Dog
y Cat
tendría que contener este atributo. En el diseño de la POO, el atributo podría ser movido hacia una clase arriba llamada Mammal
(junto con otros atributos y métodos). En este caso, tanto el Dog
como el Cat heredan de la clase Mammal
atributos, como en la siguiente imagen.