blob: 896c7e4a20dfe6a7b3a834eaebeaefcdb83c145e [file] [log] [blame]
/*
* Copyright (c) 2005 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: PackageMerge.java,v 1.2 2005/11/22 15:32:38 khussey Exp $
*/
package org.eclipse.uml2.uml;
/**
* <!-- begin-user-doc -->
* A representation of the model object '<em><b>Package Merge</b></em>'.
* <!-- end-user-doc -->
*
* <!-- begin-model-doc -->
* A package merge is a directed relationship between two packages, that indicates that the contents of the two packages are to be combined. It is very similar to Generalization in the sense that the source element conceptually adds the characteristics of the target element to its own characteristics resulting in an element that combines the characteristics of both.
*
*
*
* This mechanism should be used when elements defined in different packages have the same name and are intended to represent the same concept. Most often it is used to provide different definitions of a given concept for different purposes, starting from a common base definition. A given base concept is extended in increments, with each increment defined in a separate merged package. By selecting which increments to merge, it is possible to obtain a custom definition of a concept for a specific end. Package merge is particularly useful in meta-modeling and is extensively used in the definition of the UML metamodel.
*
*
*
* Conceptually, a package merge can be viewed as an operation that takes the contents of two packages and produces a new package that combines the contents of the packages involved in the merge. In terms of model semantics, there is no difference between a model with explicit package merges, and a model in which all the merges have been performed.
* A package merge is a directed relationship between two packages, that indicates that the contents of the two packages are to be combined. It is very similar to Generalization in the sense that the source element conceptually adds the characteristics of the target element to its own characteristics resulting in an element that combines the characteristics of both. This mechanism should be used when elements defined in different packages have the same name and are intended to represent the same concept. Most often it is used to provide different definitions of a given concept for different purposes, starting from a common base definition. A given base concept is extended in increments, with each increment defined in a separate merged package. By selecting which increments to merge, it is possible to obtain a custom definition of a concept for a specific end. Package merge is particularly useful in meta-modeling and is extensively used in the definition of the UML metamodel.
*
*
*
* Conceptually, a package merge can be viewed as an operation that takes the contents of two packages and produces a new package that combines the contents of the packages involved in the merge. In terms of model semantics, there is no difference between a model with explicit package merges, and a model in which all the merges have been performed.
*
*
* <!-- end-model-doc -->
*
* <p>
* The following features are supported:
* <ul>
* <li>{@link org.eclipse.uml2.uml.PackageMerge#getMergedPackage <em>Merged Package</em>}</li>
* <li>{@link org.eclipse.uml2.uml.PackageMerge#getReceivingPackage <em>Receiving Package</em>}</li>
* </ul>
* </p>
*
* @see org.eclipse.uml2.uml.UMLPackage#getPackageMerge()
* @model
* @generated
*/
public interface PackageMerge
extends DirectedRelationship {
/**
* Returns the value of the '<em><b>Merged Package</b></em>' reference.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* References the Package that is to be merged with the receiving package of the PackageMerge.
* <!-- end-model-doc -->
* @return the value of the '<em>Merged Package</em>' reference.
* @see #setMergedPackage(org.eclipse.uml2.uml.Package)
* @see org.eclipse.uml2.uml.UMLPackage#getPackageMerge_MergedPackage()
* @model required="true" ordered="false"
* @generated
*/
org.eclipse.uml2.uml.Package getMergedPackage();
/**
* Sets the value of the '{@link org.eclipse.uml2.uml.PackageMerge#getMergedPackage <em>Merged Package</em>}' reference.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @param value the new value of the '<em>Merged Package</em>' reference.
* @see #getMergedPackage()
* @generated
*/
void setMergedPackage(org.eclipse.uml2.uml.Package value);
/**
* Returns the value of the '<em><b>Receiving Package</b></em>' container reference.
* It is bidirectional and its opposite is '{@link org.eclipse.uml2.uml.Package#getPackageMerges <em>Package Merge</em>}'.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* References the Package that is being extended with the contents of the merged package of the PackageMerge.
* <!-- end-model-doc -->
* @return the value of the '<em>Receiving Package</em>' container reference.
* @see #setReceivingPackage(org.eclipse.uml2.uml.Package)
* @see org.eclipse.uml2.uml.UMLPackage#getPackageMerge_ReceivingPackage()
* @see org.eclipse.uml2.uml.Package#getPackageMerges
* @model opposite="packageMerge" resolveProxies="false" required="true" ordered="false"
* @generated
*/
org.eclipse.uml2.uml.Package getReceivingPackage();
/**
* Sets the value of the '{@link org.eclipse.uml2.uml.PackageMerge#getReceivingPackage <em>Receiving Package</em>}' container reference.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @param value the new value of the '<em>Receiving Package</em>' container reference.
* @see #getReceivingPackage()
* @generated
*/
void setReceivingPackage(org.eclipse.uml2.uml.Package value);
} // PackageMerge