В вычислительной технике объектно -ориентированный пользовательский интерфейс ( OOUI ) — это тип пользовательского интерфейса , основанный на метафоре объектно-ориентированного программирования , и описывает большинство современных операционных систем (« объектно-ориентированные операционные системы »), таких как MacOS и Windows . В OOUI пользователь явно взаимодействует с объектами, представляющими сущности в домене, с которым связано приложение. Например, многие приложения для векторной графики имеют OOUI — объекты представляют собой линии, окружности и холсты. Пользователь может явно выбрать объект, изменить его свойства (например, размер или цвет) или вызвать другие действия с ним (например, переместить, скопировать или повторно выровнять его). Если бизнес-приложение имеет какой-либо OOUI, пользователь может выбирать и/или вызывать действия с объектами, представляющими сущности в бизнес-домене, такие как клиенты, продукты или заказы.
Якоб Нильсен определяет OOUI в отличие от функционально-ориентированных интерфейсов: «Иногда объектно-ориентированные интерфейсы описываются как выворачивающие приложение наизнанку по сравнению с функционально-ориентированными интерфейсами. Основное внимание при взаимодействии смещается на данные пользователя и другие информационные объекты, которые обычно графически представлены на экране в виде значков или в окнах». [1]
Дэйв Коллинз определяет OOUI как демонстрирующий три характеристики:
Джеф Раскин предполагает, что наиболее важной характеристикой OOUI является то, что он использует стиль взаимодействия «существительное-глагол», а не «глагол-существительное», и что это имеет несколько преимуществ с точки зрения удобства использования. [3]
Существует большой потенциал синергии между концепцией OOUI и другими важными идеями в дизайне пользовательского интерфейса, включая:
Многие футуристические представления о пользовательских интерфейсах в значительной степени опираются на концепции OOUI и особенно OOGUI. [4] Однако существует множество примеров пользовательских интерфейсов, которые реализуют одну или несколько из этих других идей, но которые на самом деле не являются OOUI - хотя их часто ошибочно называют OOUI. [5] И наоборот, существуют примеры OOUI, которые не являются графическими, не используют методы прямого манипулирования и не используют сильные метафоры. Например, самые ранние версии языка программирования Smalltalk имели интерфейс командной строки , который, тем не менее, также был явно OOUI, [6] хотя впоследствии он стал более известен своей новаторской ролью в разработке GUI, прямого манипулирования и визуальных метафор.
Хотя между OOUI и объектно-ориентированным программированием существует множество концептуальных параллелей , из этого не следует, что OOUI обязательно должен быть реализован с использованием объектно-ориентированного языка программирования .
В рекомендациях IBM для Common User Access (CUA) (возможно, наиболее полной попытке определения стандарта для проектирования OOUI) говорилось, что «хотя объектно-ориентированное программирование может облегчить разработку объектно-ориентированного пользовательского интерфейса, оно не является обязательным условием. Объектно-ориентированный пользовательский интерфейс может быть разработан с использованием более традиционных языков программирования и инструментов». [7]
Однако есть сильная синергия. Ларри Теслер , который покинул Xerox PARC в 1980 году, чтобы присоединиться к Apple, подчеркнул эту связь:
Многие наблюдатели выдвинули гипотезу, что пользовательский интерфейс Smalltalk и язык Smalltalk являются разделимыми инновациями. Следовательно, большинство систем, на которые повлиял пользовательский интерфейс Smalltalk, были спроектированы без использования подхода Smalltalk к реализации. В Apple, после использования Pascal для реализации шести начальных приложений для Lisa , мы обнаружили веские причины изменить наш язык программирования, чтобы включить больше идей из Smalltalk. Приложения Lisa теперь пишутся на языке Clascal , расширении Pascal, включающем объекты, классы, подклассы и вызов процедур путем передачи сообщений. [8]
Также существует очевидная синергия между концепцией OOUI и идеей построения программного обеспечения из объектов домена . Однако из этого не следует, что объекты, которые пользователь видит и с которыми взаимодействует в рамках OOUI, должны соответствовать объектам домена , на которых построено приложение.
В рекомендациях CUA говорилось, что «В объектно-ориентированном пользовательском интерфейсе объекты, с которыми работает пользователь, не обязательно соответствуют объектам или модулям кода, которые программист использовал для создания продукта». [7] Базовые методы проектирования, описанные в CUA , были далее усовершенствованы в методе OVID [9] , который использовал UML для моделирования интерфейса.
Марк ван Хармелен утверждает, что «объектно-ориентированный дизайн пользовательского интерфейса не требует от дизайнеров принимать объектно-ориентированный взгляд на проблему с самого начала проекта. Более того, даже если дизайнеры придерживаются объектно-ориентированной точки зрения на протяжении всего проекта, они выиграют от того, что будут фокусироваться отдельно на объектной модели и объектно-ориентированном дизайне пользовательского интерфейса». [10]
Напротив, шаблон голых объектов представляет собой подход к проектированию приложений, который, по крайней мере в своей наивной форме, обеспечивает прямое соответствие между объектами, представленными в OOUI, и базовыми объектами домена, автоматически генерируя первые из вторых. [11]