Първо, ние трябва да проектираме нашите обекти така, че да имат състояние и поведение. Ние създаваме частни полета, които държат държавните и публичните методи, които са поведението.
Например, ако проектираме личен обект, можем да създадем частни полета, за да съхраним името, фамилията и адреса на човека. Стойностите на тези три полета се комбинират, за да направят състоянието на обекта. Можем също така да създадем метод, наречен displayPersonDetails, който да показва стойностите на името, фамилията и адреса на екрана.
На следващо място, трябва да направим поведение, което осъществява достъп и да променя състоянието на обекта. Това може да се постигне по три начина:
Например, можем да проектираме обекта човек да има два конструкторски метода. Първият не приема никакви стойности и просто задава на обекта състояние по подразбиране (т.е., име, фамилия и адрес ще бъдат празни низове). Вторият задава началните стойности за името и фамилията от стойности, предадени на него. Можем също да създадем три метода на аксесоар, наречени getFirstName, getLastName и getAddress, които просто връщат стойностите на съответните частни полета. Създайте поле за мутатор, наречено setAddress, което ще зададе стойността на частното поле за адрес.
И накрая, ние крием подробности за реализацията на нашия обект. Докато се придържаме към запазване на държавните полета частни и поведенията публични, няма начин външният свят да разбере как обектът работи вътрешно.