Object-oriented programming paradigms in scientific computing