En informática , una interfaz de usuario orientada a objetos ( OOUI ) es un tipo de interfaz de usuario basada en una metáfora de programación orientada a objetos , y describe la mayoría de los sistemas operativos modernos (" sistemas operativos orientados a objetos "), como MacOS y Windows . En una OOUI, el usuario interactúa explícitamente con objetos que representan entidades en el dominio del que se ocupa la aplicación. Muchas aplicaciones de dibujo vectorial, por ejemplo, tienen una OOUI: los objetos son líneas, círculos y lienzos. El usuario puede seleccionar explícitamente un objeto, alterar sus propiedades (como tamaño o color) o invocar otras acciones sobre él (como moverlo, copiarlo o realinearlo). Si una aplicación empresarial tiene alguna OOUI, el usuario puede seleccionar y/o invocar acciones sobre objetos que representan entidades en el dominio empresarial, como clientes, productos o pedidos.
Jakob Nielsen define la OOUI en contraste con las interfaces orientadas a funciones: "Las interfaces orientadas a objetos a veces se describen como una aplicación que da la vuelta a la situación, en comparación con las interfaces orientadas a funciones. El foco principal de la interacción cambia y pasa a ser los datos del usuario y otros objetos de información que normalmente se representan gráficamente en la pantalla como iconos o ventanas". [1]
Dave Collins define una OOUI como aquella que demuestra tres características:
Jef Raskin sugiere que la característica más importante de una OOUI es que adopta un estilo de interacción "sustantivo-verbo", en lugar de "verbo-sustantivo", y que esto tiene varias ventajas en términos de usabilidad. [3]
Existe un gran potencial de sinergia entre el concepto OOUI y otras ideas importantes en el diseño de la interfaz de usuario, entre las que se incluyen:
Muchas imaginaciones futuristas de interfaces de usuario se basan en gran medida en conceptos de OOUI y, especialmente, de OOGUI. [4] Sin embargo, hay muchos ejemplos de interfaces de usuario que implementan una o más de esas otras ideas, pero que, de hecho, no son OOUI, aunque a menudo se las etiqueta erróneamente como OOUI. [5] Por el contrario, hay ejemplos de OOUI que no son gráficas, ni emplean técnicas de manipulación directa, ni emplean metáforas fuertes. Por ejemplo, las primeras versiones del lenguaje de programación Smalltalk tenían una interfaz de línea de comandos que, no obstante, también era claramente una OOUI, [6] aunque posteriormente se hizo más conocida por su papel pionero en el desarrollo de GUI, manipulación directa y metáforas visuales.
Aunque existen muchos paralelos conceptuales entre las OOUI y la programación orientada a objetos , no se deduce que una OOUI tenga que implementarse utilizando un lenguaje de programación orientado a objetos .
Las directrices de IBM para Common User Access (CUA), (posiblemente el intento más completo de definir un estándar para el diseño de OOUI) establecían que "si bien la programación orientada a objetos puede facilitar el desarrollo de una interfaz de usuario orientada a objetos, no es un requisito previo. Una interfaz de usuario orientada a objetos se puede desarrollar con lenguajes y herramientas de programación más tradicionales". [7]
Sin embargo, existen sinergias fuertes. Larry Tesler , quien dejó Xerox PARC en 1980 para unirse a Apple, subrayó la relación:
Muchos observadores han planteado la hipótesis de que la interfaz de usuario de Smalltalk y el lenguaje de Smalltalk son innovaciones separables. En consecuencia, la mayoría de los sistemas influenciados por la interfaz de usuario de Smalltalk se han diseñado sin recurrir al enfoque de implementación de Smalltalk. En Apple, después de usar Pascal para implementar seis aplicaciones iniciales para Lisa , descubrimos razones convincentes para cambiar nuestro lenguaje de programación para incorporar más ideas de Smalltalk. Las aplicaciones de Lisa ahora están escritas en el lenguaje Clascal , una extensión de Pascal que presenta objetos, clases, subclases e invocación de procedimientos mediante paso de mensajes. [8]
También existe una sinergia evidente entre el concepto de OOUI y la idea de construir software a partir de objetos de dominio . Sin embargo, de ello no se deduce que los objetos que un usuario ve e interactúa dentro de una OOUI tengan que corresponderse con los objetos de dominio sobre los que se construye la aplicación.
Las directrices de la CUA establecen que "en una interfaz de usuario orientada a objetos, los objetos con los que trabaja un usuario no corresponden necesariamente a los objetos o módulos de código que un programador utilizó para crear el producto". [7] Los métodos de diseño básicos descritos en la CUA se perfeccionaron aún más en el método OVID [9] que utilizó UML para modelar la interfaz.
Mark van Harmelen afirma que "el diseño de la interfaz de usuario orientada a objetos no requiere que los diseñadores adopten una perspectiva orientada a objetos del problema desde el principio del proyecto. Además, incluso si los diseñadores adoptan una perspectiva orientada a objetos durante todo el proyecto, les resultará beneficioso centrarse por separado en el modelo de objetos y en el diseño de la interfaz de usuario orientada a objetos". [10]
Por el contrario, el patrón de objetos desnudos es un enfoque para el diseño de aplicaciones que, al menos en su forma ingenua, impone una correspondencia directa entre los objetos representados en la OOUI y los objetos de dominio subyacentes, generando automáticamente los primeros a partir de los segundos. [11]