Primeiro, devemos projetar nossos objetos para que eles tenham estado e comportamentos. Criamos campos privados que contêm os métodos público e estadual que são os comportamentos.
Por exemplo, se projetarmos um objeto de pessoa, podemos criar campos particulares para armazenar o nome, sobrenome e endereço de uma pessoa. Os valores desses três campos se combinam para tornar o estado do objeto. Também podemos criar um método chamado displayPersonDetails para exibir os valores do nome, sobrenome e endereço na tela.
Em seguida, devemos criar comportamentos que acessem e modifiquem o estado do objeto. Isso pode ser realizado de três maneiras:
Por exemplo, podemos projetar o objeto person para ter dois métodos construtores. O primeiro não aceita nenhum valor e simplesmente define o objeto para ter um estado padrão (ou seja, o primeiro nome, o sobrenome e o endereço seriam cadeias vazias). O segundo define os valores iniciais para o primeiro nome e o sobrenome dos valores passados para ele. Também podemos criar três métodos de acessador chamados getFirstName, getLastName e getAddress que simplesmente retornam os valores dos campos particulares correspondentes. Crie um campo mutador chamado setAddress que definirá o valor do campo privado do endereço.
Por fim, ocultamos os detalhes de implementação do nosso objeto. Enquanto mantivermos os campos estatais privados e os comportamentos públicos, não há como o mundo exterior saber como o objeto funciona internamente.