O paradigma orientado a objetos é algo que não há como evitar caso deseje ser um desenvolvedor. Toda aplicação exige uma organização e metodologia para desenvolvimento, não basta abrir o editor de texto e digitar.

Alguns princípios da orientação a objetos estão listadas abaixo:

Encapsulamento (encapsulation)

Toda aplicação é composta de pequenos elementos que unidos concluem o produto final. É comum a ocorrência de métodos ("funções") que dependem de outros para concluir sua operação. Um método que delega um objeto a fazer uma determinada parte de sua operação não precisa saber como ele faz, para ele é suficiente saber que dada uma entrada ele manipula ela e retorna o que deseja. Essa metodologia de tratamento da entrada não transparente é o que se chama de encapsulamento.

Esse encapsulamento pode ocorrer de duas formas: por delegação ou métodos privados.

  • delegação é quando usamos um objeto instânciado de outra classe que contém métodos que auxiliam a função de um método
  • métodos privados são métodos internos da classe, ou seja, não são vistos externamente, servem apenas para concluir pequenas operações

Na orientação a objetos é comum subdividir tarefas criando pequenos blocos com uma única finalidade e não classes lotadas de linhas de códigos.

Em resumo, todo método de uma classe é encapsulada, apresentando ao exterior apenas as suas operações (nomes dos métodos), para o usuário não importa como ela faz.

Especialização (specialization)

A especialização esta relacionada a herança. Em geral, muitas coisas compartilham propriedades bases. Uma moto, carro e bicicleta são meios de transporte. Embora cada um possua suas particularidades que os diferenciam. Poderiamos partir de uma base admitindo que todos sejam veiculos, e poderíamos especificar/especializar essa classe consideram veiculos motorizados ou não. Tudo dependeria da forma que tratamos nosso projeto. Poderíamos subdividir em classes de objetos de 2 rodas ou 4 rodas.

Uma caracteristica importante é que uma classe pode apenas especializar uma outra classe, ou seja, deve-se projetar bem.

Quando desejamos caracterizar mais uma classe podemos implementar uma interface. Em geral, uma interface representa um tipo de dado. Uma propriedade que se mantem a todos que a implementarem, não importando como cada um faz.