\chapter{Intercoms}

\section{Design Philosophy}

The intercoms category implements an expandable command interpreter which 
is the key mechanism in {\sc Geant4} for realizing customizable and 
state-dependent user interactions with all categories without being 
perturbed by the dependencies among classes.  The capturing of commands is 
handled by a C++ abstract class {\it G4UIsession}.  Various concrete 
implementations of the command capturer are contained in the [user]
interfaces category.  Taking into account the rapid evolution of graphical 
user interface (GUI) technology and consequent dependence on external
facilities, plural and extensible GUIs are offered.

Programmers need only know how to register the commands and parameters 
appropriate to their problem domain;  no knowledge of GUI programming is 
required to allow an application to use them through one of the available 
GUIs.

The intercoms category also provides the virtual base classes
\begin{itemize}
\item G4VVisManager,
\item G4VGraphicsScene, and
\item G4VGlobalFastSimulationManager.
\end{itemize}

\section{Class Design}

\begin{itemize}
\item {\bf G4UISession} -
\item {\bf G4UIBatch} -
\item {\bf G4UICommand} -
\item {\bf G4UIparameter} -
\item {\bf G4UImessenger} -
\end{itemize}

The object-oriented design of the 'user interface' related classes
is shown in the class diagram Fig. \ref{figure:userInt-1}. 
The diagram is described in the Booch notation. 
\newline


\begin{figure}[h!]
\includegraphics[angle=0,scale=0.55]{OOAnalysisDesign/UserInterface/classDgmUserInterface.eps}
\vspace{10pt}
\caption{Overview of intercom classes}
\label{figure:userInt-1}
\end{figure}


\section{Status of this section}

27.06.05 design philosophy (from Geant4 general paper) and class design 
         sections added by D.H. Wright \\

