• 3 row arrangement (Class name, Attributes, Methods)
  • An optional 4 row (Responsibilities) can be added to mention what is expected of the class
  • Class name is the only mandatory field
  • Attributes
    • Format => <access specifier> <attribute name> : <data type>
    • / => derived attribute, not an actual data member
    • + => public
    • # => protected
    • - => private
    • ~ => package level visibility
    • Static attributes => to be underlined
  • Methods,
    • Use the function signature
    • + => public
    • # => protected
    • - => private
    • Static member function => mention no access specifier
  • If the class name is preceded by <<abstract>>, then it’s an abstract class, (italics were used in older UMLs)

Example,

Sources