Först måste vi utforma våra objekt så att de har tillstånd och beteenden. Vi skapar privata fält som innehåller statliga och offentliga metoder som är beteenden.
Om vi till exempel utformar ett personobjekt kan vi skapa privata fält för att lagra en persons förnamn, efternamn och adress. Värdena för dessa tre fält kombineras för att göra objektets tillstånd. Vi kan också skapa en metod som heter displayPersonDetails för att visa värdena på förnamn, efternamn och adress på skärmen.
Därefter måste vi göra beteenden som får åtkomst till och ändrar objektets tillstånd. Detta kan åstadkommas på tre sätt:
Vi kan till exempel utforma personobjektet för att ha två konstruktormetoder. Den första tar inga värden och ställer helt enkelt in att objektet ska ha ett standardläge (dvs förnamnet, efternamnet och adressen skulle vara tomma strängar). Den andra anger initialvärden för förnamnet och efternamnet från värden som skickas till det. Vi kan också skapa tre accessormetoder som heter getFirstName, getLastName och getAddress som helt enkelt returnerar värdena för motsvarande privata fält. Skapa ett mutatorfält som heter setAddress som ställer in värdet på det privata adressfältet.
Slutligen döljer vi implementeringsdetaljer för vårt objekt. Så länge vi håller oss för att hålla statliga fält privata och beteenden offentliga finns det inget sätt för omvärlden att veta hur objektet fungerar internt.