import java.util.*;

/****
 *
 * A UMLClass represents a class element in a diagram.  In a display, it is
 * rendered as a one-, two-, or three-part rectangle, per the rules of the
 * standard definition of UML.
 *
 */
public class UMLClass extends UMLDiagramElement {

    /**
     * Zero or more classes from which this class inherits, connected with
     * hollow triangles.  The triangle touches the inherited-from class.  The
     * inheriting class (i.e., this class) is on the other end of the connecting
     * line to the inherited-from class.
     */
    protected List<UMLNameTypePair> inheritsFrom;

    /**
     * Class components that are shown in the second part of the class diagram
     * box.  The name and type of the attribute are shown as a colon-separated
     * pair.  The attribute names must be unique.
     */
    protected List<UMLNameTypePair> attributes;

    /**
     * Class components that are shown as other classes, connected with solid
     * diamonds.  The diamond touches this class.  If the component has a name,
     * the name is shown on the end of the connection next to the component
     * class.
     */
    protected List<UMLNameTypePair> strongAggregates;

    /**
     * Class components that are shown as other classes, connected with hollow
     * diamonds.  The diamond touches this class.  If the component has a name,
     * the name is shown on the end of the connection next to the component
     * class.
     */
    protected List<UMLNameTypePair> weakAggregates;

    /**
     * Class operations that are shown in the third part of the class diagram
     * box.  The inputs and outputs are shown shown as parenthesized lists.  If
     * the operation input list is empty, it is shown as a pair of empty
     * parentheses.  If the output list is empty, it is not shown.  If the
     * output list is not empty, it is separated from the input list with a
     * colon.
     */
    protected List<UMLOperation> operationAttributes;

    /**
     * Class operations that are shown as ovals, connected with hollow
     * diamonds, in the same diagrammatic form as weakly aggregated class
     * components.  The details of input/ouput format are described in the
     * class comment for <a href="UMLOperation.html"> UMLOperation</a>.
     */
    protected List<UMLOperation> operationAggregates;

}