@startuml composite tree

abstract class printable_object
{
    -size_t space_num
    +void print()
}
class leaf
{
    -size_t space_num
    +void print()
}
class tree 
{
    -printable_object *obj

    +void print()
}

printable_object <|-- tree
printable_object <|-- leaf
printable_object "*" --* "*" tree


@enduml