What is structural and object oriented programming?