Skip to content
🤷

Forgive us! These docs are a work in progress. Some pages may be incomplete or describe features that aren't quite finished yet. Farkitect is in early development and we don't recommend using it for real work just yet. Feel free to explore — just be aware that things are still being built.

How to use class generalization

Generalization lets one M2 element type inherit properties from another. This avoids duplicating property definitions across similar types.

  1. Select the element type you want to be the subclass (e.g., Person)
  2. In the Properties panel, find the Superclasses field
  3. Add the superclass element type (e.g., Organisational Entity)

The subclass now inherits all properties defined on the superclass. M1 instances of the subclass show both inherited and own properties.

If the superclass should not be instantiated directly (it exists only to share properties):

  1. Select the superclass element type
  2. In the Properties panel, check Is Abstract

Abstract types don’t appear in the Palette — users can only create instances of concrete subclasses.

An element type can have multiple superclasses. Properties from all superclasses are inherited and merged.

  • Properties — all property definitions from the superclass, including data type, multiplicity, and default value
  • Notation (partially) — subclasses can override notation or inherit from the superclass
  • Use generalization to create a common “base” type with shared properties (Description, Status, Owner) that multiple specific types inherit
  • Keep inheritance hierarchies shallow — one or two levels deep is usually sufficient
  • Abstract superclasses keep the Palette clean by hiding types that shouldn’t be instantiated directly