1. A computer-implemented method of defining a user interface for a computer program, the method comprising: in response to execution of the computer program, automatically defining the user interface of the computer program by: querying a database to identify one or more available logic components and one or more available presentation components; querying the database to identify one or more available locales; selecting a locale from the one or more available locales; selecting a logic component from the one or more available logic components and selecting a presentation component from the one or more available presentation components, wherein the selected logic component is configured to respond to an event generated by a user interface object and the selected presentation component defines an appearance of the user interface object, and wherein the logic component is selected based on the selected locale; localizing the selected presentation component based on the selected locale; associating the selected logic component and the selected presentation component on the fly at run time to generate the user interface of the computer program; and replacing at least one of the selected logic component and the selected presentation component during program execution, wherein replacing the selected logic component does not affect the appearance of the user interface object, and replacing the selected presentation component causes the user interface object to have a modified appearance; wherein the selected logic component specifies that a subordinate part of the user interface is specified by a second association between a second logic component and a second presentation component.