OOP prostřednictvím návrhových vzorů