UML에서 포트에는 유형(IBM® Rational® Rhapsody®에서는 계약이라고 함)이 있습니다. 포트 계약은 오브젝트 클래스와 유사합니다.
포트가 계약(예: 인터페이스 I)을 갖는 경우, 해당 포트는 정의상 I를 제공합니다. 포트가 추가 인터페이스(예: 인터페이스 J)를 제공하게 하려면, 포트는 하나의 유형만 갖기 때문에 UML에 따라 I가 J를 상속해야 합니다. Rational Rhapsody의 경우, 제공된 인터페이스 목록에 J를 추가하면 이러한 상속이 자동으로 작성됩니다(다시, 이는 명시적 계약 I를 갖는 포트임). I 및 J가 관련되지 않은 경우에는 UML 표준에 따라 계약이 될 새 인터페이스를 지정하고 이 인터페이스가 I와 J를 둘 다 상속하게 해야 합니다.
일부는 특수 인터페이스의 스펙을 포트 계약으로 강제 적용하는 것이 인위적임을 알았으므로 Rational Rhapsody는 내재적 계약에 대한 개념을 제공합니다. 이는 계약이 내재적이면 서로 관련되지 않은 제공된 필수 인터페이스 목록을 지정할 수 있는 반면, 계약 인터페이스는 여전히 내재적임을 의미합니다(모델의 포트에 대해 계약이 될 특수 인터페이스를 명시적으로 정의할 필요가 없음).
내재적 계약에 대한 작업은 장단점이 있습니다. 포트가 제공된 필수 인터페이스의 서브세트만 필요로 하고 이를 제공하는 다른 포트에 연결된 경우, 내재적 포트에 대한 작업을 하는 것이 보다 자연스럽습니다. 그러나 포트가 정확히 "되돌린" 다른 포트에 연결된 경우(포트 기능 창의 선택란 참조) 또는 다른 포트가 동일한 인터페이스 세트를 필요로 하고 이를 제공하는 경우에는 명시적 계약에 대한 작업을 하는 것이 타당합니다. 명시적 계약에 대한 작업은 클래스와 별도로 오브젝트를 지정하거나 이 유형 또는 클래스의 단일 오브젝트만 시스템에 존재하는 경우 내재적 클래스를 가진 오브젝트를 지정하는 것과 유사합니다.