Arnd Poetzsch-Heffter (FernUniv. Hagen) Towards Type Systems for Dynamic Components ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In an object-oriented setting, a system is a collection of communicating objects. Current programming techniques do not support mechanisms to structure such collections, e.g. by providing constructs to group objects and to enforce interfaces of such groups. In the following, we call a group of objects that work closely together a {\em (dynamic) component}. We assume that two components are either disjoint w.r.t. the objects they contain or that one component is part of the other component, i.e. all objects of the former component belong as well to the latter. Consequently, components induce a hierarchical structure on the objects in a system. The component structure introduces a boundary between objects inside and outside the component. In particular, given a component C, we can distinguish four kinds of objects: - internal: objects in C that must not be referenced from the outside; - interface: objects in C that may be referenced from the outside are called interface objects; - used: objects outside C that are referenced from objects in C are called used objects; - external: objects not directly referenced from objects in C. All the communication of a component with the outside objects can be controlled by the interface and used objects. The types of the interface objects describe what kind of services the component provides; as in all typed OO-languages, the types determine which methods can be invoked on interface objects, i.e. from the outside. The types of the used objects explain what kind of service