Object-oriented user interface

Last updated

In computing, an object-oriented user interface (OOUI) is a type of user interface based on an object-oriented programming metaphor, and describes most modern operating systems ("object-oriented operating systems") such as MacOS and Windows. In an OOUI, the user interacts explicitly with objects that represent entities in the domain that the application is concerned with. Many vector drawing applications, for example, have an OOUI – the objects being lines, circles and canvases. The user may explicitly select an object, alter its properties (such as size or colour), or invoke other actions upon it (such as to move, copy, or re-align it). If a business application has any OOUI, the user may be selecting and/or invoking actions on objects representing entities in the business domain such as customers, products or orders.

Contents

Jakob Nielsen defines the OOUI in contrast to function-oriented interfaces: "Object-oriented interfaces are sometimes described as turning the application inside-out as compared to function-oriented interfaces. The main focus of the interaction changes to become the users' data and other information objects that are typically represented graphically on the screen as icons or in windows." [1]

Dave Collins defines an OOUI as demonstrating three characteristics:

Jef Raskin suggests that the most important characteristic of an OOUI is that it adopts a 'noun-verb', rather than a 'verb-noun' style of interaction, and that this has several advantages in terms of usability. [3]

Relationship to other user interface ideas

There is a great deal of potential synergy between the OOUI concept and other important ideas in user interface design including:

Many futuristic imaginings of user interfaces rely heavily on OOUI and especially OOGUI concepts. [4] However there are many examples of user interfaces that implement one or more of those other ideas, but which are not in fact OOUIs - though they are often wrongly labelled as OOUIs. [5] Conversely, there are examples of OOUIs that are neither graphical, nor employ direct manipulation techniques, nor employ strong metaphors. For example, the earliest versions of the Smalltalk programming language had a command line interface that was nonetheless also clearly an OOUI, [6] though it subsequently became better known for its pioneering role in the development of GUIs, direct manipulation and visual metaphors.

Relationship to object-oriented programming

Although there are many conceptual parallels between OOUIs and object-oriented programming, it does not follow that an OOUI has to be implemented using an object-oriented programming language.

The guidelines for IBM's Common User Access (CUA), (possibly the most comprehensive attempt at defining a standard for OOUI design) stated that 'while object-oriented programming can facilitate the development of an object-oriented user interface, it is not a pre-requisite. An object-oriented user interface can be developed with more traditional programming languages and tools.' [7]

However, there are strong synergies. Larry Tesler, who left Xerox PARC in 1980 to join Apple underlined the relationship:

Many observers have hypothesized that [the] Smalltalk user interface and the Smalltalk language are separable innovations. Consequently, most systems influenced by the Smalltalk user interface have been engineered without resorting to Smalltalk’s implementation approach. At Apple, after using Pascal to implement six initial applications for Lisa, we discovered compelling reasons to change our programming language to incorporate more ideas from Smalltalk. Lisa applications are now written in the language Clascal, an extension of Pascal featuring objects, classes, subclasses, and procedure invocation by message-passing. [8]

Relationship to domain object modelling

There is also an obvious synergy between the concept of an OOUI and the idea of constructing software from domain objects. However, it does not follow that the objects that a user sees and interacts within an OOUI have to correspond to the domain objects on which the application is built.

The CUA guidelines stated that 'In an object-oriented user interface, the objects that a user works with do not necessarily correspond to the objects or modules of code, that a programmer used to create the product.' [7] The basic design methods described in CUA were refined further into the OVID [9] method which used UML to model the interface.

Mark van Harmelen states that 'Object-oriented user interface design does not require designers to take an object-oriented view of the problem from the beginning of the project. Furthermore, even if designers take an object-oriented perspective throughout, they will benefit from focusing separately on the object model and the object-oriented user interface design.' [10]

By contrast, the naked objects pattern is an approach to the design of applications that, at least in its naive form, enforces a direct correspondence between the objects represented in the OOUI and the underlying domain objects, auto-generating the former from the latter. [11]

Related Research Articles

<span class="mw-page-title-main">Alan Kay</span> American computer scientist (born 1940)

Alan Curtis Kay is an American computer scientist best known for his pioneering work on object-oriented programming and windowing graphical user interface (GUI) design. At Xerox PARC he led the design and development of the first modern windowed computer desktop interface. There he also led the development of the influential object-oriented programming language Smalltalk, both personally designing most of the early versions of the language and coining the term "object-oriented." He has been elected a Fellow of the American Academy of Arts and Sciences, the National Academy of Engineering, and the Royal Society of Arts. He received the Turing award in 2003.

In object-oriented programming, a class defines the shared aspects of objects created from the class. The capabilities of a class differ between programming languages, but generally the shared aspects consist of state (variables) and behavior (methods) that are each either associated with a particular object or with all objects of that class.

<span class="mw-page-title-main">Graphical user interface</span> User interface allowing interaction through graphical icons and visual indicators

A graphical user interface, or GUI, is a form of user interface that allows users to interact with electronic devices through graphical icons and visual indicators such as secondary notation. In many applications, GUIs are used instead of text-based UIs, which are based on typed command labels or text navigation. GUIs were introduced in reaction to the perceived steep learning curve of command-line interfaces (CLIs), which require commands to be typed on a computer keyboard.

<span class="mw-page-title-main">History of the graphical user interface</span>

The history of the graphical user interface, understood as the use of graphic icons and a pointing device to control a computer, covers a five-decade span of incremental refinements, built on some constant core principles. Several vendors have created their own windowing systems based on independent code, but with basic elements in common that define the WIMP "window, icon, menu and pointing device" paradigm.

<span class="mw-page-title-main">Smalltalk</span> Object-oriented programming language released first in 1972

Smalltalk is a purely object oriented programming language (OOP) that was originally created in the 1970s for educational use, specifically for constructionist learning, but later found use in business. It was created at Xerox PARC by Learning Research Group (LRG) scientists, including Alan Kay, Dan Ingalls, Adele Goldberg, Ted Kaehler, Diana Merry, and Scott Wallace.

<span class="mw-page-title-main">User interface</span> Means by which a user interacts with and controls a machine

In the industrial design field of human–computer interaction, a user interface (UI) is the space where interactions between humans and machines occur. The goal of this interaction is to allow effective operation and control of the machine from the human end, while the machine simultaneously feeds back information that aids the operators' decision-making process. Examples of this broad concept of user interfaces include the interactive aspects of computer operating systems, hand tools, heavy machinery operator controls and process controls. The design considerations applicable when creating user interfaces are related to, or involve such disciplines as, ergonomics and psychology.

Cocoa is Apple's native object-oriented application programming interface (API) for its desktop operating system macOS.

<span class="mw-page-title-main">Xerox Star</span> Early GUI-based computer workstation from Xerox

The Xerox Star workstation, officially named Xerox Star 8010 Information System, is the first commercial personal computer to incorporate technologies that have since become standard in personal computers, including a bitmapped display, a window-based graphical user interface, icons, folders, mouse (two-button), Ethernet networking, file servers, print servers, and email.

Cut, copy, and paste are essential commands of modern human–computer interaction and user interface design. They offer an interprocess communication technique for transferring data through a computer's user interface. The cut command removes the selected data from its original position, and the copy command creates a duplicate; in both cases the selected data is kept in temporary storage called the clipboard. Clipboard data is later inserted wherever a paste command is issued. The data remains available to any application supporting the feature, thus allowing easy data transfer between applications.

In software engineering, a software design pattern or design pattern is a general, reusable solution to a commonly occurring problem in many contexts in software design. A design pattern is not a rigid structure that can be transplanted directly into source code. Rather, it is a description or a template for solving a particular type of problem that can be deployed in many different situations. Design patterns can be viewed as formalized best practices that the programmer may use to solve common problems when designing a software application or system.

An object-oriented operating system is an operating system that is designed, structured, and operated using object-oriented programming principles.

<span class="mw-page-title-main">Adele Goldberg (computer scientist)</span> American computer scientist

Adele Goldberg is an American computer scientist. She was one of the co-developers of the programming language Smalltalk-80, which is a computer software that simplifies the programming language, and has been the basis of knowledge and structure for many other programming languages such as Python, C, and Java. She also developed many concepts related to object-oriented programming while a researcher at the Xerox Palo Alto Research Center (PARC), in the 1970s.

<span class="mw-page-title-main">Standard Widget Toolkit</span> Graphical widget toolkit for use with the Java platform

The Standard Widget Toolkit (SWT) is a graphical widget toolkit for use with the Java platform. It was originally developed by Stephen Northover at IBM and is now maintained by the Eclipse Foundation in tandem with the Eclipse IDE. It is an alternative to the Abstract Window Toolkit (AWT) and Swing Java graphical user interface (GUI) toolkits provided by Sun Microsystems as part of the Java Platform, Standard Edition (J2SE).

<span class="mw-page-title-main">Larry Tesler</span> American computer scientist (1945–2020)

Lawrence Gordon Tesler was an American computer scientist who worked in the field of human–computer interaction. Tesler worked at Xerox PARC, Apple, Amazon, and Yahoo!.

Common User Access (CUA) is a standard for user interfaces to operating systems and computer programs. It was developed by IBM and first published in 1987 as part of their Systems Application Architecture. Used originally in the MVS/ESA, VM/CMS, OS/400, OS/2 and Microsoft Windows operating systems, parts of the CUA standard are now implemented in programs for other operating systems, including variants of Unix. It is also used by Java AWT and Swing.

<span class="mw-page-title-main">Dan Ingalls</span> American computer scientist

Daniel Henry Holmes Ingalls Jr. is a pioneer of object-oriented computer programming and the principal architect, designer and implementer of five generations of Smalltalk environments. He designed the bytecoded virtual machine that made Smalltalk practical in 1976. He also invented bit blit, the general-purpose graphical operation that underlies most bitmap computer graphics systems today, and pop-up menus. He designed the generalizations of BitBlt to arbitrary color depth, with built-in scaling, rotation, and anti-aliasing. He made major contributions to the Squeak version of Smalltalk, including the original concept of a Smalltalk written in itself and made portable and efficient by a Smalltalk-to-C translator.

A2 is a modular, object-oriented operating system with unconventional features including automatic garbage-collected memory management, and a zooming user interface. It was developed originally at ETH Zurich in 2002. It is free and open-source software under a BSD-like license.

Object-oriented analysis and design (OOAD) is a technical approach for analyzing and designing an application, system, or business by applying object-oriented programming, as well as using visual modeling throughout the software development process to guide stakeholder communication and product quality.

<span class="mw-page-title-main">Object-oriented programming</span> Programming paradigm based on the concept of objects

Object-oriented programming (OOP) is a programming paradigm based on the concept of objects, which can contain data and code: data in the form of fields, and code in the form of procedures. In OOP, computer programs are designed by making them out of objects that interact with one another.

Ted Kaehler is an American computer scientist known for his role in the development of several system methods. He is most noted for his contributions to the programming languages Smalltalk, Squeak, and Apple Computer's HyperCard system, and other technologies developed at Xerox PARC.

References

  1. Nielsen, J., Usability Engineering. 1993, San Francisco: Morgan Kaufmann / Academic Press
  2. Collins, D., Designing Object-oriented User interfaces. 1995, Redwood City, CA: Benjamin/Cummings
  3. Raskin, J., The Humane Interface. 2000, Reading, MA: Addison-Wesley / ACM Press
  4. Dayton, Tom. "Object-Oriented GUIs are the Future". Presto Innovation Blog. Retrieved 8 March 2017.
  5. Constantine, L. and L. Lockwood, Software for use. 1999: Addison-Wesley
  6. Kay, A., The early history of Smalltalk, in History of Programming Languages, T. Bergin and R. Gibson, Editors. 1996, Addison-Wesley / ACM Press: Reading, MA. p. 511-.
  7. 1 2 IBM, Common User Access - Guide to User Interface Design. 1991, IBM: Cary, North Carolina.
  8. Tesler, L. Object Oriented User Interfaces and Object Oriented Languages. in ACM Conference n Personal and Small Computers. 1983. New York: ACM.
  9. Dave Roberts, Dick Berry, Scott Isensee & John Mullaly, Designing for the User with OVID: Bridging User Interface Design and Software Engineering MacMillan, 1998
  10. van Harmelen, M., ed. Object Modelling and User Interface Design. 2001, Addison-Wesley: Reading, MA.
  11. Pawson, R., Naked Objects, Ph.D Thesis, 2004, Trinity College, Dublin, Ireland