Creación de árboles de contenido para no-programadores

La Programación Orientada a Objetos («Object-Oriented Programming» en inglés) es un paradigma de programación creado en los 90 y ampliamente utilizado en el desarrollo de software. Sus beneficios son la optimización del uso de los recursos de la máquina donde se ejecuta el código, la reducción y escalabilidad de este, y la mejora en su comprensión.

Podemos resumir la Programación Orientada a Objetos diciendo que el código de una aplicación se estructura utilizando los siguientes elementos:

  • Clases — Definiciones abstractas de estructuras de datos. Están formadas por:
    • Atributos — Datos que va a contener la clase.
    • Métodos — Funcionalidades que se van a realizar usando los Atributos de la clase.
  • Objetos — Instancias de cada una de las clases.

Recuperando el ejemplo del listín telefónico del artículo Diseñando árboles de contenido, si aplicamos la forma de trabajar de la Programación Orientada a Objetos, la estructura de la aplicación será la siguiente:

  • Clase: Contacto
    • Atributos: Nombre, Apellidos, Teléfono, Tipo de teléfono.
    • Métodos: Añadir contacto, Editar contacto, Buscar contacto, Eliminar contacto.

Todas las entradas del listín telefónico serán Objetos (instancias) de la clase Contacto. Así:

Objeto de la clase Contacto:

  • Nombre: Isabel
  • Apellidos: Pérez Martínez
  • Teléfono: 555 666 777
  • Tipo de teléfono: Fijo

Objeto de la clase Contacto:

  • Nombre: Alberto
  • Apellidos: Sánchez García
  • Teléfono: 666 777 888
  • Tipo de teléfono: Móvil

Objeto de la clase Contacto:

  • Nombre: …
  • Apellidos: …
  • Teléfono: …
  • Tipo de teléfono: …

Estructurando la información de este modo, el código de cada funcionalidad (Método) se escribirá una única vez y se ejecutará siempre que el usuario del listín telefónico quiera realizar esa acción. Por ejemplo, si el usuario está buscando el número de Isabel, una antigua compañera de trabajo de la que no recuerda el apellido, el método “Buscar contacto” sabrá que debe devolver un listado de todos los objetos cuyo campo “Nombre” contenga la palabra “Isabel”.

 

Como veis, la Programación Orientada a Objetos es un recurso estupendo para los UX a la hora de diseñar árboles de contenido y flujos de navegación. De nuevo, tan solo necesitamos ser metódicos, e ir de lo general a lo específico, profundizando en las funcionalidades que va a ofrecer nuestro producto y en la información necesaria para llevarlas a cabo.

Algunas recomendaciones a tener en cuenta a la hora de diseñar los árboles:

  • Utilizar nombres descriptivos y únicos para los Atributos. Esto nos facilitará la vida a nosotros, los diseñadores, pero será fundamental para las personas que aborden la estructura sin haber estado implicadas en su creación.
  • Utilizar esos mismos nombres de Atributo en el flujo de navegación. Así, las relaciones entre árbol y flujo serán directas.
  • Cada Clase debe contener al menos un Atributo obligatorio, y su valor deberá ser único en la estructura. Ese campo obligatorio dependerá de la Clase y sus funcionalidades. Por ejemplo, si nuestra aplicación de listín telefónico estuviese disponible online, la clase Usuario tendría como campo obligatorio y único el email del usuario, pues cada uno de ellos será identificado por su cuenta de correo electrónico.
  • Un Atributo repetido significa que hemos hecho algo mal. Si tenemos que almacenar un dato en dos lugares distintos estaremos malgastando espacio, y todas las funcionalidades que lo modifiquen tendrán que duplicar el trabajo.
  • El árbol de contenido nos debe permitir almacenar toda la información que necesitamos en el menor espacio posible, así que tendremos que iterarlo una y otra vez para optimizar su tamaño.
  • Debemos plantearlo de manera que sea fácilmente escalable, esto es, que podamos modificarlo o ampliarlo minimizando el impacto en la estructura general. Por ejemplo, habiendo definido la clase Contacto del modo en que lo hemos hecho, será muy sencillo añadir el campo «Correo electrónico». No tendremos que modificar el resto de Atributos de la clase y, así, el impacto en los Métodos será mínimo.
  • A la hora de representarlo visualmente, debemos observar escrupulosamente la jerarquía de los datos. El elemento o elementos de jerarquía más alta estarán arriba, e iremos descendiendo a medida que dicha jerarquía disminuya. Elementos de igual nivel deben aparecer siempre a la misma altura. Sí, esto probablemente hará que el árbol de contenido nos quede “feo”, pero aquí entra en juego el punto siguiente.
  • La finalidad del árbol de contenido es comunicativa, no artística. Podemos utilizar recursos como tipografias o color, pero siempre que sirvan a un fin: mejorar la legibilidad. Ya habrá otras fases del proceso de diseño donde ponernos festivaleros.
  • Practicar el desapego. Vamos a tener que iterar el árbol una y otra vez. El diseño del flujo de navegación probablemente revelará errores o cuestiones a mejorar en él, así que debemos estar abiertos al cambio.

En un próximo artículo explicaré el caso práctico del diseño de árbol de contenido de Expose, una aplicación asistente para la práctica de la fotografía analógica.

 

Photo by Kelly Sikkema on Unsplash