Citi interview question

What is protocol oriented programming? How do we use it? Why do we use it? When have you used it?