blob: 3a82d36230783d04c87dcf064fe1e660e6ce15fc [file] [log] [blame]
/*
* Copyright (c) 2005, 2006 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IBM - initial API and implementation
*
* $Id: Classifier.java,v 1.17 2006/05/24 20:54:28 khussey Exp $
*/
package org.eclipse.uml2.uml;
import java.util.Map;
import org.eclipse.emf.common.util.DiagnosticChain;
import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.ecore.EClass;
/**
* <!-- begin-user-doc -->
* A representation of the model object '<em><b>Classifier</b></em>'.
* <!-- end-user-doc -->
*
* <!-- begin-model-doc -->
* A classifier is a classification of instances - it describes a set of instances that have features in common. A classifier can specify a generalization hierarchy by referencing its general classifiers.
* A classifier has the capability to own collaboration uses. These collaboration uses link a collaboration with the classifier to give a description of the workings of the classifier.
* A classifier has the capability to own use cases. Although the owning classifier typically represents the subject to which the owned use cases apply, this is not necessarily the case. In principle, the same use case can be applied to multiple subjects, as identified by the subject association role of a use case.
* Classifier is defined to be a kind of templateable element so that a classifier can be parameterized. It is also defined to be a kind of parameterable element so that a classifier can be a formal template parameter.
* <!-- end-model-doc -->
*
* <p>
* The following features are supported:
* <ul>
* <li>{@link org.eclipse.uml2.uml.Classifier#isAbstract <em>Is Abstract</em>}</li>
* <li>{@link org.eclipse.uml2.uml.Classifier#getGeneralizations <em>Generalization</em>}</li>
* <li>{@link org.eclipse.uml2.uml.Classifier#getPowertypeExtents <em>Powertype Extent</em>}</li>
* <li>{@link org.eclipse.uml2.uml.Classifier#getFeatures <em>Feature</em>}</li>
* <li>{@link org.eclipse.uml2.uml.Classifier#getInheritedMembers <em>Inherited Member</em>}</li>
* <li>{@link org.eclipse.uml2.uml.Classifier#getRedefinedClassifiers <em>Redefined Classifier</em>}</li>
* <li>{@link org.eclipse.uml2.uml.Classifier#getGenerals <em>General</em>}</li>
* <li>{@link org.eclipse.uml2.uml.Classifier#getSubstitutions <em>Substitution</em>}</li>
* <li>{@link org.eclipse.uml2.uml.Classifier#getAttributes <em>Attribute</em>}</li>
* <li>{@link org.eclipse.uml2.uml.Classifier#getRepresentation <em>Representation</em>}</li>
* <li>{@link org.eclipse.uml2.uml.Classifier#getCollaborationUses <em>Collaboration Use</em>}</li>
* <li>{@link org.eclipse.uml2.uml.Classifier#getOwnedUseCases <em>Owned Use Case</em>}</li>
* <li>{@link org.eclipse.uml2.uml.Classifier#getUseCases <em>Use Case</em>}</li>
* </ul>
* </p>
*
* @see org.eclipse.uml2.uml.UMLPackage#getClassifier()
* @model abstract="true"
* @generated
*/
public interface Classifier
extends Namespace, RedefinableElement, Type, TemplateableElement {
/**
* Returns the value of the '<em><b>Is Abstract</b></em>' attribute.
* The default value is <code>"false"</code>.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* If true, the Classifier does not provide a complete declaration and can typically not be instantiated. An abstract classifier is intended to be used by other classifiers e.g. as the target of general metarelationships or generalization relationships.
*
* <!-- end-model-doc -->
* @return the value of the '<em>Is Abstract</em>' attribute.
* @see #setIsAbstract(boolean)
* @see org.eclipse.uml2.uml.UMLPackage#getClassifier_IsAbstract()
* @model default="false" dataType="org.eclipse.uml2.uml.Boolean" required="true" ordered="false"
* @generated
*/
boolean isAbstract();
/**
* Sets the value of the '{@link org.eclipse.uml2.uml.Classifier#isAbstract <em>Is Abstract</em>}' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @param value the new value of the '<em>Is Abstract</em>' attribute.
* @see #isAbstract()
* @generated
*/
void setIsAbstract(boolean value);
/**
* Returns the value of the '<em><b>Generalization</b></em>' containment reference list.
* The list contents are of type {@link org.eclipse.uml2.uml.Generalization}.
* It is bidirectional and its opposite is '{@link org.eclipse.uml2.uml.Generalization#getSpecific <em>Specific</em>}'.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* Specifies the Generalization relationships for this Classifier. These Generalizations navigaten to more general classifiers in the generalization hierarchy.
* <!-- end-model-doc -->
* @return the value of the '<em>Generalization</em>' containment reference list.
* @see org.eclipse.uml2.uml.UMLPackage#getClassifier_Generalization()
* @see org.eclipse.uml2.uml.Generalization#getSpecific
* @model type="org.eclipse.uml2.uml.Generalization" opposite="specific" containment="true" ordered="false"
* @generated
*/
EList getGeneralizations();
/**
* Returns the value of the '<em><b>Powertype Extent</b></em>' reference list.
* The list contents are of type {@link org.eclipse.uml2.uml.GeneralizationSet}.
* It is bidirectional and its opposite is '{@link org.eclipse.uml2.uml.GeneralizationSet#getPowertype <em>Powertype</em>}'.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* Designates the GeneralizationSet of which the associated Classifier is a power type.
* <!-- end-model-doc -->
* @return the value of the '<em>Powertype Extent</em>' reference list.
* @see org.eclipse.uml2.uml.UMLPackage#getClassifier_PowertypeExtent()
* @see org.eclipse.uml2.uml.GeneralizationSet#getPowertype
* @model type="org.eclipse.uml2.uml.GeneralizationSet" opposite="powertype" ordered="false"
* @generated
*/
EList getPowertypeExtents();
/**
* Retrieves the first {@link org.eclipse.uml2.uml.GeneralizationSet} with the specified '<em><b>Name</b></em>' from the '<em><b>Powertype Extent</b></em>' reference list.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @param name The '<em><b>Name</b></em>' of the {@link org.eclipse.uml2.uml.GeneralizationSet} to retrieve, or <code>null</code>.
* @return The first {@link org.eclipse.uml2.uml.GeneralizationSet} with the specified '<em><b>Name</b></em>', or <code>null</code>.
* @see #getPowertypeExtents()
* @generated
*/
GeneralizationSet getPowertypeExtent(String name);
/**
* Retrieves the first {@link org.eclipse.uml2.uml.GeneralizationSet} with the specified '<em><b>Name</b></em>' from the '<em><b>Powertype Extent</b></em>' reference list.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @param name The '<em><b>Name</b></em>' of the {@link org.eclipse.uml2.uml.GeneralizationSet} to retrieve, or <code>null</code>.
* @param ignoreCase Whether to ignore case in {@link java.lang.String} comparisons.
* @return The first {@link org.eclipse.uml2.uml.GeneralizationSet} with the specified '<em><b>Name</b></em>', or <code>null</code>.
* @see #getPowertypeExtents()
* @generated
*/
GeneralizationSet getPowertypeExtent(String name, boolean ignoreCase);
/**
* Returns the value of the '<em><b>Feature</b></em>' reference list.
* The list contents are of type {@link org.eclipse.uml2.uml.Feature}.
* It is bidirectional and its opposite is '{@link org.eclipse.uml2.uml.Feature#getFeaturingClassifiers <em>Featuring Classifier</em>}'.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* Redefines the corresponding association in Abstractions. Note that there may be members of the Classifier that are of the type Feature but are not included in this association, e.g. inherited features.
* Specifies each feature defined in the classifier.
* <!-- end-model-doc -->
* @return the value of the '<em>Feature</em>' reference list.
* @see org.eclipse.uml2.uml.UMLPackage#getClassifier_Feature()
* @see org.eclipse.uml2.uml.Feature#getFeaturingClassifiers
* @model type="org.eclipse.uml2.uml.Feature" opposite="featuringClassifier" transient="true" changeable="false" volatile="true" derived="true" ordered="false"
* @generated
*/
EList getFeatures();
/**
* Retrieves the first {@link org.eclipse.uml2.uml.Feature} with the specified '<em><b>Name</b></em>' from the '<em><b>Feature</b></em>' reference list.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @param name The '<em><b>Name</b></em>' of the {@link org.eclipse.uml2.uml.Feature} to retrieve, or <code>null</code>.
* @return The first {@link org.eclipse.uml2.uml.Feature} with the specified '<em><b>Name</b></em>', or <code>null</code>.
* @see #getFeatures()
* @generated
*/
Feature getFeature(String name);
/**
* Retrieves the first {@link org.eclipse.uml2.uml.Feature} with the specified '<em><b>Name</b></em>' from the '<em><b>Feature</b></em>' reference list.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @param name The '<em><b>Name</b></em>' of the {@link org.eclipse.uml2.uml.Feature} to retrieve, or <code>null</code>.
* @param ignoreCase Whether to ignore case in {@link java.lang.String} comparisons.
* @param eClass The Ecore class of the {@link org.eclipse.uml2.uml.Feature} to retrieve, or <code>null</code>.
* @return The first {@link org.eclipse.uml2.uml.Feature} with the specified '<em><b>Name</b></em>', or <code>null</code>.
* @see #getFeatures()
* @generated
*/
Feature getFeature(String name, boolean ignoreCase, EClass eClass);
/**
* Returns the value of the '<em><b>Inherited Member</b></em>' reference list.
* The list contents are of type {@link org.eclipse.uml2.uml.NamedElement}.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* Specifies all elements inherited by this classifier from the general classifiers.
* <!-- end-model-doc -->
* @return the value of the '<em>Inherited Member</em>' reference list.
* @see org.eclipse.uml2.uml.UMLPackage#getClassifier_InheritedMember()
* @model type="org.eclipse.uml2.uml.NamedElement" transient="true" changeable="false" volatile="true" derived="true" ordered="false"
* @generated
*/
EList getInheritedMembers();
/**
* Retrieves the first {@link org.eclipse.uml2.uml.NamedElement} with the specified '<em><b>Name</b></em>' from the '<em><b>Inherited Member</b></em>' reference list.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @param name The '<em><b>Name</b></em>' of the {@link org.eclipse.uml2.uml.NamedElement} to retrieve, or <code>null</code>.
* @return The first {@link org.eclipse.uml2.uml.NamedElement} with the specified '<em><b>Name</b></em>', or <code>null</code>.
* @see #getInheritedMembers()
* @generated
*/
NamedElement getInheritedMember(String name);
/**
* Retrieves the first {@link org.eclipse.uml2.uml.NamedElement} with the specified '<em><b>Name</b></em>' from the '<em><b>Inherited Member</b></em>' reference list.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @param name The '<em><b>Name</b></em>' of the {@link org.eclipse.uml2.uml.NamedElement} to retrieve, or <code>null</code>.
* @param ignoreCase Whether to ignore case in {@link java.lang.String} comparisons.
* @param eClass The Ecore class of the {@link org.eclipse.uml2.uml.NamedElement} to retrieve, or <code>null</code>.
* @return The first {@link org.eclipse.uml2.uml.NamedElement} with the specified '<em><b>Name</b></em>', or <code>null</code>.
* @see #getInheritedMembers()
* @generated
*/
NamedElement getInheritedMember(String name, boolean ignoreCase,
EClass eClass);
/**
* Returns the value of the '<em><b>Redefined Classifier</b></em>' reference list.
* The list contents are of type {@link org.eclipse.uml2.uml.Classifier}.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* References the Classifiers that are redefined by this Classifier.
* <!-- end-model-doc -->
* @return the value of the '<em>Redefined Classifier</em>' reference list.
* @see org.eclipse.uml2.uml.UMLPackage#getClassifier_RedefinedClassifier()
* @model type="org.eclipse.uml2.uml.Classifier" ordered="false"
* @generated
*/
EList getRedefinedClassifiers();
/**
* Retrieves the first {@link org.eclipse.uml2.uml.Classifier} with the specified '<em><b>Name</b></em>' from the '<em><b>Redefined Classifier</b></em>' reference list.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @param name The '<em><b>Name</b></em>' of the {@link org.eclipse.uml2.uml.Classifier} to retrieve, or <code>null</code>.
* @return The first {@link org.eclipse.uml2.uml.Classifier} with the specified '<em><b>Name</b></em>', or <code>null</code>.
* @see #getRedefinedClassifiers()
* @generated
*/
Classifier getRedefinedClassifier(String name);
/**
* Retrieves the first {@link org.eclipse.uml2.uml.Classifier} with the specified '<em><b>Name</b></em>' from the '<em><b>Redefined Classifier</b></em>' reference list.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @param name The '<em><b>Name</b></em>' of the {@link org.eclipse.uml2.uml.Classifier} to retrieve, or <code>null</code>.
* @param ignoreCase Whether to ignore case in {@link java.lang.String} comparisons.
* @param eClass The Ecore class of the {@link org.eclipse.uml2.uml.Classifier} to retrieve, or <code>null</code>.
* @return The first {@link org.eclipse.uml2.uml.Classifier} with the specified '<em><b>Name</b></em>', or <code>null</code>.
* @see #getRedefinedClassifiers()
* @generated
*/
Classifier getRedefinedClassifier(String name, boolean ignoreCase,
EClass eClass);
/**
* Returns the value of the '<em><b>General</b></em>' reference list.
* The list contents are of type {@link org.eclipse.uml2.uml.Classifier}.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* References the general classifier in the Generalization relationship.
* Specifies the general Classifiers for this Classifier.
* <!-- end-model-doc -->
* @return the value of the '<em>General</em>' reference list.
* @see org.eclipse.uml2.uml.UMLPackage#getClassifier_General()
* @model type="org.eclipse.uml2.uml.Classifier" transient="true" volatile="true" derived="true" ordered="false"
* @generated
*/
EList getGenerals();
/**
* Retrieves the first {@link org.eclipse.uml2.uml.Classifier} with the specified '<em><b>Name</b></em>' from the '<em><b>General</b></em>' reference list.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @param name The '<em><b>Name</b></em>' of the {@link org.eclipse.uml2.uml.Classifier} to retrieve, or <code>null</code>.
* @return The first {@link org.eclipse.uml2.uml.Classifier} with the specified '<em><b>Name</b></em>', or <code>null</code>.
* @see #getGenerals()
* @generated
*/
Classifier getGeneral(String name);
/**
* Retrieves the first {@link org.eclipse.uml2.uml.Classifier} with the specified '<em><b>Name</b></em>' from the '<em><b>General</b></em>' reference list.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @param name The '<em><b>Name</b></em>' of the {@link org.eclipse.uml2.uml.Classifier} to retrieve, or <code>null</code>.
* @param ignoreCase Whether to ignore case in {@link java.lang.String} comparisons.
* @param eClass The Ecore class of the {@link org.eclipse.uml2.uml.Classifier} to retrieve, or <code>null</code>.
* @return The first {@link org.eclipse.uml2.uml.Classifier} with the specified '<em><b>Name</b></em>', or <code>null</code>.
* @see #getGenerals()
* @generated
*/
Classifier getGeneral(String name, boolean ignoreCase, EClass eClass);
/**
* Returns the value of the '<em><b>Owned Use Case</b></em>' containment reference list.
* The list contents are of type {@link org.eclipse.uml2.uml.UseCase}.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* References the use cases owned by this classifier.
* <!-- end-model-doc -->
* @return the value of the '<em>Owned Use Case</em>' containment reference list.
* @see org.eclipse.uml2.uml.UMLPackage#getClassifier_OwnedUseCase()
* @model type="org.eclipse.uml2.uml.UseCase" containment="true" ordered="false"
* @generated
*/
EList getOwnedUseCases();
/**
* Creates a new {@link org.eclipse.uml2.uml.UseCase}, with the specified '<em><b>Name</b></em>', and appends it to the '<em><b>Owned Use Case</b></em>' containment reference list.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @param name The '<em><b>Name</b></em>' for the new {@link org.eclipse.uml2.uml.UseCase}, or <code>null</code>.
* @return The new {@link org.eclipse.uml2.uml.UseCase}.
* @see #getOwnedUseCases()
* @generated
*/
UseCase createOwnedUseCase(String name);
/**
* Retrieves the first {@link org.eclipse.uml2.uml.UseCase} with the specified '<em><b>Name</b></em>' from the '<em><b>Owned Use Case</b></em>' containment reference list.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @param name The '<em><b>Name</b></em>' of the {@link org.eclipse.uml2.uml.UseCase} to retrieve, or <code>null</code>.
* @return The first {@link org.eclipse.uml2.uml.UseCase} with the specified '<em><b>Name</b></em>', or <code>null</code>.
* @see #getOwnedUseCases()
* @generated
*/
UseCase getOwnedUseCase(String name);
/**
* Retrieves the first {@link org.eclipse.uml2.uml.UseCase} with the specified '<em><b>Name</b></em>' from the '<em><b>Owned Use Case</b></em>' containment reference list.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @param name The '<em><b>Name</b></em>' of the {@link org.eclipse.uml2.uml.UseCase} to retrieve, or <code>null</code>.
* @param ignoreCase Whether to ignore case in {@link java.lang.String} comparisons.
* @param createOnDemand Whether to create a {@link org.eclipse.uml2.uml.UseCase} on demand if not found.
* @return The first {@link org.eclipse.uml2.uml.UseCase} with the specified '<em><b>Name</b></em>', or <code>null</code>.
* @see #getOwnedUseCases()
* @generated
*/
UseCase getOwnedUseCase(String name, boolean ignoreCase,
boolean createOnDemand);
/**
* Returns the value of the '<em><b>Use Case</b></em>' reference list.
* The list contents are of type {@link org.eclipse.uml2.uml.UseCase}.
* It is bidirectional and its opposite is '{@link org.eclipse.uml2.uml.UseCase#getSubjects <em>Subject</em>}'.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* The set of use cases for which this Classifier is the subject.
* <!-- end-model-doc -->
* @return the value of the '<em>Use Case</em>' reference list.
* @see org.eclipse.uml2.uml.UMLPackage#getClassifier_UseCase()
* @see org.eclipse.uml2.uml.UseCase#getSubjects
* @model type="org.eclipse.uml2.uml.UseCase" opposite="subject" ordered="false"
* @generated
*/
EList getUseCases();
/**
* Retrieves the first {@link org.eclipse.uml2.uml.UseCase} with the specified '<em><b>Name</b></em>' from the '<em><b>Use Case</b></em>' reference list.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @param name The '<em><b>Name</b></em>' of the {@link org.eclipse.uml2.uml.UseCase} to retrieve, or <code>null</code>.
* @return The first {@link org.eclipse.uml2.uml.UseCase} with the specified '<em><b>Name</b></em>', or <code>null</code>.
* @see #getUseCases()
* @generated
*/
UseCase getUseCase(String name);
/**
* Retrieves the first {@link org.eclipse.uml2.uml.UseCase} with the specified '<em><b>Name</b></em>' from the '<em><b>Use Case</b></em>' reference list.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @param name The '<em><b>Name</b></em>' of the {@link org.eclipse.uml2.uml.UseCase} to retrieve, or <code>null</code>.
* @param ignoreCase Whether to ignore case in {@link java.lang.String} comparisons.
* @return The first {@link org.eclipse.uml2.uml.UseCase} with the specified '<em><b>Name</b></em>', or <code>null</code>.
* @see #getUseCases()
* @generated
*/
UseCase getUseCase(String name, boolean ignoreCase);
/**
* Returns the value of the '<em><b>Substitution</b></em>' containment reference list.
* The list contents are of type {@link org.eclipse.uml2.uml.Substitution}.
* It is bidirectional and its opposite is '{@link org.eclipse.uml2.uml.Substitution#getSubstitutingClassifier <em>Substituting Classifier</em>}'.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* References the substitutions that are owned by this Classifier.
* <!-- end-model-doc -->
* @return the value of the '<em>Substitution</em>' containment reference list.
* @see org.eclipse.uml2.uml.UMLPackage#getClassifier_Substitution()
* @see org.eclipse.uml2.uml.Substitution#getSubstitutingClassifier
* @model type="org.eclipse.uml2.uml.Substitution" opposite="substitutingClassifier" containment="true" ordered="false"
* @generated
*/
EList getSubstitutions();
/**
* Creates a new {@link org.eclipse.uml2.uml.Substitution}, with the specified '<em><b>Name</b></em>', and '<em><b>Contract</b></em>', and appends it to the '<em><b>Substitution</b></em>' containment reference list.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @param name The '<em><b>Name</b></em>' for the new {@link org.eclipse.uml2.uml.Substitution}, or <code>null</code>.
* @param contract The '<em><b>Contract</b></em>' for the new {@link org.eclipse.uml2.uml.Substitution}, or <code>null</code>.
* @return The new {@link org.eclipse.uml2.uml.Substitution}.
* @see #getSubstitutions()
* @generated
*/
Substitution createSubstitution(String name, Classifier contract);
/**
* Retrieves the first {@link org.eclipse.uml2.uml.Substitution} with the specified '<em><b>Name</b></em>', and '<em><b>Contract</b></em>' from the '<em><b>Substitution</b></em>' containment reference list.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @param name The '<em><b>Name</b></em>' of the {@link org.eclipse.uml2.uml.Substitution} to retrieve, or <code>null</code>.
* @param contract The '<em><b>Contract</b></em>' of the {@link org.eclipse.uml2.uml.Substitution} to retrieve, or <code>null</code>.
* @return The first {@link org.eclipse.uml2.uml.Substitution} with the specified '<em><b>Name</b></em>', and '<em><b>Contract</b></em>', or <code>null</code>.
* @see #getSubstitutions()
* @generated
*/
Substitution getSubstitution(String name, Classifier contract);
/**
* Retrieves the first {@link org.eclipse.uml2.uml.Substitution} with the specified '<em><b>Name</b></em>', and '<em><b>Contract</b></em>' from the '<em><b>Substitution</b></em>' containment reference list.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @param name The '<em><b>Name</b></em>' of the {@link org.eclipse.uml2.uml.Substitution} to retrieve, or <code>null</code>.
* @param contract The '<em><b>Contract</b></em>' of the {@link org.eclipse.uml2.uml.Substitution} to retrieve, or <code>null</code>.
* @param ignoreCase Whether to ignore case in {@link java.lang.String} comparisons.
* @param createOnDemand Whether to create a {@link org.eclipse.uml2.uml.Substitution} on demand if not found.
* @return The first {@link org.eclipse.uml2.uml.Substitution} with the specified '<em><b>Name</b></em>', and '<em><b>Contract</b></em>', or <code>null</code>.
* @see #getSubstitutions()
* @generated
*/
Substitution getSubstitution(String name, Classifier contract,
boolean ignoreCase, boolean createOnDemand);
/**
* Returns the value of the '<em><b>Attribute</b></em>' reference list.
* The list contents are of type {@link org.eclipse.uml2.uml.Property}.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* Refers to all of the Properties that are direct (i.e. not inherited or imported) attributes of the classifier.
* <!-- end-model-doc -->
* @return the value of the '<em>Attribute</em>' reference list.
* @see org.eclipse.uml2.uml.UMLPackage#getClassifier_Attribute()
* @model type="org.eclipse.uml2.uml.Property" transient="true" changeable="false" volatile="true" derived="true" ordered="false"
* @generated
*/
EList getAttributes();
/**
* Retrieves the first {@link org.eclipse.uml2.uml.Property} with the specified '<em><b>Name</b></em>', and '<em><b>Type</b></em>' from the '<em><b>Attribute</b></em>' reference list.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @param name The '<em><b>Name</b></em>' of the {@link org.eclipse.uml2.uml.Property} to retrieve, or <code>null</code>.
* @param type The '<em><b>Type</b></em>' of the {@link org.eclipse.uml2.uml.Property} to retrieve, or <code>null</code>.
* @return The first {@link org.eclipse.uml2.uml.Property} with the specified '<em><b>Name</b></em>', and '<em><b>Type</b></em>', or <code>null</code>.
* @see #getAttributes()
* @generated
*/
Property getAttribute(String name, Type type);
/**
* Retrieves the first {@link org.eclipse.uml2.uml.Property} with the specified '<em><b>Name</b></em>', and '<em><b>Type</b></em>' from the '<em><b>Attribute</b></em>' reference list.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @param name The '<em><b>Name</b></em>' of the {@link org.eclipse.uml2.uml.Property} to retrieve, or <code>null</code>.
* @param type The '<em><b>Type</b></em>' of the {@link org.eclipse.uml2.uml.Property} to retrieve, or <code>null</code>.
* @param ignoreCase Whether to ignore case in {@link java.lang.String} comparisons.
* @param eClass The Ecore class of the {@link org.eclipse.uml2.uml.Property} to retrieve, or <code>null</code>.
* @return The first {@link org.eclipse.uml2.uml.Property} with the specified '<em><b>Name</b></em>', and '<em><b>Type</b></em>', or <code>null</code>.
* @see #getAttributes()
* @generated
*/
Property getAttribute(String name, Type type, boolean ignoreCase,
EClass eClass);
/**
* Returns the value of the '<em><b>Representation</b></em>' reference.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* References a collaboration use which indicates the collaboration that represents this classifier.
* <!-- end-model-doc -->
* @return the value of the '<em>Representation</em>' reference.
* @see #setRepresentation(CollaborationUse)
* @see org.eclipse.uml2.uml.UMLPackage#getClassifier_Representation()
* @model ordered="false"
* @generated
*/
CollaborationUse getRepresentation();
/**
* Sets the value of the '{@link org.eclipse.uml2.uml.Classifier#getRepresentation <em>Representation</em>}' reference.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @param value the new value of the '<em>Representation</em>' reference.
* @see #getRepresentation()
* @generated
*/
void setRepresentation(CollaborationUse value);
/**
* Creates a new {@link org.eclipse.uml2.uml.CollaborationUse},with the specified '<em><b>Name</b></em>', and sets the '<em><b>Representation</b></em>' reference.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @param name The '<em><b>Name</b></em>' for the new {@link org.eclipse.uml2.uml.CollaborationUse}, or <code>null</code>.
* @return The new {@link org.eclipse.uml2.uml.CollaborationUse}.
* @see #getRepresentation()
* @generated
*/
CollaborationUse createRepresentation(String name);
/**
* Returns the value of the '<em><b>Collaboration Use</b></em>' containment reference list.
* The list contents are of type {@link org.eclipse.uml2.uml.CollaborationUse}.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* References the collaboration uses owned by the classifier.
* <!-- end-model-doc -->
* @return the value of the '<em>Collaboration Use</em>' containment reference list.
* @see org.eclipse.uml2.uml.UMLPackage#getClassifier_CollaborationUse()
* @model type="org.eclipse.uml2.uml.CollaborationUse" containment="true" ordered="false"
* @generated
*/
EList getCollaborationUses();
/**
* Creates a new {@link org.eclipse.uml2.uml.CollaborationUse}, with the specified '<em><b>Name</b></em>', and appends it to the '<em><b>Collaboration Use</b></em>' containment reference list.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @param name The '<em><b>Name</b></em>' for the new {@link org.eclipse.uml2.uml.CollaborationUse}, or <code>null</code>.
* @return The new {@link org.eclipse.uml2.uml.CollaborationUse}.
* @see #getCollaborationUses()
* @generated
*/
CollaborationUse createCollaborationUse(String name);
/**
* Retrieves the first {@link org.eclipse.uml2.uml.CollaborationUse} with the specified '<em><b>Name</b></em>' from the '<em><b>Collaboration Use</b></em>' containment reference list.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @param name The '<em><b>Name</b></em>' of the {@link org.eclipse.uml2.uml.CollaborationUse} to retrieve, or <code>null</code>.
* @return The first {@link org.eclipse.uml2.uml.CollaborationUse} with the specified '<em><b>Name</b></em>', or <code>null</code>.
* @see #getCollaborationUses()
* @generated
*/
CollaborationUse getCollaborationUse(String name);
/**
* Retrieves the first {@link org.eclipse.uml2.uml.CollaborationUse} with the specified '<em><b>Name</b></em>' from the '<em><b>Collaboration Use</b></em>' containment reference list.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @param name The '<em><b>Name</b></em>' of the {@link org.eclipse.uml2.uml.CollaborationUse} to retrieve, or <code>null</code>.
* @param ignoreCase Whether to ignore case in {@link java.lang.String} comparisons.
* @param createOnDemand Whether to create a {@link org.eclipse.uml2.uml.CollaborationUse} on demand if not found.
* @return The first {@link org.eclipse.uml2.uml.CollaborationUse} with the specified '<em><b>Name</b></em>', or <code>null</code>.
* @see #getCollaborationUses()
* @generated
*/
CollaborationUse getCollaborationUse(String name, boolean ignoreCase,
boolean createOnDemand);
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* Generalization hierarchies must be directed and acyclical. A classifier can not be both a transitively general and transitively specific classifier of the same classifier.
* not self.allParents()->includes(self)
* <!-- end-model-doc -->
* @model
* @generated
*/
boolean validateNoCyclesInGeneralization(DiagnosticChain diagnostics,
Map context);
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* A classifier may only specialize classifiers of a valid type.
* self.parents()->forAll(c | self.maySpecializeType(c))
* <!-- end-model-doc -->
* @model
* @generated
*/
boolean validateSpecializeType(DiagnosticChain diagnostics, Map context);
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* Generalization hierarchies must be directed and acyclical. A classifier can not be both a transitively general and transitively specific classifier of the same classifier.
* not self.allParents()->includes(self)
* <!-- end-model-doc -->
* @model
* @generated
*/
boolean validateGeneralizationHierarchies(DiagnosticChain diagnostics,
Map context);
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* The Classifier that maps to a GeneralizationSet may neither be a specific nor a general Classifier in any of the Generalization relationships defined for that GeneralizationSet. In other words, a power type may not be an instance of itself nor may its instances also be its subclasses.
* true
* <!-- end-model-doc -->
* @model
* @generated
*/
boolean validateMapsToGeneralizationSet(DiagnosticChain diagnostics,
Map context);
/**
* Creates a new {@link org.eclipse.uml2.uml.Generalization}, with the specified '<em><b>General</b></em>', and appends it to the '<em><b>Generalization</b></em>' containment reference list.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @param general The '<em><b>General</b></em>' for the new {@link org.eclipse.uml2.uml.Generalization}, or <code>null</code>.
* @return The new {@link org.eclipse.uml2.uml.Generalization}.
* @see #getGeneralizations()
* @generated
*/
Generalization createGeneralization(Classifier general);
/**
* Retrieves the first {@link org.eclipse.uml2.uml.Generalization} with the specified '<em><b>General</b></em>' from the '<em><b>Generalization</b></em>' containment reference list.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @param general The '<em><b>General</b></em>' of the {@link org.eclipse.uml2.uml.Generalization} to retrieve, or <code>null</code>.
* @return The first {@link org.eclipse.uml2.uml.Generalization} with the specified '<em><b>General</b></em>', or <code>null</code>.
* @see #getGeneralizations()
* @generated
*/
Generalization getGeneralization(Classifier general);
/**
* Retrieves the first {@link org.eclipse.uml2.uml.Generalization} with the specified '<em><b>General</b></em>' from the '<em><b>Generalization</b></em>' containment reference list.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @param general The '<em><b>General</b></em>' of the {@link org.eclipse.uml2.uml.Generalization} to retrieve, or <code>null</code>.
* @param createOnDemand Whether to create a {@link org.eclipse.uml2.uml.Generalization} on demand if not found.
* @return The first {@link org.eclipse.uml2.uml.Generalization} with the specified '<em><b>General</b></em>', or <code>null</code>.
* @see #getGeneralizations()
* @generated
*/
Generalization getGeneralization(Classifier general, boolean createOnDemand);
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @model kind="operation" type="org.eclipse.uml2.uml.Property" ordered="false"
* @generated
*/
EList getAllAttributes();
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @model kind="operation" type="org.eclipse.uml2.uml.Operation" ordered="false"
* @generated
*/
EList getOperations();
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @model kind="operation" type="org.eclipse.uml2.uml.Operation" ordered="false"
* @generated
*/
EList getAllOperations();
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @model ordered="false" nameDataType="org.eclipse.uml2.uml.String" nameOrdered="false" parameterNamesType="java.lang.String" parameterNamesDataType="org.eclipse.uml2.uml.String" parameterNamesMany="true" parameterNamesOrdered="false" parameterTypesType="org.eclipse.uml2.uml.Type" parameterTypesMany="true" parameterTypesOrdered="false"
* @generated
*/
Operation getOperation(String name, EList parameterNames,
EList parameterTypes);
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @model ordered="false" nameDataType="org.eclipse.uml2.uml.String" nameOrdered="false" parameterNamesType="java.lang.String" parameterNamesDataType="org.eclipse.uml2.uml.String" parameterNamesMany="true" parameterNamesOrdered="false" parameterTypesType="org.eclipse.uml2.uml.Type" parameterTypesMany="true" parameterTypesOrdered="false" ignoreCaseDataType="org.eclipse.uml2.uml.Boolean" ignoreCaseRequired="true" ignoreCaseOrdered="false"
* @generated
*/
Operation getOperation(String name, EList parameterNames,
EList parameterTypes, boolean ignoreCase);
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @model kind="operation" type="org.eclipse.uml2.uml.Interface" ordered="false"
* @generated
*/
EList getUsedInterfaces();
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @model kind="operation" type="org.eclipse.uml2.uml.Interface" ordered="false"
* @generated
*/
EList getAllUsedInterfaces();
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* The query maySpecializeType() determines whether this classifier may have a generalization relationship to classifiers of the specified type. By default a classifier may specialize classifiers of the same or a more general type. It is intended to be redefined by classifiers that have different specialization constraints.
* result = self.oclIsKindOf(c.oclType)
* <!-- end-model-doc -->
* @model dataType="org.eclipse.uml2.uml.Boolean" required="true" ordered="false" cRequired="true" cOrdered="false"
* @generated
*/
boolean maySpecializeType(Classifier c);
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* The query allFeatures() gives all of the features in the namespace of the classifier. In general, through mechanisms such as inheritance, this will be a larger set than feature.
* result = member->select(oclIsKindOf(Feature))
* <!-- end-model-doc -->
* @model type="org.eclipse.uml2.uml.Feature" ordered="false"
* @generated
*/
EList allFeatures();
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* The query parents() gives all of the immediate ancestors of a generalized Classifier.
* result = generalization.general
* <!-- end-model-doc -->
* @model type="org.eclipse.uml2.uml.Classifier" ordered="false"
* @generated
*/
EList parents();
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* The query inheritableMembers() gives all of the members of a classifier that may be inherited in one of its descendants, subject to whatever visibility restrictions apply.
* c.allParents()->includes(self)
* result = member->select(m | c.hasVisibilityOf(m))
* <!-- end-model-doc -->
* @model type="org.eclipse.uml2.uml.NamedElement" ordered="false" cRequired="true" cOrdered="false"
* @generated
*/
EList inheritableMembers(Classifier c);
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* The query hasVisibilityOf() determines whether a named element is visible in the classifier. By default all are visible. It is only called when the argument is something owned by a parent.
* self.allParents()->collect(c | c.member)->includes(n)
* result = if (self.inheritedMember->includes(n)) then (n.visibility <> #private) else true
* <!-- end-model-doc -->
* @model dataType="org.eclipse.uml2.uml.Boolean" required="true" ordered="false" nRequired="true" nOrdered="false"
* @generated
*/
boolean hasVisibilityOf(NamedElement n);
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* The query conformsTo() gives true for a classifier that defines a type that conforms to another. This is used, for example, in the specification of signature conformance for operations.
* result = (self=other) or (self.allParents()->includes(other))
* <!-- end-model-doc -->
* @model dataType="org.eclipse.uml2.uml.Boolean" required="true" ordered="false" otherRequired="true" otherOrdered="false"
* @generated
*/
boolean conformsTo(Classifier other);
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* The inherit operation is overridden to exclude redefined properties.
* The query inherit() defines how to inherit a set of elements. Here the operation is defined to inherit them all. It is intended to be redefined in circumstances where inheritance is affected by redefinition.
* result = inhs
* <!-- end-model-doc -->
* @model type="org.eclipse.uml2.uml.NamedElement" ordered="false" inhsType="org.eclipse.uml2.uml.NamedElement" inhsMany="true" inhsOrdered="false"
* @generated
*/
EList inherit(EList inhs);
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* The query allParents() gives all of the direct and indirect ancestors of a generalized Classifier.
* result = self.parents()->union(self.parents()->collect(p | p.allParents())
* <!-- end-model-doc -->
* @model type="org.eclipse.uml2.uml.Classifier" ordered="false"
* @generated
*/
EList allParents();
} // Classifier