We have seen the use of signals and slots
in GUI's and in abstract data models. Using signals and slots is
appropriate if you are creating objects that should be kept as
separate from one another as possible, while still being able to
communicate with each other. Signals and slots are an efficient
and maintainable way of creating highly reusable software
components.