Vivint interview question

OOP abstraction best practices