

                          ┌───────────────┐
                          │  «abstract»   │
                          │    Animal     │
                          ├───────────────┤
                          │ +String name  │
                          │ +int age      │
                          ├───────────────┤
                          │ +eat() void   │
                          │ +sleep() void │
                          └───────────────┘
                                △   △
                      ┌─────────┘   └─────────┐
                      │                       │
                      │                       │
            ┌───────────────────┐    ┌─────────────────┐
            │      Mammal       │    │      Bird       │
            ├───────────────────┤    ├─────────────────┤
            │ +bool warmBlooded │    │ +bool canFly    │
            ├───────────────────┤    ├─────────────────┤
            │ +nurse() void     │    │ +layEggs() void │
            └───────────────────┘    └─────────────────┘
                    △   △                     △
          ┌─────────┘   └───────┐             └─────────┐
          │                     │                       │
          │                     │                       │
  ┌───────────────┐    ┌────────────────┐    ┌────────────────────┐
  │      Dog      │    │      Cat       │    │       Parrot       │
  ├───────────────┤    ├────────────────┤    ├────────────────────┤
  │ +String breed │    │ +bool isIndoor │    │ +String vocabulary │
  ├───────────────┤    ├────────────────┤    ├────────────────────┤
  │ +bark() void  │    │ +purr() void   │    │ +speak() void      │
  └───────────────┘    └────────────────┘    └────────────────────┘
