@startuml
abstract class Person {
  +name
}

abstract class Employee {
  +ssn
}

class Tap {
}

enum VipRole {
  DEAN
  RESEARCHER
  RESEARCH_ASSISTANT
}

class Vip {
  +VipRole role
}

class Student {
}

Person <|-- Employee
Employee <|-- Tap
Employee <|-- Vip
Person <|-- Student

abstract class Org {
  +name
}

class Institute {
}

class Faculty {
  +address
}

Org <|-- Institute
Org <|-- Faculty
Institute <|-- Faculty
@enduml