Quando comparada a métodos tradicionais de desenvolvimento, a orientação a objetos sugere um novo estilo de decomposição/modularização, baseado em:

Uma importante característica da orientação a objetos é o fato de um objeto de uma classe poder ser utilizado em um contexto onde um objeto de uma superclasse é esperado. Este tipo de substituição é possível graças a qual dos conceitos a seguir?

Com relação à redefinição de métodos em uma linguagem de programação orientada a objetos, considere duas classes A e B, com B herdando (sendo uma subclasse) de A. Considere ainda que A define um método, m, com um parâmetro de entrada do tipo inteiro e sem parâmetro de retorno. Este método é redefinido em B, exatamente com a mesma assinatura e sem invocar qualquer método da superclasse. Finalmente, considere um identificador a, declarado com tipo A e inicializado com um objeto do tipo B. Neste contexto, a chamada de método a.m(2) tem o seguinte efeito:

Boas práticas de programação orientada a objetos recomendam o seguinte: